skia2/tools/pathops_visualizer.htm
caryclark 03b03cad01 working on initial winding for cubics
Path ops works well for all tests except for cubics.
Isolate failures caused by cubics, and do a better job of computing
the initial winding for cubics.

TBR=reed@google.com
BUG=skia:3588

Review URL: https://codereview.chromium.org/1096923003
2015-04-23 09:13:37 -07:00

7842 lines
547 KiB
HTML

<html>
<head>
<div height="0" hidden="true">
<div id="quadRect1">
seg=1 {{{6, 15}, {16, 0}, {8, 4}}}
seg=2 {{{8, 4}, {2, 7}, {12, 12}}}
seg=3 {{{12, 12}, {6, 15}}}
seg=4 {{{4, 11}, {13, 11}}}
seg=5 {{{13, 11}, {13, 16}}}
seg=6 {{{13, 16}, {4, 16}}}
seg=7 {{{4, 16}, {4, 11}}}
-SkOpSegment::findTop- baseAngle
SkOpAngle::dumpOne [2/14] next=1/13 sect=17/25 s=0 [3] e=0.823529343 [16] sgn=-1 windVal=1 windSum=?
SkOpAngle::dumpOne [1/13] next=2/14 sect=1/25 s=1 [2] e=0.17647064 [15] sgn=1 windVal=1 windSum=?
-SkOpSegment::findTop- firstAngle
SkOpAngle::dumpOne [1/13] next=2/14 sect=1/25 s=1 [2] e=0.17647064 [15] sgn=1 windVal=1 windSum=?
SkOpAngle::dumpOne [2/14] next=1/13 sect=17/25 s=0 [3] e=0.823529343 [16] sgn=-1 windVal=1 windSum=?
SkOpSegment::findTop id=1 s=0.17647064 e=1 (-) cw=0 swap=1 inflections=0 monotonic=0
</div>
<div id="quadRect2">
seg=1 {{{5, 12}, {15, 7}, {9, 4}}}
seg=2 {{{9, 4}, {1, 0}, {11, 15}}}
seg=3 {{{11, 15}, {5, 12}}}
seg=4 {{{4, 11}, {13, 11}}}
seg=5 {{{13, 11}, {13, 16}}}
seg=6 {{{13, 16}, {4, 16}}}
seg=7 {{{4, 16}, {4, 11}}}
-SkOpSegment::findTop- baseAngle
SkOpAngle::dumpOne [2/13] next=1/14 sect=13/21 s=0 [3] e=0.82352936 [16] sgn=-1 windVal=1 windSum=?
SkOpAngle::dumpOne [1/14] next=2/13 sect=29/21 s=1 [2] e=0.176470657 [15] sgn=1 windVal=1 windSum=?
-SkOpSegment::findTop- firstAngle
SkOpAngle::dumpOne [2/13] next=1/14 sect=13/21 s=0 [3] e=0.82352936 [16] sgn=-1 windVal=1 windSum=?
SkOpAngle::dumpOne [1/14] next=2/13 sect=29/21 s=1 [2] e=0.176470657 [15] sgn=1 windVal=1 windSum=?
SkOpSegment::findTop id=2 s=0.82352936 e=0 (+) cw=1 swap=0 inflections=0 monotonic=0
</div>
<div id="quadRect3">
seg=1 {{{12, 12}, {2, 7}, {8, 4}}}
seg=2 {{{8, 4}, {16, 0}, {6, 15}}}
seg=3 {{{6, 15}, {12, 12}}}
seg=4 {{{4, 11}, {13, 11}}}
seg=5 {{{13, 11}, {13, 16}}}
seg=6 {{{13, 16}, {4, 16}}}
seg=7 {{{4, 16}, {4, 11}}}
-SkOpSegment::findTop- baseAngle
SkOpAngle::dumpOne [1/14] next=2/13 sect=17/25 s=1 [2] e=0.176470657 [15] sgn=1 windVal=1 windSum=?
SkOpAngle::dumpOne [2/13] next=1/14 sect=1/25 s=0 [3] e=0.82352936 [16] sgn=-1 windVal=1 windSum=?
-SkOpSegment::findTop- firstAngle
SkOpAngle::dumpOne [2/13] next=1/14 sect=1/25 s=0 [3] e=0.82352936 [16] sgn=-1 windVal=1 windSum=?
SkOpAngle::dumpOne [1/14] next=2/13 sect=17/25 s=1 [2] e=0.176470657 [15] sgn=1 windVal=1 windSum=?
SkOpSegment::findTop id=2 s=0.82352936 e=0 (+) cw=0 swap=1 inflections=0 monotonic=0
</div>
<div id="quadRect4">
seg=1 {{{11, 15}, {1, 0}, {9, 4}}}
seg=2 {{{9, 4}, {15, 7}, {5, 12}}}
seg=3 {{{5, 12}, {11, 15}}}
seg=4 {{{4, 11}, {13, 11}}}
seg=5 {{{13, 11}, {13, 16}}}
seg=6 {{{13, 16}, {4, 16}}}
seg=7 {{{4, 16}, {4, 11}}}
-SkOpSegment::findTop- baseAngle
SkOpAngle::dumpOne [1/13] next=2/14 sect=13/21 s=1 [2] e=0.17647064 [15] sgn=1 windVal=1 windSum=?
SkOpAngle::dumpOne [2/14] next=1/13 sect=29/21 s=0 [3] e=0.823529343 [16] sgn=-1 windVal=1 windSum=?
-SkOpSegment::findTop- firstAngle
SkOpAngle::dumpOne [1/13] next=2/14 sect=13/21 s=1 [2] e=0.17647064 [15] sgn=1 windVal=1 windSum=?
SkOpAngle::dumpOne [2/14] next=1/13 sect=29/21 s=0 [3] e=0.823529343 [16] sgn=-1 windVal=1 windSum=?
SkOpSegment::findTop id=1 s=0.17647064 e=1 (-) cw=1 swap=0 inflections=0 monotonic=0
</div>
<div id="quadRect5">
seg=1 {{{11, 13}, {4, 4}, {8, 4}}}
seg=2 {{{8, 4}, {12, 4}, {5, 13}}}
seg=3 {{{5, 13}, {11, 13}}}
seg=4 {{{4, 11}, {13, 11}}}
seg=5 {{{13, 11}, {13, 16}}}
seg=6 {{{13, 16}, {4, 16}}}
seg=7 {{{4, 16}, {4, 11}}}
-SkOpSegment::findTop- baseAngle
SkOpAngle::dumpOne [1/14] next=2/13 sect=16/21 s=1 [2] e=0.272727338 [15] sgn=1 windVal=1 windSum=?
SkOpAngle::dumpOne [2/13] next=1/14 sect=30/21 s=0 [3] e=0.727272662 [16] sgn=-1 windVal=1 windSum=?
-SkOpSegment::findTop- firstAngle
SkOpAngle::dumpOne [1/14] next=2/13 sect=16/21 s=1 [2] e=0.272727338 [15] sgn=1 windVal=1 windSum=?
SkOpAngle::dumpOne [2/13] next=1/14 sect=30/21 s=0 [3] e=0.727272662 [16] sgn=-1 windVal=1 windSum=?
SkOpSegment::findTop id=1 s=0.272727338 e=1 (-) cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="quadRect6">
seg=1 {{{5, 13}, {12, 4}, {8, 4}}}
seg=2 {{{8, 4}, {4, 4}, {11, 13}}}
seg=3 {{{11, 13}, {5, 13}}}
seg=4 {{{4, 11}, {13, 11}}}
seg=5 {{{13, 11}, {13, 16}}}
seg=6 {{{13, 16}, {4, 16}}}
seg=7 {{{4, 16}, {4, 11}}}
-SkOpSegment::findTop- baseAngle
SkOpAngle::dumpOne [2/13] next=1/14 sect=16/25 s=0 [3] e=0.727272662 [16] sgn=-1 windVal=1 windSum=?
SkOpAngle::dumpOne [1/14] next=2/13 sect=30/25 s=1 [2] e=0.272727338 [15] sgn=1 windVal=1 windSum=?
-SkOpSegment::findTop- firstAngle
SkOpAngle::dumpOne [2/13] next=1/14 sect=16/25 s=0 [3] e=0.727272662 [16] sgn=-1 windVal=1 windSum=?
SkOpAngle::dumpOne [1/14] next=2/13 sect=30/25 s=1 [2] e=0.272727338 [15] sgn=1 windVal=1 windSum=?
SkOpSegment::findTop id=2 s=0.727272662 e=0 (+) cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp141">
seg=1 {{{0, 2}, {0.333333343f, 2}, {1.11111116f, 2.22222233f}, {1.88888907f, 2.44444442f}}}
seg=2 {{{1.88888907f, 2.44444442f}, {3.44444466f, 2.88888884f}, {5, 3.33333325f}, {3, 2}}}
seg=3 {{{3, 2}, {0, 2}}}
seg=4 {{{4, 6}, {2.26715517f, 3.40073299f}, {2.03568602f, 0.801465988f}, {2.00476694f, 0.80384922f}}}
seg=5 {{{2.00476694f, 0.80384922f}, {2, 0.804216623f}, {2, 0.866422355f}, {2, 1}}}
seg=6 {{{2, 1}, {4, 6}}}
-SkOpSegment::findTop- baseAngle
SkOpAngle::dumpOne [5/21] next=4/22 sect=17/21 s=0 [9] e=1 [10] sgn=-1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [4/22] next=5/21 sect=1/25 s=1 [8] e=0.769447644 [13] sgn=1 windVal=1 windSum=? operand
-SkOpSegment::findTop- firstAngle
SkOpAngle::dumpOne [4/22] next=5/21 sect=1/25 s=1 [8] e=0.769447644 [13] sgn=1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [5/21] next=4/22 sect=17/21 s=0 [9] e=1 [10] sgn=-1 windVal=1 windSum=? operand
SkOpSegment::findTop id=4 s=0.769447644 e=1 (-) cw=0 swap=1 inflections=1 monotonic=0
</div>
<div id="cubicOp58d">
seg=1 {{{0, 5}, {1.125f, 4.625f}, {2.25f, 4.53125f}, {3.1640625f, 4.45507813f}}}
seg=2 {{{3.1640625f, 4.45507813f}, {4.6875f, 4.328125f}, {5.625f, 4.25f}, {5, 3}}}
seg=3 {{{5, 3}, {0, 5}}}
seg=4 {{{5, 6}, {3.45152783f, 5.2257638f}, {4.30082178f, 2.05376172f}, {4.29911709f, 2.05330443f}}}
seg=5 {{{4.29911709f, 2.05330443f}, {4.29861975f, 2.05317116f}, {4.2257638f, 2.32270813f}, {4, 3}}}
seg=6 {{{4, 3}, {5, 6}}}
-SkOpSegment::findTop- baseAngle
SkOpAngle::dumpOne [5/21] next=4/22 sect=13/21 s=0 [9] e=1 [10] sgn=-1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [4/22] next=5/21 sect=29/21 s=1 [8] e=0.587088912 [13] sgn=1 windVal=1 windSum=? operand
-SkOpSegment::findTop- firstAngle
SkOpAngle::dumpOne [5/21] next=4/22 sect=13/21 s=0 [9] e=1 [10] sgn=-1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [4/22] next=5/21 sect=29/21 s=1 [8] e=0.587088912 [13] sgn=1 windVal=1 windSum=? operand
SkOpSegment::findTop id=5 s=1 e=0 (+) cw=0 swap=1 inflections=1 monotonic=0
</div>
<div id="issue3651_5">
seg=1 {{{9.89999962f, 257.399994f}, {10.2666664f, 257.399994f}, {10.6333332f, 257.406433f}, {11, 257.412872f}}}
seg=2 {{{11, 257.412872f}, {11.7333336f, 257.425751f}, {12.4666672f, 257.438629f}, {13.1999998f, 257.399994f}}}
seg=3 {{{13.1999998f, 257.399994f}, {14.3000002f, 257.342041f}, {15.3999996f, 257.207611f}, {16.5f, 257.052246f}}}
seg=4 {{{16.5f, 257.052246f}, {16.9802361f, 256.984406f}, {17.4604721f, 256.884735f}, {17.9407063f, 256.785095f}}}
seg=5 {{{17.9407063f, 256.785095f}, {18.5604706f, 256.656494f}, {19.1802349f, 256.527893f}, {19.7999992f, 256.467651f}}}
seg=6 {{{19.7999992f, 256.467651f}, {20.8999996f, 256.360748f}, {22, 256.304291f}, {23.1000004f, 256.410889f}}}
seg=7 {{{23.1000004f, 256.410889f}, {23.70541f, 256.469543f}, {24.3108177f, 256.624634f}, {24.9162273f, 256.779724f}}}
seg=8 {{{24.9162273f, 256.779724f}, {25.4108181f, 256.906403f}, {25.9054089f, 257.033081f}, {26.3999996f, 257.107208f}}}
seg=9 {{{26.3999996f, 257.107208f}, {27.5f, 257.272064f}, {28.6000004f, 257.401825f}, {29.7000008f, 257.399994f}}}
seg=10 {{{29.7000008f, 257.399994f}, {30.7999992f, 257.398163f}, {31.8999996f, 257.262878f}, {33, 257.096222f}}}
seg=11 {{{33, 257.096222f}, {33.4856606f, 257.022644f}, {33.9713249f, 256.897003f}, {34.4569855f, 256.771362f}}}
seg=12 {{{34.4569855f, 256.771362f}, {35.0713234f, 256.612457f}, {35.6856613f, 256.453552f}, {36.2999992f, 256.399994f}}}
seg=13 {{{36.2999992f, 256.399994f}, {37.4000015f, 256.304108f}, {38.5f, 256.354187f}, {39.5999985f, 256.520844f}}}
seg=14 {{{39.5999985f, 256.520844f}, {40.1364708f, 256.602112f}, {40.6729393f, 256.778381f}, {41.2094116f, 256.95462f}}}
seg=15 {{{41.2094116f, 256.95462f}, {41.7729416f, 257.139771f}, {42.3364716f, 257.324921f}, {42.9000015f, 257.399994f}}}
seg=16 {{{42.9000015f, 257.399994f}, {43.6333351f, 257.497681f}, {44.3666687f, 257.465118f}, {45.1000023f, 257.432556f}}}
seg=17 {{{45.1000023f, 257.432556f}, {45.4666672f, 257.41629f}, {45.8333321f, 257.399994f}, {46.2000008f, 257.399994f}}}
seg=18 {{{46.2000008f, 257.399994f}, {46.5666656f, 257.399994f}, {46.9333344f, 257.41275f}, {47.2999992f, 257.425507f}}}
seg=19 {{{47.2999992f, 257.425507f}, {48.0333328f, 257.451019f}, {48.7666664f, 257.476501f}, {49.5f, 257.399994f}}}
seg=20 {{{49.5f, 257.399994f}, {50.1035385f, 257.337006f}, {50.707077f, 257.186005f}, {51.3106155f, 257.035004f}}}
seg=21 {{{51.3106155f, 257.035004f}, {51.8070755f, 256.910797f}, {52.3035393f, 256.786591f}, {52.7999992f, 256.711365f}}}
seg=22 {{{52.7999992f, 256.711365f}, {53.9000015f, 256.544678f}, {55, 256.451904f}, {56.0999985f, 256.399994f}}}
seg=23 {{{56.0999985f, 256.399994f}, {56.8333321f, 256.365417f}, {57.5666656f, 256.376923f}, {58.2999992f, 256.388458f}}}
seg=24 {{{58.2999992f, 256.388458f}, {58.6666679f, 256.394226f}, {59.0333328f, 256.399994f}, {59.4000015f, 256.399994f}}}
seg=25 {{{59.4000015f, 256.399994f}, {59.7666664f, 256.399994f}, {60.1333313f, 256.393616f}, {60.5f, 256.387238f}}}
seg=26 {{{60.5f, 256.387238f}, {61.2333336f, 256.374481f}, {61.9666672f, 256.361755f}, {62.7000008f, 256.399994f}}}
seg=27 {{{62.7000008f, 256.399994f}, {63.7999992f, 256.457397f}, {64.9000015f, 256.577667f}, {66, 256.744354f}}}
seg=28 {{{66, 256.744354f}, {66.484726f, 256.81778f}, {66.9694519f, 256.932587f}, {67.4541855f, 257.047394f}}}
seg=29 {{{67.4541855f, 257.047394f}, {68.069458f, 257.193146f}, {68.6847305f, 257.338867f}, {69.3000031f, 257.399994f}}}
seg=30 {{{69.3000031f, 257.399994f}, {70.0333328f, 257.472839f}, {70.7666626f, 257.448578f}, {71.4999924f, 257.424286f}}}
seg=31 {{{71.4999924f, 257.424286f}, {71.8666611f, 257.41214f}, {72.2333298f, 257.399994f}, {72.5999985f, 257.399994f}}}
seg=32 {{{72.5999985f, 257.399994f}, {72.9666672f, 257.399994f}, {73.3333359f, 257.40683f}, {73.7000046f, 257.413696f}}}
seg=33 {{{73.7000046f, 257.413696f}, {74.4333344f, 257.427399f}, {75.1666718f, 257.441101f}, {75.9000015f, 257.399994f}}}
seg=34 {{{75.9000015f, 257.399994f}, {76.3889008f, 257.37262f}, {76.8778f, 257.296539f}, {77.3666992f, 257.220459f}}}
seg=35 {{{77.3666992f, 257.220459f}, {77.9777985f, 257.125336f}, {78.5888977f, 257.030243f}, {79.1999969f, 257.030243f}}}
seg=36 {{{79.1999969f, 257.030243f}, {79.8110962f, 257.030243f}, {80.4221954f, 257.125336f}, {81.0332947f, 257.220459f}}}
seg=37 {{{81.0332947f, 257.220459f}, {81.5222015f, 257.296539f}, {82.0111008f, 257.37262f}, {82.5f, 257.399994f}}}
seg=38 {{{82.5f, 257.399994f}, {83.2333298f, 257.441101f}, {83.9666595f, 257.427399f}, {84.6999969f, 257.413696f}}}
seg=39 {{{84.6999969f, 257.413696f}, {85.0666656f, 257.40683f}, {85.4333344f, 257.399994f}, {85.8000031f, 257.399994f}}}
seg=40 {{{85.8000031f, 257.399994f}, {9.89999962f, 257.399994f}}}
op union
seg=41 {{{9.89999962f, 257.399994f}, {10.2666664f, 257.399994f}, {10.6333332f, 257.393555f}, {11, 257.387115f}}}
seg=42 {{{11, 257.387115f}, {11.7333336f, 257.374237f}, {12.4666672f, 257.361359f}, {13.1999998f, 257.399994f}}}
seg=43 {{{13.1999998f, 257.399994f}, {14.3000002f, 257.457947f}, {15.3999996f, 257.592377f}, {16.5f, 257.747742f}}}
seg=44 {{{16.5f, 257.747742f}, {16.9802361f, 257.815582f}, {17.4604721f, 257.915253f}, {17.9407063f, 258.014893f}}}
seg=45 {{{17.9407063f, 258.014893f}, {18.5604706f, 258.143494f}, {19.1802349f, 258.272095f}, {19.7999992f, 258.332336f}}}
seg=46 {{{19.7999992f, 258.332336f}, {20.8999996f, 258.43924f}, {22, 258.495697f}, {23.1000004f, 258.389099f}}}
seg=47 {{{23.1000004f, 258.389099f}, {23.70541f, 258.330444f}, {24.3108177f, 258.175354f}, {24.9162273f, 258.020264f}}}
seg=48 {{{24.9162273f, 258.020264f}, {25.4108181f, 257.893585f}, {25.9054089f, 257.766907f}, {26.3999996f, 257.69278f}}}
seg=49 {{{26.3999996f, 257.69278f}, {27.5f, 257.527924f}, {28.6000004f, 257.398163f}, {29.7000008f, 257.399994f}}}
seg=50 {{{29.7000008f, 257.399994f}, {30.7999992f, 257.401825f}, {31.8999996f, 257.537109f}, {33, 257.703766f}}}
seg=51 {{{33, 257.703766f}, {33.4856606f, 257.777344f}, {33.9713249f, 257.902985f}, {34.4569855f, 258.028625f}}}
seg=52 {{{34.4569855f, 258.028625f}, {35.0713234f, 258.187531f}, {35.6856613f, 258.346436f}, {36.2999992f, 258.399994f}}}
seg=53 {{{36.2999992f, 258.399994f}, {37.4000015f, 258.49588f}, {38.5f, 258.445801f}, {39.5999985f, 258.279144f}}}
seg=54 {{{39.5999985f, 258.279144f}, {40.1364708f, 258.197876f}, {40.6729393f, 258.021606f}, {41.2094116f, 257.845367f}}}
seg=55 {{{41.2094116f, 257.845367f}, {41.7729416f, 257.660217f}, {42.3364716f, 257.475067f}, {42.9000015f, 257.399994f}}}
seg=56 {{{42.9000015f, 257.399994f}, {43.6333351f, 257.302307f}, {44.3666687f, 257.334869f}, {45.1000023f, 257.367432f}}}
seg=57 {{{45.1000023f, 257.367432f}, {45.4666672f, 257.383698f}, {45.8333321f, 257.399994f}, {46.2000008f, 257.399994f}}}
seg=58 {{{46.2000008f, 257.399994f}, {46.5666656f, 257.399994f}, {46.9333344f, 257.387238f}, {47.2999992f, 257.374481f}}}
seg=59 {{{47.2999992f, 257.374481f}, {48.0333328f, 257.348969f}, {48.7666664f, 257.323486f}, {49.5f, 257.399994f}}}
seg=60 {{{49.5f, 257.399994f}, {50.1035385f, 257.462982f}, {50.707077f, 257.613983f}, {51.3106155f, 257.764984f}}}
seg=61 {{{51.3106155f, 257.764984f}, {51.8070755f, 257.889191f}, {52.3035393f, 258.013397f}, {52.7999992f, 258.088623f}}}
seg=62 {{{52.7999992f, 258.088623f}, {53.9000015f, 258.25531f}, {55, 258.348083f}, {56.0999985f, 258.399994f}}}
seg=63 {{{56.0999985f, 258.399994f}, {56.8333321f, 258.43457f}, {57.5666656f, 258.423065f}, {58.2999992f, 258.41153f}}}
seg=64 {{{58.2999992f, 258.41153f}, {58.6666679f, 258.405762f}, {59.0333328f, 258.399994f}, {59.4000015f, 258.399994f}}}
seg=65 {{{59.4000015f, 258.399994f}, {59.7666664f, 258.399994f}, {60.1333313f, 258.406372f}, {60.5f, 258.41275f}}}
seg=66 {{{60.5f, 258.41275f}, {61.2333336f, 258.425507f}, {61.9666672f, 258.438232f}, {62.7000008f, 258.399994f}}}
seg=67 {{{62.7000008f, 258.399994f}, {63.7999992f, 258.34259f}, {64.9000015f, 258.222321f}, {66, 258.055634f}}}
seg=68 {{{66, 258.055634f}, {66.484726f, 257.982208f}, {66.9694519f, 257.867401f}, {67.4541855f, 257.752594f}}}
seg=69 {{{67.4541855f, 257.752594f}, {68.069458f, 257.606842f}, {68.6847305f, 257.461121f}, {69.3000031f, 257.399994f}}}
seg=70 {{{69.3000031f, 257.399994f}, {70.0333328f, 257.327148f}, {70.7666626f, 257.35141f}, {71.4999924f, 257.375702f}}}
seg=71 {{{71.4999924f, 257.375702f}, {71.8666611f, 257.387848f}, {72.2333298f, 257.399994f}, {72.5999985f, 257.399994f}}}
seg=72 {{{72.5999985f, 257.399994f}, {72.9666672f, 257.399994f}, {73.3333359f, 257.393158f}, {73.7000046f, 257.386292f}}}
seg=73 {{{73.7000046f, 257.386292f}, {74.4333344f, 257.372589f}, {75.1666718f, 257.358887f}, {75.9000015f, 257.399994f}}}
seg=74 {{{75.9000015f, 257.399994f}, {76.3889008f, 257.427368f}, {76.8778f, 257.503448f}, {77.3666992f, 257.579529f}}}
seg=75 {{{77.3666992f, 257.579529f}, {77.9777985f, 257.674652f}, {78.5888977f, 257.769745f}, {79.1999969f, 257.769745f}}}
seg=76 {{{79.1999969f, 257.769745f}, {79.8110962f, 257.769745f}, {80.4221954f, 257.674652f}, {81.0332947f, 257.579529f}}}
seg=77 {{{81.0332947f, 257.579529f}, {81.5222015f, 257.503448f}, {82.0111008f, 257.427368f}, {82.5f, 257.399994f}}}
seg=78 {{{82.5f, 257.399994f}, {83.2333298f, 257.358887f}, {83.9666595f, 257.372589f}, {84.6999969f, 257.386292f}}}
seg=79 {{{84.6999969f, 257.386292f}, {85.0666656f, 257.393158f}, {85.4333344f, 257.399994f}, {85.8000031f, 257.399994f}}}
seg=80 {{{85.8000031f, 257.399994f}, {9.89999962f, 257.399994f}}}
debugShowCubicIntersection wtTs[0]=1 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.406433}, {11,257.412872}}} {{11,257.412872}} wnTs[0]=0 {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.406433}, {11,257.412872}}} {{9.89999962,257.399994}} wnTs[0]=1 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.956521739 segID=40 spanID=161
debugShowCubicIntersection wtTs[0]=1 {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} {{16.5,257.052246}} wnTs[0]=0 {{{16.5,257.052246}, {16.9802361,256.984406}, {17.4604721,256.884735}, {17.9407063,256.785095}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{16.5,257.052246}, {16.9802361,256.984406}, {17.4604721,256.884735}, {17.9407063,256.785095}}} {{17.9407063,256.785095}} wnTs[0]=0 {{{17.9407063,256.785095}, {18.5604706,256.656494}, {19.1802349,256.527893}, {19.7999992,256.467651}}}
debugShowCubicIntersection wtTs[0]=1 {{{17.9407063,256.785095}, {18.5604706,256.656494}, {19.1802349,256.527893}, {19.7999992,256.467651}}} {{19.7999992,256.467651}} wnTs[0]=0 {{{19.7999992,256.467651}, {20.8999996,256.360748}, {22,256.304291}, {23.1000004,256.410889}}}
debugShowCubicIntersection wtTs[0]=1 {{{19.7999992,256.467651}, {20.8999996,256.360748}, {22,256.304291}, {23.1000004,256.410889}}} {{23.1000004,256.410889}} wnTs[0]=0 {{{23.1000004,256.410889}, {23.70541,256.469543}, {24.3108177,256.624634}, {24.9162273,256.779724}}}
debugShowCubicIntersection wtTs[0]=1 {{{23.1000004,256.410889}, {23.70541,256.469543}, {24.3108177,256.624634}, {24.9162273,256.779724}}} {{24.9162273,256.779724}} wnTs[0]=0 {{{24.9162273,256.779724}, {25.4108181,256.906403}, {25.9054089,257.033081}, {26.3999996,257.107208}}}
debugShowCubicIntersection wtTs[0]=1 {{{24.9162273,256.779724}, {25.4108181,256.906403}, {25.9054089,257.033081}, {26.3999996,257.107208}}} {{26.3999996,257.107208}} wnTs[0]=0 {{{26.3999996,257.107208}, {27.5,257.272064}, {28.6000004,257.401825}, {29.7000008,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{26.3999996,257.107208}, {27.5,257.272064}, {28.6000004,257.401825}, {29.7000008,257.399994}}} {{29.7000008,257.399994}} wnTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.398163}, {31.8999996,257.262878}, {33,257.096222}}}
debugShowCubicLineIntersection wtTs[0]=0.986037692 {{{26.3999996,257.107208}, {27.5,257.272064}, {28.6000004,257.401825}, {29.7000008,257.399994}}} {{29.6539249,257.399994}} wtTs[1]=1 {{29.7000008,257.399994}} wnTs[0]=0.739737 {{{85.8000031,257.399994}, {9.89999962,257.399994}}} wnTs[1]=0.739130432
SkOpSegment::addT insert t=0.986037692 segID=9 spanID=162
SkOpSegment::addT insert t=0.739737489 segID=40 spanID=163
SkOpSegment::addT insert t=0.739130432 segID=40 spanID=164
debugShowCubicIntersection wtTs[0]=1 {{{29.7000008,257.399994}, {30.7999992,257.398163}, {31.8999996,257.262878}, {33,257.096222}}} {{33,257.096222}} wnTs[0]=0 {{{33,257.096222}, {33.4856606,257.022644}, {33.9713249,256.897003}, {34.4569855,256.771362}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.398163}, {31.8999996,257.262878}, {33,257.096222}}} {{29.7000008,257.399994}} wnTs[0]=0.73913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{33,257.096222}, {33.4856606,257.022644}, {33.9713249,256.897003}, {34.4569855,256.771362}}} {{34.4569855,256.771362}} wnTs[0]=0 {{{34.4569855,256.771362}, {35.0713234,256.612457}, {35.6856613,256.453552}, {36.2999992,256.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{34.4569855,256.771362}, {35.0713234,256.612457}, {35.6856613,256.453552}, {36.2999992,256.399994}}} {{36.2999992,256.399994}} wnTs[0]=0 {{{36.2999992,256.399994}, {37.4000015,256.304108}, {38.5,256.354187}, {39.5999985,256.520844}}}
debugShowCubicIntersection wtTs[0]=1 {{{36.2999992,256.399994}, {37.4000015,256.304108}, {38.5,256.354187}, {39.5999985,256.520844}}} {{39.5999985,256.520844}} wnTs[0]=0 {{{39.5999985,256.520844}, {40.1364708,256.602112}, {40.6729393,256.778381}, {41.2094116,256.95462}}}
debugShowCubicIntersection wtTs[0]=1 {{{39.5999985,256.520844}, {40.1364708,256.602112}, {40.6729393,256.778381}, {41.2094116,256.95462}}} {{41.2094116,256.95462}} wnTs[0]=0 {{{41.2094116,256.95462}, {41.7729416,257.139771}, {42.3364716,257.324921}, {42.9000015,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{41.2094116,256.95462}, {41.7729416,257.139771}, {42.3364716,257.324921}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{41.2094116,256.95462}, {41.7729416,257.139771}, {42.3364716,257.324921}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.565217386 segID=40 spanID=165
debugShowCubicIntersection wtTs[0]=1 {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} {{45.1000023,257.432556}} wnTs[0]=0 {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.521739137 segID=40 spanID=166
debugShowCubicIntersection wtTs[0]=1 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} {{47.2999992,257.425507}} wnTs[0]=0 {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.478260888 segID=40 spanID=167
debugShowCubicIntersection wtTs[0]=1 {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} {{51.3106155,257.035004}} wnTs[0]=0 {{{51.3106155,257.035004}, {51.8070755,256.910797}, {52.3035393,256.786591}, {52.7999992,256.711365}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{51.3106155,257.035004}, {51.8070755,256.910797}, {52.3035393,256.786591}, {52.7999992,256.711365}}} {{52.7999992,256.711365}} wnTs[0]=0 {{{52.7999992,256.711365}, {53.9000015,256.544678}, {55,256.451904}, {56.0999985,256.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{52.7999992,256.711365}, {53.9000015,256.544678}, {55,256.451904}, {56.0999985,256.399994}}} {{56.0999985,256.399994}} wnTs[0]=0 {{{56.0999985,256.399994}, {56.8333321,256.365417}, {57.5666656,256.376923}, {58.2999992,256.388458}}}
debugShowCubicIntersection wtTs[0]=1 {{{56.0999985,256.399994}, {56.8333321,256.365417}, {57.5666656,256.376923}, {58.2999992,256.388458}}} {{58.2999992,256.388458}} wnTs[0]=0 {{{58.2999992,256.388458}, {58.6666679,256.394226}, {59.0333328,256.399994}, {59.4000015,256.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{58.2999992,256.388458}, {58.6666679,256.394226}, {59.0333328,256.399994}, {59.4000015,256.399994}}} {{59.4000015,256.399994}} wnTs[0]=0 {{{59.4000015,256.399994}, {59.7666664,256.399994}, {60.1333313,256.393616}, {60.5,256.387238}}}
debugShowCubicIntersection wtTs[0]=1 {{{59.4000015,256.399994}, {59.7666664,256.399994}, {60.1333313,256.393616}, {60.5,256.387238}}} {{60.5,256.387238}} wnTs[0]=0 {{{60.5,256.387238}, {61.2333336,256.374481}, {61.9666672,256.361755}, {62.7000008,256.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{60.5,256.387238}, {61.2333336,256.374481}, {61.9666672,256.361755}, {62.7000008,256.399994}}} {{62.7000008,256.399994}} wnTs[0]=0 {{{62.7000008,256.399994}, {63.7999992,256.457397}, {64.9000015,256.577667}, {66,256.744354}}}
debugShowCubicIntersection wtTs[0]=1 {{{62.7000008,256.399994}, {63.7999992,256.457397}, {64.9000015,256.577667}, {66,256.744354}}} {{66,256.744354}} wnTs[0]=0 {{{66,256.744354}, {66.484726,256.81778}, {66.9694519,256.932587}, {67.4541855,257.047394}}}
debugShowCubicIntersection wtTs[0]=1 {{{66,256.744354}, {66.484726,256.81778}, {66.9694519,256.932587}, {67.4541855,257.047394}}} {{67.4541855,257.047394}} wnTs[0]=0 {{{67.4541855,257.047394}, {68.069458,257.193146}, {68.6847305,257.338867}, {69.3000031,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{67.4541855,257.047394}, {68.069458,257.193146}, {68.6847305,257.338867}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{67.4541855,257.047394}, {68.069458,257.193146}, {68.6847305,257.338867}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.217391295 segID=40 spanID=168
debugShowCubicIntersection wtTs[0]=1 {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} {{71.4999924,257.424286}} wnTs[0]=0 {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.173913096 segID=40 spanID=169
debugShowCubicIntersection wtTs[0]=1 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} {{73.7000046,257.413696}} wnTs[0]=0 {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.130434797 segID=40 spanID=170
debugShowCubicIntersection wtTs[0]=1 {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} {{77.3666992,257.220459}} wnTs[0]=0 {{{77.3666992,257.220459}, {77.9777985,257.125336}, {78.5888977,257.030243}, {79.1999969,257.030243}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{77.3666992,257.220459}, {77.9777985,257.125336}, {78.5888977,257.030243}, {79.1999969,257.030243}}} {{79.1999969,257.030243}} wnTs[0]=0 {{{79.1999969,257.030243}, {79.8110962,257.030243}, {80.4221954,257.125336}, {81.0332947,257.220459}}}
debugShowCubicIntersection wtTs[0]=1 {{{79.1999969,257.030243}, {79.8110962,257.030243}, {80.4221954,257.125336}, {81.0332947,257.220459}}} {{81.0332947,257.220459}} wnTs[0]=0 {{{81.0332947,257.220459}, {81.5222015,257.296539}, {82.0111008,257.37262}, {82.5,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{81.0332947,257.220459}, {81.5222015,257.296539}, {82.0111008,257.37262}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{81.0332947,257.220459}, {81.5222015,257.296539}, {82.0111008,257.37262}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.0434782991 segID=40 spanID=171
debugShowCubicIntersection wtTs[0]=1 {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} {{84.6999969,257.413696}} wnTs[0]=0 {{{84.6999969,257.413696}, {85.0666656,257.40683}, {85.4333344,257.399994}, {85.8000031,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{84.6999969,257.413696}, {85.0666656,257.40683}, {85.4333344,257.399994}, {85.8000031,257.399994}}} {{85.8000031,257.399994}} wnTs[0]=0 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=0 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.406433}, {11,257.412872}}} {{9.89999962,257.399994}} wnTs[0]=0 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.393555}, {11,257.387115}}}
debugShowCubicIntersection no intersect {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.406433}, {11,257.412872}}} {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.406433}, {11,257.412872}}} {{9.89999962,257.399994}} wnTs[0]=1 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection no intersect {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}} {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.393555}, {11,257.387115}}}
debugShowCubicIntersection wtTs[0]=1 {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=1 {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.956521739 segID=80 spanID=172
debugShowCubicIntersection wtTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} {{13.1999998,257.399994}} wnTs[0]=1 {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}}
debugShowCubicIntersection wtTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} {{13.1999998,257.399994}} wnTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=0.986174342 {{{26.3999996,257.107208}, {27.5,257.272064}, {28.6000004,257.401825}, {29.7000008,257.399994}}} {{29.654377,257.399994}} wtTs[1]=1 {{29.7000008,257.399994}} wnTs[0]=0.986174 {{{26.3999996,257.69278}, {27.5,257.527924}, {28.6000004,257.398163}, {29.7000008,257.399994}}} wnTs[1]=1
SkOpSegment::addT insert t=0.986174342 segID=9 spanID=173
SkOpSegment::addT insert t=0.986174342 segID=49 spanID=174
debugShowCubicIntersection wtTs[0]=1 {{{26.3999996,257.107208}, {27.5,257.272064}, {28.6000004,257.401825}, {29.7000008,257.399994}}} {{29.7000008,257.399994}} wnTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.401825}, {31.8999996,257.537109}, {33,257.703766}}}
debugShowCubicLineIntersection wtTs[0]=0.986037692 {{{26.3999996,257.107208}, {27.5,257.272064}, {28.6000004,257.401825}, {29.7000008,257.399994}}} {{29.6539249,257.399994}} wtTs[1]=1 {{29.7000008,257.399994}} wnTs[0]=0.739737 {{{85.8000031,257.399994}, {9.89999962,257.399994}}} wnTs[1]=0.739130432
SkOpSegment::addT insert t=0.739737489 segID=80 spanID=175
SkOpSegment::addT insert t=0.739130432 segID=80 spanID=176
debugShowCubicIntersection wtTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.398163}, {31.8999996,257.262878}, {33,257.096222}}} {{29.7000008,257.399994}} wnTs[0]=1 {{{26.3999996,257.69278}, {27.5,257.527924}, {28.6000004,257.398163}, {29.7000008,257.399994}}}
debugShowCubicIntersection wtTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.398163}, {31.8999996,257.262878}, {33,257.096222}}} {{29.7000008,257.399994}} wnTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.401825}, {31.8999996,257.537109}, {33,257.703766}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.398163}, {31.8999996,257.262878}, {33,257.096222}}} {{29.7000008,257.399994}} wnTs[0]=0.73913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{41.2094116,256.95462}, {41.7729416,257.139771}, {42.3364716,257.324921}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=1 {{{41.2094116,257.845367}, {41.7729416,257.660217}, {42.3364716,257.475067}, {42.9000015,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{41.2094116,256.95462}, {41.7729416,257.139771}, {42.3364716,257.324921}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{41.2094116,256.95462}, {41.7729416,257.139771}, {42.3364716,257.324921}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.565217386 segID=80 spanID=177
debugShowCubicIntersection wtTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} {{42.9000015,257.399994}} wnTs[0]=1 {{{41.2094116,257.845367}, {41.7729416,257.660217}, {42.3364716,257.475067}, {42.9000015,257.399994}}}
debugShowCubicIntersection wtTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} {{42.9000015,257.399994}} wnTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}}
debugShowCubicIntersection no intersect {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection no intersect {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}}
debugShowCubicIntersection wtTs[0]=1 {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=1 {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.521739137 segID=80 spanID=178
debugShowCubicIntersection wtTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} {{46.2000008,257.399994}} wnTs[0]=1 {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}}
debugShowCubicIntersection wtTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} {{46.2000008,257.399994}} wnTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}}
debugShowCubicIntersection no intersect {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection no intersect {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}} {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}}
debugShowCubicIntersection wtTs[0]=1 {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=1 {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.478260888 segID=80 spanID=179
debugShowCubicIntersection wtTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} {{49.5,257.399994}} wnTs[0]=1 {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}}
debugShowCubicIntersection wtTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} {{49.5,257.399994}} wnTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{67.4541855,257.047394}, {68.069458,257.193146}, {68.6847305,257.338867}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=1 {{{67.4541855,257.752594}, {68.069458,257.606842}, {68.6847305,257.461121}, {69.3000031,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{67.4541855,257.047394}, {68.069458,257.193146}, {68.6847305,257.338867}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{67.4541855,257.047394}, {68.069458,257.193146}, {68.6847305,257.338867}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.217391295 segID=80 spanID=180
debugShowCubicIntersection wtTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} {{69.3000031,257.399994}} wnTs[0]=1 {{{67.4541855,257.752594}, {68.069458,257.606842}, {68.6847305,257.461121}, {69.3000031,257.399994}}}
debugShowCubicIntersection wtTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} {{69.3000031,257.399994}} wnTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}}
debugShowCubicIntersection no intersect {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection no intersect {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}}
debugShowCubicIntersection wtTs[0]=1 {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=1 {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.173913096 segID=80 spanID=181
debugShowCubicIntersection wtTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} {{72.5999985,257.399994}} wnTs[0]=1 {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}}
debugShowCubicIntersection wtTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} {{72.5999985,257.399994}} wnTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}}
debugShowCubicIntersection no intersect {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection no intersect {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}} {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}}
debugShowCubicIntersection wtTs[0]=1 {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=1 {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.130434797 segID=80 spanID=182
debugShowCubicIntersection wtTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} {{75.9000015,257.399994}} wnTs[0]=1 {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}}
debugShowCubicIntersection wtTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} {{75.9000015,257.399994}} wnTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{81.0332947,257.220459}, {81.5222015,257.296539}, {82.0111008,257.37262}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=1 {{{81.0332947,257.579529}, {81.5222015,257.503448}, {82.0111008,257.427368}, {82.5,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{81.0332947,257.220459}, {81.5222015,257.296539}, {82.0111008,257.37262}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{81.0332947,257.220459}, {81.5222015,257.296539}, {82.0111008,257.37262}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::addT insert t=0.0434782991 segID=80 spanID=183
debugShowCubicIntersection wtTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} {{82.5,257.399994}} wnTs[0]=1 {{{81.0332947,257.579529}, {81.5222015,257.503448}, {82.0111008,257.427368}, {82.5,257.399994}}}
debugShowCubicIntersection wtTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} {{82.5,257.399994}} wnTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}}
debugShowCubicIntersection no intersect {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} {{{84.6999969,257.386292}, {85.0666656,257.393158}, {85.4333344,257.399994}, {85.8000031,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection no intersect {{{84.6999969,257.413696}, {85.0666656,257.40683}, {85.4333344,257.399994}, {85.8000031,257.399994}}} {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}}
debugShowCubicIntersection wtTs[0]=1 {{{84.6999969,257.413696}, {85.0666656,257.40683}, {85.4333344,257.399994}, {85.8000031,257.399994}}} {{85.8000031,257.399994}} wnTs[0]=1 {{{84.6999969,257.386292}, {85.0666656,257.393158}, {85.4333344,257.399994}, {85.8000031,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{84.6999969,257.413696}, {85.0666656,257.40683}, {85.4333344,257.399994}, {85.8000031,257.399994}}} {{85.8000031,257.399994}} wnTs[0]=0 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.393555}, {11,257.387115}}} {{9.89999962,257.399994}} wnTs[0]=1 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0.986037692 {{{26.3999996,257.69278}, {27.5,257.527924}, {28.6000004,257.398163}, {29.7000008,257.399994}}} {{29.6539249,257.399994}} wtTs[1]=1 {{29.7000008,257.399994}} wnTs[0]=0.739737 {{{85.8000031,257.399994}, {9.89999962,257.399994}}} wnTs[1]=0.739130432
SkOpSegment::addT insert t=0.986037692 segID=49 spanID=184
debugShowCubicLineIntersection wtTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.401825}, {31.8999996,257.537109}, {33,257.703766}}} {{29.7000008,257.399994}} wnTs[0]=0.73913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{41.2094116,257.845367}, {41.7729416,257.660217}, {42.3364716,257.475067}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{67.4541855,257.752594}, {68.069458,257.606842}, {68.6847305,257.461121}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{81.0332947,257.579529}, {81.5222015,257.503448}, {82.0111008,257.427368}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{84.6999969,257.386292}, {85.0666656,257.393158}, {85.4333344,257.399994}, {85.8000031,257.399994}}} {{85.8000031,257.399994}} wnTs[0]=0 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowLineIntersection wtTs[0]=0 {{{85.8000031,257.399994}, {9.89999962,257.399994}}} {{85.8000031,257.399994}} wtTs[1]=1 {{9.89999962,257.399994}} wnTs[0]=0 {{{85.8000031,257.399994}, {9.89999962,257.399994}}} wnTs[1]=1
debugShowCubicIntersection wtTs[0]=1 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.393555}, {11,257.387115}}} {{11,257.387115}} wnTs[0]=0 {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.393555}, {11,257.387115}}} {{9.89999962,257.399994}} wnTs[0]=1 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} {{16.5,257.747742}} wnTs[0]=0 {{{16.5,257.747742}, {16.9802361,257.815582}, {17.4604721,257.915253}, {17.9407063,258.014893}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{16.5,257.747742}, {16.9802361,257.815582}, {17.4604721,257.915253}, {17.9407063,258.014893}}} {{17.9407063,258.014893}} wnTs[0]=0 {{{17.9407063,258.014893}, {18.5604706,258.143494}, {19.1802349,258.272095}, {19.7999992,258.332336}}}
debugShowCubicIntersection wtTs[0]=1 {{{17.9407063,258.014893}, {18.5604706,258.143494}, {19.1802349,258.272095}, {19.7999992,258.332336}}} {{19.7999992,258.332336}} wnTs[0]=0 {{{19.7999992,258.332336}, {20.8999996,258.43924}, {22,258.495697}, {23.1000004,258.389099}}}
debugShowCubicIntersection wtTs[0]=1 {{{19.7999992,258.332336}, {20.8999996,258.43924}, {22,258.495697}, {23.1000004,258.389099}}} {{23.1000004,258.389099}} wnTs[0]=0 {{{23.1000004,258.389099}, {23.70541,258.330444}, {24.3108177,258.175354}, {24.9162273,258.020264}}}
debugShowCubicIntersection wtTs[0]=1 {{{23.1000004,258.389099}, {23.70541,258.330444}, {24.3108177,258.175354}, {24.9162273,258.020264}}} {{24.9162273,258.020264}} wnTs[0]=0 {{{24.9162273,258.020264}, {25.4108181,257.893585}, {25.9054089,257.766907}, {26.3999996,257.69278}}}
debugShowCubicIntersection wtTs[0]=1 {{{24.9162273,258.020264}, {25.4108181,257.893585}, {25.9054089,257.766907}, {26.3999996,257.69278}}} {{26.3999996,257.69278}} wnTs[0]=0 {{{26.3999996,257.69278}, {27.5,257.527924}, {28.6000004,257.398163}, {29.7000008,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{26.3999996,257.69278}, {27.5,257.527924}, {28.6000004,257.398163}, {29.7000008,257.399994}}} {{29.7000008,257.399994}} wnTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.401825}, {31.8999996,257.537109}, {33,257.703766}}}
debugShowCubicLineIntersection wtTs[0]=0.986037692 {{{26.3999996,257.69278}, {27.5,257.527924}, {28.6000004,257.398163}, {29.7000008,257.399994}}} {{29.6539249,257.399994}} wtTs[1]=1 {{29.7000008,257.399994}} wnTs[0]=0.739737 {{{85.8000031,257.399994}, {9.89999962,257.399994}}} wnTs[1]=0.739130432
debugShowCubicIntersection wtTs[0]=1 {{{29.7000008,257.399994}, {30.7999992,257.401825}, {31.8999996,257.537109}, {33,257.703766}}} {{33,257.703766}} wnTs[0]=0 {{{33,257.703766}, {33.4856606,257.777344}, {33.9713249,257.902985}, {34.4569855,258.028625}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.401825}, {31.8999996,257.537109}, {33,257.703766}}} {{29.7000008,257.399994}} wnTs[0]=0.73913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{33,257.703766}, {33.4856606,257.777344}, {33.9713249,257.902985}, {34.4569855,258.028625}}} {{34.4569855,258.028625}} wnTs[0]=0 {{{34.4569855,258.028625}, {35.0713234,258.187531}, {35.6856613,258.346436}, {36.2999992,258.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{34.4569855,258.028625}, {35.0713234,258.187531}, {35.6856613,258.346436}, {36.2999992,258.399994}}} {{36.2999992,258.399994}} wnTs[0]=0 {{{36.2999992,258.399994}, {37.4000015,258.49588}, {38.5,258.445801}, {39.5999985,258.279144}}}
debugShowCubicIntersection wtTs[0]=1 {{{36.2999992,258.399994}, {37.4000015,258.49588}, {38.5,258.445801}, {39.5999985,258.279144}}} {{39.5999985,258.279144}} wnTs[0]=0 {{{39.5999985,258.279144}, {40.1364708,258.197876}, {40.6729393,258.021606}, {41.2094116,257.845367}}}
debugShowCubicIntersection wtTs[0]=1 {{{39.5999985,258.279144}, {40.1364708,258.197876}, {40.6729393,258.021606}, {41.2094116,257.845367}}} {{41.2094116,257.845367}} wnTs[0]=0 {{{41.2094116,257.845367}, {41.7729416,257.660217}, {42.3364716,257.475067}, {42.9000015,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{41.2094116,257.845367}, {41.7729416,257.660217}, {42.3364716,257.475067}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{41.2094116,257.845367}, {41.7729416,257.660217}, {42.3364716,257.475067}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}} {{45.1000023,257.367432}} wnTs[0]=0 {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} {{47.2999992,257.374481}} wnTs[0]=0 {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} {{51.3106155,257.764984}} wnTs[0]=0 {{{51.3106155,257.764984}, {51.8070755,257.889191}, {52.3035393,258.013397}, {52.7999992,258.088623}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{51.3106155,257.764984}, {51.8070755,257.889191}, {52.3035393,258.013397}, {52.7999992,258.088623}}} {{52.7999992,258.088623}} wnTs[0]=0 {{{52.7999992,258.088623}, {53.9000015,258.25531}, {55,258.348083}, {56.0999985,258.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{52.7999992,258.088623}, {53.9000015,258.25531}, {55,258.348083}, {56.0999985,258.399994}}} {{56.0999985,258.399994}} wnTs[0]=0 {{{56.0999985,258.399994}, {56.8333321,258.43457}, {57.5666656,258.423065}, {58.2999992,258.41153}}}
debugShowCubicIntersection wtTs[0]=1 {{{56.0999985,258.399994}, {56.8333321,258.43457}, {57.5666656,258.423065}, {58.2999992,258.41153}}} {{58.2999992,258.41153}} wnTs[0]=0 {{{58.2999992,258.41153}, {58.6666679,258.405762}, {59.0333328,258.399994}, {59.4000015,258.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{58.2999992,258.41153}, {58.6666679,258.405762}, {59.0333328,258.399994}, {59.4000015,258.399994}}} {{59.4000015,258.399994}} wnTs[0]=0 {{{59.4000015,258.399994}, {59.7666664,258.399994}, {60.1333313,258.406372}, {60.5,258.41275}}}
debugShowCubicIntersection wtTs[0]=1 {{{59.4000015,258.399994}, {59.7666664,258.399994}, {60.1333313,258.406372}, {60.5,258.41275}}} {{60.5,258.41275}} wnTs[0]=0 {{{60.5,258.41275}, {61.2333336,258.425507}, {61.9666672,258.438232}, {62.7000008,258.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{60.5,258.41275}, {61.2333336,258.425507}, {61.9666672,258.438232}, {62.7000008,258.399994}}} {{62.7000008,258.399994}} wnTs[0]=0 {{{62.7000008,258.399994}, {63.7999992,258.34259}, {64.9000015,258.222321}, {66,258.055634}}}
debugShowCubicIntersection wtTs[0]=1 {{{62.7000008,258.399994}, {63.7999992,258.34259}, {64.9000015,258.222321}, {66,258.055634}}} {{66,258.055634}} wnTs[0]=0 {{{66,258.055634}, {66.484726,257.982208}, {66.9694519,257.867401}, {67.4541855,257.752594}}}
debugShowCubicIntersection wtTs[0]=1 {{{66,258.055634}, {66.484726,257.982208}, {66.9694519,257.867401}, {67.4541855,257.752594}}} {{67.4541855,257.752594}} wnTs[0]=0 {{{67.4541855,257.752594}, {68.069458,257.606842}, {68.6847305,257.461121}, {69.3000031,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{67.4541855,257.752594}, {68.069458,257.606842}, {68.6847305,257.461121}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{67.4541855,257.752594}, {68.069458,257.606842}, {68.6847305,257.461121}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}} {{71.4999924,257.375702}} wnTs[0]=0 {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} {{73.7000046,257.386292}} wnTs[0]=0 {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} {{77.3666992,257.579529}} wnTs[0]=0 {{{77.3666992,257.579529}, {77.9777985,257.674652}, {78.5888977,257.769745}, {79.1999969,257.769745}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{77.3666992,257.579529}, {77.9777985,257.674652}, {78.5888977,257.769745}, {79.1999969,257.769745}}} {{79.1999969,257.769745}} wnTs[0]=0 {{{79.1999969,257.769745}, {79.8110962,257.769745}, {80.4221954,257.674652}, {81.0332947,257.579529}}}
debugShowCubicIntersection wtTs[0]=1 {{{79.1999969,257.769745}, {79.8110962,257.769745}, {80.4221954,257.674652}, {81.0332947,257.579529}}} {{81.0332947,257.579529}} wnTs[0]=0 {{{81.0332947,257.579529}, {81.5222015,257.503448}, {82.0111008,257.427368}, {82.5,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{81.0332947,257.579529}, {81.5222015,257.503448}, {82.0111008,257.427368}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{81.0332947,257.579529}, {81.5222015,257.503448}, {82.0111008,257.427368}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicIntersection wtTs[0]=1 {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}} {{84.6999969,257.386292}} wnTs[0]=0 {{{84.6999969,257.386292}, {85.0666656,257.393158}, {85.4333344,257.399994}, {85.8000031,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{84.6999969,257.386292}, {85.0666656,257.393158}, {85.4333344,257.399994}, {85.8000031,257.399994}}} {{85.8000031,257.399994}} wnTs[0]=0 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
SkOpSegment::markDone id=49 (26.3999996,257.69278 27.5,257.527924 28.6000004,257.398163 29.7000008,257.399994) t=0.986037692 [184] (29.6539249,257.399994) tEnd=0.986174342 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=80 (85.8000031,257.399994 9.89999962,257.399994) t=0.739130432 [176] (29.7000008,257.399994) tEnd=0.739737489 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=49 (26.3999996,257.69278 27.5,257.527924 28.6000004,257.398163 29.7000008,257.399994) t=0.986174342 [174] (29.654377,257.399994) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=80 (85.8000031,257.399994 9.89999962,257.399994) t=0.565217386 [177] (42.9000015,257.399994) tEnd=0.739130432 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0 [79] (85.8000031,257.399994) tEnd=0.0434782991 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.0434782991 [171] (82.5,257.399994) tEnd=0.130434797 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.130434797 [170] (75.9000015,257.399994) tEnd=0.173913096 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.173913096 [169] (72.5999985,257.399994) tEnd=0.217391295 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.217391295 [168] (69.3000031,257.399994) tEnd=0.478260888 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.478260888 [167] (49.5,257.399994) tEnd=0.521739137 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.521739137 [166] (46.2000008,257.399994) tEnd=0.565217386 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.739737489 [163] (29.6539249,257.399994) tEnd=0.956521739 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.956521739 [161] (13.1999998,257.399994) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=9 (26.3999996,257.107208 27.5,257.272064 28.6000004,257.401825 29.7000008,257.399994) t=0.986037692 [162] (29.6539249,257.399994) tEnd=0.986174342 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.739130432 [164] (29.7000008,257.399994) tEnd=0.739737489 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=9 (26.3999996,257.107208 27.5,257.272064 28.6000004,257.401825 29.7000008,257.399994) t=0.986174342 [173] (29.654377,257.399994) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.565217386 [165] (42.9000015,257.399994) tEnd=0.739130432 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
SkOpSegment::sortAngles [1] tStart=0 [1]
SkOpAngle::after [1/1] 30/29 tStart=0 tEnd=1 < [41/21] 0/1 tStart=0 tEnd=1 < [80/58] 31/31 tStart=1 tEnd=0.956521739 F 4
SkOpAngle::afterPart {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.406433}, {11,257.412872}}} id=1
SkOpAngle::afterPart {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.393555}, {11,257.387115}}} id=41
SkOpAngle::afterPart {{{9.89999962,257.399994}, {13.1999998,257.399994}}} id=80
SkOpSegment::sortAngles [2] tStart=1 [4]
SkOpAngle::after [2/2] 17/17 tStart=1 tEnd=0 < [80/57] 15/15 tStart=0.956521739 tEnd=1 < [80/56] 31/31 tStart=0.956521739 tEnd=0.739737489 F 4
SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.438629}, {11.7333336,257.425751}, {11,257.412872}}} id=2
SkOpAngle::afterPart {{{13.1999998,257.399994}, {9.89999962,257.399994}}} id=80
SkOpAngle::afterPart {{{13.1999998,257.399994}, {29.6539249,257.399994}}} id=80
SkOpAngle::after [2/2] 17/17 tStart=1 tEnd=0 < [43/23] 29/29 tStart=0 tEnd=1 < [80/56] 31/31 tStart=0.956521739 tEnd=0.739737489 T 4
SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.438629}, {11.7333336,257.425751}, {11,257.412872}}} id=2
SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} id=43
SkOpAngle::afterPart {{{13.1999998,257.399994}, {29.6539249,257.399994}}} id=80
SkOpAngle::after [2/2] 17/17 tStart=1 tEnd=0 < [42/22] 13/13 tStart=1 tEnd=0 < [43/23] 29/29 tStart=0 tEnd=1 F 4
SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.438629}, {11.7333336,257.425751}, {11,257.412872}}} id=2
SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.361359}, {11.7333336,257.374237}, {11,257.387115}}} id=42
SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} id=43
SkOpAngle::after [43/23] 29/29 tStart=0 tEnd=1 < [42/22] 13/13 tStart=1 tEnd=0 < [80/56] 31/31 tStart=0.956521739 tEnd=0.739737489 F 4
SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} id=43
SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.361359}, {11.7333336,257.374237}, {11,257.387115}}} id=42
SkOpAngle::afterPart {{{13.1999998,257.399994}, {29.6539249,257.399994}}} id=80
SkOpAngle::after [80/56] 31/31 tStart=0.956521739 tEnd=0.739737489 < [42/22] 13/13 tStart=1 tEnd=0 < [80/57] 15/15 tStart=0.956521739 tEnd=1 T 4
SkOpAngle::afterPart {{{13.1999998,257.399994}, {29.6539249,257.399994}}} id=80
SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.361359}, {11.7333336,257.374237}, {11,257.387115}}} id=42
SkOpAngle::afterPart {{{13.1999998,257.399994}, {9.89999962,257.399994}}} id=80
SkOpAngle::after [2/2] 17/17 tStart=1 tEnd=0 < [3/3] 1/1 tStart=0 tEnd=1 < [43/23] 29/29 tStart=0 tEnd=1 F 4
SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.438629}, {11.7333336,257.425751}, {11,257.412872}}} id=2
SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} id=3
SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} id=43
SkOpAngle::after [43/23] 29/29 tStart=0 tEnd=1 < [3/3] 1/1 tStart=0 tEnd=1 < [80/56] 31/31 tStart=0.956521739 tEnd=0.739737489 F 4
SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} id=43
SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} id=3
SkOpAngle::afterPart {{{13.1999998,257.399994}, {29.6539249,257.399994}}} id=80
SkOpAngle::after [80/56] 31/31 tStart=0.956521739 tEnd=0.739737489 < [3/3] 1/1 tStart=0 tEnd=1 < [42/22] 13/13 tStart=1 tEnd=0 T 4
SkOpAngle::afterPart {{{13.1999998,257.399994}, {29.6539249,257.399994}}} id=80
SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} id=3
SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.361359}, {11.7333336,257.374237}, {11,257.387115}}} id=42
SkOpSegment::sortAngles [3] tStart=0 [5]
SkOpSegment::sortAngles [9] tStart=0.986037692 [162]
SkOpAngle::after [9/4] 13/13 tStart=0.986037692 tEnd=0 < [49/24] 17/17 tStart=0.986037692 tEnd=0 < [80/55] 15/15 tStart=0.739737489 tEnd=0.956521739 F 4
SkOpAngle::afterPart {{{29.6539249,257.399994}, {28.5692831,257.398195}, {27.4846415,257.269762}, {26.3999996,257.107208}}} id=9
SkOpAngle::afterPart {{{29.6539249,257.399994}, {28.5692831,257.401793}, {27.4846415,257.530225}, {26.3999996,257.69278}}} id=49
SkOpAngle::afterPart {{{29.6539249,257.399994}, {13.1999998,257.399994}}} id=80
SkOpSegment::sortAngles [10] tStart=0 [19]
SkOpSegment::sortAngles [15] tStart=1 [30]
SkOpAngle::after [15/6] 13/13 tStart=1 tEnd=0 < [56/27] 1/1 tStart=0 tEnd=1 < [80/54] 31/31 tStart=0.565217386 tEnd=0.521739137 F 4
SkOpAngle::afterPart {{{42.9000015,257.399994}, {42.3364716,257.324921}, {41.7729416,257.139771}, {41.2094116,256.95462}}} id=15
SkOpAngle::afterPart {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}} id=56
SkOpAngle::afterPart {{{42.9000015,257.399994}, {46.2000008,257.399994}}} id=80
SkOpAngle::after [15/6] 13/13 tStart=1 tEnd=0 < [55/26] 17/17 tStart=1 tEnd=0 < [80/54] 31/31 tStart=0.565217386 tEnd=0.521739137 T 4
SkOpAngle::afterPart {{{42.9000015,257.399994}, {42.3364716,257.324921}, {41.7729416,257.139771}, {41.2094116,256.95462}}} id=15
SkOpAngle::afterPart {{{42.9000015,257.399994}, {42.3364716,257.475067}, {41.7729416,257.660217}, {41.2094116,257.845367}}} id=55
SkOpAngle::afterPart {{{42.9000015,257.399994}, {46.2000008,257.399994}}} id=80
SkOpAngle::after [15/6] 13/13 tStart=1 tEnd=0 < [16/7] 29/29 tStart=0 tEnd=1 < [55/26] 17/17 tStart=1 tEnd=0 F 4
SkOpAngle::afterPart {{{42.9000015,257.399994}, {42.3364716,257.324921}, {41.7729416,257.139771}, {41.2094116,256.95462}}} id=15
SkOpAngle::afterPart {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} id=16
SkOpAngle::afterPart {{{42.9000015,257.399994}, {42.3364716,257.475067}, {41.7729416,257.660217}, {41.2094116,257.845367}}} id=55
SkOpAngle::after [55/26] 17/17 tStart=1 tEnd=0 < [16/7] 29/29 tStart=0 tEnd=1 < [80/54] 31/31 tStart=0.565217386 tEnd=0.521739137 T 4
SkOpAngle::afterPart {{{42.9000015,257.399994}, {42.3364716,257.475067}, {41.7729416,257.660217}, {41.2094116,257.845367}}} id=55
SkOpAngle::afterPart {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} id=16
SkOpAngle::afterPart {{{42.9000015,257.399994}, {46.2000008,257.399994}}} id=80
SkOpSegment::sortAngles [16] tStart=0 [31]
SkOpSegment::sortAngles [17] tStart=1 [34]
SkOpAngle::after [17/8] 16/17 tStart=1 tEnd=0 < [80/53] 15/15 tStart=0.521739137 tEnd=0.565217386 < [80/52] 31/31 tStart=0.521739137 tEnd=0.478260888 F 4
SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.41629}, {45.1000023,257.432556}}} id=17
SkOpAngle::afterPart {{{46.2000008,257.399994}, {42.9000015,257.399994}}} id=80
SkOpAngle::afterPart {{{46.2000008,257.399994}, {49.5,257.399994}}} id=80
SkOpAngle::after [17/8] 16/17 tStart=1 tEnd=0 < [58/29] 0/1 tStart=0 tEnd=1 < [80/52] 31/31 tStart=0.521739137 tEnd=0.478260888 F 4
SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.41629}, {45.1000023,257.432556}}} id=17
SkOpAngle::afterPart {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} id=58
SkOpAngle::afterPart {{{46.2000008,257.399994}, {49.5,257.399994}}} id=80
SkOpAngle::after [80/52] 31/31 tStart=0.521739137 tEnd=0.478260888 < [58/29] 0/1 tStart=0 tEnd=1 < [80/53] 15/15 tStart=0.521739137 tEnd=0.565217386 T 4
SkOpAngle::afterPart {{{46.2000008,257.399994}, {49.5,257.399994}}} id=80
SkOpAngle::afterPart {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} id=58
SkOpAngle::afterPart {{{46.2000008,257.399994}, {42.9000015,257.399994}}} id=80
SkOpAngle::after [17/8] 16/17 tStart=1 tEnd=0 < [57/28] 14/13 tStart=1 tEnd=0 < [80/52] 31/31 tStart=0.521739137 tEnd=0.478260888 F 4
SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.41629}, {45.1000023,257.432556}}} id=17
SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.383698}, {45.1000023,257.367432}}} id=57
SkOpAngle::afterPart {{{46.2000008,257.399994}, {49.5,257.399994}}} id=80
SkOpAngle::after [80/52] 31/31 tStart=0.521739137 tEnd=0.478260888 < [57/28] 14/13 tStart=1 tEnd=0 < [58/29] 0/1 tStart=0 tEnd=1 F 4
SkOpAngle::afterPart {{{46.2000008,257.399994}, {49.5,257.399994}}} id=80
SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.383698}, {45.1000023,257.367432}}} id=57
SkOpAngle::afterPart {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} id=58
SkOpAngle::after [58/29] 0/1 tStart=0 tEnd=1 < [57/28] 14/13 tStart=1 tEnd=0 < [80/53] 15/15 tStart=0.521739137 tEnd=0.565217386 T 4
SkOpAngle::afterPart {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} id=58
SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.383698}, {45.1000023,257.367432}}} id=57
SkOpAngle::afterPart {{{46.2000008,257.399994}, {42.9000015,257.399994}}} id=80
SkOpAngle::after [17/8] 16/17 tStart=1 tEnd=0 < [18/9] 30/29 tStart=0 tEnd=1 < [80/52] 31/31 tStart=0.521739137 tEnd=0.478260888 T 4
SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.41629}, {45.1000023,257.432556}}} id=17
SkOpAngle::afterPart {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} id=18
SkOpAngle::afterPart {{{46.2000008,257.399994}, {49.5,257.399994}}} id=80
SkOpSegment::sortAngles [18] tStart=0 [35]
SkOpSegment::sortAngles [19] tStart=1 [38]
SkOpAngle::after [19/10] 17/17 tStart=1 tEnd=0 < [80/51] 15/15 tStart=0.478260888 tEnd=0.521739137 < [80/50] 31/31 tStart=0.478260888 tEnd=0.217391295 F 4
SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.476501}, {48.0333328,257.451019}, {47.2999992,257.425507}}} id=19
SkOpAngle::afterPart {{{49.5,257.399994}, {46.2000008,257.399994}}} id=80
SkOpAngle::afterPart {{{49.5,257.399994}, {69.3000031,257.399994}}} id=80
SkOpAngle::after [19/10] 17/17 tStart=1 tEnd=0 < [60/31] 29/29 tStart=0 tEnd=1 < [80/50] 31/31 tStart=0.478260888 tEnd=0.217391295 T 4
SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.476501}, {48.0333328,257.451019}, {47.2999992,257.425507}}} id=19
SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} id=60
SkOpAngle::afterPart {{{49.5,257.399994}, {69.3000031,257.399994}}} id=80
SkOpAngle::after [19/10] 17/17 tStart=1 tEnd=0 < [59/30] 13/13 tStart=1 tEnd=0 < [60/31] 29/29 tStart=0 tEnd=1 F 4
SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.476501}, {48.0333328,257.451019}, {47.2999992,257.425507}}} id=19
SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.323486}, {48.0333328,257.348969}, {47.2999992,257.374481}}} id=59
SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} id=60
SkOpAngle::after [60/31] 29/29 tStart=0 tEnd=1 < [59/30] 13/13 tStart=1 tEnd=0 < [80/50] 31/31 tStart=0.478260888 tEnd=0.217391295 F 4
SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} id=60
SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.323486}, {48.0333328,257.348969}, {47.2999992,257.374481}}} id=59
SkOpAngle::afterPart {{{49.5,257.399994}, {69.3000031,257.399994}}} id=80
SkOpAngle::after [80/50] 31/31 tStart=0.478260888 tEnd=0.217391295 < [59/30] 13/13 tStart=1 tEnd=0 < [80/51] 15/15 tStart=0.478260888 tEnd=0.521739137 T 4
SkOpAngle::afterPart {{{49.5,257.399994}, {69.3000031,257.399994}}} id=80
SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.323486}, {48.0333328,257.348969}, {47.2999992,257.374481}}} id=59
SkOpAngle::afterPart {{{49.5,257.399994}, {46.2000008,257.399994}}} id=80
SkOpAngle::after [19/10] 17/17 tStart=1 tEnd=0 < [20/11] 1/1 tStart=0 tEnd=1 < [60/31] 29/29 tStart=0 tEnd=1 F 4
SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.476501}, {48.0333328,257.451019}, {47.2999992,257.425507}}} id=19
SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} id=20
SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} id=60
SkOpAngle::after [60/31] 29/29 tStart=0 tEnd=1 < [20/11] 1/1 tStart=0 tEnd=1 < [80/50] 31/31 tStart=0.478260888 tEnd=0.217391295 F 4
SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} id=60
SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} id=20
SkOpAngle::afterPart {{{49.5,257.399994}, {69.3000031,257.399994}}} id=80
SkOpAngle::after [80/50] 31/31 tStart=0.478260888 tEnd=0.217391295 < [20/11] 1/1 tStart=0 tEnd=1 < [59/30] 13/13 tStart=1 tEnd=0 T 4
SkOpAngle::afterPart {{{49.5,257.399994}, {69.3000031,257.399994}}} id=80
SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} id=20
SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.323486}, {48.0333328,257.348969}, {47.2999992,257.374481}}} id=59
SkOpSegment::sortAngles [20] tStart=0 [39]
SkOpSegment::sortAngles [29] tStart=1 [58]
SkOpAngle::after [29/12] 13/13 tStart=1 tEnd=0 < [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 < [80/48] 31/31 tStart=0.217391295 tEnd=0.173913096 T 4
SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.338867}, {68.069458,257.193146}, {67.4541855,257.047394}}} id=29
SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
SkOpAngle::afterPart {{{69.3000031,257.399994}, {72.5999985,257.399994}}} id=80
SkOpAngle::after [29/12] 13/13 tStart=1 tEnd=0 < [70/33] 1/1 tStart=0 tEnd=1 < [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 F 4
SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.338867}, {68.069458,257.193146}, {67.4541855,257.047394}}} id=29
SkOpAngle::afterPart {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}} id=70
SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
SkOpAngle::after [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 < [70/33] 1/1 tStart=0 tEnd=1 < [80/48] 31/31 tStart=0.217391295 tEnd=0.173913096 F 4
SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
SkOpAngle::afterPart {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}} id=70
SkOpAngle::afterPart {{{69.3000031,257.399994}, {72.5999985,257.399994}}} id=80
SkOpAngle::after [80/48] 31/31 tStart=0.217391295 tEnd=0.173913096 < [70/33] 1/1 tStart=0 tEnd=1 < [29/12] 13/13 tStart=1 tEnd=0 T 4
SkOpAngle::afterPart {{{69.3000031,257.399994}, {72.5999985,257.399994}}} id=80
SkOpAngle::afterPart {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}} id=70
SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.338867}, {68.069458,257.193146}, {67.4541855,257.047394}}} id=29
SkOpAngle::after [29/12] 13/13 tStart=1 tEnd=0 < [69/32] 17/17 tStart=1 tEnd=0 < [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 F 4
SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.338867}, {68.069458,257.193146}, {67.4541855,257.047394}}} id=29
SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.461121}, {68.069458,257.606842}, {67.4541855,257.752594}}} id=69
SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
SkOpAngle::after [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 < [69/32] 17/17 tStart=1 tEnd=0 < [80/48] 31/31 tStart=0.217391295 tEnd=0.173913096 T 4
SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.461121}, {68.069458,257.606842}, {67.4541855,257.752594}}} id=69
SkOpAngle::afterPart {{{69.3000031,257.399994}, {72.5999985,257.399994}}} id=80
SkOpAngle::after [29/12] 13/13 tStart=1 tEnd=0 < [30/13] 29/29 tStart=0 tEnd=1 < [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 F 4
SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.338867}, {68.069458,257.193146}, {67.4541855,257.047394}}} id=29
SkOpAngle::afterPart {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} id=30
SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
SkOpAngle::after [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 < [30/13] 29/29 tStart=0 tEnd=1 < [69/32] 17/17 tStart=1 tEnd=0 F 4
SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
SkOpAngle::afterPart {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} id=30
SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.461121}, {68.069458,257.606842}, {67.4541855,257.752594}}} id=69
SkOpAngle::after [69/32] 17/17 tStart=1 tEnd=0 < [30/13] 29/29 tStart=0 tEnd=1 < [80/48] 31/31 tStart=0.217391295 tEnd=0.173913096 T 4
SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.461121}, {68.069458,257.606842}, {67.4541855,257.752594}}} id=69
SkOpAngle::afterPart {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} id=30
SkOpAngle::afterPart {{{69.3000031,257.399994}, {72.5999985,257.399994}}} id=80
SkOpSegment::sortAngles [30] tStart=0 [59]
SkOpSegment::sortAngles [31] tStart=1 [62]
SkOpAngle::after [31/14] 16/17 tStart=1 tEnd=0 < [80/47] 15/15 tStart=0.173913096 tEnd=0.217391295 < [80/46] 31/31 tStart=0.173913096 tEnd=0.130434797 F 4
SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.41214}, {71.4999924,257.424286}}} id=31
SkOpAngle::afterPart {{{72.5999985,257.399994}, {69.3000031,257.399994}}} id=80
SkOpAngle::afterPart {{{72.5999985,257.399994}, {75.9000015,257.399994}}} id=80
SkOpAngle::after [31/14] 16/17 tStart=1 tEnd=0 < [72/35] 0/1 tStart=0 tEnd=1 < [80/46] 31/31 tStart=0.173913096 tEnd=0.130434797 F 4
SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.41214}, {71.4999924,257.424286}}} id=31
SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} id=72
SkOpAngle::afterPart {{{72.5999985,257.399994}, {75.9000015,257.399994}}} id=80
SkOpAngle::after [80/46] 31/31 tStart=0.173913096 tEnd=0.130434797 < [72/35] 0/1 tStart=0 tEnd=1 < [80/47] 15/15 tStart=0.173913096 tEnd=0.217391295 T 4
SkOpAngle::afterPart {{{72.5999985,257.399994}, {75.9000015,257.399994}}} id=80
SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} id=72
SkOpAngle::afterPart {{{72.5999985,257.399994}, {69.3000031,257.399994}}} id=80
SkOpAngle::after [31/14] 16/17 tStart=1 tEnd=0 < [71/34] 14/13 tStart=1 tEnd=0 < [80/46] 31/31 tStart=0.173913096 tEnd=0.130434797 F 4
SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.41214}, {71.4999924,257.424286}}} id=31
SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.387848}, {71.4999924,257.375702}}} id=71
SkOpAngle::afterPart {{{72.5999985,257.399994}, {75.9000015,257.399994}}} id=80
SkOpAngle::after [80/46] 31/31 tStart=0.173913096 tEnd=0.130434797 < [71/34] 14/13 tStart=1 tEnd=0 < [72/35] 0/1 tStart=0 tEnd=1 F 4
SkOpAngle::afterPart {{{72.5999985,257.399994}, {75.9000015,257.399994}}} id=80
SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.387848}, {71.4999924,257.375702}}} id=71
SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} id=72
SkOpAngle::after [72/35] 0/1 tStart=0 tEnd=1 < [71/34] 14/13 tStart=1 tEnd=0 < [80/47] 15/15 tStart=0.173913096 tEnd=0.217391295 T 4
SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} id=72
SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.387848}, {71.4999924,257.375702}}} id=71
SkOpAngle::afterPart {{{72.5999985,257.399994}, {69.3000031,257.399994}}} id=80
SkOpAngle::after [31/14] 16/17 tStart=1 tEnd=0 < [32/15] 30/29 tStart=0 tEnd=1 < [80/46] 31/31 tStart=0.173913096 tEnd=0.130434797 T 4
SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.41214}, {71.4999924,257.424286}}} id=31
SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} id=32
SkOpAngle::afterPart {{{72.5999985,257.399994}, {75.9000015,257.399994}}} id=80
SkOpSegment::sortAngles [32] tStart=0 [63]
SkOpSegment::sortAngles [33] tStart=1 [66]
SkOpAngle::after [33/16] 17/17 tStart=1 tEnd=0 < [80/45] 15/15 tStart=0.130434797 tEnd=0.173913096 < [80/44] 31/31 tStart=0.130434797 tEnd=0.0434782991 F 4
SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.441101}, {74.4333344,257.427399}, {73.7000046,257.413696}}} id=33
SkOpAngle::afterPart {{{75.9000015,257.399994}, {72.5999985,257.399994}}} id=80
SkOpAngle::afterPart {{{75.9000015,257.399994}, {82.5,257.399994}}} id=80
SkOpAngle::after [33/16] 17/17 tStart=1 tEnd=0 < [74/37] 29/29 tStart=0 tEnd=1 < [80/44] 31/31 tStart=0.130434797 tEnd=0.0434782991 T 4
SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.441101}, {74.4333344,257.427399}, {73.7000046,257.413696}}} id=33
SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} id=74
SkOpAngle::afterPart {{{75.9000015,257.399994}, {82.5,257.399994}}} id=80
SkOpAngle::after [33/16] 17/17 tStart=1 tEnd=0 < [73/36] 13/13 tStart=1 tEnd=0 < [74/37] 29/29 tStart=0 tEnd=1 F 4
SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.441101}, {74.4333344,257.427399}, {73.7000046,257.413696}}} id=33
SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.358887}, {74.4333344,257.372589}, {73.7000046,257.386292}}} id=73
SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} id=74
SkOpAngle::after [74/37] 29/29 tStart=0 tEnd=1 < [73/36] 13/13 tStart=1 tEnd=0 < [80/44] 31/31 tStart=0.130434797 tEnd=0.0434782991 F 4
SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} id=74
SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.358887}, {74.4333344,257.372589}, {73.7000046,257.386292}}} id=73
SkOpAngle::afterPart {{{75.9000015,257.399994}, {82.5,257.399994}}} id=80
SkOpAngle::after [80/44] 31/31 tStart=0.130434797 tEnd=0.0434782991 < [73/36] 13/13 tStart=1 tEnd=0 < [80/45] 15/15 tStart=0.130434797 tEnd=0.173913096 T 4
SkOpAngle::afterPart {{{75.9000015,257.399994}, {82.5,257.399994}}} id=80
SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.358887}, {74.4333344,257.372589}, {73.7000046,257.386292}}} id=73
SkOpAngle::afterPart {{{75.9000015,257.399994}, {72.5999985,257.399994}}} id=80
SkOpAngle::after [33/16] 17/17 tStart=1 tEnd=0 < [34/17] 1/1 tStart=0 tEnd=1 < [74/37] 29/29 tStart=0 tEnd=1 F 4
SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.441101}, {74.4333344,257.427399}, {73.7000046,257.413696}}} id=33
SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} id=34
SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} id=74
SkOpAngle::after [74/37] 29/29 tStart=0 tEnd=1 < [34/17] 1/1 tStart=0 tEnd=1 < [80/44] 31/31 tStart=0.130434797 tEnd=0.0434782991 F 4
SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} id=74
SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} id=34
SkOpAngle::afterPart {{{75.9000015,257.399994}, {82.5,257.399994}}} id=80
SkOpAngle::after [80/44] 31/31 tStart=0.130434797 tEnd=0.0434782991 < [34/17] 1/1 tStart=0 tEnd=1 < [73/36] 13/13 tStart=1 tEnd=0 T 4
SkOpAngle::afterPart {{{75.9000015,257.399994}, {82.5,257.399994}}} id=80
SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} id=34
SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.358887}, {74.4333344,257.372589}, {73.7000046,257.386292}}} id=73
SkOpSegment::sortAngles [34] tStart=0 [67]
SkOpSegment::sortAngles [37] tStart=1 [74]
SkOpAngle::after [37/18] 13/13 tStart=1 tEnd=0 < [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 < [80/42] 31/31 tStart=0.0434782991 tEnd=0 T 4
SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.37262}, {81.5222015,257.296539}, {81.0332947,257.220459}}} id=37
SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
SkOpAngle::afterPart {{{82.5,257.399994}, {85.8000031,257.399994}}} id=80
SkOpAngle::after [37/18] 13/13 tStart=1 tEnd=0 < [78/39] 1/1 tStart=0 tEnd=1 < [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 F 4
SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.37262}, {81.5222015,257.296539}, {81.0332947,257.220459}}} id=37
SkOpAngle::afterPart {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}} id=78
SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
SkOpAngle::after [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 < [78/39] 1/1 tStart=0 tEnd=1 < [80/42] 31/31 tStart=0.0434782991 tEnd=0 F 4
SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
SkOpAngle::afterPart {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}} id=78
SkOpAngle::afterPart {{{82.5,257.399994}, {85.8000031,257.399994}}} id=80
SkOpAngle::after [80/42] 31/31 tStart=0.0434782991 tEnd=0 < [78/39] 1/1 tStart=0 tEnd=1 < [37/18] 13/13 tStart=1 tEnd=0 T 4
SkOpAngle::afterPart {{{82.5,257.399994}, {85.8000031,257.399994}}} id=80
SkOpAngle::afterPart {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}} id=78
SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.37262}, {81.5222015,257.296539}, {81.0332947,257.220459}}} id=37
SkOpAngle::after [37/18] 13/13 tStart=1 tEnd=0 < [77/38] 17/17 tStart=1 tEnd=0 < [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 F 4
SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.37262}, {81.5222015,257.296539}, {81.0332947,257.220459}}} id=37
SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.427368}, {81.5222015,257.503448}, {81.0332947,257.579529}}} id=77
SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
SkOpAngle::after [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 < [77/38] 17/17 tStart=1 tEnd=0 < [80/42] 31/31 tStart=0.0434782991 tEnd=0 T 4
SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.427368}, {81.5222015,257.503448}, {81.0332947,257.579529}}} id=77
SkOpAngle::afterPart {{{82.5,257.399994}, {85.8000031,257.399994}}} id=80
SkOpAngle::after [37/18] 13/13 tStart=1 tEnd=0 < [38/19] 29/29 tStart=0 tEnd=1 < [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 F 4
SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.37262}, {81.5222015,257.296539}, {81.0332947,257.220459}}} id=37
SkOpAngle::afterPart {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} id=38
SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
SkOpAngle::after [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 < [38/19] 29/29 tStart=0 tEnd=1 < [77/38] 17/17 tStart=1 tEnd=0 F 4
SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
SkOpAngle::afterPart {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} id=38
SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.427368}, {81.5222015,257.503448}, {81.0332947,257.579529}}} id=77
SkOpAngle::after [77/38] 17/17 tStart=1 tEnd=0 < [38/19] 29/29 tStart=0 tEnd=1 < [80/42] 31/31 tStart=0.0434782991 tEnd=0 T 4
SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.427368}, {81.5222015,257.503448}, {81.0332947,257.579529}}} id=77
SkOpAngle::afterPart {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} id=38
SkOpAngle::afterPart {{{82.5,257.399994}, {85.8000031,257.399994}}} id=80
SkOpSegment::sortAngles [38] tStart=0 [75]
SkOpSegment::sortAngles [39] tStart=1 [78]
SkOpAngle::after [39/20] 16/17 tStart=1 tEnd=0 < [79/40] 14/13 tStart=1 tEnd=0 < [80/41] 15/15 tStart=0 tEnd=0.0434782991 T 4
SkOpAngle::afterPart {{{85.8000031,257.399994}, {85.4333344,257.399994}, {85.0666656,257.40683}, {84.6999969,257.413696}}} id=39
SkOpAngle::afterPart {{{85.8000031,257.399994}, {85.4333344,257.399994}, {85.0666656,257.393158}, {84.6999969,257.386292}}} id=79
SkOpAngle::afterPart {{{85.8000031,257.399994}, {82.5,257.399994}}} id=80
SkOpSegment::sortAngles [41] tStart=0 [81]
SkOpSegment::sortAngles [42] tStart=1 [84]
SkOpSegment::sortAngles [43] tStart=0 [85]
SkOpSegment::sortAngles [49] tStart=0.986037692 [184]
SkOpSegment::sortAngles [50] tStart=0 [99]
SkOpSegment::sortAngles [55] tStart=1 [110]
SkOpSegment::sortAngles [56] tStart=0 [111]
SkOpSegment::sortAngles [57] tStart=1 [114]
SkOpSegment::sortAngles [58] tStart=0 [115]
SkOpSegment::sortAngles [59] tStart=1 [118]
SkOpSegment::sortAngles [60] tStart=0 [119]
SkOpSegment::sortAngles [69] tStart=1 [138]
SkOpSegment::sortAngles [70] tStart=0 [139]
SkOpSegment::sortAngles [71] tStart=1 [142]
SkOpSegment::sortAngles [72] tStart=0 [143]
SkOpSegment::sortAngles [73] tStart=1 [146]
SkOpSegment::sortAngles [74] tStart=0 [147]
SkOpSegment::sortAngles [77] tStart=1 [154]
SkOpSegment::sortAngles [78] tStart=0 [155]
SkOpSegment::sortAngles [79] tStart=1 [158]
SkOpSegment::sortAngles [80] tStart=0 [159]
SkOpSegment::sortAngles [80] tStart=0.0434782991 [183]
SkOpSegment::sortAngles [80] tStart=0.130434797 [182]
SkOpSegment::sortAngles [80] tStart=0.173913096 [181]
SkOpSegment::sortAngles [80] tStart=0.217391295 [180]
SkOpSegment::sortAngles [80] tStart=0.478260888 [179]
SkOpSegment::sortAngles [80] tStart=0.521739137 [178]
SkOpSegment::sortAngles [80] tStart=0.565217386 [177]
SkOpSegment::sortAngles [80] tStart=0.739737489 [175]
SkOpSegment::sortAngles [80] tStart=0.956521739 [172]
SkOpSegment::sortAngles [80] tStart=1 [160]
SkOpSegment::debugShowActiveSpans id=1 (9.89999962,257.399994 10.2666664,257.399994 10.6333332,257.406433 11,257.412872) t=0 (9.89999962,257.399994) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (11,257.412872 11.7333336,257.425751 12.4666672,257.438629 13.1999998,257.399994) t=0 (11,257.412872) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (13.1999998,257.399994 14.3000002,257.342041 15.3999996,257.207611 16.5,257.052246) t=0 (13.1999998,257.399994) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (16.5,257.052246 16.9802361,256.984406 17.4604721,256.884735 17.9407063,256.785095) t=0 (16.5,257.052246) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (17.9407063,256.785095 18.5604706,256.656494 19.1802349,256.527893 19.7999992,256.467651) t=0 (17.9407063,256.785095) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (19.7999992,256.467651 20.8999996,256.360748 22,256.304291 23.1000004,256.410889) t=0 (19.7999992,256.467651) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=7 (23.1000004,256.410889 23.70541,256.469543 24.3108177,256.624634 24.9162273,256.779724) t=0 (23.1000004,256.410889) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=8 (24.9162273,256.779724 25.4108181,256.906403 25.9054089,257.033081 26.3999996,257.107208) t=0 (24.9162273,256.779724) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=9 (26.3999996,257.107208 27.5,257.272064 28.6000004,257.401825 29.7000008,257.399994) t=0 (26.3999996,257.107208) tEnd=0.986037692 windSum=? windValue=1 oppValue=0
</div>
<div id="cubicOp142">
seg=1 {{{5, 6}, {3.45152783f, 5.2257638f}, {4.30082178f, 2.05376172f}, {4.29911709f, 2.05330443f}}}
seg=2 {{{4.29911709f, 2.05330443f}, {4.29861975f, 2.05317116f}, {4.2257638f, 2.32270813f}, {4, 3}}}
seg=3 {{{4, 3}, {5, 6}}}
op diff
seg=4 {{{0, 5}, {1.125f, 4.625f}, {2.25f, 4.53125f}, {3.1640625f, 4.45507813f}}}
seg=5 {{{3.1640625f, 4.45507813f}, {4.6875f, 4.328125f}, {5.625f, 4.25f}, {5, 3}}}
seg=6 {{{5, 3}, {0, 5}}}
debugShowCubicIntersection wtTs[0]=1 {{{5,6}, {3.45152783,5.2257638}, {4.30082178,2.05376172}, {4.29911709,2.05330443}}} {{4.29911709,2.05330443}} wnTs[0]=0 {{{4.29911709,2.05330443}, {4.29861975,2.05317116}, {4.2257638,2.32270813}, {4,3}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{5,6}, {3.45152783,5.2257638}, {4.30082178,2.05376172}, {4.29911709,2.05330443}}} {{5,6}} wtTs[1]=0.587088912 {{4.09466553,3.28399706}} wnTs[0]=1 {{{4,3}, {5,6}}} wnTs[1]=0.0946657086
SkOpSegment::addT insert t=0.587088912 segID=1 spanID=13
SkOpSegment::addT insert t=0.0946657086 segID=3 spanID=14
debugShowCubicLineIntersection wtTs[0]=1 {{{4.29911709,2.05330443}, {4.29861975,2.05317116}, {4.2257638,2.32270813}, {4,3}}} {{4,3}} wnTs[0]=0 {{{4,3}, {5,6}}}
debugShowCubicIntersection wtTs[0]=0.383986729 {{{5,6}, {3.45152783,5.2257638}, {4.30082178,2.05376172}, {4.29911709,2.05330443}}} {{4.09290743,4.36280823}} wnTs[0]=0.225176 {{{3.1640625,4.45507813}, {4.6875,4.328125}, {5.625,4.25}, {5,3}}}
SkOpSegment::addT insert t=0.383986729 segID=1 spanID=15
SkOpSegment::addT insert t=0.225175574 segID=5 spanID=16
debugShowCubicLineIntersection wtTs[0]=0.571089482 {{{5,6}, {3.45152783,5.2257638}, {4.30082178,2.05376172}, {4.29911709,2.05330443}}} {{4.08799171,3.36480331}} wnTs[0]=0.182402 {{{5,3}, {0,5}}}
SkOpSegment::addT insert t=0.571089482 segID=1 spanID=17
SkOpSegment::addT insert t=0.18240164 segID=6 spanID=18
debugShowCubicIntersection no intersect {{{4.29911709,2.05330443}, {4.29861975,2.05317116}, {4.2257638,2.32270813}, {4,3}}} {{{3.1640625,4.45507813}, {4.6875,4.328125}, {5.625,4.25}, {5,3}}}
debugShowCubicLineIntersection no intersect {{{4.29911709,2.05330443}, {4.29861975,2.05317116}, {4.2257638,2.32270813}, {4,3}}} {{{5,3}, {0,5}}}
debugShowCubicLineIntersection wtTs[0]=0.326417764 {{{3.1640625,4.45507813}, {4.6875,4.328125}, {5.625,4.25}, {5,3}}} {{4.43463707,4.30391121}} wnTs[0]=0.434637 {{{4,3}, {5,6}}}
SkOpSegment::addT insert t=0.434637102 segID=3 spanID=19
SkOpSegment::addT insert t=0.326417764 segID=5 spanID=20
debugShowLineIntersection wtTs[0]=0.117647059 {{{4,3}, {5,6}}} {{4.11764717,3.35294127}} wnTs[0]=0.176471 {{{5,3}, {0,5}}}
SkOpSegment::addT insert t=0.117647059 segID=3 spanID=21
SkOpSegment::addT insert t=0.176470588 segID=6 spanID=22
debugShowCubicIntersection wtTs[0]=1 {{{0,5}, {1.125,4.625}, {2.25,4.53125}, {3.1640625,4.45507813}}} {{3.1640625,4.45507813}} wnTs[0]=0 {{{3.1640625,4.45507813}, {4.6875,4.328125}, {5.625,4.25}, {5,3}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{0,5}, {1.125,4.625}, {2.25,4.53125}, {3.1640625,4.45507813}}} {{0,5}} wnTs[0]=1 {{{5,3}, {0,5}}}
debugShowCubicLineIntersection wtTs[0]=1 {{{3.1640625,4.45507813}, {4.6875,4.328125}, {5.625,4.25}, {5,3}}} {{5,3}} wnTs[0]=0 {{{5,3}, {0,5}}}
SkOpSegment::sortAngles [1] tStart=0.383986729 [15]
SkOpAngle::after [1/1] 25/25 tStart=0.383986729 tEnd=0 < [5/13] 17/17 tStart=0.225175574 tEnd=0 < [1/2] 9/9 tStart=0.383986729 tEnd=0.571089482 F 4
SkOpAngle::afterPart {{{4.09290743,4.36280823}, {4.16435514,5.05186675}, {4.40540724,5.70270357}, {5,6}}} id=1
SkOpAngle::afterPart {{{4.09290743,4.36280823}, {3.82043503,4.40038055}, {3.50710341,4.42649138}, {3.1640625,4.45507813}}} id=5
SkOpAngle::afterPart {{{4.09290743,4.36280823}, {4.05809356,4.0270551}, {4.06354799,3.68222709}, {4.08799171,3.36480331}}} id=1
SkOpAngle::after [1/1] 25/25 tStart=0.383986729 tEnd=0 < [5/14] 1/1 tStart=0.225175574 tEnd=0.326417764 < [1/2] 9/9 tStart=0.383986729 tEnd=0.571089482 T 4
SkOpAngle::afterPart {{{4.09290743,4.36280823}, {4.16435514,5.05186675}, {4.40540724,5.70270357}, {5,6}}} id=1
SkOpAngle::afterPart {{{4.09290743,4.36280823}, {4.21541496,4.34591517}, {4.32966255,4.32670493}, {4.43463707,4.30391121}}} id=5
SkOpAngle::afterPart {{{4.09290743,4.36280823}, {4.05809356,4.0270551}, {4.06354799,3.68222709}, {4.08799171,3.36480331}}} id=1
SkOpSegment::sortAngles [1] tStart=0.571089482 [17]
SkOpAngle::after [1/3] 21/25 tStart=0.571089482 tEnd=0.383986729 < [6/19] 1/1 tStart=0.18240164 tEnd=0.176470588 < [1/4] 5/5 tStart=0.571089482 tEnd=0.587088912 T 4
SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.06354799,3.68222709}, {4.05809356,4.0270551}, {4.09290743,4.36280823}}} id=1
SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.11764717,3.35294127}}} id=6
SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.09008193,3.33765994}, {4.09231091,3.31071685}, {4.09466553,3.28399706}}} id=1
SkOpAngle::after [1/3] 21/25 tStart=0.571089482 tEnd=0.383986729 < [6/20] 17/17 tStart=0.18240164 tEnd=1 < [6/19] 1/1 tStart=0.18240164 tEnd=0.176470588 F 4
SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.06354799,3.68222709}, {4.05809356,4.0270551}, {4.09290743,4.36280823}}} id=1
SkOpAngle::afterPart {{{4.08799171,3.36480331}, {0,5}}} id=6
SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.11764717,3.35294127}}} id=6
SkOpAngle::after [6/19] 1/1 tStart=0.18240164 tEnd=0.176470588 < [6/20] 17/17 tStart=0.18240164 tEnd=1 < [1/4] 5/5 tStart=0.571089482 tEnd=0.587088912 F 4
SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.11764717,3.35294127}}} id=6
SkOpAngle::afterPart {{{4.08799171,3.36480331}, {0,5}}} id=6
SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.09008193,3.33765994}, {4.09231091,3.31071685}, {4.09466553,3.28399706}}} id=1
SkOpAngle::after [1/4] 5/5 tStart=0.571089482 tEnd=0.587088912 < [6/20] 17/17 tStart=0.18240164 tEnd=1 < [1/3] 21/25 tStart=0.571089482 tEnd=0.383986729 T 4
SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.09008193,3.33765994}, {4.09231091,3.31071685}, {4.09466553,3.28399706}}} id=1
SkOpAngle::afterPart {{{4.08799171,3.36480331}, {0,5}}} id=6
SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.06354799,3.68222709}, {4.05809356,4.0270551}, {4.09290743,4.36280823}}} id=1
SkOpSegment::sortAngles [1] tStart=0.587088912 [13]
SkOpAngle::after [1/5] 21/21 tStart=0.587088912 tEnd=0.571089482 < [3/7] 9/9 tStart=0.0946657086 tEnd=0 < [1/6] 5/5 tStart=0.587088912 tEnd=1 F 4
SkOpAngle::afterPart {{{4.09466553,3.28399706}, {4.09231091,3.31071685}, {4.09008193,3.33765994}, {4.08799171,3.36480331}}} id=1
SkOpAngle::afterPart {{{4.09466553,3.28399706}, {4,3}}} id=3
SkOpAngle::afterPart {{{4.09466553,3.28399706}, {4.15543319,2.59441633}, {4.29982097,2.05349325}, {4.29911709,2.05330443}}} id=1
SkOpAngle::after [1/5] 21/21 tStart=0.587088912 tEnd=0.571089482 < [3/8] 25/25 tStart=0.0946657086 tEnd=0.117647059 < [1/6] 5/5 tStart=0.587088912 tEnd=1 T 4
SkOpAngle::afterPart {{{4.09466553,3.28399706}, {4.09231091,3.31071685}, {4.09008193,3.33765994}, {4.08799171,3.36480331}}} id=1
SkOpAngle::afterPart {{{4.09466553,3.28399706}, {4.11764717,3.35294127}}} id=3
SkOpAngle::afterPart {{{4.09466553,3.28399706}, {4.15543319,2.59441633}, {4.29982097,2.05349325}, {4.29911709,2.05330443}}} id=1
SkOpSegment::sortAngles [3] tStart=0.0946657086 [14]
SkOpSegment::sortAngles [3] tStart=0.117647059 [21]
SkOpAngle::after [3/9] 9/9 tStart=0.117647059 tEnd=0.0946657086 < [6/17] 1/1 tStart=0.176470588 tEnd=0 < [3/10] 25/25 tStart=0.117647059 tEnd=0.434637102 F 4
SkOpAngle::afterPart {{{4.11764717,3.35294127}, {4.09466553,3.28399706}}} id=3
SkOpAngle::afterPart {{{4.11764717,3.35294127}, {5,3}}} id=6
SkOpAngle::afterPart {{{4.11764717,3.35294127}, {4.43463707,4.30391121}}} id=3
SkOpAngle::after [3/9] 9/9 tStart=0.117647059 tEnd=0.0946657086 < [6/18] 17/17 tStart=0.176470588 tEnd=0.18240164 < [3/10] 25/25 tStart=0.117647059 tEnd=0.434637102 T 4
SkOpAngle::afterPart {{{4.11764717,3.35294127}, {4.09466553,3.28399706}}} id=3
SkOpAngle::afterPart {{{4.11764717,3.35294127}, {4.08799171,3.36480331}}} id=6
SkOpAngle::afterPart {{{4.11764717,3.35294127}, {4.43463707,4.30391121}}} id=3
SkOpSegment::sortAngles [3] tStart=0.434637102 [19]
SkOpAngle::after [3/11] 9/9 tStart=0.434637102 tEnd=0.117647059 < [5/15] 17/17 tStart=0.326417764 tEnd=0.225175574 < [3/12] 25/25 tStart=0.434637102 tEnd=1 T 4
SkOpAngle::afterPart {{{4.43463707,4.30391121}, {4.11764717,3.35294127}}} id=3
SkOpAngle::afterPart {{{4.43463707,4.30391121}, {4.32966255,4.32670493}, {4.21541496,4.34591517}, {4.09290743,4.36280823}}} id=5
SkOpAngle::afterPart {{{4.43463707,4.30391121}, {5,6}}} id=3
SkOpAngle::after [3/11] 9/9 tStart=0.434637102 tEnd=0.117647059 < [5/16] 1/5 tStart=0.326417764 tEnd=1 < [5/15] 17/17 tStart=0.326417764 tEnd=0.225175574 F 4
SkOpAngle::afterPart {{{4.43463707,4.30391121}, {4.11764717,3.35294127}}} id=3
SkOpAngle::afterPart {{{4.43463707,4.30391121}, {5.13305116,4.15226054}, {5.4209889,3.84197779}, {5,3}}} id=5
SkOpAngle::afterPart {{{4.43463707,4.30391121}, {4.32966255,4.32670493}, {4.21541496,4.34591517}, {4.09290743,4.36280823}}} id=5
SkOpAngle::after [5/15] 17/17 tStart=0.326417764 tEnd=0.225175574 < [5/16] 1/5 tStart=0.326417764 tEnd=1 < [3/12] 25/25 tStart=0.434637102 tEnd=1 F 4
SkOpAngle::afterPart {{{4.43463707,4.30391121}, {4.32966255,4.32670493}, {4.21541496,4.34591517}, {4.09290743,4.36280823}}} id=5
SkOpAngle::afterPart {{{4.43463707,4.30391121}, {5.13305116,4.15226054}, {5.4209889,3.84197779}, {5,3}}} id=5
SkOpAngle::afterPart {{{4.43463707,4.30391121}, {5,6}}} id=3
SkOpAngle::after [3/12] 25/25 tStart=0.434637102 tEnd=1 < [5/16] 1/5 tStart=0.326417764 tEnd=1 < [3/11] 9/9 tStart=0.434637102 tEnd=0.117647059 T 4
SkOpAngle::afterPart {{{4.43463707,4.30391121}, {5,6}}} id=3
SkOpAngle::afterPart {{{4.43463707,4.30391121}, {5.13305116,4.15226054}, {5.4209889,3.84197779}, {5,3}}} id=5
SkOpAngle::afterPart {{{4.43463707,4.30391121}, {4.11764717,3.35294127}}} id=3
SkOpSegment::sortAngles [5] tStart=0.225175574 [16]
SkOpSegment::sortAngles [5] tStart=0.326417764 [20]
SkOpSegment::sortAngles [6] tStart=0.176470588 [22]
SkOpSegment::sortAngles [6] tStart=0.18240164 [18]
SkOpSegment::debugShowActiveSpans id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0 (5,6) tEnd=0.383986729 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.383986729 (4.09290743,4.36280823) tEnd=0.571089482 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.571089482 (4.08799171,3.36480331) tEnd=0.587088912 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.587088912 (4.09466553,3.28399706) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (4.29911709,2.05330443 4.29861975,2.05317116 4.2257638,2.32270813 4,3) t=0 (4.29911709,2.05330443) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,3 5,6) t=0 (4,3) tEnd=0.0946657086 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,3 5,6) t=0.0946657086 (4.09466553,3.28399706) tEnd=0.117647059 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,5 1.125,4.625 2.25,4.53125 3.1640625,4.45507813) t=0 (0,5) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0 (3.1640625,4.45507813) tEnd=0.225175574 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.225175574 (4.09290743,4.36280823) tEnd=0.326417764 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.326417764 (4.43463707,4.30391121) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.18240164 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (5,3 0,5) t=0.18240164 (4.08799171,3.36480331) tEnd=1 windSum=? windValue=1 oppValue=0
-SkOpSegment::findTop-
SkOpAngle::dumpOne [2/21] next=3/22 sect=5/5 s=1 [4] e=0 [3] sgn=1 windVal=1 windSum=?
SkOpAngle::dumpOne [3/22] next=2/21 sect=25/25 s=0 [5] e=0.0946657086 [14] sgn=-1 windVal=1 windSum=? stop
SkOpSegment::findTop id=2 s=0 e=1 cw=1 swap=0 inflections=1 monotonic=0
SkOpSegment::markWinding id=2 (4.29911709,2.05330443 4.29861975,2.05317116 4.2257638,2.32270813 4,3) t=0 [3] (4.29911709,2.05330443) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::markWinding id=3 (4,3 5,6) t=0 [5] (4,3) tEnd=0.0946657086 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=2 (4.29911709,2.05330443 4.29861975,2.05317116 4.2257638,2.32270813 4,3) t=0 [3] (4.29911709,2.05330443) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markWinding id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.587088912 [13] (4.09466553,3.28399706) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=2 t=0 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
SkOpSegment::nextChase mismatched signs
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=2 (4.29911709,2.05330443 4.29861975,2.05317116 4.2257638,2.32270813 4,3) t=0 [3] (4.29911709,2.05330443) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=2 from=(4.29911709,2.05330443) to=(4,3)
path.moveTo(4.29911709,2.05330443);
path.cubicTo(4.29861975,2.05317116, 4.2257638,2.32270813, 4,3);
SkOpSegment::markWinding id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.571089482 [17] (4.08799171,3.36480331) tEnd=0.587088912 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=1 span=17 windSum=-2
SkOpSegment::markWinding id=3 (4,3 5,6) t=0.0946657086 [14] (4.09466553,3.28399706) tEnd=0.117647059 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=3 span=21 windSum=?
SkOpSegment::findNextOp
SkOpAngle::dumpOne [3/7] next=1/5 sect=9/9 s=0.0946657086 [14] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [1/5] next=3/8 sect=21/21 s=0.587088912 [13] e=0.571089482 [17] sgn=1 windVal=1 windSum=-2 oppVal=0 oppSum=0
SkOpAngle::dumpOne [3/8] next=1/6 sect=25/25 s=0.0946657086 [14] e=0.117647059 [21] sgn=-1 windVal=1 windSum=-2 oppVal=0 oppSum=0
SkOpAngle::dumpOne [1/6] next=3/7 sect=5/5 s=0.587088912 [13] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpSegment::activeOp id=1 t=0.587088912 tEnd=0.571089482 op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
SkOpSegment::markDone id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.571089482 [17] (4.08799171,3.36480331) tEnd=0.587088912 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=1 span=17 windSum=-2
SkOpSegment::activeOp id=3 t=0.0946657086 tEnd=0.117647059 op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
SkOpSegment::markDone id=3 (4,3 5,6) t=0.0946657086 [14] (4.09466553,3.28399706) tEnd=0.117647059 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=3 span=21 windSum=-2147483647
SkOpSegment::activeOp id=1 t=0.587088912 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
SkOpSegment::markDone id=3 (4,3 5,6) t=0 [5] (4,3) tEnd=0.0946657086 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[3] to:[1] start=5399116 end=16446944
bridgeOp current id=3 from=(4,3) to=(4.09466553,3.28399706)
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.587088912 [13] (4.09466553,3.28399706) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=1 from=(4.09466553,3.28399706) to=(4.29911709,2.05330443)
path.lineTo(4.09466553,3.28399706);
path.cubicTo(4.15543318,2.59441638, 4.2998209,2.05349326, 4.29911709,2.05330443);
path.close();
SkOpSegment::markWinding id=6 (5,3 0,5) t=0.176470588 [22] (4.11764717,3.35294127) tEnd=0.18240164 newWindSum=1 newOppSum=-2 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=6 span=18 windSum=?
SkOpSegment::markWinding id=3 (4,3 5,6) t=0.117647059 [21] (4.11764717,3.35294127) tEnd=0.434637102 newWindSum=-2 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=3 span=19 windSum=?
SkOpSegment::markWinding id=6 (5,3 0,5) t=0 [11] (5,3) tEnd=0.176470588 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.326417764 [20] (4.43463707,4.30391121) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=5 span=20 windSum=1
SkOpSegment::debugShowActiveSpans id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0 (5,6) tEnd=0.383986729 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.383986729 (4.09290743,4.36280823) tEnd=0.571089482 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,5 1.125,4.625 2.25,4.53125 3.1640625,4.45507813) t=0 (0,5) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0 (3.1640625,4.45507813) tEnd=0.225175574 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.225175574 (4.09290743,4.36280823) tEnd=0.326417764 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.326417764 (4.43463707,4.30391121) tEnd=1 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.18240164 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (5,3 0,5) t=0.18240164 (4.08799171,3.36480331) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=6 t=0.176470588 tEnd=0.18240164 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::markWinding id=6 (5,3 0,5) t=0.18240164 [18] (4.08799171,3.36480331) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=4 (0,5 1.125,4.625 2.25,4.53125 3.1640625,4.45507813) t=0 [7] (0,5) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0 [9] (3.1640625,4.45507813) tEnd=0.225175574 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=5 span=16 windSum=?
SkOpSegment::markWinding id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.383986729 [15] (4.09290743,4.36280823) tEnd=0.571089482 newWindSum=-2 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=1 span=15 windSum=-2
SkOpSegment::findNextOp
SkOpAngle::dumpOne [6/19] next=1/4 sect=1/1 s=0.18240164 [18] e=0.176470588 [22] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-2 operand
SkOpAngle::dumpOne [1/4] next=6/20 sect=5/5 s=0.571089482 [17] e=0.587088912 [13] sgn=-1 windVal=1 windSum=-2 oppVal=0 oppSum=0 done
SkOpAngle::dumpOne [6/20] next=1/3 sect=17/17 s=0.18240164 [18] e=1 [12] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [1/3] next=6/19 sect=21/25 s=0.571089482 [17] e=0.383986729 [15] sgn=1 windVal=1 windSum=-2 oppVal=0 oppSum=1
SkOpSegment::activeOp id=1 t=0.571089482 tEnd=0.587088912 op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
SkOpSegment::activeOp id=6 t=0.18240164 tEnd=1 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::findNextOp chase.append segment=5 span=16 windSum=-2147483647
SkOpSegment::activeOp id=1 t=0.571089482 tEnd=0.383986729 op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.383986729 [15] (4.09290743,4.36280823) tEnd=0.571089482 newWindSum=-2 newOppSum=1 oppSum=1 windSum=-2 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=1 span=15 windSum=-2
SkOpSegment::markDone id=6 (5,3 0,5) t=0.176470588 [22] (4.11764717,3.35294127) tEnd=0.18240164 newWindSum=1 newOppSum=-2 oppSum=-2 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[6] to:[6] start=5399596 end=5398996
bridgeOp current id=6 from=(4.11764717,3.35294127) to=(4.08799171,3.36480331)
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=6 (5,3 0,5) t=0.18240164 [18] (4.08799171,3.36480331) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
bridgeOp current id=6 from=(4.08799171,3.36480331) to=(0,5)
path.moveTo(4.11764717,3.35294127);
path.lineTo(4.08799171,3.36480331);
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=4 (0,5 1.125,4.625 2.25,4.53125 3.1640625,4.45507813) t=0 [7] (0,5) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
bridgeOp current id=4 from=(0,5) to=(3.1640625,4.45507813)
path.lineTo(0,5);
path.cubicTo(1.125,4.625, 2.25,4.53125, 3.1640625,4.45507813);
SkOpSegment::markWinding id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0 [1] (5,6) tEnd=0.383986729 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=3 (4,3 5,6) t=0.434637102 [19] (4.43463707,4.30391121) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=3 span=19 windSum=-2
SkOpSegment::markWinding id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.225175574 [16] (4.09290743,4.36280823) tEnd=0.326417764 newWindSum=1 newOppSum=-2 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=5 span=20 windSum=1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [5/13] next=1/1 sect=17/17 s=0.225175574 [16] e=0 [9] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [1/1] next=5/14 sect=25/25 s=0.383986729 [15] e=0 [1] sgn=1 windVal=1 windSum=-2 oppVal=0 oppSum=0
SkOpAngle::dumpOne [5/14] next=1/2 sect=1/1 s=0.225175574 [16] e=0.326417764 [20] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-2 operand
SkOpAngle::dumpOne [1/2] next=5/13 sect=9/9 s=0.383986729 [15] e=0.571089482 [17] sgn=-1 windVal=1 windSum=-2 oppVal=0 oppSum=1 done
SkOpSegment::activeOp id=1 t=0.383986729 tEnd=0 op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
SkOpSegment::markDone id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0 [1] (5,6) tEnd=0.383986729 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
SkOpSegment::markDone id=3 (4,3 5,6) t=0.434637102 [19] (4.43463707,4.30391121) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=3 span=19 windSum=-2
SkOpSegment::activeOp id=5 t=0.225175574 tEnd=0.326417764 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::findNextOp chase.append segment=5 span=20 windSum=1
SkOpSegment::activeOp id=1 t=0.383986729 tEnd=0.571089482 op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0 [9] (3.1640625,4.45507813) tEnd=0.225175574 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[5] to:[5] start=5399404 end=5399788
bridgeOp current id=5 from=(3.1640625,4.45507813) to=(4.09290743,4.36280823)
path.cubicTo(3.50710344,4.42649126, 3.82043505,4.40038061, 4.09290743,4.36280823);
SkOpSegment::findNextOp
SkOpAngle::dumpOne [5/15] next=3/12 sect=17/17 s=0.326417764 [20] e=0.225175574 [16] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-2 operand
SkOpAngle::dumpOne [3/12] next=5/16 sect=25/25 s=0.434637102 [19] e=1 [6] sgn=-1 windVal=1 windSum=-2 oppVal=0 oppSum=0 done
SkOpAngle::dumpOne [5/16] next=3/11 sect=1/5 s=0.326417764 [20] e=1 [10] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [3/11] next=5/15 sect=9/9 s=0.434637102 [19] e=0.117647059 [21] sgn=1 windVal=1 windSum=-2 oppVal=0 oppSum=1
SkOpSegment::activeOp id=3 t=0.434637102 tEnd=1 op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
SkOpSegment::activeOp id=5 t=0.326417764 tEnd=1 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::activeOp id=3 t=0.434637102 tEnd=0.117647059 op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=3 (4,3 5,6) t=0.117647059 [21] (4.11764717,3.35294127) tEnd=0.434637102 newWindSum=-2 newOppSum=1 oppSum=1 windSum=-2 windValue=1 oppValue=0
SkOpSegment::markDone id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.225175574 [16] (4.09290743,4.36280823) tEnd=0.326417764 newWindSum=1 newOppSum=-2 oppSum=-2 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[5] to:[5] start=5399788 end=5398780
bridgeOp current id=5 from=(4.09290743,4.36280823) to=(4.43463707,4.30391121)
path.cubicTo(4.215415,4.34591532, 4.32966232,4.32670498, 4.43463707,4.30391121);
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.326417764 [20] (4.43463707,4.30391121) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
bridgeOp current id=5 from=(4.43463707,4.30391121) to=(5,3)
path.cubicTo(5.13305092,4.1522603, 5.42098904,3.84197783, 5,3);
SkOpSegment::findNextOp
SkOpAngle::dumpOne [6/17] next=3/9 sect=1/1 s=0.176470588 [22] e=0 [11] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [3/9] next=6/18 sect=9/9 s=0.117647059 [21] e=0.0946657086 [14] sgn=1 windVal=1 windSum=-2 oppVal=0 oppSum=0 done
SkOpAngle::dumpOne [6/18] next=3/10 sect=17/17 s=0.176470588 [22] e=0.18240164 [18] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-2 done operand
SkOpAngle::dumpOne [3/10] next=6/17 sect=25/25 s=0.117647059 [21] e=0.434637102 [19] sgn=-1 windVal=1 windSum=-2 oppVal=0 oppSum=1 done
SkOpSegment::activeOp id=3 t=0.117647059 tEnd=0.0946657086 op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
SkOpSegment::activeOp id=6 t=0.176470588 tEnd=0.18240164 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::activeOp id=3 t=0.117647059 tEnd=0.434637102 op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=6 (5,3 0,5) t=0 [11] (5,3) tEnd=0.176470588 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[6] to:[6] start=5399980 end=5399596
bridgeOp current id=6 from=(5,3) to=(4.11764717,3.35294127)
path.lineTo(4.11764717,3.35294127);
path.close();
</div>
<div id="cubicOp139">
seg=1 {{{0, 2}, {0, 3.1622777f}, {1.01316714f, 2.63594365f}, {2.25444698f, 1.99110639f}}}
seg=2 {{{2.25444698f, 1.99110639f}, {3.14911079f, 1.52633405f}, {4.1622777f, 1}, {5, 1}}}
seg=3 {{{5, 1}, {0, 2}}}
op diff
seg=4 {{{1, 3}, {1, 3.81649661f}, {1.16666663f, 3.46632648f}, {1.5f, 2.7659862f}}}
seg=5 {{{1.5f, 2.7659862f}, {1.98316336f, 1.75085032f}, {2.81649661f, 0}, {4, 0}}}
seg=6 {{{4, 0}, {1, 3}}}
debugShowCubicIntersection wtTs[0]=1 {{{1,3}, {1,3.81649661}, {1.16666663,3.46632648}, {1.5,2.7659862}}} {{1.5,2.7659862}} wnTs[0]=0 {{{1.5,2.7659862}, {1.98316336,1.75085032}, {2.81649661,0}, {4,0}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{1,3}, {1,3.81649661}, {1.16666663,3.46632648}, {1.5,2.7659862}}} {{1,3}} wnTs[0]=1 {{{4,0}, {1,3}}}
debugShowCubicLineIntersection wtTs[0]=0.155050986 {{{1.5,2.7659862}, {1.98316336,1.75085032}, {2.81649661,0}, {4,0}}} {{1.75,2.25}} wtTs[1]=1 {{4,0}} wnTs[0]=0.75 {{{4,0}, {1,3}}} wnTs[1]=0
SkOpSegment::addT insert t=0.155050986 segID=5 spanID=13
SkOpSegment::addT insert t=0.750000011 segID=6 spanID=14
debugShowCubicIntersection wtTs[0]=0.155051514 {{{1.5,2.7659862}, {1.98316336,1.75085032}, {2.81649661,0}, {4,0}}} {{1.75000095,2.24999809}} wnTs[0]=0.86038 {{{0,2}, {0,3.1622777}, {1.01316714,2.63594365}, {2.25444698,1.99110639}}}
SkOpSegment::addT insert t=0.155051514 segID=5 spanID=15
SkOpSegment::addT insert t=0.860380193 segID=1 spanID=16
debugShowCubicIntersection no intersect {{{1.5,2.7659862}, {1.98316336,1.75085032}, {2.81649661,0}, {4,0}}} {{{2.25444698,1.99110639}, {3.14911079,1.52633405}, {4.1622777,1}, {5,1}}}
debugShowCubicLineIntersection wtTs[0]=0.338765887 {{{1.5,2.7659862}, {1.98316336,1.75085032}, {2.81649661,0}, {4,0}}} {{2.11159682,1.57768071}} wnTs[0]=0.577681 {{{5,1}, {0,2}}}
SkOpSegment::addT insert t=0.338765887 segID=5 spanID=17
SkOpSegment::addT insert t=0.577680653 segID=3 spanID=18
debugShowCubicLineIntersection wtTs[0]=0.860379519 {{{0,2}, {0,3.1622777}, {1.01316714,2.63594365}, {2.25444698,1.99110639}}} {{1.74999988,2.25000024}} wnTs[0]=0.75 {{{4,0}, {1,3}}}
SkOpSegment::addT alias t=0.750000053 segID=6 spanID=14
SkOpSegment::addT insert t=0.860379519 segID=1 spanID=19
debugShowCubicLineIntersection no intersect {{{2.25444698,1.99110639}, {3.14911079,1.52633405}, {4.1622777,1}, {5,1}}} {{{4,0}, {1,3}}}
debugShowLineIntersection wtTs[0]=0.5 {{{4,0}, {1,3}}} {{2.5,1.5}} wnTs[0]=0.5 {{{5,1}, {0,2}}}
SkOpSegment::addT insert t=0.5 segID=6 spanID=20
SkOpSegment::addT insert t=0.5 segID=3 spanID=21
debugShowCubicIntersection wtTs[0]=1 {{{0,2}, {0,3.1622777}, {1.01316714,2.63594365}, {2.25444698,1.99110639}}} {{2.25444698,1.99110639}} wnTs[0]=0 {{{2.25444698,1.99110639}, {3.14911079,1.52633405}, {4.1622777,1}, {5,1}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{0,2}, {0,3.1622777}, {1.01316714,2.63594365}, {2.25444698,1.99110639}}} {{0,2}} wnTs[0]=1 {{{5,1}, {0,2}}}
debugShowCubicLineIntersection wtTs[0]=0.602095723 {{{2.25444698,1.99110639}, {3.14911079,1.52633405}, {4.1622777,1}, {5,1}}} {{3.93518543,1.21296299}} wtTs[1]=1 {{5,1}} wnTs[0]=0.212963 {{{5,1}, {0,2}}} wnTs[1]=0
SkOpSegment::addT insert t=0.602095723 segID=2 spanID=22
SkOpSegment::addT insert t=0.212962927 segID=3 spanID=23
SkOpSegment::sortAngles [5] tStart=0.155050986 [13]
SkOpAngle::after [5/1] 21/21 tStart=0.155050986 tEnd=0 < [6/9] 3/3 tStart=0.750000011 tEnd=0.5 < [5/2] 3/3 tStart=0.155050986 tEnd=0.155051514 T 11
SkOpAngle::afterPart {{{1.75,2.25}, {1.65824831,2.43350336}, {1.57491495,2.60858838}, {1.5,2.7659862}}} id=5
SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
SkOpAngle::afterPart {{{1.75,2.25}, {1.75000031,2.24999938}, {1.75000064,2.24999872}, {1.75000095,2.24999809}}} id=5
SkOpAngle::after [5/1] 21/21 tStart=0.155050986 tEnd=0 < [6/10] 19/19 tStart=0.750000011 tEnd=1 < [6/9] 3/3 tStart=0.750000011 tEnd=0.5 F 4
SkOpAngle::afterPart {{{1.75,2.25}, {1.65824831,2.43350336}, {1.57491495,2.60858838}, {1.5,2.7659862}}} id=5
SkOpAngle::afterPart {{{1.75,2.25}, {1,3}}} id=6
SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
SkOpAngle::after [6/9] 3/3 tStart=0.750000011 tEnd=0.5 < [6/10] 19/19 tStart=0.750000011 tEnd=1 < [5/2] 3/3 tStart=0.155050986 tEnd=0.155051514 F 5
SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
SkOpAngle::afterPart {{{1.75,2.25}, {1,3}}} id=6
SkOpAngle::afterPart {{{1.75,2.25}, {1.75000031,2.24999938}, {1.75000064,2.24999872}, {1.75000095,2.24999809}}} id=5
SkOpAngle::after [5/2] 3/3 tStart=0.155050986 tEnd=0.155051514 < [6/10] 19/19 tStart=0.750000011 tEnd=1 < [5/1] 21/21 tStart=0.155050986 tEnd=0 T 4
SkOpAngle::afterPart {{{1.75,2.25}, {1.75000031,2.24999938}, {1.75000064,2.24999872}, {1.75000095,2.24999809}}} id=5
SkOpAngle::afterPart {{{1.75,2.25}, {1,3}}} id=6
SkOpAngle::afterPart {{{1.75,2.25}, {1.65824831,2.43350336}, {1.57491495,2.60858838}, {1.5,2.7659862}}} id=5
SkOpAngle::after [5/1] 21/21 tStart=0.155050986 tEnd=0 < [1/11] 17/13 tStart=0.860379519 tEnd=0 < [6/9] 3/3 tStart=0.750000011 tEnd=0.5 F 4
SkOpAngle::afterPart {{{1.75,2.25}, {1.65824831,2.43350336}, {1.57491495,2.60858838}, {1.5,2.7659862}}} id=5
SkOpAngle::afterPart {{{1.75,2.25}, {0.750000093,2.74999992}, {0,2.99999993}, {0,2}}} id=1
SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
SkOpAngle::after [6/9] 3/3 tStart=0.750000011 tEnd=0.5 < [1/11] 17/13 tStart=0.860379519 tEnd=0 < [5/2] 3/3 tStart=0.155050986 tEnd=0.155051514 F 5
SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
SkOpAngle::afterPart {{{1.75,2.25}, {0.750000093,2.74999992}, {0,2.99999993}, {0,2}}} id=1
SkOpAngle::afterPart {{{1.75,2.25}, {1.75000031,2.24999938}, {1.75000064,2.24999872}, {1.75000095,2.24999809}}} id=5
SkOpAngle::after [5/2] 3/3 tStart=0.155050986 tEnd=0.155051514 < [1/11] 17/13 tStart=0.860379519 tEnd=0 < [6/10] 19/19 tStart=0.750000011 tEnd=1 T 4
SkOpAngle::afterPart {{{1.75,2.25}, {1.75000031,2.24999938}, {1.75000064,2.24999872}, {1.75000095,2.24999809}}} id=5
SkOpAngle::afterPart {{{1.75,2.25}, {0.750000093,2.74999992}, {0,2.99999993}, {0,2}}} id=1
SkOpAngle::afterPart {{{1.75,2.25}, {1,3}}} id=6
SkOpAngle::after [5/1] 21/21 tStart=0.155050986 tEnd=0 < [1/12] 3/3 tStart=0.860379519 tEnd=0.860380193 < [6/9] 3/3 tStart=0.750000011 tEnd=0.5 F 11
SkOpAngle::afterPart {{{1.75,2.25}, {1.65824831,2.43350336}, {1.57491495,2.60858838}, {1.5,2.7659862}}} id=5
SkOpAngle::afterPart {{{1.75,2.25}, {1.75000078,2.24999961}, {1.75000017,2.24999848}, {1.75000095,2.24999809}}} id=1
SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
SkOpAngle::after [6/9] 3/3 tStart=0.750000011 tEnd=0.5 < [1/12] 3/3 tStart=0.860379519 tEnd=0.860380193 < [5/2] 3/3 tStart=0.155050986 tEnd=0.155051514 T 7
SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
SkOpAngle::afterPart {{{1.75,2.25}, {1.75000078,2.24999961}, {1.75000017,2.24999848}, {1.75000095,2.24999809}}} id=1
SkOpAngle::afterPart {{{1.75,2.25}, {1.75000031,2.24999938}, {1.75000064,2.24999872}, {1.75000095,2.24999809}}} id=5
SkOpSegment::sortAngles [5] tStart=0.155051514 [15]
SkOpAngle::after [5/3] 19/19 tStart=0.155051514 tEnd=0.155050986 < [1/13] 19/19 tStart=0.860380193 tEnd=0.860379519 < [5/4] 5/5 tStart=0.155051514 tEnd=0.338765887 T 12
SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.75000064,2.24999872}, {1.75000031,2.24999938}, {1.75,2.25}}} id=5
SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.75000017,2.24999848}, {1.75000078,2.24999961}, {1.75,2.25}}} id=1
SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.85871432,2.03257145}, {1.9792463,1.80332639}, {2.11159682,1.57768071}}} id=5
SkOpAngle::after [5/3] 19/19 tStart=0.155051514 tEnd=0.155050986 < [1/14] 1/1 tStart=0.860380193 tEnd=1 < [1/13] 19/19 tStart=0.860380193 tEnd=0.860379519 F 5
SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.75000064,2.24999872}, {1.75000031,2.24999938}, {1.75,2.25}}} id=5
SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.912278,2.16885954}, {2.08113973,2.08113844}, {2.25444698,1.99110639}}} id=1
SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.75000017,2.24999848}, {1.75000078,2.24999961}, {1.75,2.25}}} id=1
SkOpAngle::after [1/13] 19/19 tStart=0.860380193 tEnd=0.860379519 < [1/14] 1/1 tStart=0.860380193 tEnd=1 < [5/4] 5/5 tStart=0.155051514 tEnd=0.338765887 T 4
SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.75000017,2.24999848}, {1.75000078,2.24999961}, {1.75,2.25}}} id=1
SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.912278,2.16885954}, {2.08113973,2.08113844}, {2.25444698,1.99110639}}} id=1
SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.85871432,2.03257145}, {1.9792463,1.80332639}, {2.11159682,1.57768071}}} id=5
SkOpSegment::sortAngles [5] tStart=0.338765887 [17]
SkOpAngle::after [5/5] 21/21 tStart=0.338765887 tEnd=0.155051514 < [3/21] 1/1 tStart=0.577680653 tEnd=0.5 < [5/6] 5/1 tStart=0.338765887 tEnd=1 T 11
SkOpAngle::afterPart {{{2.11159682,1.57768071}, {1.9792463,1.80332639}, {1.85871432,2.03257145}, {1.75000095,2.24999809}}} id=5
SkOpAngle::afterPart {{{2.11159682,1.57768071}, {2.5,1.5}}} id=3
SkOpAngle::afterPart {{{2.11159682,1.57768071}, {2.58795954,0.765525306}, {3.21742719,0}, {4,0}}} id=5
SkOpAngle::after [5/5] 21/21 tStart=0.338765887 tEnd=0.155051514 < [3/22] 17/17 tStart=0.577680653 tEnd=1 < [3/21] 1/1 tStart=0.577680653 tEnd=0.5 F 4
SkOpAngle::afterPart {{{2.11159682,1.57768071}, {1.9792463,1.80332639}, {1.85871432,2.03257145}, {1.75000095,2.24999809}}} id=5
SkOpAngle::afterPart {{{2.11159682,1.57768071}, {0,2}}} id=3
SkOpAngle::afterPart {{{2.11159682,1.57768071}, {2.5,1.5}}} id=3
SkOpAngle::after [3/21] 1/1 tStart=0.577680653 tEnd=0.5 < [3/22] 17/17 tStart=0.577680653 tEnd=1 < [5/6] 5/1 tStart=0.338765887 tEnd=1 F 5
SkOpAngle::afterPart {{{2.11159682,1.57768071}, {2.5,1.5}}} id=3
SkOpAngle::afterPart {{{2.11159682,1.57768071}, {0,2}}} id=3
SkOpAngle::afterPart {{{2.11159682,1.57768071}, {2.58795954,0.765525306}, {3.21742719,0}, {4,0}}} id=5
SkOpAngle::after [5/6] 5/1 tStart=0.338765887 tEnd=1 < [3/22] 17/17 tStart=0.577680653 tEnd=1 < [5/5] 21/21 tStart=0.338765887 tEnd=0.155051514 T 4
SkOpAngle::afterPart {{{2.11159682,1.57768071}, {2.58795954,0.765525306}, {3.21742719,0}, {4,0}}} id=5
SkOpAngle::afterPart {{{2.11159682,1.57768071}, {0,2}}} id=3
SkOpAngle::afterPart {{{2.11159682,1.57768071}, {1.9792463,1.80332639}, {1.85871432,2.03257145}, {1.75000095,2.24999809}}} id=5
SkOpSegment::sortAngles [6] tStart=0.5 [20]
SkOpAngle::after [6/7] 3/3 tStart=0.5 tEnd=0 < [3/19] 1/1 tStart=0.5 tEnd=0.212962927 < [6/8] 19/19 tStart=0.5 tEnd=0.750000011 F 4
SkOpAngle::afterPart {{{2.5,1.5}, {4,0}}} id=6
SkOpAngle::afterPart {{{2.5,1.5}, {3.93518543,1.21296299}}} id=3
SkOpAngle::afterPart {{{2.5,1.5}, {1.75,2.25}}} id=6
SkOpAngle::after [6/7] 3/3 tStart=0.5 tEnd=0 < [3/20] 17/17 tStart=0.5 tEnd=0.577680653 < [6/8] 19/19 tStart=0.5 tEnd=0.750000011 T 4
SkOpAngle::afterPart {{{2.5,1.5}, {4,0}}} id=6
SkOpAngle::afterPart {{{2.5,1.5}, {2.11159682,1.57768071}}} id=3
SkOpAngle::afterPart {{{2.5,1.5}, {1.75,2.25}}} id=6
SkOpSegment::sortAngles [6] tStart=0.750000011 [14]
SkOpSegment::sortAngles [1] tStart=0.860379519 [19]
SkOpSegment::sortAngles [1] tStart=0.860380193 [16]
SkOpSegment::sortAngles [2] tStart=0.602095723 [22]
SkOpAngle::after [2/15] 17/17 tStart=0.602095723 tEnd=0 < [3/17] 1/1 tStart=0.212962927 tEnd=0 < [2/16] 1/1 tStart=0.602095723 tEnd=1 T 11
SkOpAngle::afterPart {{{3.93518543,1.21296299}, {3.37475322,1.40911426}, {2.79312024,1.71126895}, {2.25444698,1.99110639}}} id=2
SkOpAngle::afterPart {{{3.93518543,1.21296299}, {5,1}}} id=3
SkOpAngle::afterPart {{{3.93518543,1.21296299}, {4.30555574,1.08333338}, {4.66666671,1}, {5,1}}} id=2
SkOpAngle::after [2/15] 17/17 tStart=0.602095723 tEnd=0 < [3/18] 17/17 tStart=0.212962927 tEnd=0.5 < [3/17] 1/1 tStart=0.212962927 tEnd=0 F 12
SkOpAngle::afterPart {{{3.93518543,1.21296299}, {3.37475322,1.40911426}, {2.79312024,1.71126895}, {2.25444698,1.99110639}}} id=2
SkOpAngle::afterPart {{{3.93518543,1.21296299}, {2.5,1.5}}} id=3
SkOpAngle::afterPart {{{3.93518543,1.21296299}, {5,1}}} id=3
SkOpAngle::after [3/17] 1/1 tStart=0.212962927 tEnd=0 < [3/18] 17/17 tStart=0.212962927 tEnd=0.5 < [2/16] 1/1 tStart=0.602095723 tEnd=1 F 5
SkOpAngle::afterPart {{{3.93518543,1.21296299}, {5,1}}} id=3
SkOpAngle::afterPart {{{3.93518543,1.21296299}, {2.5,1.5}}} id=3
SkOpAngle::afterPart {{{3.93518543,1.21296299}, {4.30555574,1.08333338}, {4.66666671,1}, {5,1}}} id=2
SkOpAngle::after [2/16] 1/1 tStart=0.602095723 tEnd=1 < [3/18] 17/17 tStart=0.212962927 tEnd=0.5 < [2/15] 17/17 tStart=0.602095723 tEnd=0 T 11
SkOpAngle::afterPart {{{3.93518543,1.21296299}, {4.30555574,1.08333338}, {4.66666671,1}, {5,1}}} id=2
SkOpAngle::afterPart {{{3.93518543,1.21296299}, {2.5,1.5}}} id=3
SkOpAngle::afterPart {{{3.93518543,1.21296299}, {3.37475322,1.40911426}, {2.79312024,1.71126895}, {2.25444698,1.99110639}}} id=2
SkOpSegment::sortAngles [3] tStart=0.212962927 [23]
SkOpSegment::sortAngles [3] tStart=0.5 [21]
SkOpSegment::sortAngles [3] tStart=0.577680653 [18]
SkOpSegment::debugShowActiveSpans id=4 (1,3 1,3.81649661 1.16666663,3.46632648 1.5,2.7659862) t=0 (1,3) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0 (1.5,2.7659862) tEnd=0.155050986 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155050986 (1.75,2.25) tEnd=0.155051514 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155051514 (1.75000095,2.24999809) tEnd=0.338765887 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.338765887 (2.11159682,1.57768071) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0 (4,0) tEnd=0.5 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0.5 (2.5,1.5) tEnd=0.750000011 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0.750000011 (1.75,2.25) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0 (0,2) tEnd=0.860379519 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860379519 (1.75,2.25) tEnd=0.860380193 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860380193 (1.75000095,2.24999809) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0 (2.25444698,1.99110639) tEnd=0.602095723 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 (3.93518543,1.21296299) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0 (5,1) tEnd=0.212962927 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.212962927 (3.93518543,1.21296299) tEnd=0.5 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.5 (2.5,1.5) tEnd=0.577680653 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.577680653 (2.11159682,1.57768071) tEnd=1 windSum=? windValue=1 oppValue=0
-SkOpSegment::findTop-
SkOpAngle::dumpOne [5/24] next=6/23 sect=16/17 s=1 [10] e=0.338765887 [17] sgn=1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [6/23] next=5/24 sect=19/19 s=0 [11] e=0.5 [20] sgn=-1 windVal=1 windSum=? operand stop
SkOpSegment::findTop id=5 s=0.338765887 e=1 cw=1 swap=0 inflections=0 monotonic=1
SkOpSegment::markWinding id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.338765887 [17] (2.11159682,1.57768071) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::markWinding id=6 (4,0 1,3) t=0 [11] (4,0) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.338765887 [17] (2.11159682,1.57768071) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::activeOp id=5 t=0.338765887 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::markDone id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.338765887 [17] (2.11159682,1.57768071) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::markDone id=6 (4,0 1,3) t=0 [11] (4,0) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp chase.append id=6 windSum=-2147483647
SkOpSegment::markWinding id=3 (5,1 0,2) t=0.5 [21] (2.5,1.5) tEnd=0.577680653 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=3 span=18 windSum=?
SkOpSegment::markWinding id=6 (4,0 1,3) t=0.5 [20] (2.5,1.5) tEnd=0.750000011 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=6 span=14 windSum=?
SkOpSegment::markWinding id=3 (5,1 0,2) t=0.212962927 [23] (3.93518543,1.21296299) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=3 span=23 windSum=1
SkOpSegment::debugShowActiveSpans id=4 (1,3 1,3.81649661 1.16666663,3.46632648 1.5,2.7659862) t=0 (1,3) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0 (1.5,2.7659862) tEnd=0.155050986 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155050986 (1.75,2.25) tEnd=0.155051514 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155051514 (1.75000095,2.24999809) tEnd=0.338765887 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0.5 (2.5,1.5) tEnd=0.750000011 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0.750000011 (1.75,2.25) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0 (0,2) tEnd=0.860379519 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860379519 (1.75,2.25) tEnd=0.860380193 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860380193 (1.75000095,2.24999809) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0 (2.25444698,1.99110639) tEnd=0.602095723 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 (3.93518543,1.21296299) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0 (5,1) tEnd=0.212962927 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.212962927 (3.93518543,1.21296299) tEnd=0.5 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.5 (2.5,1.5) tEnd=0.577680653 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.577680653 (2.11159682,1.57768071) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=3 t=0.5 tEnd=0.577680653 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=3 (5,1 0,2) t=0.5 [21] (2.5,1.5) tEnd=0.577680653 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
bridgeOp chase.append id=3 windSum=-2147483647
SkOpSegment::markWinding id=3 (5,1 0,2) t=0.577680653 [18] (2.11159682,1.57768071) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0 [1] (0,2) tEnd=0.860379519 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=1 span=19 windSum=?
SkOpSegment::markWinding id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155051514 [15] (1.75000095,2.24999809) tEnd=0.338765887 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=5 span=15 windSum=-1
SkOpSegment::debugShowActiveSpans id=4 (1,3 1,3.81649661 1.16666663,3.46632648 1.5,2.7659862) t=0 (1,3) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0 (1.5,2.7659862) tEnd=0.155050986 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155050986 (1.75,2.25) tEnd=0.155051514 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155051514 (1.75000095,2.24999809) tEnd=0.338765887 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0.5 (2.5,1.5) tEnd=0.750000011 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0.750000011 (1.75,2.25) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0 (0,2) tEnd=0.860379519 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860379519 (1.75,2.25) tEnd=0.860380193 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860380193 (1.75000095,2.24999809) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0 (2.25444698,1.99110639) tEnd=0.602095723 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 (3.93518543,1.21296299) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0 (5,1) tEnd=0.212962927 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.212962927 (3.93518543,1.21296299) tEnd=0.5 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.577680653 (2.11159682,1.57768071) tEnd=1 windSum=1 windValue=1 oppValue=0
SkOpSegment::activeOp id=3 t=0.577680653 tEnd=1 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=3 (5,1 0,2) t=0.577680653 [18] (2.11159682,1.57768071) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
bridgeOp current id=3 from=(2.11159682,1.57768071) to=(0,2)
SkOpSegment::findNextOp
SkOpAngle::dumpOne [1/11] next=6/10 sect=17/13 s=0.860379519 [19] e=0 [1] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [6/10] next=5/1 sect=19/19 s=0.750000011 [14] e=1 [12] sgn=-1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [5/1] next=6/9 sect=21/21 s=0.155050986 [13] e=0 [9] sgn=1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [6/9] next=1/12 sect=3/3 s=0.750000011 [14] e=0.5 [20] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
SkOpAngle::dumpOne [1/12] next=5/2 sect=3/3 s=0.860379519 [19] e=0.860380193 [16] sgn=-1 windVal=1 windSum=? unorderable
SkOpAngle::dumpOne [5/2] next=1/11 sect=3/3 s=0.155050986 [13] e=0.155051514 [15] sgn=-1 windVal=1 windSum=? unorderable operand
SkOpSegment::activeOp id=6 t=0.750000011 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::markDone id=6 (4,0 1,3) t=0.750000011 [14] (1.75,2.25) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markDone id=4 (1,3 1,3.81649661 1.16666663,3.46632648 1.5,2.7659862) t=0 [7] (1,3) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markDone id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0 [9] (1.5,2.7659862) tEnd=0.155050986 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=5 t=0.155050986 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::activeOp id=6 t=0.750000011 tEnd=0.5 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::markDone id=6 (4,0 1,3) t=0.5 [20] (2.5,1.5) tEnd=0.750000011 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::activeOp id=1 t=0.860379519 tEnd=0.860380193 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860379519 [19] (1.75,2.25) tEnd=0.860380193 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=5 t=0.155050986 tEnd=0.155051514 op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
SkOpSegment::markDone id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0 [1] (0,2) tEnd=0.860379519 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[1] to:[5] start=5940460 end=5940652
bridgeOp current id=1 from=(0,2) to=(1.75,2.25)
path.moveTo(2.11159682,1.57768071);
path.lineTo(0,2);
path.cubicTo(0,3, 0.750000119,2.75, 1.75,2.25);
SkOpSegment::markDone id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155050986 [13] (1.75,2.25) tEnd=0.155051514 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155051514 (1.75000095,2.24999809) tEnd=0.338765887 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860380193 (1.75000095,2.24999809) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0 (2.25444698,1.99110639) tEnd=0.602095723 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 (3.93518543,1.21296299) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0 (5,1) tEnd=0.212962927 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.212962927 (3.93518543,1.21296299) tEnd=0.5 windSum=1 windValue=1 oppValue=0
SkOpSegment::activeOp id=5 t=0.338765887 tEnd=0.155051514 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [5/4] next=5/3 sect=5/5 s=0.155051514 [15] e=0.338765887 [17] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
SkOpAngle::dumpOne [5/3] next=1/13 sect=19/19 s=0.155051514 [15] e=0.155050986 [13] sgn=1 windVal=1 windSum=? done unorderable operand
SkOpAngle::dumpOne [1/13] next=1/14 sect=19/19 s=0.860380193 [16] e=0.860379519 [19] sgn=1 windVal=1 windSum=? done unorderable
SkOpAngle::dumpOne [1/14] next=5/4 sect=1/1 s=0.860380193 [16] e=1 [2] sgn=-1 windVal=1 windSum=?
SkOpSegment::activeOp id=5 t=0.155051514 tEnd=0.155050986 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::activeOp id=1 t=0.860380193 tEnd=0.860379519 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
SkOpSegment::activeOp id=1 t=0.860380193 tEnd=1 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860380193 [16] (1.75000095,2.24999809) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markDone id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0 [3] (2.25444698,1.99110639) tEnd=0.602095723 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markDone id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155051514 [15] (1.75000095,2.24999809) tEnd=0.338765887 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[5] to:[5] start=5940652 end=5940460
bridgeOp current id=5 from=(2.11159682,1.57768071) to=(1.75000095,2.24999809)
path.moveTo(2.11159682,1.57768071);
path.cubicTo(1.97924626,1.80332637, 1.85871434,2.03257155, 1.75000095,2.24999809);
SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 (3.93518543,1.21296299) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0 (5,1) tEnd=0.212962927 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.212962927 (3.93518543,1.21296299) tEnd=0.5 windSum=1 windValue=1 oppValue=0
SkOpSegment::activeOp id=3 t=0.5 tEnd=0.212962927 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
SkOpSegment::markAngle last segment=1 span=16 windSum=?
SkOpSegment::markWinding id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 [22] (3.93518543,1.21296299) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=3 (5,1 0,2) t=0 [5] (5,1) tEnd=0.212962927 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=3 span=23 windSum=1
SkOpSegment::markAngle last segment=1 span=16 windSum=?
SkOpSegment::findNextOp
SkOpAngle::dumpOne [3/18] next=2/15 sect=17/17 s=0.212962927 [23] e=0.5 [21] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [2/15] next=3/17 sect=17/17 s=0.602095723 [22] e=0 [3] sgn=1 windVal=1 windSum=? done
SkOpAngle::dumpOne [3/17] next=2/16 sect=1/1 s=0.212962927 [23] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [2/16] next=3/18 sect=1/1 s=0.602095723 [22] e=1 [4] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpSegment::activeOp id=2 t=0.602095723 tEnd=0 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
SkOpSegment::findNextOp chase.append segment=1 span=16 windSum=-2147483647
SkOpSegment::activeOp id=3 t=0.212962927 tEnd=0 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
SkOpSegment::activeOp id=2 t=0.602095723 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
SkOpSegment::findNextOp chase.append segment=3 span=23 windSum=1
SkOpSegment::markDone id=3 (5,1 0,2) t=0.212962927 [23] (3.93518543,1.21296299) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[3] to:[2] start=5941356 end=5939348
bridgeOp current id=3 from=(2.5,1.5) to=(3.93518543,1.21296299)
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 [22] (3.93518543,1.21296299) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=2 from=(3.93518543,1.21296299) to=(5,1)
path.moveTo(2.5,1.5);
path.lineTo(3.93518543,1.21296299);
path.cubicTo(4.30555582,1.08333337, 4.66666651,1, 5,1);
SkOpSegment::markAngle last segment=1 span=16 windSum=?
SkOpSegment::markAngle last segment=1 span=16 windSum=?
SkOpSegment::findNextOp
SkOpAngle::dumpOne [3/17] next=2/16 sect=1/1 s=0.212962927 [23] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [2/16] next=3/18 sect=1/1 s=0.602095723 [22] e=1 [4] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
SkOpAngle::dumpOne [3/18] next=2/15 sect=17/17 s=0.212962927 [23] e=0.5 [21] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
SkOpAngle::dumpOne [2/15] next=3/17 sect=17/17 s=0.602095723 [22] e=0 [3] sgn=1 windVal=1 windSum=? done
SkOpSegment::activeOp id=2 t=0.602095723 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
SkOpSegment::activeOp id=3 t=0.212962927 tEnd=0.5 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
SkOpSegment::activeOp id=2 t=0.602095723 tEnd=0 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
SkOpSegment::markDone id=3 (5,1 0,2) t=0 [5] (5,1) tEnd=0.212962927 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[3] to:[2] start=5941356 end=5939252
bridgeOp current id=3 from=(5,1) to=(3.93518543,1.21296299)
path.lineTo(3.93518543,1.21296299);
</div>
<div id="issue3651_4">
seg=1 {{{32.7999992f, 180.399994f}, {33.0277786f, 180.399994f}, {33.255558f, 180.407654f}, {33.4833336f, 180.415314f}}}
seg=2 {{{33.4833336f, 180.415314f}, {33.9388885f, 180.430649f}, {34.3944435f, 180.445984f}, {34.8499985f, 180.399994f}}}
seg=3 {{{34.8499985f, 180.399994f}, {35.1892509f, 180.365753f}, {35.5285034f, 180.27977f}, {35.8677559f, 180.193771f}}}
seg=4 {{{35.8677559f, 180.193771f}, {36.2118378f, 180.106552f}, {36.5559196f, 180.019333f}, {36.9000015f, 179.986115f}}}
seg=5 {{{36.9000015f, 179.986115f}, {37.4102402f, 179.936844f}, {37.9204788f, 179.960083f}, {38.4307175f, 179.983322f}}}
seg=6 {{{38.4307175f, 179.983322f}, {38.6038094f, 179.991211f}, {38.7769051f, 179.999084f}, {38.9500008f, 180.004135f}}}
seg=7 {{{38.9500008f, 180.004135f}, {39.4294357f, 180.018143f}, {39.9088669f, 180.045212f}, {40.3883018f, 180.072281f}}}
seg=8 {{{40.3883018f, 180.072281f}, {40.5922012f, 180.083801f}, {40.7961006f, 180.095306f}, {41, 180.10582f}}}
seg=9 {{{41, 180.10582f}, {41.2403526f, 180.11821f}, {41.4807053f, 180.133743f}, {41.7210579f, 180.149277f}}}
seg=10 {{{41.7210579f, 180.149277f}, {42.1640396f, 180.177887f}, {42.6070175f, 180.206497f}, {43.0499992f, 180.215454f}}}
seg=11 {{{43.0499992f, 180.215454f}, {43.5468216f, 180.22551f}, {44.043644f, 180.213379f}, {44.5404663f, 180.201248f}}}
seg=12 {{{44.5404663f, 180.201248f}, {44.7269783f, 180.196701f}, {44.9134903f, 180.192154f}, {45.0999985f, 180.188782f}}}
seg=13 {{{45.0999985f, 180.188782f}, {45.3586121f, 180.184097f}, {45.6172256f, 180.175217f}, {45.8758392f, 180.166336f}}}
seg=14 {{{45.8758392f, 180.166336f}, {46.30056f, 180.151764f}, {46.7252808f, 180.137192f}, {47.1500015f, 180.141159f}}}
seg=15 {{{47.1500015f, 180.141159f}, {47.5802765f, 180.145172f}, {48.0105553f, 180.167938f}, {48.440834f, 180.190704f}}}
seg=16 {{{48.440834f, 180.190704f}, {48.6938896f, 180.204086f}, {48.9469452f, 180.217468f}, {49.2000008f, 180.227036f}}}
seg=17 {{{49.2000008f, 180.227036f}, {49.4036903f, 180.234741f}, {49.6073761f, 180.244537f}, {49.8110657f, 180.254333f}}}
seg=18 {{{49.8110657f, 180.254333f}, {50.2907104f, 180.27739f}, {50.7703552f, 180.300446f}, {51.25f, 180.29631f}}}
seg=19 {{{51.25f, 180.29631f}, {51.5591507f, 180.29364f}, {51.8682976f, 180.268448f}, {52.1774483f, 180.24324f}}}
seg=20 {{{52.1774483f, 180.24324f}, {52.5516319f, 180.212738f}, {52.9258156f, 180.182236f}, {53.2999992f, 180.191696f}}}
seg=21 {{{53.2999992f, 180.191696f}, {53.6290703f, 180.200027f}, {53.9581413f, 180.247635f}, {54.2872086f, 180.295242f}}}
seg=22 {{{54.2872086f, 180.295242f}, {54.6414719f, 180.346497f}, {54.9957352f, 180.397751f}, {55.3499985f, 180.399994f}}}
seg=23 {{{55.3499985f, 180.399994f}, {55.7292671f, 180.402405f}, {56.1085358f, 180.354599f}, {56.4878044f, 180.306793f}}}
seg=24 {{{56.4878044f, 180.306793f}, {56.7918701f, 180.268463f}, {57.0959358f, 180.230133f}, {57.4000015f, 180.217682f}}}
seg=25 {{{57.4000015f, 180.217682f}, {57.8000603f, 180.201294f}, {58.2001228f, 180.210999f}, {58.6001854f, 180.220703f}}}
seg=26 {{{58.6001854f, 180.220703f}, {58.8834572f, 180.227585f}, {59.166729f, 180.234467f}, {59.4500008f, 180.232071f}}}
seg=27 {{{59.4500008f, 180.232071f}, {60.1333351f, 180.226303f}, {60.8166656f, 180.21814f}, {61.5f, 180.183044f}}}
seg=28 {{{61.5f, 180.183044f}, {61.8292809f, 180.166122f}, {62.1585579f, 180.135086f}, {62.4878387f, 180.10405f}}}
seg=29 {{{62.4878387f, 180.10405f}, {62.8418922f, 180.070663f}, {63.1959457f, 180.037277f}, {63.5499992f, 180.021454f}}}
seg=30 {{{63.5499992f, 180.021454f}, {64.2333298f, 179.990921f}, {64.9166641f, 179.981766f}, {65.5999985f, 179.999802f}}}
seg=31 {{{65.5999985f, 179.999802f}, {66.2833328f, 180.017853f}, {66.9666672f, 180.062988f}, {67.6500015f, 180.129684f}}}
seg=32 {{{67.6500015f, 180.129684f}, {67.9556503f, 180.159515f}, {68.2612991f, 180.207733f}, {68.5669479f, 180.255951f}}}
seg=33 {{{68.5669479f, 180.255951f}, {68.9446335f, 180.315521f}, {69.322319f, 180.375092f}, {69.6999969f, 180.399994f}}}
seg=34 {{{69.6999969f, 180.399994f}, {70.1841125f, 180.431915f}, {70.6682281f, 180.421127f}, {71.1523438f, 180.410339f}}}
seg=35 {{{71.1523438f, 180.410339f}, {71.3515625f, 180.405899f}, {71.5507813f, 180.401459f}, {71.75f, 180.399994f}}}
seg=36 {{{71.75f, 180.399994f}, {71.9187546f, 180.398788f}}}
seg=37 {{{71.9187546f, 180.398788f}, {72.5458374f, 180.394318f}, {73.1729202f, 180.389847f}, {73.8000031f, 180.369904f}}}
seg=38 {{{73.8000031f, 180.369904f}, {74.167778f, 180.358215f}, {74.535553f, 180.337616f}, {74.9033279f, 180.317017f}}}
seg=39 {{{74.9033279f, 180.317017f}, {75.2188797f, 180.299347f}, {75.5344391f, 180.281677f}, {75.8499985f, 180.269623f}}}
seg=40 {{{75.8499985f, 180.269623f}, {76.5333328f, 180.24353f}, {77.2166672f, 180.221283f}, {77.9000015f, 180.213348f}}}
seg=41 {{{77.9000015f, 180.213348f}, {78.1885834f, 180.209991f}, {78.4771652f, 180.215805f}, {78.7657471f, 180.221619f}}}
seg=42 {{{78.7657471f, 180.221619f}, {79.1604996f, 180.229553f}, {79.5552521f, 180.237503f}, {79.9499969f, 180.222f}}}
seg=43 {{{79.9499969f, 180.222f}, {80.2761536f, 180.209198f}, {80.6023102f, 180.173965f}, {80.9284668f, 180.138733f}}}
seg=44 {{{80.9284668f, 180.138733f}, {81.2856445f, 180.100159f}, {81.6428223f, 180.061569f}, {82, 180.05246f}}}
seg=45 {{{82, 180.05246f}, {82.4119263f, 180.041962f}, {82.8238525f, 180.063217f}, {83.2357788f, 180.084473f}}}
seg=46 {{{83.2357788f, 180.084473f}, {83.5071869f, 180.09848f}, {83.778595f, 180.112473f}, {84.0500031f, 180.117401f}}}
seg=47 {{{84.0500031f, 180.117401f}, {84.1819916f, 180.119797f}, {84.3139801f, 180.122665f}, {84.4459686f, 180.125534f}}}
seg=48 {{{84.4459686f, 180.125534f}, {84.9973068f, 180.137497f}, {85.5486526f, 180.149475f}, {86.0999985f, 180.126755f}}}
seg=49 {{{86.0999985f, 180.126755f}, {86.4434433f, 180.11261f}, {86.7868881f, 180.075027f}, {87.1303329f, 180.037445f}}}
seg=50 {{{87.1303329f, 180.037445f}, {87.4702225f, 180.000244f}, {87.810112f, 179.963043f}, {88.1500015f, 179.948563f}}}
seg=51 {{{88.1500015f, 179.948563f}, {88.711525f, 179.924652f}, {89.2730484f, 179.935165f}, {89.8345642f, 179.945679f}}}
seg=52 {{{89.8345642f, 179.945679f}, {89.9563751f, 179.947968f}, {90.078186f, 179.950256f}, {90.1999969f, 179.952194f}}}
seg=53 {{{90.1999969f, 179.952194f}, {90.286644f, 179.953568f}, {90.373291f, 179.954849f}, {90.459938f, 179.956131f}}}
seg=54 {{{90.459938f, 179.956131f}, {91.0566254f, 179.96492f}, {91.6533127f, 179.973709f}, {92.25f, 180.013504f}}}
seg=55 {{{92.25f, 180.013504f}, {92.6229324f, 180.038376f}, {92.9958649f, 180.082474f}, {93.3687973f, 180.126587f}}}
seg=56 {{{93.3687973f, 180.126587f}, {93.6791992f, 180.1633f}, {93.9896011f, 180.200012f}, {94.3000031f, 180.225632f}}}
seg=57 {{{94.3000031f, 180.225632f}, {94.9833298f, 180.282028f}, {95.6666641f, 180.32988f}, {96.3499985f, 180.351883f}}}
seg=58 {{{96.3499985f, 180.351883f}, {96.426857f, 180.354355f}, {96.5037155f, 180.356964f}, {96.580574f, 180.359573f}}}
seg=59 {{{96.580574f, 180.359573f}, {97.1870499f, 180.380096f}, {97.7935257f, 180.400635f}, {98.4000015f, 180.35762f}}}
seg=60 {{{98.4000015f, 180.35762f}, {98.9169769f, 180.320953f}, {99.4339523f, 180.232758f}, {99.9509201f, 180.144562f}}}
seg=61 {{{99.9509201f, 180.144562f}, {100.117279f, 180.11618f}, {100.283638f, 180.087799f}, {100.449997f, 180.061127f}}}
seg=62 {{{100.449997f, 180.061127f}, {100.71254f, 180.019043f}, {100.975082f, 179.965027f}, {101.237625f, 179.911011f}}}
seg=63 {{{101.237625f, 179.911011f}, {101.658417f, 179.824432f}, {102.079208f, 179.737854f}, {102.5f, 179.700394f}}}
seg=64 {{{102.5f, 179.700394f}, {102.980095f, 179.657639f}, {103.46019f, 179.670685f}, {103.940285f, 179.683731f}}}
seg=65 {{{103.940285f, 179.683731f}, {104.143524f, 179.689255f}, {104.346764f, 179.694778f}, {104.550003f, 179.69606f}}}
seg=66 {{{104.550003f, 179.69606f}, {105.23333f, 179.700394f}, {105.916664f, 179.713379f}, {106.599998f, 179.726364f}}}
seg=67 {{{106.599998f, 179.726364f}, {106.927223f, 179.73259f}, {107.254448f, 179.740982f}, {107.581673f, 179.749374f}}}
seg=68 {{{107.581673f, 179.749374f}, {107.937782f, 179.758514f}, {108.293892f, 179.767654f}, {108.650002f, 179.773987f}}}
seg=69 {{{108.650002f, 179.773987f}, {108.8871f, 179.778198f}, {109.124199f, 179.771011f}, {109.36129f, 179.763824f}}}
seg=70 {{{109.36129f, 179.763824f}, {109.807526f, 179.75029f}, {110.253761f, 179.736755f}, {110.699997f, 179.799255f}}}
seg=71 {{{110.699997f, 179.799255f}, {111.044617f, 179.847534f}, {111.389236f, 179.961273f}, {111.733856f, 180.075012f}}}
seg=72 {{{111.733856f, 180.075012f}, {112.072571f, 180.186813f}, {112.411285f, 180.298615f}, {112.75f, 180.348251f}}}
seg=73 {{{112.75f, 180.348251f}, {113.232018f, 180.418884f}, {113.714035f, 180.411331f}, {114.196053f, 180.403778f}}}
seg=74 {{{114.196053f, 180.403778f}, {114.397369f, 180.40062f}, {114.598686f, 180.397461f}, {114.800003f, 180.399994f}}}
seg=75 {{{114.800003f, 180.399994f}, {115.255554f, 180.405746f}, {115.711113f, 180.403839f}, {116.166672f, 180.401917f}}}
seg=76 {{{116.166672f, 180.401917f}, {116.394447f, 180.400955f}, {116.622223f, 180.399994f}, {116.849998f, 180.399994f}}}
seg=77 {{{116.849998f, 180.399994f}, {32.7999992f, 180.399994f}}}
seg=78 {{{133.25f, 180.399994f}, {133.477783f, 180.399994f}, {133.705566f, 180.408691f}, {133.93335f, 180.417389f}}}
seg=79 {{{133.93335f, 180.417389f}, {134.388901f, 180.434769f}, {134.844452f, 180.452164f}, {135.300003f, 180.399994f}}}
seg=80 {{{135.300003f, 180.399994f}, {135.670105f, 180.35762f}, {136.040207f, 180.255554f}, {136.410309f, 180.153488f}}}
seg=81 {{{136.410309f, 180.153488f}, {136.723541f, 180.067108f}, {137.036774f, 179.980728f}, {137.350006f, 179.930542f}}}
seg=82 {{{137.350006f, 179.930542f}, {138.03334f, 179.821045f}, {138.71666f, 179.775558f}, {139.399994f, 179.742981f}}}
seg=83 {{{139.399994f, 179.742981f}, {139.866074f, 179.720749f}, {140.332153f, 179.725769f}, {140.798233f, 179.730789f}}}
seg=84 {{{140.798233f, 179.730789f}, {141.015488f, 179.733124f}, {141.232742f, 179.735458f}, {141.449997f, 179.735031f}}}
seg=85 {{{141.449997f, 179.735031f}, {141.725189f, 179.734497f}, {142.000381f, 179.735214f}, {142.275574f, 179.735931f}}}
seg=86 {{{142.275574f, 179.735931f}, {142.683716f, 179.736984f}, {143.091858f, 179.738052f}, {143.5f, 179.735031f}}}
seg=87 {{{143.5f, 179.735031f}, {143.993256f, 179.731384f}, {144.486511f, 179.722855f}, {144.979767f, 179.714325f}}}
seg=88 {{{144.979767f, 179.714325f}, {145.169846f, 179.711029f}, {145.359924f, 179.707733f}, {145.550003f, 179.704727f}}}
seg=89 {{{145.550003f, 179.704727f}, {145.805878f, 179.700668f}, {146.061752f, 179.695709f}, {146.317627f, 179.69075f}}}
seg=90 {{{146.317627f, 179.69075f}, {146.745087f, 179.682449f}, {147.172546f, 179.674149f}, {147.600006f, 179.67009f}}}
seg=91 {{{147.600006f, 179.67009f}, {148.100571f, 179.665329f}, {148.60112f, 179.665543f}, {149.101685f, 179.665771f}}}
seg=92 {{{149.101685f, 179.665771f}, {149.284454f, 179.665848f}, {149.467224f, 179.665924f}, {149.649994f, 179.665756f}}}
seg=93 {{{149.649994f, 179.665756f}, {149.990616f, 179.665466f}, {150.331238f, 179.665787f}, {150.67186f, 179.666107f}}}
seg=94 {{{150.67186f, 179.666107f}, {151.014572f, 179.666428f}, {151.357285f, 179.666763f}, {151.699997f, 179.666458f}}}
seg=95 {{{151.699997f, 179.666458f}, {151.997147f, 179.666199f}, {152.294296f, 179.665253f}, {152.591446f, 179.664307f}}}
seg=96 {{{152.591446f, 179.664307f}, {152.977631f, 179.663086f}, {153.363815f, 179.661865f}, {153.75f, 179.66214f}}}
seg=97 {{{153.75f, 179.66214f}, {154.117691f, 179.662399f}, {154.485382f, 179.664139f}, {154.853073f, 179.665878f}}}
seg=98 {{{154.853073f, 179.665878f}, {155.168716f, 179.667358f}, {155.48436f, 179.668839f}, {155.800003f, 179.669388f}}}
seg=99 {{{155.800003f, 179.669388f}, {156.483337f, 179.670593f}, {157.166672f, 179.669983f}, {157.850006f, 179.669388f}}}
seg=100 {{{157.850006f, 179.669388f}, {158.181168f, 179.669098f}, {158.512314f, 179.66835f}, {158.843475f, 179.667603f}}}
seg=101 {{{158.843475f, 179.667603f}, {159.195648f, 179.666809f}, {159.547821f, 179.666f}, {159.899994f, 179.665756f}}}
seg=102 {{{159.899994f, 179.665756f}, {160.065567f, 179.665634f}, {160.23114f, 179.665405f}, {160.396713f, 179.665176f}}}
seg=103 {{{160.396713f, 179.665176f}, {160.914474f, 179.664459f}, {161.432236f, 179.663727f}, {161.949997f, 179.666458f}}}
seg=104 {{{161.949997f, 179.666458f}, {162.319626f, 179.668411f}, {162.689255f, 179.672928f}, {163.058884f, 179.677444f}}}
seg=105 {{{163.058884f, 179.677444f}, {163.372589f, 179.68129f}, {163.686295f, 179.685135f}, {164, 179.687408f}}}
seg=106 {{{164, 179.687408f}, {164.578613f, 179.691574f}, {165.157227f, 179.693329f}, {165.73584f, 179.695084f}}}
seg=107 {{{165.73584f, 179.695084f}, {166.050003f, 179.69606f}}}
seg=108 {{{166.050003f, 179.69606f}, {166.239731f, 179.696655f}, {166.429459f, 179.69754f}, {166.619186f, 179.69841f}}}
seg=109 {{{166.619186f, 179.69841f}, {167.112793f, 179.700699f}, {167.6064f, 179.702988f}, {168.100006f, 179.700394f}}}
seg=110 {{{168.100006f, 179.700394f}, {168.484314f, 179.698364f}, {168.868622f, 179.692413f}, {169.25293f, 179.686462f}}}
seg=111 {{{169.25293f, 179.686462f}, {169.551956f, 179.681839f}, {169.850967f, 179.6772f}, {170.149994f, 179.674423f}}}
seg=112 {{{170.149994f, 179.674423f}, {170.833328f, 179.668045f}, {171.516663f, 179.663452f}, {172.199997f, 179.66214f}}}
seg=113 {{{172.199997f, 179.66214f}, {172.378799f, 179.661789f}, {172.557602f, 179.660751f}, {172.736404f, 179.659714f}}}
seg=114 {{{172.736404f, 179.659714f}, {173.240936f, 179.656784f}, {173.745468f, 179.653854f}, {174.25f, 179.666458f}}}
seg=115 {{{174.25f, 179.666458f}, {174.405182f, 179.670334f}, {174.560364f, 179.672485f}, {174.715546f, 179.674637f}}}
seg=116 {{{174.715546f, 179.674637f}, {175.243698f, 179.681992f}, {175.771851f, 179.689346f}, {176.300003f, 179.764633f}}}
seg=117 {{{176.300003f, 179.764633f}, {176.640213f, 179.813126f}, {176.980423f, 179.910141f}, {177.320633f, 180.007156f}}}
seg=118 {{{177.320633f, 180.007156f}, {177.663757f, 180.104996f}, {178.006882f, 180.202835f}, {178.350006f, 180.2509f}}}
seg=119 {{{178.350006f, 180.2509f}, {178.822037f, 180.317017f}, {179.294052f, 180.321915f}, {179.766083f, 180.326813f}}}
seg=120 {{{179.766083f, 180.326813f}, {179.977386f, 180.32901f}, {180.18869f, 180.331207f}, {180.399994f, 180.338898f}}}
seg=121 {{{180.399994f, 180.338898f}, {180.547852f, 180.344284f}}}
seg=122 {{{180.547852f, 180.344284f}, {181.1819f, 180.367416f}, {181.815948f, 180.390549f}, {182.449997f, 180.399994f}}}
seg=123 {{{182.449997f, 180.399994f}, {182.905548f, 180.406784f}, {183.361099f, 180.404526f}, {183.81665f, 180.402252f}}}
seg=124 {{{183.81665f, 180.402252f}, {184.044434f, 180.401123f}, {184.272217f, 180.399994f}, {184.5f, 180.399994f}}}
seg=125 {{{184.5f, 180.399994f}, {133.25f, 180.399994f}}}
seg=126 {{{186.550003f, 180.399994f}, {186.891663f, 180.398926f}, {187.233337f, 180.396271f}, {187.575012f, 180.393616f}}}
seg=127 {{{187.575012f, 180.393616f}, {187.916672f, 180.390945f}, {188.258331f, 180.388275f}, {188.600006f, 180.387222f}}}
seg=128 {{{188.600006f, 180.387222f}, {189.28334f, 180.385086f}, {189.96666f, 180.385086f}, {190.649994f, 180.387222f}}}
seg=129 {{{190.649994f, 180.387222f}, {190.991669f, 180.388275f}, {191.333328f, 180.390945f}, {191.674988f, 180.393616f}}}
seg=130 {{{191.674988f, 180.393616f}, {192.016663f, 180.396271f}, {192.358337f, 180.398926f}, {192.699997f, 180.399994f}}}
seg=131 {{{192.699997f, 180.399994f}, {186.550003f, 180.399994f}}}
op union
seg=132 {{{32.7999992f, 180.399994f}, {33.0277786f, 180.399994f}, {33.255558f, 180.392334f}, {33.4833336f, 180.384674f}}}
seg=133 {{{33.4833336f, 180.384674f}, {33.9388885f, 180.369339f}, {34.3944435f, 180.354004f}, {34.8499985f, 180.399994f}}}
seg=134 {{{34.8499985f, 180.399994f}, {35.1892509f, 180.434235f}, {35.5285034f, 180.520218f}, {35.8677559f, 180.606216f}}}
seg=135 {{{35.8677559f, 180.606216f}, {36.2118378f, 180.693436f}, {36.5559196f, 180.780655f}, {36.9000015f, 180.813873f}}}
seg=136 {{{36.9000015f, 180.813873f}, {37.4102402f, 180.863144f}, {37.9204788f, 180.839905f}, {38.4307175f, 180.816666f}}}
seg=137 {{{38.4307175f, 180.816666f}, {38.6038094f, 180.808777f}, {38.7769051f, 180.800903f}, {38.9500008f, 180.795853f}}}
seg=138 {{{38.9500008f, 180.795853f}, {39.4294357f, 180.781845f}, {39.9088669f, 180.754776f}, {40.3883018f, 180.727707f}}}
seg=139 {{{40.3883018f, 180.727707f}, {40.5922012f, 180.716187f}, {40.7961006f, 180.704681f}, {41, 180.694168f}}}
seg=140 {{{41, 180.694168f}, {41.2403526f, 180.681778f}, {41.4807053f, 180.666245f}, {41.7210579f, 180.650711f}}}
seg=141 {{{41.7210579f, 180.650711f}, {42.1640396f, 180.622101f}, {42.6070175f, 180.593491f}, {43.0499992f, 180.584534f}}}
seg=142 {{{43.0499992f, 180.584534f}, {43.5468216f, 180.574478f}, {44.043644f, 180.586609f}, {44.5404663f, 180.59874f}}}
seg=143 {{{44.5404663f, 180.59874f}, {44.7269783f, 180.603287f}, {44.9134903f, 180.607834f}, {45.0999985f, 180.611206f}}}
seg=144 {{{45.0999985f, 180.611206f}, {45.3586121f, 180.615891f}, {45.6172256f, 180.624771f}, {45.8758392f, 180.633652f}}}
seg=145 {{{45.8758392f, 180.633652f}, {46.30056f, 180.648224f}, {46.7252808f, 180.662796f}, {47.1500015f, 180.658829f}}}
seg=146 {{{47.1500015f, 180.658829f}, {47.5802765f, 180.654816f}, {48.0105553f, 180.63205f}, {48.440834f, 180.609283f}}}
seg=147 {{{48.440834f, 180.609283f}, {48.6938896f, 180.595901f}, {48.9469452f, 180.58252f}, {49.2000008f, 180.572952f}}}
seg=148 {{{49.2000008f, 180.572952f}, {49.4036903f, 180.565247f}, {49.6073761f, 180.55545f}, {49.8110657f, 180.545654f}}}
seg=149 {{{49.8110657f, 180.545654f}, {50.2907104f, 180.522598f}, {50.7703552f, 180.499542f}, {51.25f, 180.503677f}}}
seg=150 {{{51.25f, 180.503677f}, {51.5591507f, 180.506348f}, {51.8682976f, 180.53154f}, {52.1774483f, 180.556747f}}}
seg=151 {{{52.1774483f, 180.556747f}, {52.5516319f, 180.58725f}, {52.9258156f, 180.617752f}, {53.2999992f, 180.608292f}}}
seg=152 {{{53.2999992f, 180.608292f}, {53.6290703f, 180.59996f}, {53.9581413f, 180.552353f}, {54.2872086f, 180.504745f}}}
seg=153 {{{54.2872086f, 180.504745f}, {54.6414719f, 180.453491f}, {54.9957352f, 180.402237f}, {55.3499985f, 180.399994f}}}
seg=154 {{{55.3499985f, 180.399994f}, {55.7292671f, 180.397583f}, {56.1085358f, 180.445389f}, {56.4878044f, 180.493195f}}}
seg=155 {{{56.4878044f, 180.493195f}, {56.7918701f, 180.531525f}, {57.0959358f, 180.569855f}, {57.4000015f, 180.582306f}}}
seg=156 {{{57.4000015f, 180.582306f}, {57.8000603f, 180.598694f}, {58.2001228f, 180.588989f}, {58.6001854f, 180.579285f}}}
seg=157 {{{58.6001854f, 180.579285f}, {58.8834572f, 180.572403f}, {59.166729f, 180.565521f}, {59.4500008f, 180.567917f}}}
seg=158 {{{59.4500008f, 180.567917f}, {60.1333351f, 180.573685f}, {60.8166656f, 180.581848f}, {61.5f, 180.616943f}}}
seg=159 {{{61.5f, 180.616943f}, {61.8292809f, 180.633865f}, {62.1585579f, 180.664902f}, {62.4878387f, 180.695938f}}}
seg=160 {{{62.4878387f, 180.695938f}, {62.8418922f, 180.729324f}, {63.1959457f, 180.762711f}, {63.5499992f, 180.778534f}}}
seg=161 {{{63.5499992f, 180.778534f}, {64.2333298f, 180.809067f}, {64.9166641f, 180.818222f}, {65.5999985f, 180.800186f}}}
seg=162 {{{65.5999985f, 180.800186f}, {66.2833328f, 180.782135f}, {66.9666672f, 180.737f}, {67.6500015f, 180.670303f}}}
seg=163 {{{67.6500015f, 180.670303f}, {67.9556503f, 180.640472f}, {68.2612991f, 180.592255f}, {68.5669479f, 180.544037f}}}
seg=164 {{{68.5669479f, 180.544037f}, {68.9446335f, 180.484467f}, {69.322319f, 180.424896f}, {69.6999969f, 180.399994f}}}
seg=165 {{{69.6999969f, 180.399994f}, {70.1841125f, 180.368073f}, {70.6682281f, 180.37886f}, {71.1523438f, 180.389648f}}}
seg=166 {{{71.1523438f, 180.389648f}, {71.3515625f, 180.394089f}, {71.5507813f, 180.398529f}, {71.75f, 180.399994f}}}
seg=167 {{{71.75f, 180.399994f}, {71.9187546f, 180.401199f}}}
seg=168 {{{71.9187546f, 180.401199f}, {72.5458374f, 180.40567f}, {73.1729202f, 180.410141f}, {73.8000031f, 180.430084f}}}
seg=169 {{{73.8000031f, 180.430084f}, {74.167778f, 180.441772f}, {74.535553f, 180.462372f}, {74.9033279f, 180.482971f}}}
seg=170 {{{74.9033279f, 180.482971f}, {75.2188797f, 180.500641f}, {75.5344391f, 180.518311f}, {75.8499985f, 180.530365f}}}
seg=171 {{{75.8499985f, 180.530365f}, {76.5333328f, 180.556458f}, {77.2166672f, 180.578705f}, {77.9000015f, 180.586639f}}}
seg=172 {{{77.9000015f, 180.586639f}, {78.1885834f, 180.589996f}, {78.4771652f, 180.584183f}, {78.7657471f, 180.578369f}}}
seg=173 {{{78.7657471f, 180.578369f}, {79.1604996f, 180.570435f}, {79.5552521f, 180.562485f}, {79.9499969f, 180.577988f}}}
seg=174 {{{79.9499969f, 180.577988f}, {80.2761536f, 180.59079f}, {80.6023102f, 180.626022f}, {80.9284668f, 180.661255f}}}
seg=175 {{{80.9284668f, 180.661255f}, {81.2856445f, 180.699829f}, {81.6428223f, 180.738419f}, {82, 180.747528f}}}
seg=176 {{{82, 180.747528f}, {82.4119263f, 180.758026f}, {82.8238525f, 180.736771f}, {83.2357788f, 180.715515f}}}
seg=177 {{{83.2357788f, 180.715515f}, {83.5071869f, 180.701508f}, {83.778595f, 180.687515f}, {84.0500031f, 180.682587f}}}
seg=178 {{{84.0500031f, 180.682587f}, {84.1819916f, 180.680191f}, {84.3139801f, 180.677322f}, {84.4459686f, 180.674454f}}}
seg=179 {{{84.4459686f, 180.674454f}, {84.9973068f, 180.662491f}, {85.5486526f, 180.650513f}, {86.0999985f, 180.673233f}}}
seg=180 {{{86.0999985f, 180.673233f}, {86.4434433f, 180.687378f}, {86.7868881f, 180.72496f}, {87.1303329f, 180.762543f}}}
seg=181 {{{87.1303329f, 180.762543f}, {87.4702225f, 180.799744f}, {87.810112f, 180.836945f}, {88.1500015f, 180.851425f}}}
seg=182 {{{88.1500015f, 180.851425f}, {88.711525f, 180.875336f}, {89.2730484f, 180.864822f}, {89.8345642f, 180.854309f}}}
seg=183 {{{89.8345642f, 180.854309f}, {89.9563751f, 180.85202f}, {90.078186f, 180.849731f}, {90.1999969f, 180.847794f}}}
seg=184 {{{90.1999969f, 180.847794f}, {90.286644f, 180.84642f}, {90.373291f, 180.845139f}, {90.459938f, 180.843857f}}}
seg=185 {{{90.459938f, 180.843857f}, {91.0566254f, 180.835068f}, {91.6533127f, 180.826279f}, {92.25f, 180.786484f}}}
seg=186 {{{92.25f, 180.786484f}, {92.6229324f, 180.761612f}, {92.9958649f, 180.717514f}, {93.3687973f, 180.673401f}}}
seg=187 {{{93.3687973f, 180.673401f}, {93.6791992f, 180.636688f}, {93.9896011f, 180.599976f}, {94.3000031f, 180.574356f}}}
seg=188 {{{94.3000031f, 180.574356f}, {94.9833298f, 180.51796f}, {95.6666641f, 180.470108f}, {96.3499985f, 180.448105f}}}
seg=189 {{{96.3499985f, 180.448105f}, {96.426857f, 180.445633f}, {96.5037155f, 180.443024f}, {96.580574f, 180.440414f}}}
seg=190 {{{96.580574f, 180.440414f}, {97.1870499f, 180.419891f}, {97.7935257f, 180.399353f}, {98.4000015f, 180.442368f}}}
seg=191 {{{98.4000015f, 180.442368f}, {98.9169769f, 180.479034f}, {99.4339523f, 180.56723f}, {99.9509201f, 180.655426f}}}
seg=192 {{{99.9509201f, 180.655426f}, {100.117279f, 180.683807f}, {100.283638f, 180.712189f}, {100.449997f, 180.738861f}}}
seg=193 {{{100.449997f, 180.738861f}, {100.71254f, 180.780945f}, {100.975082f, 180.834961f}, {101.237625f, 180.888977f}}}
seg=194 {{{101.237625f, 180.888977f}, {101.658417f, 180.975555f}, {102.079208f, 181.062134f}, {102.5f, 181.099594f}}}
seg=195 {{{102.5f, 181.099594f}, {102.980095f, 181.142349f}, {103.46019f, 181.129303f}, {103.940285f, 181.116257f}}}
seg=196 {{{103.940285f, 181.116257f}, {104.143524f, 181.110733f}, {104.346764f, 181.105209f}, {104.550003f, 181.103928f}}}
seg=197 {{{104.550003f, 181.103928f}, {105.23333f, 181.099594f}, {105.916664f, 181.086609f}, {106.599998f, 181.073624f}}}
seg=198 {{{106.599998f, 181.073624f}, {106.927223f, 181.067398f}, {107.254448f, 181.059006f}, {107.581673f, 181.050613f}}}
seg=199 {{{107.581673f, 181.050613f}, {107.937782f, 181.041473f}, {108.293892f, 181.032333f}, {108.650002f, 181.026001f}}}
seg=200 {{{108.650002f, 181.026001f}, {108.8871f, 181.02179f}, {109.124199f, 181.028976f}, {109.36129f, 181.036163f}}}
seg=201 {{{109.36129f, 181.036163f}, {109.807526f, 181.049698f}, {110.253761f, 181.063232f}, {110.699997f, 181.000732f}}}
seg=202 {{{110.699997f, 181.000732f}, {111.044617f, 180.952454f}, {111.389236f, 180.838715f}, {111.733856f, 180.724976f}}}
seg=203 {{{111.733856f, 180.724976f}, {112.072571f, 180.613174f}, {112.411285f, 180.501373f}, {112.75f, 180.451736f}}}
seg=204 {{{112.75f, 180.451736f}, {113.232018f, 180.381104f}, {113.714035f, 180.388657f}, {114.196053f, 180.39621f}}}
seg=205 {{{114.196053f, 180.39621f}, {114.397369f, 180.399368f}, {114.598686f, 180.402527f}, {114.800003f, 180.399994f}}}
seg=206 {{{114.800003f, 180.399994f}, {115.255554f, 180.394241f}, {115.711113f, 180.396149f}, {116.166672f, 180.398071f}}}
seg=207 {{{116.166672f, 180.398071f}, {116.394447f, 180.399033f}, {116.622223f, 180.399994f}, {116.849998f, 180.399994f}}}
seg=208 {{{116.849998f, 180.399994f}, {32.7999992f, 180.399994f}}}
seg=209 {{{133.25f, 180.399994f}, {133.477783f, 180.399994f}, {133.705566f, 180.391296f}, {133.93335f, 180.382599f}}}
seg=210 {{{133.93335f, 180.382599f}, {134.388901f, 180.365219f}, {134.844452f, 180.347824f}, {135.300003f, 180.399994f}}}
seg=211 {{{135.300003f, 180.399994f}, {135.670105f, 180.442368f}, {136.040207f, 180.544434f}, {136.410309f, 180.6465f}}}
seg=212 {{{136.410309f, 180.6465f}, {136.723541f, 180.73288f}, {137.036774f, 180.81926f}, {137.350006f, 180.869446f}}}
seg=213 {{{137.350006f, 180.869446f}, {138.03334f, 180.978943f}, {138.71666f, 181.024429f}, {139.399994f, 181.057007f}}}
seg=214 {{{139.399994f, 181.057007f}, {139.866074f, 181.079239f}, {140.332153f, 181.074219f}, {140.798233f, 181.069199f}}}
seg=215 {{{140.798233f, 181.069199f}, {141.015488f, 181.066864f}, {141.232742f, 181.064529f}, {141.449997f, 181.064957f}}}
seg=216 {{{141.449997f, 181.064957f}, {141.725189f, 181.065491f}, {142.000381f, 181.064774f}, {142.275574f, 181.064056f}}}
seg=217 {{{142.275574f, 181.064056f}, {142.683716f, 181.063004f}, {143.091858f, 181.061935f}, {143.5f, 181.064957f}}}
seg=218 {{{143.5f, 181.064957f}, {143.993256f, 181.068604f}, {144.486511f, 181.077133f}, {144.979767f, 181.085663f}}}
seg=219 {{{144.979767f, 181.085663f}, {145.169846f, 181.088959f}, {145.359924f, 181.092255f}, {145.550003f, 181.095261f}}}
seg=220 {{{145.550003f, 181.095261f}, {145.805878f, 181.099319f}, {146.061752f, 181.104279f}, {146.317627f, 181.109238f}}}
seg=221 {{{146.317627f, 181.109238f}, {146.745087f, 181.117538f}, {147.172546f, 181.125839f}, {147.600006f, 181.129898f}}}
seg=222 {{{147.600006f, 181.129898f}, {148.100571f, 181.134659f}, {148.60112f, 181.134445f}, {149.101685f, 181.134216f}}}
seg=223 {{{149.101685f, 181.134216f}, {149.284454f, 181.13414f}, {149.467224f, 181.134064f}, {149.649994f, 181.134232f}}}
seg=224 {{{149.649994f, 181.134232f}, {149.990616f, 181.134521f}, {150.331238f, 181.134201f}, {150.67186f, 181.133881f}}}
seg=225 {{{150.67186f, 181.133881f}, {151.014572f, 181.13356f}, {151.357285f, 181.133224f}, {151.699997f, 181.13353f}}}
seg=226 {{{151.699997f, 181.13353f}, {151.997147f, 181.133789f}, {152.294296f, 181.134735f}, {152.591446f, 181.135681f}}}
seg=227 {{{152.591446f, 181.135681f}, {152.977631f, 181.136902f}, {153.363815f, 181.138123f}, {153.75f, 181.137848f}}}
seg=228 {{{153.75f, 181.137848f}, {154.117691f, 181.137589f}, {154.485382f, 181.135849f}, {154.853073f, 181.134109f}}}
seg=229 {{{154.853073f, 181.134109f}, {155.168716f, 181.132629f}, {155.48436f, 181.131149f}, {155.800003f, 181.1306f}}}
seg=230 {{{155.800003f, 181.1306f}, {156.199615f, 181.129898f}, {156.599228f, 181.129807f}, {156.99884f, 181.129974f}}}
seg=231 {{{156.99884f, 181.129974f}, {157.282562f, 181.130096f}, {157.566284f, 181.130356f}, {157.850006f, 181.1306f}}}
seg=232 {{{157.850006f, 181.1306f}, {158.181168f, 181.13089f}, {158.512314f, 181.131638f}, {158.843475f, 181.132385f}}}
seg=233 {{{158.843475f, 181.132385f}, {159.195648f, 181.133179f}, {159.547821f, 181.133987f}, {159.899994f, 181.134232f}}}
seg=234 {{{159.899994f, 181.134232f}, {160.065567f, 181.134354f}, {160.23114f, 181.134583f}, {160.396713f, 181.134811f}}}
seg=235 {{{160.396713f, 181.134811f}, {160.914474f, 181.135529f}, {161.432236f, 181.136261f}, {161.949997f, 181.13353f}}}
seg=236 {{{161.949997f, 181.13353f}, {162.319626f, 181.131577f}, {162.689255f, 181.12706f}, {163.058884f, 181.122543f}}}
seg=237 {{{163.058884f, 181.122543f}, {163.372589f, 181.118698f}, {163.686295f, 181.114853f}, {164, 181.112579f}}}
seg=238 {{{164, 181.112579f}, {164.627563f, 181.108047f}, {165.255127f, 181.106369f}, {165.88269f, 181.104446f}}}
seg=239 {{{165.88269f, 181.104446f}, {166.050003f, 181.103928f}}}
seg=240 {{{166.050003f, 181.103928f}, {166.239731f, 181.103333f}, {166.429459f, 181.102448f}, {166.619186f, 181.101578f}}}
seg=241 {{{166.619186f, 181.101578f}, {167.112793f, 181.099289f}, {167.6064f, 181.097f}, {168.100006f, 181.099594f}}}
seg=242 {{{168.100006f, 181.099594f}, {168.484314f, 181.101624f}, {168.868622f, 181.107574f}, {169.25293f, 181.113525f}}}
seg=243 {{{169.25293f, 181.113525f}, {169.551956f, 181.118149f}, {169.850967f, 181.122787f}, {170.149994f, 181.125565f}}}
seg=244 {{{170.149994f, 181.125565f}, {170.833328f, 181.131943f}, {171.516663f, 181.136536f}, {172.199997f, 181.137848f}}}
seg=245 {{{172.199997f, 181.137848f}, {172.378799f, 181.138199f}, {172.557602f, 181.139236f}, {172.736404f, 181.140274f}}}
seg=246 {{{172.736404f, 181.140274f}, {173.240936f, 181.143204f}, {173.745468f, 181.146133f}, {174.25f, 181.13353f}}}
seg=247 {{{174.25f, 181.13353f}, {174.405182f, 181.129654f}, {174.560364f, 181.127502f}, {174.715546f, 181.125351f}}}
seg=248 {{{174.715546f, 181.125351f}, {175.243698f, 181.117996f}, {175.771851f, 181.110641f}, {176.300003f, 181.035355f}}}
seg=249 {{{176.300003f, 181.035355f}, {176.640213f, 180.986862f}, {176.980423f, 180.889847f}, {177.320633f, 180.792831f}}}
seg=250 {{{177.320633f, 180.792831f}, {177.663757f, 180.694992f}, {178.006882f, 180.597153f}, {178.350006f, 180.549088f}}}
seg=251 {{{178.350006f, 180.549088f}, {178.822037f, 180.482971f}, {179.294052f, 180.478073f}, {179.766083f, 180.473175f}}}
seg=252 {{{179.766083f, 180.473175f}, {179.977386f, 180.470978f}, {180.18869f, 180.468781f}, {180.399994f, 180.46109f}}}
seg=253 {{{180.399994f, 180.46109f}, {180.547852f, 180.455704f}}}
seg=254 {{{180.547852f, 180.455704f}, {181.1819f, 180.432571f}, {181.815948f, 180.409439f}, {182.449997f, 180.399994f}}}
seg=255 {{{182.449997f, 180.399994f}, {182.905548f, 180.393204f}, {183.361099f, 180.395462f}, {183.81665f, 180.397736f}}}
seg=256 {{{183.81665f, 180.397736f}, {184.044434f, 180.398865f}, {184.272217f, 180.399994f}, {184.5f, 180.399994f}}}
seg=257 {{{184.5f, 180.399994f}, {133.25f, 180.399994f}}}
seg=258 {{{186.550003f, 180.399994f}, {186.891663f, 180.401062f}, {187.233337f, 180.403717f}, {187.575012f, 180.406372f}}}
seg=259 {{{187.575012f, 180.406372f}, {187.916672f, 180.409042f}, {188.258331f, 180.411713f}, {188.600006f, 180.412766f}}}
seg=260 {{{188.600006f, 180.412766f}, {189.28334f, 180.414902f}, {189.96666f, 180.414902f}, {190.649994f, 180.412766f}}}
seg=261 {{{190.649994f, 180.412766f}, {190.991669f, 180.411713f}, {191.333328f, 180.409042f}, {191.674988f, 180.406372f}}}
seg=262 {{{191.674988f, 180.406372f}, {192.016663f, 180.403717f}, {192.358337f, 180.401062f}, {192.699997f, 180.399994f}}}
seg=263 {{{192.699997f, 180.399994f}, {186.550003f, 180.399994f}}}
</div>
<div id="cubics138">
seg=1 {{{0, 5}, {1.47503459f, 5.49167824f}, {1.74133193f, 4.29112434f}, {1.98751152f, 3.18126726f}}}
seg=2 {{{1.98751152f, 3.18126726f}, {2.24202442f, 2.03384113f}, {2.47503471f, 0.983356416f}, {4, 2}}}
seg=3 {{{4, 2}, {0, 5}}}
op diff
seg=4 {{{0, 1}, {1.01669919f, 2.52504873f}, {2.29181767f, 2.2411623f}, {3.43125343f, 1.98748374f}}}
seg=5 {{{3.43125343f, 1.98748374f}, {4.53325891f, 1.74213839f}, {5.50834942f, 1.52504873f}, {6, 3}}}
seg=6 {{{6, 3}, {0, 1}}}
debugShowCubicIntersection wtTs[0]=1 {{{0,1}, {1.01669919,2.52504873}, {2.29181767,2.2411623}, {3.43125343,1.98748374}}} {{3.43125343,1.98748374}} wnTs[0]=0 {{{3.43125343,1.98748374}, {4.53325891,1.74213839}, {5.50834942,1.52504873}, {6,3}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{0,1}, {1.01669919,2.52504873}, {2.29181767,2.2411623}, {3.43125343,1.98748374}}} {{0,1}} wtTs[1]=0.918003405 {{3.14844441,2.04948139}} wnTs[0]=1 {{{6,3}, {0,1}}} wnTs[1]=0.475259271
SkOpSegment::addT insert t=0.918003405 segID=4 spanID=13
SkOpSegment::addT insert t=0.475259271 segID=6 spanID=14
debugShowCubicLineIntersection wtTs[0]=1 {{{3.43125343,1.98748374}, {4.53325891,1.74213839}, {5.50834942,1.52504873}, {6,3}}} {{6,3}} wnTs[0]=0 {{{6,3}, {0,1}}}
debugShowCubicIntersection wtTs[0]=0.667611207 {{{0,1}, {1.01669919,2.52504873}, {2.29181767,2.2411623}, {3.43125343,1.98748374}}} {{2.26454735,2.18291688}} wnTs[0]=0.316675 {{{1.98751152,3.18126726}, {2.24202442,2.03384113}, {2.47503471,0.983356416}, {4,2}}}
SkOpSegment::addT insert t=0.667611207 segID=4 spanID=15
SkOpSegment::addT insert t=0.316674705 segID=2 spanID=16
debugShowCubicLineIntersection no intersect {{{0,1}, {1.01669919,2.52504873}, {2.29181767,2.2411623}, {3.43125343,1.98748374}}} {{{4,2}, {0,5}}}
debugShowCubicIntersection wtTs[0]=0.126307173 {{{3.43125343,1.98748374}, {4.53325891,1.74213839}, {5.50834942,1.52504873}, {6,3}}} {{3.84203434,1.89922202}} wnTs[0]=0.964411 {{{1.98751152,3.18126726}, {2.24202442,2.03384113}, {2.47503471,0.983356416}, {4,2}}}
SkOpSegment::addT insert t=0.126307173 segID=5 spanID=17
SkOpSegment::addT insert t=0.964411114 segID=2 spanID=18
debugShowCubicLineIntersection no intersect {{{3.43125343,1.98748374}, {4.53325891,1.74213839}, {5.50834942,1.52504873}, {6,3}}} {{{4,2}, {0,5}}}
debugShowCubicLineIntersection wtTs[0]=0.47393597 {{{1.98751152,3.18126726}, {2.24202442,2.03384113}, {2.47503471,0.983356416}, {4,2}}} {{2.47471237,1.82490408}} wnTs[0]=0.587548 {{{6,3}, {0,1}}}
SkOpSegment::addT insert t=0.587547935 segID=6 spanID=19
SkOpSegment::addT insert t=0.47393597 segID=2 spanID=20
debugShowLineIntersection wtTs[0]=0.384615385 {{{6,3}, {0,1}}} {{3.69230771,2.23076916}} wnTs[0]=0.0769231 {{{4,2}, {0,5}}}
SkOpSegment::addT insert t=0.384615385 segID=6 spanID=21
SkOpSegment::addT insert t=0.0769230769 segID=3 spanID=22
debugShowCubicIntersection wtTs[0]=1 {{{0,5}, {1.47503459,5.49167824}, {1.74133193,4.29112434}, {1.98751152,3.18126726}}} {{1.98751152,3.18126726}} wnTs[0]=0 {{{1.98751152,3.18126726}, {2.24202442,2.03384113}, {2.47503471,0.983356416}, {4,2}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{0,5}, {1.47503459,5.49167824}, {1.74133193,4.29112434}, {1.98751152,3.18126726}}} {{0,5}} wtTs[1]=0.881335235 {{1.89703703,3.57722235}} wnTs[0]=1 {{{4,2}, {0,5}}} wnTs[1]=0.525740749
SkOpSegment::addT insert t=0.881335235 segID=1 spanID=23
SkOpSegment::addT insert t=0.525740749 segID=3 spanID=24
debugShowCubicLineIntersection wtTs[0]=1 {{{1.98751152,3.18126726}, {2.24202442,2.03384113}, {2.47503471,0.983356416}, {4,2}}} {{4,2}} wnTs[0]=0 {{{4,2}, {0,5}}}
SkOpSegment::sortAngles [4] tStart=0.667611207 [15]
SkOpAngle::after [4/1] 17/13 tStart=0.667611207 tEnd=0 < [2/15] 21/21 tStart=0.316674705 tEnd=0 < [4/2] 1/1 tStart=0.667611207 tEnd=0.918003405 T 4
SkOpAngle::afterPart {{{2.26454735,2.18291688}, {1.47269817,2.2300284}, {0.678759777,2.01813963}, {0,1}}} id=4
SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.1465507,2.46426727}, {2.06810932,2.81790643}, {1.98751152,3.18126726}}} id=2
SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.56153585,2.16524738}, {2.85823057,2.11114475}, {3.14844441,2.04948139}}} id=4
SkOpAngle::after [4/1] 17/13 tStart=0.667611207 tEnd=0 < [2/16] 5/5 tStart=0.316674705 tEnd=0.47393597 < [2/15] 21/21 tStart=0.316674705 tEnd=0 F 4
SkOpAngle::afterPart {{{2.26454735,2.18291688}, {1.47269817,2.2300284}, {0.678759777,2.01813963}, {0,1}}} id=4
SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.32314471,2.04319774}, {2.39149697,1.92130586}, {2.47471237,1.82490408}}} id=2
SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.1465507,2.46426727}, {2.06810932,2.81790643}, {1.98751152,3.18126726}}} id=2
SkOpAngle::after [2/15] 21/21 tStart=0.316674705 tEnd=0 < [2/16] 5/5 tStart=0.316674705 tEnd=0.47393597 < [4/2] 1/1 tStart=0.667611207 tEnd=0.918003405 F 4
SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.1465507,2.46426727}, {2.06810932,2.81790643}, {1.98751152,3.18126726}}} id=2
SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.32314471,2.04319774}, {2.39149697,1.92130586}, {2.47471237,1.82490408}}} id=2
SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.56153585,2.16524738}, {2.85823057,2.11114475}, {3.14844441,2.04948139}}} id=4
SkOpAngle::after [4/2] 1/1 tStart=0.667611207 tEnd=0.918003405 < [2/16] 5/5 tStart=0.316674705 tEnd=0.47393597 < [4/1] 17/13 tStart=0.667611207 tEnd=0 T 4
SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.56153585,2.16524738}, {2.85823057,2.11114475}, {3.14844441,2.04948139}}} id=4
SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.32314471,2.04319774}, {2.39149697,1.92130586}, {2.47471237,1.82490408}}} id=2
SkOpAngle::afterPart {{{2.26454735,2.18291688}, {1.47269817,2.2300284}, {0.678759777,2.01813963}, {0,1}}} id=4
SkOpSegment::sortAngles [4] tStart=0.918003405 [13]
SkOpAngle::after [4/3] 17/17 tStart=0.918003405 tEnd=0.667611207 < [6/9] 29/29 tStart=0.475259271 tEnd=0.384615385 < [4/4] 1/1 tStart=0.918003405 tEnd=1 T 4
SkOpAngle::afterPart {{{3.14844441,2.04948139}, {2.85823057,2.11114475}, {2.56153585,2.16524738}, {2.26454735,2.18291688}}} id=4
SkOpAngle::afterPart {{{3.14844441,2.04948139}, {3.69230771,2.23076916}}} id=6
SkOpAngle::afterPart {{{3.14844441,2.04948139}, {3.24348151,2.02928833}, {3.33782358,2.00828452}, {3.43125343,1.98748374}}} id=4
SkOpAngle::after [4/3] 17/17 tStart=0.918003405 tEnd=0.667611207 < [6/10] 13/13 tStart=0.475259271 tEnd=0.587547935 < [6/9] 29/29 tStart=0.475259271 tEnd=0.384615385 F 4
SkOpAngle::afterPart {{{3.14844441,2.04948139}, {2.85823057,2.11114475}, {2.56153585,2.16524738}, {2.26454735,2.18291688}}} id=4
SkOpAngle::afterPart {{{3.14844441,2.04948139}, {2.47471237,1.82490408}}} id=6
SkOpAngle::afterPart {{{3.14844441,2.04948139}, {3.69230771,2.23076916}}} id=6
SkOpAngle::after [6/9] 29/29 tStart=0.475259271 tEnd=0.384615385 < [6/10] 13/13 tStart=0.475259271 tEnd=0.587547935 < [4/4] 1/1 tStart=0.918003405 tEnd=1 F 4
SkOpAngle::afterPart {{{3.14844441,2.04948139}, {3.69230771,2.23076916}}} id=6
SkOpAngle::afterPart {{{3.14844441,2.04948139}, {2.47471237,1.82490408}}} id=6
SkOpAngle::afterPart {{{3.14844441,2.04948139}, {3.24348151,2.02928833}, {3.33782358,2.00828452}, {3.43125343,1.98748374}}} id=4
SkOpAngle::after [4/4] 1/1 tStart=0.918003405 tEnd=1 < [6/10] 13/13 tStart=0.475259271 tEnd=0.587547935 < [4/3] 17/17 tStart=0.918003405 tEnd=0.667611207 T 4
SkOpAngle::afterPart {{{3.14844441,2.04948139}, {3.24348151,2.02928833}, {3.33782358,2.00828452}, {3.43125343,1.98748374}}} id=4
SkOpAngle::afterPart {{{3.14844441,2.04948139}, {2.47471237,1.82490408}}} id=6
SkOpAngle::afterPart {{{3.14844441,2.04948139}, {2.85823057,2.11114475}, {2.56153585,2.16524738}, {2.26454735,2.18291688}}} id=4
SkOpSegment::sortAngles [5] tStart=0.126307173 [17]
SkOpAngle::after [5/5] 17/17 tStart=0.126307173 tEnd=0 < [2/19] 13/13 tStart=0.964411114 tEnd=0.47393597 < [5/6] 1/29 tStart=0.126307173 tEnd=1 F 4
SkOpAngle::afterPart {{{3.84203434,1.89922202}, {3.70761103,1.92595674}, {3.57044463,1.95649486}, {3.43125343,1.98748374}}} id=5
SkOpAngle::afterPart {{{3.84203434,1.89922202}, {3.13836417,1.47152506}, {2.73424919,1.52424088}, {2.47471237,1.82490408}}} id=2
SkOpAngle::afterPart {{{3.84203434,1.89922202}, {4.77186815,1.71429239}, {5.57044841,1.71134566}, {6,3}}} id=5
SkOpAngle::after [5/5] 17/17 tStart=0.126307173 tEnd=0 < [2/20] 29/29 tStart=0.964411114 tEnd=1 < [5/6] 1/29 tStart=0.126307173 tEnd=1 T 11
SkOpAngle::afterPart {{{3.84203434,1.89922202}, {3.70761103,1.92595674}, {3.57044463,1.95649486}, {3.43125343,1.98748374}}} id=5
SkOpAngle::afterPart {{{3.84203434,1.89922202}, {3.89309266,1.93025572}, {3.94572818,1.96381879}, {4,2}}} id=2
SkOpAngle::afterPart {{{3.84203434,1.89922202}, {4.77186815,1.71429239}, {5.57044841,1.71134566}, {6,3}}} id=5
SkOpSegment::sortAngles [6] tStart=0.384615385 [21]
SkOpAngle::after [6/7] 29/29 tStart=0.384615385 tEnd=0 < [3/21] 1/1 tStart=0.0769230769 tEnd=0 < [6/8] 13/13 tStart=0.384615385 tEnd=0.475259271 T 4
SkOpAngle::afterPart {{{3.69230771,2.23076916}, {6,3}}} id=6
SkOpAngle::afterPart {{{3.69230771,2.23076916}, {4,2}}} id=3
SkOpAngle::afterPart {{{3.69230771,2.23076916}, {3.14844441,2.04948139}}} id=6
SkOpAngle::after [6/7] 29/29 tStart=0.384615385 tEnd=0 < [3/22] 17/17 tStart=0.0769230769 tEnd=0.525740749 < [3/21] 1/1 tStart=0.0769230769 tEnd=0 F 4
SkOpAngle::afterPart {{{3.69230771,2.23076916}, {6,3}}} id=6
SkOpAngle::afterPart {{{3.69230771,2.23076916}, {1.89703703,3.57722235}}} id=3
SkOpAngle::afterPart {{{3.69230771,2.23076916}, {4,2}}} id=3
SkOpAngle::after [3/21] 1/1 tStart=0.0769230769 tEnd=0 < [3/22] 17/17 tStart=0.0769230769 tEnd=0.525740749 < [6/8] 13/13 tStart=0.384615385 tEnd=0.475259271 F 4
SkOpAngle::afterPart {{{3.69230771,2.23076916}, {4,2}}} id=3
SkOpAngle::afterPart {{{3.69230771,2.23076916}, {1.89703703,3.57722235}}} id=3
SkOpAngle::afterPart {{{3.69230771,2.23076916}, {3.14844441,2.04948139}}} id=6
SkOpAngle::after [6/8] 13/13 tStart=0.384615385 tEnd=0.475259271 < [3/22] 17/17 tStart=0.0769230769 tEnd=0.525740749 < [6/7] 29/29 tStart=0.384615385 tEnd=0 T 4
SkOpAngle::afterPart {{{3.69230771,2.23076916}, {3.14844441,2.04948139}}} id=6
SkOpAngle::afterPart {{{3.69230771,2.23076916}, {1.89703703,3.57722235}}} id=3
SkOpAngle::afterPart {{{3.69230771,2.23076916}, {6,3}}} id=6
SkOpSegment::sortAngles [6] tStart=0.475259271 [14]
SkOpSegment::sortAngles [6] tStart=0.587547935 [19]
SkOpAngle::after [6/11] 29/29 tStart=0.587547935 tEnd=0.475259271 < [2/17] 21/21 tStart=0.47393597 tEnd=0.316674705 < [6/12] 13/13 tStart=0.587547935 tEnd=1 F 4
SkOpAngle::afterPart {{{2.47471237,1.82490408}, {3.14844441,2.04948139}}} id=6
SkOpAngle::afterPart {{{2.47471237,1.82490408}, {2.39149697,1.92130586}, {2.32314471,2.04319774}, {2.26454735,2.18291688}}} id=2
SkOpAngle::afterPart {{{2.47471237,1.82490408}, {0,1}}} id=6
SkOpAngle::after [6/11] 29/29 tStart=0.587547935 tEnd=0.475259271 < [2/18] 5/29 tStart=0.47393597 tEnd=0.964411114 < [6/12] 13/13 tStart=0.587547935 tEnd=1 T 12
SkOpAngle::afterPart {{{2.47471237,1.82490408}, {3.14844441,2.04948139}}} id=6
SkOpAngle::afterPart {{{2.47471237,1.82490408}, {2.73424919,1.52424088}, {3.13836417,1.47152506}, {3.84203434,1.89922202}}} id=2
SkOpAngle::afterPart {{{2.47471237,1.82490408}, {0,1}}} id=6
SkOpSegment::sortAngles [1] tStart=0.881335235 [23]
SkOpAngle::after [1/13] 21/17 tStart=0.881335235 tEnd=0 < [3/23] 1/1 tStart=0.525740749 tEnd=0.0769230769 < [1/14] 5/5 tStart=0.881335235 tEnd=1 T 4
SkOpAngle::afterPart {{{1.89703703,3.57722235}, {1.66111111,4.55222246}, {1.29999996,5.43333336}, {0,5}}} id=1
SkOpAngle::afterPart {{{1.89703703,3.57722235}, {3.69230771,2.23076916}}} id=3
SkOpAngle::afterPart {{{1.89703703,3.57722235}, {1.92880257,3.44594635}, {1.95829867,3.31296819}, {1.98751152,3.18126726}}} id=1
SkOpAngle::after [1/13] 21/17 tStart=0.881335235 tEnd=0 < [3/24] 17/17 tStart=0.525740749 tEnd=1 < [3/23] 1/1 tStart=0.525740749 tEnd=0.0769230769 F 12
SkOpAngle::afterPart {{{1.89703703,3.57722235}, {1.66111111,4.55222246}, {1.29999996,5.43333336}, {0,5}}} id=1
SkOpAngle::afterPart {{{1.89703703,3.57722235}, {0,5}}} id=3
SkOpAngle::afterPart {{{1.89703703,3.57722235}, {3.69230771,2.23076916}}} id=3
SkOpAngle::after [3/23] 1/1 tStart=0.525740749 tEnd=0.0769230769 < [3/24] 17/17 tStart=0.525740749 tEnd=1 < [1/14] 5/5 tStart=0.881335235 tEnd=1 F 4
SkOpAngle::afterPart {{{1.89703703,3.57722235}, {3.69230771,2.23076916}}} id=3
SkOpAngle::afterPart {{{1.89703703,3.57722235}, {0,5}}} id=3
SkOpAngle::afterPart {{{1.89703703,3.57722235}, {1.92880257,3.44594635}, {1.95829867,3.31296819}, {1.98751152,3.18126726}}} id=1
SkOpAngle::after [1/14] 5/5 tStart=0.881335235 tEnd=1 < [3/24] 17/17 tStart=0.525740749 tEnd=1 < [1/13] 21/17 tStart=0.881335235 tEnd=0 T 11
SkOpAngle::afterPart {{{1.89703703,3.57722235}, {1.92880257,3.44594635}, {1.95829867,3.31296819}, {1.98751152,3.18126726}}} id=1
SkOpAngle::afterPart {{{1.89703703,3.57722235}, {0,5}}} id=3
SkOpAngle::afterPart {{{1.89703703,3.57722235}, {1.66111111,4.55222246}, {1.29999996,5.43333336}, {0,5}}} id=1
SkOpSegment::sortAngles [2] tStart=0.316674705 [16]
SkOpSegment::sortAngles [2] tStart=0.47393597 [20]
SkOpSegment::sortAngles [2] tStart=0.964411114 [18]
SkOpSegment::sortAngles [3] tStart=0.0769230769 [22]
SkOpSegment::sortAngles [3] tStart=0.525740749 [24]
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0 (0,1) tEnd=0.667611207 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0 (6,3) tEnd=0.384615385 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0 (0,5) tEnd=0.881335235 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0.881335235 (1.89703703,3.57722235) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0 (1.98751152,3.18126726) tEnd=0.316674705 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0 (4,2) tEnd=0.0769230769 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.0769230769 (3.69230771,2.23076916) tEnd=0.525740749 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.525740749 (1.89703703,3.57722235) tEnd=1 windSum=? windValue=1 oppValue=0
-SkOpSegment::findTop-
SkOpAngle::dumpOne [4/26] next=6/25 sect=25/29 s=0 [7] e=0.667611207 [15] sgn=-1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [6/25] next=4/26 sect=29/29 s=1 [12] e=0.587547935 [19] sgn=1 windVal=1 windSum=? operand
SkOpSegment::findTop id=4 s=0.667611207 e=0 cw=0 swap=1 inflections=0 monotonic=0
SkOpSegment::markWinding id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0 [7] (0,1) tEnd=0.667611207 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0 [7] (0,1) tEnd=0.667611207 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::markWinding id=6 (6,3 0,1) t=0.587547935 [19] (2.47471237,1.82490408) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=4 t=0 tEnd=0.667611207 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::markDone id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0 [7] (0,1) tEnd=0.667611207 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp chase.append id=4 windSum=-2147483647
SkOpSegment::markWinding id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0 [3] (1.98751152,3.18126726) tEnd=0.316674705 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0.881335235 [23] (1.89703703,3.57722235) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=1 span=23 windSum=-1
SkOpSegment::markWinding id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 [15] (2.26454735,2.18291688) tEnd=0.918003405 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=13 windSum=?
SkOpSegment::markWinding id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 [16] (2.26454735,2.18291688) tEnd=0.47393597 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=2 span=20 windSum=?
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0 (6,3) tEnd=0.384615385 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0 (0,5) tEnd=0.881335235 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0.881335235 (1.89703703,3.57722235) tEnd=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0 (1.98751152,3.18126726) tEnd=0.316674705 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0 (4,2) tEnd=0.0769230769 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.0769230769 (3.69230771,2.23076916) tEnd=0.525740749 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.525740749 (1.89703703,3.57722235) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=2 t=0.316674705 tEnd=0 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0 [3] (1.98751152,3.18126726) tEnd=0.316674705 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markDone id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0.881335235 [23] (1.89703703,3.57722235) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
bridgeOp chase.append id=1 windSum=-1
SkOpSegment::markWinding id=3 (4,2 0,5) t=0.525740749 [24] (1.89703703,3.57722235) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0 [1] (0,5) tEnd=0.881335235 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=1 span=23 windSum=-1
SkOpSegment::markWinding id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0 [1] (0,5) tEnd=0.881335235 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
SkOpSegment::markWinding id=3 (4,2 0,5) t=0.0769230769 [22] (3.69230771,2.23076916) tEnd=0.525740749 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=3 span=22 windSum=-1
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0 (6,3) tEnd=0.384615385 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0 (0,5) tEnd=0.881335235 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0 (4,2) tEnd=0.0769230769 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.0769230769 (3.69230771,2.23076916) tEnd=0.525740749 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.525740749 (1.89703703,3.57722235) tEnd=1 windSum=1 windValue=1 oppValue=0
SkOpSegment::activeOp id=3 t=0.525740749 tEnd=1 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=3 (4,2 0,5) t=0.525740749 [24] (1.89703703,3.57722235) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
SkOpSegment::markDone id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0 [1] (0,5) tEnd=0.881335235 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0 (6,3) tEnd=0.384615385 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0 (4,2) tEnd=0.0769230769 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.0769230769 (3.69230771,2.23076916) tEnd=0.525740749 windSum=-1 windValue=1 oppValue=0
SkOpSegment::activeOp id=3 t=0.525740749 tEnd=0.0769230769 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=3 (4,2 0,5) t=0.0769230769 [22] (3.69230771,2.23076916) tEnd=0.525740749 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
bridgeOp chase.append id=3 windSum=-1
SkOpSegment::markWinding id=6 (6,3 0,1) t=0 [11] (6,3) tEnd=0.384615385 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 [17] (3.84203434,1.89922202) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=5 span=17 windSum=-2
SkOpSegment::markWinding id=3 (4,2 0,5) t=0 [5] (4,2) tEnd=0.0769230769 newWindSum=-1 newOppSum=-2 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 [18] (3.84203434,1.89922202) tEnd=1 newWindSum=-1 newOppSum=-2 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=2 span=18 windSum=-1
SkOpSegment::markWinding id=6 (6,3 0,1) t=0.384615385 [21] (3.69230771,2.23076916) tEnd=0.475259271 newWindSum=-2 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=6 span=14 windSum=?
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 (3.84203434,1.89922202) tEnd=1 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0 (6,3) tEnd=0.384615385 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 (3.84203434,1.89922202) tEnd=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0 (4,2) tEnd=0.0769230769 windSum=-1 windValue=1 oppValue=0
SkOpSegment::activeOp id=6 t=0.384615385 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=6 (6,3 0,1) t=0 [11] (6,3) tEnd=0.384615385 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
SkOpSegment::markDone id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 [17] (3.84203434,1.89922202) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
bridgeOp chase.append id=5 windSum=-2
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 (3.84203434,1.89922202) tEnd=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0 (4,2) tEnd=0.0769230769 windSum=-1 windValue=1 oppValue=0
SkOpSegment::activeOp id=2 t=0.964411114 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 [18] (3.84203434,1.89922202) tEnd=1 newWindSum=-1 newOppSum=-2 oppSum=-2 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markDone id=3 (4,2 0,5) t=0 [5] (4,2) tEnd=0.0769230769 newWindSum=-1 newOppSum=-2 oppSum=-2 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markWinding id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 [20] (2.47471237,1.82490408) tEnd=0.964411114 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=2 span=20 windSum=-1
SkOpSegment::markWinding id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 [9] (3.43125343,1.98748374) tEnd=0.126307173 newWindSum=-2 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 [13] (3.14844441,2.04948139) tEnd=1 newWindSum=-2 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=13 windSum=-2
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=-1 windValue=1 oppValue=0
SkOpSegment::activeOp id=2 t=0.964411114 tEnd=0.47393597 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 [20] (2.47471237,1.82490408) tEnd=0.964411114 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
bridgeOp chase.append id=2 windSum=-1
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
SkOpSegment::activeOp id=6 t=0.587547935 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::markDone id=6 (6,3 0,1) t=0.587547935 [19] (2.47471237,1.82490408) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=-2 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
SkOpSegment::activeOp id=2 t=0.47393597 tEnd=0.316674705 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [2/16] next=4/1 sect=5/5 s=0.316674705 [16] e=0.47393597 [20] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [4/1] next=2/15 sect=17/13 s=0.667611207 [15] e=0 [7] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
SkOpAngle::dumpOne [2/15] next=4/2 sect=21/21 s=0.316674705 [16] e=0 [3] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
SkOpAngle::dumpOne [4/2] next=2/16 sect=1/1 s=0.667611207 [15] e=0.918003405 [13] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
SkOpSegment::activeOp id=4 t=0.667611207 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::activeOp id=2 t=0.316674705 tEnd=0 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::activeOp id=4 t=0.667611207 tEnd=0.918003405 op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
SkOpSegment::markDone id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 [16] (2.26454735,2.18291688) tEnd=0.47393597 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[2] to:[4] start=3957516 end=3957324
bridgeOp current id=2 from=(2.47471237,1.82490408) to=(2.26454735,2.18291688)
path.moveTo(2.47471237,1.82490408);
path.cubicTo(2.3914969,1.92130589, 2.32314467,2.04319763, 2.26454735,2.18291688);
SkOpSegment::markWinding id=6 (6,3 0,1) t=0.475259271 [14] (3.14844441,2.04948139) tEnd=0.587547935 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=6 span=19 windSum=-1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [4/3] next=6/9 sect=17/17 s=0.918003405 [13] e=0.667611207 [15] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [6/9] next=4/4 sect=29/29 s=0.475259271 [14] e=0.384615385 [21] sgn=1 windVal=1 windSum=-2 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [4/4] next=6/10 sect=1/1 s=0.918003405 [13] e=1 [8] sgn=-1 windVal=1 windSum=-2 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [6/10] next=4/3 sect=13/13 s=0.475259271 [14] e=0.587547935 [19] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
SkOpSegment::activeOp id=6 t=0.475259271 tEnd=0.384615385 op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=6 (6,3 0,1) t=0.384615385 [21] (3.69230771,2.23076916) tEnd=0.475259271 newWindSum=-2 newOppSum=-1 oppSum=-1 windSum=-2 windValue=1 oppValue=0
SkOpSegment::activeOp id=4 t=0.918003405 tEnd=1 op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 [13] (3.14844441,2.04948139) tEnd=1 newWindSum=-2 newOppSum=-1 oppSum=-1 windSum=-2 windValue=1 oppValue=0
SkOpSegment::markDone id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 [9] (3.43125343,1.98748374) tEnd=0.126307173 newWindSum=-2 newOppSum=-1 oppSum=-1 windSum=-2 windValue=1 oppValue=0
SkOpSegment::activeOp id=6 t=0.475259271 tEnd=0.587547935 op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
SkOpSegment::findNextOp chase.append segment=6 span=19 windSum=-1
SkOpSegment::markDone id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 [15] (2.26454735,2.18291688) tEnd=0.918003405 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[4] to:[6] start=3957420 end=3957900
bridgeOp current id=4 from=(2.26454735,2.18291688) to=(3.14844441,2.04948139)
path.cubicTo(2.56153584,2.16524744, 2.85823059,2.11114478, 3.14844441,2.04948139);
SkOpSegment::findNextOp
SkOpAngle::dumpOne [6/11] next=2/18 sect=29/29 s=0.587547935 [19] e=0.475259271 [14] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [2/18] next=6/12 sect=5/29 s=0.47393597 [20] e=0.964411114 [18] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
SkOpAngle::dumpOne [6/12] next=2/17 sect=13/13 s=0.587547935 [19] e=1 [12] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
SkOpAngle::dumpOne [2/17] next=6/11 sect=21/21 s=0.47393597 [20] e=0.316674705 [16] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
SkOpSegment::activeOp id=2 t=0.47393597 tEnd=0.964411114 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
SkOpSegment::activeOp id=6 t=0.587547935 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::activeOp id=2 t=0.47393597 tEnd=0.316674705 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
SkOpSegment::markDone id=6 (6,3 0,1) t=0.475259271 [14] (3.14844441,2.04948139) tEnd=0.587547935 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[6] to:[2] start=3957996 end=3957612
bridgeOp current id=6 from=(3.14844441,2.04948139) to=(2.47471237,1.82490408)
path.lineTo(2.47471237,1.82490408);
path.close();
</div>
<div id="cubicOp136a">
seg=1 {{{5, 6}, {5, 0}, {3, 1}}}
seg=2 {{{3, 1}, {5, 6}}}
op diff
seg=3 {{{0, 5}, {1, 3}, {6, 5}, {6, 5}}}
seg=4 {{{6, 5}, {0, 5}}}
debugShowQuadLineIntersection wtTs[0]=0 {{{5,6}, {5,0}, {3,1}}} {{5,6}} wtTs[1]=1 {{3,1}} wnTs[0]=1 {{{3,1}, {5,6}}} wnTs[1]=0
debugShowCubicQuadIntersection wtTs[0]=0.711945896 {{{0,5}, {1,3}, {6,5}, {6,5}}} {{4.97048473,4.64555693}} wnTs[0]=0.121478 {{{5,6}, {5,0}, {3,1}}}
SkOpSegment::addT insert t=0.121478342 segID=1 spanID=9
SkOpSegment::addT insert t=0.711945896 segID=3 spanID=10
debugShowQuadLineIntersection wtTs[0]=0.087833599 {{{5,6}, {5,0}, {3,1}}} {{4.9845705,5}} wnTs[0]=0.169238 {{{6,5}, {0,5}}}
SkOpSegment::addT insert t=0.087833599 segID=1 spanID=11
SkOpSegment::addT insert t=0.169238247 segID=4 spanID=12
debugShowCubicLineIntersection wtTs[0]=0.6285848 {{{0,5}, {1,3}, {6,5}, {6,5}}} {{4.3918891,4.47972298}} wnTs[0]=0.695945 {{{3,1}, {5,6}}}
SkOpSegment::addT insert t=0.695944637 segID=2 spanID=13
SkOpSegment::addT insert t=0.6285848 segID=3 spanID=14
debugShowLineIntersection wtTs[0]=0.8 {{{3,1}, {5,6}}} {{4.5999999,5}} wnTs[0]=0.233333 {{{6,5}, {0,5}}}
SkOpSegment::addT insert t=0.8 segID=2 spanID=15
SkOpSegment::addT insert t=0.233333333 segID=4 spanID=16
debugShowCubicLineIntersection wtTs[0]=0 {{{0,5}, {1,3}, {6,5}, {6,5}}} {{0,5}} wtTs[1]=1 {{6,5}} wnTs[0]=1 {{{6,5}, {0,5}}} wnTs[1]=0
SkOpSegment::sortAngles [1] tStart=0.087833599 [11]
SkOpAngle::after [1/1] 25/25 tStart=0.087833599 tEnd=0 < [4/13] 31/31 tStart=0.169238247 tEnd=0 < [1/2] 9/9 tStart=0.087833599 tEnd=0.121478342 T 4
SkOpAngle::afterPart {{{4.9845705,5}, {5,5.47299885}, {5,6}}} id=1
SkOpAngle::afterPart {{{4.9845705,5}, {6,5}}} id=4
SkOpAngle::afterPart {{{4.9845705,5}, {4.97865988,4.81880703}, {4.97048616,4.64555883}}} id=1
SkOpAngle::after [1/1] 25/25 tStart=0.087833599 tEnd=0 < [4/14] 15/15 tStart=0.169238247 tEnd=0.233333333 < [4/13] 31/31 tStart=0.169238247 tEnd=0 F 4
SkOpAngle::afterPart {{{4.9845705,5}, {5,5.47299885}, {5,6}}} id=1
SkOpAngle::afterPart {{{4.9845705,5}, {4.5999999,5}}} id=4
SkOpAngle::afterPart {{{4.9845705,5}, {6,5}}} id=4
SkOpAngle::after [4/13] 31/31 tStart=0.169238247 tEnd=0 < [4/14] 15/15 tStart=0.169238247 tEnd=0.233333333 < [1/2] 9/9 tStart=0.087833599 tEnd=0.121478342 F 4
SkOpAngle::afterPart {{{4.9845705,5}, {6,5}}} id=4
SkOpAngle::afterPart {{{4.9845705,5}, {4.5999999,5}}} id=4
SkOpAngle::afterPart {{{4.9845705,5}, {4.97865988,4.81880703}, {4.97048616,4.64555883}}} id=1
SkOpAngle::after [1/2] 9/9 tStart=0.087833599 tEnd=0.121478342 < [4/14] 15/15 tStart=0.169238247 tEnd=0.233333333 < [1/1] 25/25 tStart=0.087833599 tEnd=0 T 4
SkOpAngle::afterPart {{{4.9845705,5}, {4.97865988,4.81880703}, {4.97048616,4.64555883}}} id=1
SkOpAngle::afterPart {{{4.9845705,5}, {4.5999999,5}}} id=4
SkOpAngle::afterPart {{{4.9845705,5}, {5,5.47299885}, {5,6}}} id=1
SkOpSegment::sortAngles [1] tStart=0.121478342 [9]
SkOpAngle::after [1/3] 25/25 tStart=0.121478342 tEnd=0.087833599 < [3/11] 13/13 tStart=0.711945896 tEnd=0.6285848 < [1/4] 9/9 tStart=0.121478342 tEnd=1 F 4
SkOpAngle::afterPart {{{4.97048616,4.64555883}, {4.97865988,4.81880703}, {4.9845705,5}}} id=1
SkOpAngle::afterPart {{{4.97048616,4.64555883}, {4.79261321,4.59101022}, {4.59800847,4.53457168}, {4.3918891,4.47972298}}} id=3
SkOpAngle::afterPart {{{4.97048616,4.64555883}, {4.75704345,0.121478274}, {3,1}}} id=1
SkOpAngle::after [1/3] 25/25 tStart=0.121478342 tEnd=0.087833599 < [3/12] 29/29 tStart=0.711945896 tEnd=1 < [1/4] 9/9 tStart=0.121478342 tEnd=1 T 4
SkOpAngle::afterPart {{{4.97048616,4.64555883}, {4.97865988,4.81880703}, {4.9845705,5}}} id=1
SkOpAngle::afterPart {{{4.97048616,4.64555883}, {5.5851258,4.83405148}, {6,5}, {6,5}}} id=3
SkOpAngle::afterPart {{{4.97048616,4.64555883}, {4.75704345,0.121478274}, {3,1}}} id=1
SkOpSegment::sortAngles [2] tStart=0.695944637 [13]
SkOpAngle::after [2/5] 9/9 tStart=0.695944637 tEnd=0 < [3/9] 13/17 tStart=0.6285848 tEnd=0 < [2/6] 25/25 tStart=0.695944637 tEnd=0.8 T 4
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {3,1}}} id=2
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {2.83764482,4.06613599}, {0.6285848,3.7428304}, {0,5}}} id=3
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5999999,5}}} id=2
SkOpAngle::after [2/5] 9/9 tStart=0.695944637 tEnd=0 < [3/10] 29/29 tStart=0.6285848 tEnd=0.711945896 < [3/9] 13/17 tStart=0.6285848 tEnd=0 F 4
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {3,1}}} id=2
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.59800847,4.53457168}, {4.79261321,4.59101022}, {4.97048616,4.64555883}}} id=3
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {2.83764482,4.06613599}, {0.6285848,3.7428304}, {0,5}}} id=3
SkOpAngle::after [3/9] 13/17 tStart=0.6285848 tEnd=0 < [3/10] 29/29 tStart=0.6285848 tEnd=0.711945896 < [2/6] 25/25 tStart=0.695944637 tEnd=0.8 F 4
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {2.83764482,4.06613599}, {0.6285848,3.7428304}, {0,5}}} id=3
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.59800847,4.53457168}, {4.79261321,4.59101022}, {4.97048616,4.64555883}}} id=3
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5999999,5}}} id=2
SkOpAngle::after [2/6] 25/25 tStart=0.695944637 tEnd=0.8 < [3/10] 29/29 tStart=0.6285848 tEnd=0.711945896 < [2/5] 9/9 tStart=0.695944637 tEnd=0 T 4
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5999999,5}}} id=2
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.59800847,4.53457168}, {4.79261321,4.59101022}, {4.97048616,4.64555883}}} id=3
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {3,1}}} id=2
SkOpSegment::sortAngles [2] tStart=0.8 [15]
SkOpAngle::after [2/7] 9/9 tStart=0.8 tEnd=0.695944637 < [4/15] 31/31 tStart=0.233333333 tEnd=0.169238247 < [2/8] 25/25 tStart=0.8 tEnd=1 F 4
SkOpAngle::afterPart {{{4.5999999,5}, {4.3918891,4.47972298}}} id=2
SkOpAngle::afterPart {{{4.5999999,5}, {4.9845705,5}}} id=4
SkOpAngle::afterPart {{{4.5999999,5}, {5,6}}} id=2
SkOpAngle::after [2/7] 9/9 tStart=0.8 tEnd=0.695944637 < [4/16] 15/15 tStart=0.233333333 tEnd=1 < [2/8] 25/25 tStart=0.8 tEnd=1 T 4
SkOpAngle::afterPart {{{4.5999999,5}, {4.3918891,4.47972298}}} id=2
SkOpAngle::afterPart {{{4.5999999,5}, {0,5}}} id=4
SkOpAngle::afterPart {{{4.5999999,5}, {5,6}}} id=2
SkOpSegment::sortAngles [3] tStart=0.6285848 [14]
SkOpSegment::sortAngles [3] tStart=0.711945896 [10]
SkOpSegment::sortAngles [4] tStart=0.169238247 [12]
SkOpSegment::sortAngles [4] tStart=0.233333333 [16]
SkOpSegment::debugShowActiveSpans id=1 (5,6 5,0 3,1) t=0 (5,6) tEnd=0.087833599 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (5,6 5,0 3,1) t=0.087833599 (4.9845705,5) tEnd=0.121478342 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (5,6 5,0 3,1) t=0.121478342 (4.97048616,4.64555883) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0 (3,1) tEnd=0.695944637 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0.695944637 (4.3918891,4.47972298) tEnd=0.8 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0.8 (4.5999999,5) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 6,5 6,5) t=0 (0,5) tEnd=0.6285848 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 6,5 6,5) t=0.6285848 (4.3918891,4.47972298) tEnd=0.711945896 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 6,5 6,5) t=0.711945896 (4.97048616,4.64555883) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0 (6,5) tEnd=0.169238247 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0.169238247 (4.9845705,5) tEnd=0.233333333 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0.233333333 (4.5999999,5) tEnd=1 windSum=? windValue=1 oppValue=0
-SkOpSegment::findTop-
SkOpAngle::dumpOne [1/17] next=2/18 sect=1/25 s=1 [2] e=0.121478342 [9] sgn=1 windVal=1 windSum=?
SkOpAngle::dumpOne [2/18] next=1/17 sect=25/25 s=0 [3] e=0.695944637 [13] sgn=-1 windVal=1 windSum=?
SkOpSegment::findTop id=1 s=0.121478342 e=1 cw=0 swap=1 inflections=0 monotonic=0
SkOpSegment::markWinding id=1 (5,6 5,0 3,1) t=0.121478342 [9] (4.97048616,4.64555883) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=1 (5,6 5,0 3,1) t=0.121478342 [9] (4.97048616,4.64555883) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::markWinding id=2 (3,1 5,6) t=0 [3] (3,1) tEnd=0.695944637 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=1 t=1 tEnd=0.121478342 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
SkOpSegment::markWinding id=3 (0,5 1,3 6,5 6,5) t=0.6285848 [14] (4.3918891,4.47972298) tEnd=0.711945896 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=3 span=14 windSum=-1
SkOpSegment::markWinding id=1 (5,6 5,0 3,1) t=0.087833599 [11] (4.9845705,5) tEnd=0.121478342 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=1 span=11 windSum=1
SkOpSegment::markWinding id=3 (0,5 1,3 6,5 6,5) t=0.711945896 [10] (4.97048616,4.64555883) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=4 (6,5 0,5) t=0 [7] (6,5) tEnd=0.169238247 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=12 windSum=?
SkOpSegment::findNextOp
SkOpAngle::dumpOne [1/4] next=3/11 sect=9/9 s=0.121478342 [9] e=1 [2] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [3/11] next=1/3 sect=13/13 s=0.711945896 [10] e=0.6285848 [14] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
SkOpAngle::dumpOne [1/3] next=3/12 sect=25/25 s=0.121478342 [9] e=0.087833599 [11] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1
SkOpAngle::dumpOne [3/12] next=1/4 sect=29/29 s=0.711945896 [10] e=1 [6] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
SkOpSegment::activeOp id=3 t=0.711945896 tEnd=0.6285848 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::findNextOp chase.append segment=3 span=14 windSum=-1
SkOpSegment::activeOp id=1 t=0.121478342 tEnd=0.087833599 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=1 (5,6 5,0 3,1) t=0.087833599 [11] (4.9845705,5) tEnd=0.121478342 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=1 span=11 windSum=1
SkOpSegment::activeOp id=3 t=0.711945896 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::markDone id=3 (0,5 1,3 6,5 6,5) t=0.711945896 [10] (4.97048616,4.64555883) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markDone id=4 (6,5 0,5) t=0 [7] (6,5) tEnd=0.169238247 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=4 span=12 windSum=-2147483647
SkOpSegment::markDone id=1 (5,6 5,0 3,1) t=0.121478342 [9] (4.97048616,4.64555883) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[1] to:[3] start=3891316 end=3891700
bridgeOp current id=1 from=(3,1) to=(4.97048616,4.64555883)
path.moveTo(3,1);
path.quadTo(4.75704336,0.121478274, 4.97048616,4.64555883);
SkOpSegment::markWinding id=3 (0,5 1,3 6,5 6,5) t=0 [5] (0,5) tEnd=0.6285848 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=4 (6,5 0,5) t=0.233333333 [16] (4.5999999,5) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=16 windSum=-1
SkOpSegment::markWinding id=2 (3,1 5,6) t=0.695944637 [13] (4.3918891,4.47972298) tEnd=0.8 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=2 span=15 windSum=?
SkOpSegment::findNextOp
SkOpAngle::dumpOne [3/10] next=2/5 sect=29/29 s=0.6285848 [14] e=0.711945896 [10] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
SkOpAngle::dumpOne [2/5] next=3/9 sect=9/9 s=0.695944637 [13] e=0 [3] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [3/9] next=2/6 sect=13/17 s=0.6285848 [14] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
SkOpAngle::dumpOne [2/6] next=3/10 sect=25/25 s=0.695944637 [13] e=0.8 [15] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1
SkOpSegment::activeOp id=2 t=0.695944637 tEnd=0 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
SkOpSegment::activeOp id=3 t=0.6285848 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::markDone id=3 (0,5 1,3 6,5 6,5) t=0 [5] (0,5) tEnd=0.6285848 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::markDone id=4 (6,5 0,5) t=0.233333333 [16] (4.5999999,5) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=4 span=16 windSum=-1
SkOpSegment::activeOp id=2 t=0.695944637 tEnd=0.8 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=2 (3,1 5,6) t=0.695944637 [13] (4.3918891,4.47972298) tEnd=0.8 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=2 span=15 windSum=-2147483647
SkOpSegment::markDone id=3 (0,5 1,3 6,5 6,5) t=0.6285848 [14] (4.3918891,4.47972298) tEnd=0.711945896 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[3] to:[2] start=3891604 end=3890508
bridgeOp current id=3 from=(4.97048616,4.64555883) to=(4.3918891,4.47972298)
path.cubicTo(4.79261303,4.59101009, 4.59800863,4.53457165, 4.3918891,4.47972298);
SkOpSegment::nextChase mismatched signs
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=2 (3,1 5,6) t=0 [3] (3,1) tEnd=0.695944637 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
bridgeOp current id=2 from=(4.3918891,4.47972298) to=(3,1)
path.lineTo(3,1);
path.close();
SkOpSegment::markWinding id=2 (3,1 5,6) t=0.8 [15] (4.5999999,5) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=1 (5,6 5,0 3,1) t=0 [1] (5,6) tEnd=0.087833599 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=1 span=11 windSum=1
SkOpSegment::markWinding id=4 (6,5 0,5) t=0.169238247 [12] (4.9845705,5) tEnd=0.233333333 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=12 windSum=-1
SkOpSegment::debugShowActiveSpans id=1 (5,6 5,0 3,1) t=0 (5,6) tEnd=0.087833599 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0.8 (4.5999999,5) tEnd=1 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0.169238247 (4.9845705,5) tEnd=0.233333333 windSum=-1 windValue=1 oppValue=0
SkOpSegment::activeOp id=2 t=0.8 tEnd=1 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=2 (3,1 5,6) t=0.8 [15] (4.5999999,5) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
bridgeOp current id=2 from=(4.5999999,5) to=(5,6)
SkOpSegment::findNextOp
SkOpAngle::dumpOne [1/1] next=4/13 sect=25/25 s=0.087833599 [11] e=0 [1] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [4/13] next=1/2 sect=31/31 s=0.169238247 [12] e=0 [7] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
SkOpAngle::dumpOne [1/2] next=4/14 sect=9/9 s=0.087833599 [11] e=0.121478342 [9] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 done
SkOpAngle::dumpOne [4/14] next=1/1 sect=15/15 s=0.169238247 [12] e=0.233333333 [16] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
SkOpSegment::activeOp id=4 t=0.169238247 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::activeOp id=1 t=0.087833599 tEnd=0.121478342 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::activeOp id=4 t=0.169238247 tEnd=0.233333333 op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
SkOpSegment::markDone id=1 (5,6 5,0 3,1) t=0 [1] (5,6) tEnd=0.087833599 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[1] to:[4] start=3891508 end=3891892
bridgeOp current id=1 from=(5,6) to=(4.9845705,5)
path.moveTo(4.5999999,5);
path.lineTo(5,6);
path.quadTo(5,5.47299862, 4.9845705,5);
SkOpSegment::findNextOp
SkOpAngle::dumpOne [4/15] next=2/7 sect=31/31 s=0.233333333 [16] e=0.169238247 [12] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
SkOpAngle::dumpOne [2/7] next=4/16 sect=9/9 s=0.8 [15] e=0.695944637 [13] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1 done
SkOpAngle::dumpOne [4/16] next=2/8 sect=15/15 s=0.233333333 [16] e=1 [8] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
SkOpAngle::dumpOne [2/8] next=4/15 sect=25/25 s=0.8 [15] e=1 [4] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
SkOpSegment::activeOp id=2 t=0.8 tEnd=0.695944637 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
SkOpSegment::activeOp id=4 t=0.233333333 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::activeOp id=2 t=0.8 tEnd=1 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
SkOpSegment::markDone id=4 (6,5 0,5) t=0.169238247 [12] (4.9845705,5) tEnd=0.233333333 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[4] to:[2] start=3891796 end=3890604
bridgeOp current id=4 from=(4.9845705,5) to=(4.5999999,5)
path.lineTo(4.5999999,5);
path.close();
</div>
<div id="cubicOp136">
seg=1 {{{5, 6}, {5, 6}, {5, 0}, {3, 1}}}
seg=2 {{{3, 1}, {5, 6}}}
op diff
seg=3 {{{0, 5}, {1, 3}, {6, 5}, {6, 5}}}
seg=4 {{{6, 5}, {0, 5}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{5,6}, {5,6}, {5,0}, {3,1}}} {{5,6}} wtTs[1]=1 {{3,1}} wnTs[0]=1 {{{3,1}, {5,6}}} wnTs[1]=0
debugShowCubicIntersection wtTs[0]=0.312911718 {{{5,6}, {5,6}, {5,0}, {3,1}}} {{4.93872309,4.63585138}} wnTs[0]=0.707011 {{{0,5}, {1,3}, {6,5}, {6,5}}}
SkOpSegment::addT insert t=0.312911718 segID=1 spanID=9
SkOpSegment::addT insert t=0.707011363 segID=3 spanID=10
debugShowCubicLineIntersection wtTs[0]=0.261734846 {{{5,6}, {5,6}, {5,0}, {3,1}}} {{4.96413946,5}} wnTs[0]=0.172643 {{{6,5}, {0,5}}}
SkOpSegment::addT insert t=0.261734846 segID=1 spanID=11
SkOpSegment::addT insert t=0.172643393 segID=4 spanID=12
debugShowCubicLineIntersection wtTs[0]=0.6285848 {{{0,5}, {1,3}, {6,5}, {6,5}}} {{4.3918891,4.47972298}} wnTs[0]=0.695945 {{{3,1}, {5,6}}}
SkOpSegment::addT insert t=0.695944637 segID=2 spanID=13
SkOpSegment::addT insert t=0.6285848 segID=3 spanID=14
debugShowLineIntersection wtTs[0]=0.8 {{{3,1}, {5,6}}} {{4.5999999,5}} wnTs[0]=0.233333 {{{6,5}, {0,5}}}
SkOpSegment::addT insert t=0.8 segID=2 spanID=15
SkOpSegment::addT insert t=0.233333333 segID=4 spanID=16
debugShowCubicLineIntersection wtTs[0]=0 {{{0,5}, {1,3}, {6,5}, {6,5}}} {{0,5}} wtTs[1]=1 {{6,5}} wnTs[0]=1 {{{6,5}, {0,5}}} wnTs[1]=0
SkOpSegment::sortAngles [1] tStart=0.261734846 [11]
SkOpAngle::after [1/1] 25/25 tStart=0.261734846 tEnd=0 < [4/13] 31/31 tStart=0.172643393 tEnd=0 < [1/2] 9/9 tStart=0.261734846 tEnd=0.312911718 T 4
SkOpAngle::afterPart {{{4.96413946,5}, {4.99999982,5.58896922}, {5,6}, {5,6}}} id=1
SkOpAngle::afterPart {{{4.96413946,5}, {6,5}}} id=4
SkOpAngle::afterPart {{{4.96413946,5}, {4.95712771,4.88483917}, {4.94874493,4.76287555}, {4.93872309,4.63585138}}} id=1
SkOpAngle::after [1/1] 25/25 tStart=0.261734846 tEnd=0 < [4/14] 15/15 tStart=0.172643393 tEnd=0.233333333 < [4/13] 31/31 tStart=0.172643393 tEnd=0 F 4
SkOpAngle::afterPart {{{4.96413946,5}, {4.99999982,5.58896922}, {5,6}, {5,6}}} id=1
SkOpAngle::afterPart {{{4.96413946,5}, {4.5999999,5}}} id=4
SkOpAngle::afterPart {{{4.96413946,5}, {6,5}}} id=4
SkOpAngle::after [4/13] 31/31 tStart=0.172643393 tEnd=0 < [4/14] 15/15 tStart=0.172643393 tEnd=0.233333333 < [1/2] 9/9 tStart=0.261734846 tEnd=0.312911718 F 4
SkOpAngle::afterPart {{{4.96413946,5}, {6,5}}} id=4
SkOpAngle::afterPart {{{4.96413946,5}, {4.5999999,5}}} id=4
SkOpAngle::afterPart {{{4.96413946,5}, {4.95712771,4.88483917}, {4.94874493,4.76287555}, {4.93872309,4.63585138}}} id=1
SkOpAngle::after [1/2] 9/9 tStart=0.261734846 tEnd=0.312911718 < [4/14] 15/15 tStart=0.172643393 tEnd=0.233333333 < [1/1] 25/25 tStart=0.261734846 tEnd=0 T 4
SkOpAngle::afterPart {{{4.96413946,5}, {4.95712771,4.88483917}, {4.94874493,4.76287555}, {4.93872309,4.63585138}}} id=1
SkOpAngle::afterPart {{{4.96413946,5}, {4.5999999,5}}} id=4
SkOpAngle::afterPart {{{4.96413946,5}, {4.99999982,5.58896922}, {5,6}, {5,6}}} id=1
SkOpSegment::sortAngles [1] tStart=0.312911718 [9]
SkOpAngle::after [1/3] 25/25 tStart=0.312911718 tEnd=0.261734846 < [3/11] 13/13 tStart=0.707011363 tEnd=0.6285848 < [1/4] 9/9 tStart=0.312911718 tEnd=1 F 4
SkOpAngle::afterPart {{{4.93872309,4.63585138}, {4.94874493,4.76287555}, {4.95712771,4.88483917}, {4.96413946,5}}} id=1
SkOpAngle::afterPart {{{4.93872309,4.63585138}, {4.76953305,4.58433293}, {4.5858073,4.53132493}, {4.3918891,4.47972298}}} id=3
SkOpAngle::afterPart {{{4.93872309,4.63585138}, {4.80417232,2.9304557}, {4.37417656,0.312911718}, {3,1}}} id=1
SkOpAngle::after [1/3] 25/25 tStart=0.312911718 tEnd=0.261734846 < [3/12] 29/29 tStart=0.707011363 tEnd=1 < [1/4] 9/9 tStart=0.312911718 tEnd=1 T 4
SkOpAngle::afterPart {{{4.93872309,4.63585138}, {4.94874493,4.76287555}, {4.95712771,4.88483917}, {4.96413946,5}}} id=1
SkOpAngle::afterPart {{{4.93872309,4.63585138}, {5.57078903,4.82831577}, {6,5}, {6,5}}} id=3
SkOpAngle::afterPart {{{4.93872309,4.63585138}, {4.80417232,2.9304557}, {4.37417656,0.312911718}, {3,1}}} id=1
SkOpSegment::sortAngles [2] tStart=0.695944637 [13]
SkOpAngle::after [2/5] 9/9 tStart=0.695944637 tEnd=0 < [3/9] 13/17 tStart=0.6285848 tEnd=0 < [2/6] 25/25 tStart=0.695944637 tEnd=0.8 T 4
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {3,1}}} id=2
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {2.83764482,4.06613599}, {0.6285848,3.7428304}, {0,5}}} id=3
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5999999,5}}} id=2
SkOpAngle::after [2/5] 9/9 tStart=0.695944637 tEnd=0 < [3/10] 29/29 tStart=0.6285848 tEnd=0.707011363 < [3/9] 13/17 tStart=0.6285848 tEnd=0 F 4
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {3,1}}} id=2
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5858073,4.53132493}, {4.76953305,4.58433293}, {4.93872309,4.63585138}}} id=3
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {2.83764482,4.06613599}, {0.6285848,3.7428304}, {0,5}}} id=3
SkOpAngle::after [3/9] 13/17 tStart=0.6285848 tEnd=0 < [3/10] 29/29 tStart=0.6285848 tEnd=0.707011363 < [2/6] 25/25 tStart=0.695944637 tEnd=0.8 F 4
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {2.83764482,4.06613599}, {0.6285848,3.7428304}, {0,5}}} id=3
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5858073,4.53132493}, {4.76953305,4.58433293}, {4.93872309,4.63585138}}} id=3
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5999999,5}}} id=2
SkOpAngle::after [2/6] 25/25 tStart=0.695944637 tEnd=0.8 < [3/10] 29/29 tStart=0.6285848 tEnd=0.707011363 < [2/5] 9/9 tStart=0.695944637 tEnd=0 T 4
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5999999,5}}} id=2
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5858073,4.53132493}, {4.76953305,4.58433293}, {4.93872309,4.63585138}}} id=3
SkOpAngle::afterPart {{{4.3918891,4.47972298}, {3,1}}} id=2
SkOpSegment::sortAngles [2] tStart=0.8 [15]
SkOpAngle::after [2/7] 9/9 tStart=0.8 tEnd=0.695944637 < [4/15] 31/31 tStart=0.233333333 tEnd=0.172643393 < [2/8] 25/25 tStart=0.8 tEnd=1 F 4
SkOpAngle::afterPart {{{4.5999999,5}, {4.3918891,4.47972298}}} id=2
SkOpAngle::afterPart {{{4.5999999,5}, {4.96413946,5}}} id=4
SkOpAngle::afterPart {{{4.5999999,5}, {5,6}}} id=2
SkOpAngle::after [2/7] 9/9 tStart=0.8 tEnd=0.695944637 < [4/16] 15/15 tStart=0.233333333 tEnd=1 < [2/8] 25/25 tStart=0.8 tEnd=1 T 4
SkOpAngle::afterPart {{{4.5999999,5}, {4.3918891,4.47972298}}} id=2
SkOpAngle::afterPart {{{4.5999999,5}, {0,5}}} id=4
SkOpAngle::afterPart {{{4.5999999,5}, {5,6}}} id=2
SkOpSegment::sortAngles [3] tStart=0.6285848 [14]
SkOpSegment::sortAngles [3] tStart=0.707011363 [10]
SkOpSegment::sortAngles [4] tStart=0.172643393 [12]
SkOpSegment::sortAngles [4] tStart=0.233333333 [16]
SkOpSegment::debugShowActiveSpans id=1 (5,6 5,6 5,0 3,1) t=0 (5,6) tEnd=0.261734846 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (5,6 5,6 5,0 3,1) t=0.261734846 (4.96413946,5) tEnd=0.312911718 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (5,6 5,6 5,0 3,1) t=0.312911718 (4.93872309,4.63585138) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0 (3,1) tEnd=0.695944637 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0.695944637 (4.3918891,4.47972298) tEnd=0.8 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0.8 (4.5999999,5) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 6,5 6,5) t=0 (0,5) tEnd=0.6285848 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 6,5 6,5) t=0.6285848 (4.3918891,4.47972298) tEnd=0.707011363 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 6,5 6,5) t=0.707011363 (4.93872309,4.63585138) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0 (6,5) tEnd=0.172643393 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0.172643393 (4.96413946,5) tEnd=0.233333333 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0.233333333 (4.5999999,5) tEnd=1 windSum=? windValue=1 oppValue=0
-SkOpSegment::findTop-
SkOpAngle::dumpOne [1/17] next=2/18 sect=1/25 s=1 [2] e=0.312911718 [9] sgn=1 windVal=1 windSum=?
SkOpAngle::dumpOne [2/18] next=1/17 sect=25/25 s=0 [3] e=0.695944637 [13] sgn=-1 windVal=1 windSum=?
SkOpSegment::findTop id=1 s=0.312911718 e=1 cw=0 swap=0 inflections=0 monotonic=0
SkOpSegment::markWinding id=1 (5,6 5,6 5,0 3,1) t=0.312911718 [9] (4.93872309,4.63585138) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::markWinding id=2 (3,1 5,6) t=0 [3] (3,1) tEnd=0.695944637 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=1 (5,6 5,6 5,0 3,1) t=0.312911718 [9] (4.93872309,4.63585138) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::activeOp id=1 t=0.312911718 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
SkOpSegment::nextChase mismatched signs
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=1 (5,6 5,6 5,0 3,1) t=0.312911718 [9] (4.93872309,4.63585138) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=1 from=(4.93872309,4.63585138) to=(3,1)
path.moveTo(4.93872309,4.63585138);
path.cubicTo(4.80417252,2.93045568, 4.3741765,0.312911719, 3,1);
SkOpSegment::markWinding id=3 (0,5 1,3 6,5 6,5) t=0 [5] (0,5) tEnd=0.6285848 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=4 (6,5 0,5) t=0.233333333 [16] (4.5999999,5) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=16 windSum=-1
SkOpSegment::markWinding id=2 (3,1 5,6) t=0.695944637 [13] (4.3918891,4.47972298) tEnd=0.8 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=2 span=15 windSum=?
SkOpSegment::markWinding id=3 (0,5 1,3 6,5 6,5) t=0.6285848 [14] (4.3918891,4.47972298) tEnd=0.707011363 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=3 span=10 windSum=?
SkOpSegment::findNextOp
SkOpAngle::dumpOne [2/5] next=3/9 sect=9/9 s=0.695944637 [13] e=0 [3] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [3/9] next=2/6 sect=13/17 s=0.6285848 [14] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [2/6] next=3/10 sect=25/25 s=0.695944637 [13] e=0.8 [15] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
SkOpAngle::dumpOne [3/10] next=2/5 sect=29/29 s=0.6285848 [14] e=0.707011363 [10] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
SkOpSegment::activeOp id=3 t=0.6285848 tEnd=0 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::findNextOp chase.append segment=4 span=16 windSum=-1
SkOpSegment::activeOp id=2 t=0.695944637 tEnd=0.8 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=2 (3,1 5,6) t=0.695944637 [13] (4.3918891,4.47972298) tEnd=0.8 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=2 span=15 windSum=-2147483647
SkOpSegment::activeOp id=3 t=0.6285848 tEnd=0.707011363 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::markDone id=3 (0,5 1,3 6,5 6,5) t=0.6285848 [14] (4.3918891,4.47972298) tEnd=0.707011363 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=3 span=10 windSum=-2147483647
SkOpSegment::markDone id=2 (3,1 5,6) t=0 [3] (3,1) tEnd=0.695944637 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[2] to:[3] start=6251004 end=6250036
bridgeOp current id=2 from=(3,1) to=(4.3918891,4.47972298)
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=3 (0,5 1,3 6,5 6,5) t=0 [5] (0,5) tEnd=0.6285848 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=3 from=(4.3918891,4.47972298) to=(0,5)
path.lineTo(4.3918891,4.47972298);
path.cubicTo(2.83764482,4.06613588, 0.628584802,3.74283051, 0,5);
SkOpSegment::markWinding id=2 (3,1 5,6) t=0.8 [15] (4.5999999,5) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=1 (5,6 5,6 5,0 3,1) t=0 [1] (5,6) tEnd=0.261734846 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=1 span=11 windSum=?
SkOpSegment::markWinding id=4 (6,5 0,5) t=0.172643393 [12] (4.96413946,5) tEnd=0.233333333 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=12 windSum=-1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [4/16] next=2/8 sect=15/15 s=0.233333333 [16] e=1 [8] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [2/8] next=4/15 sect=25/25 s=0.8 [15] e=1 [4] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [4/15] next=2/7 sect=31/31 s=0.233333333 [16] e=0.172643393 [12] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
SkOpAngle::dumpOne [2/7] next=4/16 sect=9/9 s=0.8 [15] e=0.695944637 [13] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
SkOpSegment::activeOp id=2 t=0.8 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
SkOpSegment::findNextOp chase.append segment=1 span=11 windSum=-2147483647
SkOpSegment::activeOp id=4 t=0.233333333 tEnd=0.172643393 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::markDone id=4 (6,5 0,5) t=0.172643393 [12] (4.96413946,5) tEnd=0.233333333 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=4 span=12 windSum=-1
SkOpSegment::activeOp id=2 t=0.8 tEnd=0.695944637 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=4 (6,5 0,5) t=0.233333333 [16] (4.5999999,5) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[4] to:[2] start=6251100 end=6249908
bridgeOp current id=4 from=(0,5) to=(4.5999999,5)
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=2 (3,1 5,6) t=0.8 [15] (4.5999999,5) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=2 from=(4.5999999,5) to=(5,6)
path.lineTo(4.5999999,5);
SkOpSegment::markWinding id=4 (6,5 0,5) t=0 [7] (6,5) tEnd=0.172643393 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=3 (0,5 1,3 6,5 6,5) t=0.707011363 [10] (4.93872309,4.63585138) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=3 span=10 windSum=-1
SkOpSegment::markWinding id=1 (5,6 5,6 5,0 3,1) t=0.261734846 [11] (4.96413946,5) tEnd=0.312911718 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=1 span=9 windSum=-1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [1/1] next=4/13 sect=25/25 s=0.261734846 [11] e=0 [1] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [4/13] next=1/2 sect=31/31 s=0.172643393 [12] e=0 [7] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [1/2] next=4/14 sect=9/9 s=0.261734846 [11] e=0.312911718 [9] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
SkOpAngle::dumpOne [4/14] next=1/1 sect=15/15 s=0.172643393 [12] e=0.233333333 [16] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
SkOpSegment::activeOp id=4 t=0.172643393 tEnd=0 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::activeOp id=1 t=0.261734846 tEnd=0.312911718 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=1 (5,6 5,6 5,0 3,1) t=0.261734846 [11] (4.96413946,5) tEnd=0.312911718 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=1 span=9 windSum=-1
SkOpSegment::activeOp id=4 t=0.172643393 tEnd=0.233333333 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::markDone id=1 (5,6 5,6 5,0 3,1) t=0 [1] (5,6) tEnd=0.261734846 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[1] to:[4] start=6250812 end=6250308
bridgeOp current id=1 from=(5,6) to=(4.96413946,5)
path.lineTo(5,6);
path.cubicTo(5,6, 5,5.58896923, 4.96413946,5);
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=4 (6,5 0,5) t=0 [7] (6,5) tEnd=0.172643393 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=4 from=(4.96413946,5) to=(6,5)
SkOpSegment::findNextOp
SkOpAngle::dumpOne [3/12] next=1/4 sect=29/29 s=0.707011363 [10] e=1 [6] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [1/4] next=3/11 sect=9/9 s=0.312911718 [9] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
SkOpAngle::dumpOne [3/11] next=1/3 sect=13/13 s=0.707011363 [10] e=0.6285848 [14] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
SkOpAngle::dumpOne [1/3] next=3/12 sect=25/25 s=0.312911718 [9] e=0.261734846 [11] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
SkOpSegment::activeOp id=1 t=0.312911718 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
SkOpSegment::activeOp id=3 t=0.707011363 tEnd=0.6285848 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::activeOp id=1 t=0.312911718 tEnd=0.261734846 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
SkOpSegment::markDone id=3 (0,5 1,3 6,5 6,5) t=0.707011363 [10] (4.93872309,4.63585138) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[3] to:[1] start=6250524 end=16839328
bridgeOp current id=3 from=(6,5) to=(4.93872309,4.63585138)
path.lineTo(6,5);
path.cubicTo(6,5, 5.57078886,4.82831573, 4.93872309,4.63585138);
path.close();
</div>
<div id="loop16">
seg=1 {{{1, 5}, {0.655789495f, 3.62315798f}, {1.29891956f, 3.23365664f}, {1.70591938f, 3.38288999f}}}
seg=2 {{{1.70591938f, 3.38288999f}, {2.48133492f, 3.66720891f}, {2.39964914f, 5.90701771f}, {-7, 7}}}
seg=3 {{{-7, 7}, {1, 5}}}
op sect
seg=4 {{{0, 1}, {5.22302151f, 4.08633089f}, {-0.544847488f, 5.81993675f}, {-1.40665555f, 5.83952332f}}}
seg=5 {{{-1.40665555f, 5.83952332f}, {-1.75486088f, 5.84743738f}, {-1.30215836f, 5.57553959f}, {1, 5}}}
seg=6 {{{1, 5}, {0, 1}}}
debugShowCubicIntersection wtTs[0]=0.596717927 {{{0,1}, {5.22302151,4.08633089}, {-0.544847488,5.81993675}, {-1.40665555,5.83952332}}} {{0.987057447,5.00323725}} wtTs[1]=1 {{-1.40665555,5.83952332}} wnTs[0]=0.998123 {{{-1.40665555,5.83952332}, {-1.75486088,5.84743738}, {-1.30215836,5.57553959}, {1,5}}} wnTs[1]=0
SkOpSegment::addT insert t=0.596717927 segID=4 spanID=13
SkOpSegment::addT insert t=0.998123104 segID=5 spanID=14
debugShowCubicLineIntersection wtTs[0]=0 {{{0,1}, {5.22302151,4.08633089}, {-0.544847488,5.81993675}, {-1.40665555,5.83952332}}} {{0,1}} wtTs[1]=0.59493238 {{0.999006689,4.99602699}} wnTs[0]=1 {{{1,5}, {0,1}}} wnTs[1]=0.000993298772
SkOpSegment::addT insert t=0.59493238 segID=4 spanID=15
SkOpSegment::addT insert t=0.000993298772 segID=6 spanID=16
debugShowCubicLineIntersection wtTs[0]=1 {{{-1.40665555,5.83952332}, {-1.75486088,5.84743738}, {-1.30215836,5.57553959}, {1,5}}} {{1,5}} wnTs[0]=0 {{{1,5}, {0,1}}}
debugShowCubicIntersection wtTs[0]=0.594931837 {{{0,1}, {5.22302151,4.08633089}, {-0.544847488,5.81993675}, {-1.40665555,5.83952332}}} {{0.999010324,4.99602461}} wnTs[0]=0.000963087 {{{1,5}, {0.655789495,3.62315798}, {1.29891956,3.23365664}, {1.70591938,3.38288999}}}
SkOpSegment::addT insert t=0.594931837 segID=4 spanID=17
SkOpSegment::addT insert t=0.000963086711 segID=1 spanID=18
debugShowCubicIntersection wtTs[0]=0.51391312 {{{0,1}, {5.22302151,4.08633089}, {-0.544847488,5.81993675}, {-1.40665555,5.83952332}}} {{1.50189435,4.63748884}} wtTs[1]=0.570807669 {{1.15735686,4.89566994}} wtTs[2]=0.621522123 {{0.818326533,5.10029507}} wnTs[0]=0.441854 {{{1.70591938,3.38288999}, {2.48133492,3.66720891}, {2.39964914,5.90701771}, {-7,7}}} wnTs[1]=0.501700561 wnTs[2]=0.547732168
SkOpSegment::addT insert t=0.51391312 segID=4 spanID=19
SkOpSegment::addT insert t=0.441853762 segID=2 spanID=20
SkOpSegment::addT insert t=0.570807669 segID=4 spanID=21
SkOpSegment::addT insert t=0.501700561 segID=2 spanID=22
SkOpSegment::addT insert t=0.621522123 segID=4 spanID=23
SkOpSegment::addT insert t=0.547732168 segID=2 spanID=24
debugShowCubicLineIntersection wtTs[0]=0.596717201 {{{0,1}, {5.22302151,4.08633089}, {-0.544847488,5.81993675}, {-1.40665555,5.83952332}}} {{0.987062335,5.00323439}} wnTs[0]=0.998383 {{{-7,7}, {1,5}}}
SkOpSegment::addT insert t=0.596717201 segID=4 spanID=25
SkOpSegment::addT insert t=0.998382791 segID=3 spanID=26
debugShowCubicIntersection wtTs[0]=1 {{{-1.40665555,5.83952332}, {-1.75486088,5.84743738}, {-1.30215836,5.57553959}, {1,5}}} {{1,5}} wnTs[0]=0 {{{1,5}, {0.655789495,3.62315798}, {1.29891956,3.23365664}, {1.70591938,3.38288999}}}
debugShowCubicIntersection wtTs[0]=0.998028054 {{{-1.40665555,5.83952332}, {-1.75486088,5.84743738}, {-1.30215836,5.57553959}, {1,5}}} {{0.986402392,5.00340128}} wnTs[0]=0.526052 {{{1.70591938,3.38288999}, {2.48133492,3.66720891}, {2.39964914,5.90701771}, {-7,7}}}
SkOpSegment::addT insert t=0.998028054 segID=5 spanID=27
SkOpSegment::addT insert t=0.526051613 segID=2 spanID=28
debugShowCubicLineIntersection wtTs[0]=1 {{{-1.40665555,5.83952332}, {-1.75486088,5.84743738}, {-1.30215836,5.57553959}, {1,5}}} {{1,5}} wnTs[0]=1 {{{-7,7}, {1,5}}}
debugShowCubicLineIntersection wtTs[0]=0 {{{1,5}, {0.655789495,3.62315798}, {1.29891956,3.23365664}, {1.70591938,3.38288999}}} {{1,5}} wnTs[0]=0 {{{1,5}, {0,1}}}
debugShowCubicLineIntersection wtTs[0]=0.524349463 {{{1.70591938,3.38288999}, {2.48133492,3.66720891}, {2.39964914,5.90701771}, {-7,7}}} {{0.998957574,4.99583006}} wnTs[0]=0.00104244 {{{1,5}, {0,1}}}
SkOpSegment::addT insert t=0.00104243869 segID=6 spanID=29
SkOpSegment::addT insert t=0.524349463 segID=2 spanID=30
debugShowLineIntersection wtTs[0]=0 {{{1,5}, {0,1}}} {{1,5}} wnTs[0]=1 {{{-7,7}, {1,5}}}
debugShowCubicIntersection wtTs[0]=0.00101062542 {{{1,5}, {0.655789495,3.62315798}, {1.29891956,3.23365664}, {1.70591938,3.38288999}}} {{0.998959422,4.99582863}} wtTs[1]=1 {{1.70591938,3.38288999}} wnTs[0]=0.524349 {{{1.70591938,3.38288999}, {2.48133492,3.66720891}, {2.39964914,5.90701771}, {-7,7}}} wnTs[1]=0
SkOpSegment::addT insert t=0.00101062542 segID=1 spanID=31
SkOpSegment::addT insert t=0.524348945 segID=2 spanID=32
debugShowCubicLineIntersection wtTs[0]=0 {{{1,5}, {0.655789495,3.62315798}, {1.29891956,3.23365664}, {1.70591938,3.38288999}}} {{1,5}} wnTs[0]=1 {{{-7,7}, {1,5}}}
debugShowCubicLineIntersection wtTs[0]=0.526050901 {{{1.70591938,3.38288999}, {2.48133492,3.66720891}, {2.39964914,5.90701771}, {-7,7}}} {{0.986407638,5.00339794}} wtTs[1]=1 {{-7,7}} wnTs[0]=0.998301 {{{-7,7}, {1,5}}} wnTs[1]=0
SkOpSegment::addT insert t=0.526050901 segID=2 spanID=33
SkOpSegment::addT insert t=0.998300955 segID=3 spanID=34
SkOpSegment::sortAngles [4] tStart=0.51391312 [19]
SkOpAngle::after [4/1] 1/9 tStart=0.51391312 tEnd=0 < [2/30] 1/5 tStart=0.441853762 tEnd=0 < [4/2] 17/17 tStart=0.51391312 tEnd=0.570807669 T 12
SkOpAngle::afterPart {{{1.50189435,4.63748884}, {2.46559084,3.81494809}, {2.68417928,2.58610594}, {0,1}}} id=4
SkOpAngle::afterPart {{{1.50189435,4.63748884}, {2.22382402,4.01592428}, {2.04853966,3.50851737}, {1.70591938,3.38288999}}} id=2
SkOpAngle::afterPart {{{1.50189435,4.63748884}, {1.39520496,4.72855109}, {1.27938319,4.81463379}, {1.15735686,4.89566994}}} id=4
SkOpAngle::after [4/1] 1/9 tStart=0.51391312 tEnd=0 < [2/31] 17/17 tStart=0.441853762 tEnd=0.501700561 < [2/30] 1/5 tStart=0.441853762 tEnd=0 F 5
SkOpAngle::afterPart {{{1.50189435,4.63748884}, {2.46559084,3.81494809}, {2.68417928,2.58610594}, {0,1}}} id=4
SkOpAngle::afterPart {{{1.50189435,4.63748884}, {1.40411273,4.72167654}, {1.28987138,4.80795871}, {1.15735686,4.89566994}}} id=2
SkOpAngle::afterPart {{{1.50189435,4.63748884}, {2.22382402,4.01592428}, {2.04853966,3.50851737}, {1.70591938,3.38288999}}} id=2
SkOpAngle::after [2/30] 1/5 tStart=0.441853762 tEnd=0 < [2/31] 17/17 tStart=0.441853762 tEnd=0.501700561 < [4/2] 17/17 tStart=0.51391312 tEnd=0.570807669 F 11
SkOpAngle::afterPart {{{1.50189435,4.63748884}, {2.22382402,4.01592428}, {2.04853966,3.50851737}, {1.70591938,3.38288999}}} id=2
SkOpAngle::afterPart {{{1.50189435,4.63748884}, {1.40411273,4.72167654}, {1.28987138,4.80795871}, {1.15735686,4.89566994}}} id=2
SkOpAngle::afterPart {{{1.50189435,4.63748884}, {1.39520496,4.72855109}, {1.27938319,4.81463379}, {1.15735686,4.89566994}}} id=4
SkOpAngle::after [4/2] 17/17 tStart=0.51391312 tEnd=0.570807669 < [2/31] 17/17 tStart=0.441853762 tEnd=0.501700561 < [4/1] 1/9 tStart=0.51391312 tEnd=0 T 12
SkOpAngle::afterPart {{{1.50189435,4.63748884}, {1.39520496,4.72855109}, {1.27938319,4.81463379}, {1.15735686,4.89566994}}} id=4
SkOpAngle::afterPart {{{1.50189435,4.63748884}, {1.40411273,4.72167654}, {1.28987138,4.80795871}, {1.15735686,4.89566994}}} id=2
SkOpAngle::afterPart {{{1.50189435,4.63748884}, {2.46559084,3.81494809}, {2.68417928,2.58610594}, {0,1}}} id=4
SkOpSegment::sortAngles [4] tStart=0.570807669 [21]
SkOpAngle::after [4/3] 1/1 tStart=0.570807669 tEnd=0.51391312 < [2/32] 1/1 tStart=0.501700561 tEnd=0.441853762 < [4/4] 17/17 tStart=0.570807669 tEnd=0.594931837 F 12
SkOpAngle::afterPart {{{1.15735686,4.89566994}, {1.27938319,4.81463379}, {1.39520496,4.72855109}, {1.50189435,4.63748884}}} id=4
SkOpAngle::afterPart {{{1.15735686,4.89566994}, {1.28987138,4.80795871}, {1.40411273,4.72167654}, {1.50189435,4.63748884}}} id=2
SkOpAngle::afterPart {{{1.15735686,4.89566994}, {1.10561581,4.93003052}, {1.05275924,4.96348365}, {0.999010324,4.99602461}}} id=4
SkOpAngle::after [4/3] 1/1 tStart=0.570807669 tEnd=0.51391312 < [2/33] 17/17 tStart=0.501700561 tEnd=0.524348945 < [4/4] 17/17 tStart=0.570807669 tEnd=0.594931837 T 11
SkOpAngle::afterPart {{{1.15735686,4.89566994}, {1.27938319,4.81463379}, {1.39520496,4.72855109}, {1.50189435,4.63748884}}} id=4
SkOpAngle::afterPart {{{1.15735686,4.89566994}, {1.10720815,4.92886332}, {1.05444048,4.9622619}, {0.998959422,4.99582863}}} id=2
SkOpAngle::afterPart {{{1.15735686,4.89566994}, {1.10561581,4.93003052}, {1.05275924,4.96348365}, {0.999010324,4.99602461}}} id=4
SkOpSegment::sortAngles [4] tStart=0.594931837 [17]
SkOpAngle::after [4/5] 1/1 tStart=0.594931837 tEnd=0.570807669 < [1/26] 25/25 tStart=0.000963086711 tEnd=0 < [4/6] 17/17 tStart=0.594931837 tEnd=0.59493238 F 4
SkOpAngle::afterPart {{{0.999010324,4.99602461}, {1.05275924,4.96348365}, {1.10561581,4.93003052}, {1.15735686,4.89566994}}} id=4
SkOpAngle::afterPart {{{0.999010324,4.99602461}, {0.999339999,4.9973488}, {0.999668495,4.99867398}, {1,5}}} id=1
SkOpAngle::afterPart {{{0.999010324,4.99602461}, {0.999009115,4.99602534}, {0.999007898,4.99602626}, {0.999006689,4.99602699}}} id=4
SkOpAngle::after [4/5] 1/1 tStart=0.594931837 tEnd=0.570807669 < [1/27] 9/9 tStart=0.000963086711 tEnd=0.00101062542 < [4/6] 17/17 tStart=0.594931837 tEnd=0.59493238 T 4
SkOpAngle::afterPart {{{0.999010324,4.99602461}, {1.05275924,4.96348365}, {1.10561581,4.93003052}, {1.15735686,4.89566994}}} id=4
SkOpAngle::afterPart {{{0.999010324,4.99602461}, {0.998994052,4.99595925}, {0.998975691,4.99589399}, {0.998959422,4.99582863}}} id=1
SkOpAngle::afterPart {{{0.999010324,4.99602461}, {0.999009115,4.99602534}, {0.999007898,4.99602626}, {0.999006689,4.99602699}}} id=4
SkOpSegment::sortAngles [4] tStart=0.59493238 [15]
SkOpAngle::after [4/7] 1/1 tStart=0.59493238 tEnd=0.594931837 < [6/21] 25/25 tStart=0.000993298772 tEnd=0 < [4/8] 17/17 tStart=0.59493238 tEnd=0.596717201 F 4
SkOpAngle::afterPart {{{0.999006689,4.99602699}, {0.999007898,4.99602626}, {0.999009115,4.99602534}, {0.999010324,4.99602461}}} id=4
SkOpAngle::afterPart {{{0.999006689,4.99602699}, {1,5}}} id=6
SkOpAngle::afterPart {{{0.999006689,4.99602699}, {0.995030085,4.99843453}, {0.991048617,5.00083684}, {0.987062335,5.00323439}}} id=4
SkOpAngle::after [4/7] 1/1 tStart=0.59493238 tEnd=0.594931837 < [6/22] 9/9 tStart=0.000993298772 tEnd=0.00104243869 < [4/8] 17/17 tStart=0.59493238 tEnd=0.596717201 T 4
SkOpAngle::afterPart {{{0.999006689,4.99602699}, {0.999007898,4.99602626}, {0.999009115,4.99602534}, {0.999010324,4.99602461}}} id=4
SkOpAngle::afterPart {{{0.999006689,4.99602699}, {0.998957574,4.99583006}}} id=6
SkOpAngle::afterPart {{{0.999006689,4.99602699}, {0.995030085,4.99843453}, {0.991048617,5.00083684}, {0.987062335,5.00323439}}} id=4
SkOpSegment::sortAngles [4] tStart=0.596717201 [25]
SkOpAngle::after [4/9] 1/1 tStart=0.596717201 tEnd=0.59493238 < [3/46] 17/17 tStart=0.998382791 tEnd=0.998300955 < [4/10] 17/17 tStart=0.596717201 tEnd=0.596717927 T 11
SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.991048617,5.00083684}, {0.995030085,4.99843453}, {0.999006689,4.99602699}}} id=4
SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.986407638,5.00339794}}} id=3
SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.987060715,5.00323536}, {0.987059068,5.00323627}, {0.987057447,5.00323725}}} id=4
SkOpAngle::after [4/9] 1/1 tStart=0.596717201 tEnd=0.59493238 < [3/47] 1/1 tStart=0.998382791 tEnd=1 < [3/46] 17/17 tStart=0.998382791 tEnd=0.998300955 F 12
SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.991048617,5.00083684}, {0.995030085,4.99843453}, {0.999006689,4.99602699}}} id=4
SkOpAngle::afterPart {{{0.987062335,5.00323439}, {1,5}}} id=3
SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.986407638,5.00339794}}} id=3
SkOpAngle::after [3/46] 17/17 tStart=0.998382791 tEnd=0.998300955 < [3/47] 1/1 tStart=0.998382791 tEnd=1 < [4/10] 17/17 tStart=0.596717201 tEnd=0.596717927 F 5
SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.986407638,5.00339794}}} id=3
SkOpAngle::afterPart {{{0.987062335,5.00323439}, {1,5}}} id=3
SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.987060715,5.00323536}, {0.987059068,5.00323627}, {0.987057447,5.00323725}}} id=4
SkOpAngle::after [4/10] 17/17 tStart=0.596717201 tEnd=0.596717927 < [3/47] 1/1 tStart=0.998382791 tEnd=1 < [4/9] 1/1 tStart=0.596717201 tEnd=0.59493238 T 11
SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.987060715,5.00323536}, {0.987059068,5.00323627}, {0.987057447,5.00323725}}} id=4
SkOpAngle::afterPart {{{0.987062335,5.00323439}, {1,5}}} id=3
SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.991048617,5.00083684}, {0.995030085,4.99843453}, {0.999006689,4.99602699}}} id=4
SkOpSegment::sortAngles [4] tStart=0.596717927 [13]
SkOpAngle::after [4/11] 1/1 tStart=0.596717927 tEnd=0.596717201 < [5/17] 17/17 tStart=0.998123104 tEnd=0.998028054 < [4/12] 17/17 tStart=0.596717927 tEnd=0.621522123 T 11
SkOpAngle::afterPart {{{0.987057447,5.00323725}, {0.987059068,5.00323627}, {0.987060715,5.00323536}, {0.987062335,5.00323439}}} id=4
SkOpAngle::afterPart {{{0.987057447,5.00323725}, {0.986839287,5.00329184}, {0.98662052,5.00334669}, {0.986402392,5.00340128}}} id=5
SkOpAngle::afterPart {{{0.987057447,5.00323725}, {0.931658826,5.03655656}, {0.875334323,5.06891107}, {0.818326533,5.10029507}}} id=4
SkOpAngle::after [4/11] 1/1 tStart=0.596717927 tEnd=0.596717201 < [5/18] 1/1 tStart=0.998123104 tEnd=1 < [5/17] 17/17 tStart=0.998123104 tEnd=0.998028054 T 12
SkOpAngle::afterPart {{{0.987057447,5.00323725}, {0.987059068,5.00323627}, {0.987060715,5.00323536}, {0.987062335,5.00323439}}} id=4
SkOpAngle::afterPart {{{0.987057447,5.00323725}, {0.991365337,5.00215916}, {0.995679087,5.00108023}, {1,5}}} id=5
SkOpAngle::afterPart {{{0.987057447,5.00323725}, {0.986839287,5.00329184}, {0.98662052,5.00334669}, {0.986402392,5.00340128}}} id=5
SkOpSegment::sortAngles [4] tStart=0.621522123 [23]
SkOpAngle::after [4/13] 1/1 tStart=0.621522123 tEnd=0.596717927 < [2/42] 1/1 tStart=0.547732168 tEnd=0.526051613 < [4/14] 17/17 tStart=0.621522123 tEnd=1 T 12
SkOpAngle::afterPart {{{0.818326533,5.10029507}, {0.875334323,5.06891107}, {0.931658826,5.03655656}, {0.987057447,5.00323725}}} id=4
SkOpAngle::afterPart {{{0.818326533,5.10029507}, {0.876904272,5.06786614}, {0.932900844,5.03555769}, {0.986402392,5.00340128}}} id=2
SkOpAngle::afterPart {{{0.818326533,5.10029507}, {-0.0515338283,5.5791716}, {-1.08048026,5.83211023}, {-1.40665555,5.83952332}}} id=4
SkOpAngle::after [4/13] 1/1 tStart=0.621522123 tEnd=0.596717927 < [2/43] 17/17 tStart=0.547732168 tEnd=1 < [2/42] 1/1 tStart=0.547732168 tEnd=0.526051613 F 5
SkOpAngle::afterPart {{{0.818326533,5.10029507}, {0.875334323,5.06891107}, {0.931658826,5.03655656}, {0.987057447,5.00323725}}} id=4
SkOpAngle::afterPart {{{0.818326533,5.10029507}, {-0.403636057,5.77677955}, {-2.74884106,6.50567927}, {-7,7}}} id=2
SkOpAngle::afterPart {{{0.818326533,5.10029507}, {0.876904272,5.06786614}, {0.932900844,5.03555769}, {0.986402392,5.00340128}}} id=2
SkOpAngle::after [2/42] 1/1 tStart=0.547732168 tEnd=0.526051613 < [2/43] 17/17 tStart=0.547732168 tEnd=1 < [4/14] 17/17 tStart=0.621522123 tEnd=1 F 11
SkOpAngle::afterPart {{{0.818326533,5.10029507}, {0.876904272,5.06786614}, {0.932900844,5.03555769}, {0.986402392,5.00340128}}} id=2
SkOpAngle::afterPart {{{0.818326533,5.10029507}, {-0.403636057,5.77677955}, {-2.74884106,6.50567927}, {-7,7}}} id=2
SkOpAngle::afterPart {{{0.818326533,5.10029507}, {-0.0515338283,5.5791716}, {-1.08048026,5.83211023}, {-1.40665555,5.83952332}}} id=4
SkOpAngle::after [4/14] 17/17 tStart=0.621522123 tEnd=1 < [2/43] 17/17 tStart=0.547732168 tEnd=1 < [4/13] 1/1 tStart=0.621522123 tEnd=0.596717927 T 12
SkOpAngle::afterPart {{{0.818326533,5.10029507}, {-0.0515338283,5.5791716}, {-1.08048026,5.83211023}, {-1.40665555,5.83952332}}} id=4
SkOpAngle::afterPart {{{0.818326533,5.10029507}, {-0.403636057,5.77677955}, {-2.74884106,6.50567927}, {-7,7}}} id=2
SkOpAngle::afterPart {{{0.818326533,5.10029507}, {0.875334323,5.06891107}, {0.931658826,5.03655656}, {0.987057447,5.00323725}}} id=4
SkOpSegment::sortAngles [5] tStart=0.998028054 [27]
SkOpAngle::after [5/15] 17/17 tStart=0.998028054 tEnd=0 < [2/40] 1/1 tStart=0.526051613 tEnd=0.526050901 < [5/16] 1/1 tStart=0.998028054 tEnd=0.998123104 F 11
SkOpAngle::afterPart {{{0.986402392,5.00340128}, {-1.30394063,5.57661086}, {-1.75417424,5.84742178}, {-1.40665555,5.83952332}}} id=5
SkOpAngle::afterPart {{{0.986402392,5.00340128}, {0.986404149,5.00340022}, {0.986405881,5.003399}, {0.986407638,5.00339794}}} id=2
SkOpAngle::afterPart {{{0.986402392,5.00340128}, {0.98662052,5.00334669}, {0.986839287,5.00329184}, {0.987057447,5.00323725}}} id=5
SkOpAngle::after [5/15] 17/17 tStart=0.998028054 tEnd=0 < [2/41] 17/17 tStart=0.526051613 tEnd=0.547732168 < [5/16] 1/1 tStart=0.998028054 tEnd=0.998123104 T 12
SkOpAngle::afterPart {{{0.986402392,5.00340128}, {-1.30394063,5.57661086}, {-1.75417424,5.84742178}, {-1.40665555,5.83952332}}} id=5
SkOpAngle::afterPart {{{0.986402392,5.00340128}, {0.932900844,5.03555769}, {0.876904272,5.06786614}, {0.818326533,5.10029507}}} id=2
SkOpAngle::afterPart {{{0.986402392,5.00340128}, {0.98662052,5.00334669}, {0.986839287,5.00329184}, {0.987057447,5.00323725}}} id=5
SkOpSegment::sortAngles [5] tStart=0.998123104 [14]
SkOpSegment::sortAngles [5] tStart=1 [10]
SkOpAngle::after [5/19] 17/17 tStart=1 tEnd=0.998123104 < [1/25] 9/9 tStart=0 tEnd=0.000963086711 < [3/48] 17/17 tStart=1 tEnd=0.998382791 T 5
SkOpAngle::afterPart {{{1,5}, {0.995679087,5.00108023}, {0.991365337,5.00215916}, {0.987057447,5.00323725}}} id=5
SkOpAngle::afterPart {{{1,5}, {0.999668495,4.99867398}, {0.999339999,4.9973488}, {0.999010324,4.99602461}}} id=1
SkOpAngle::afterPart {{{1,5}, {0.987062335,5.00323439}}} id=3
SkOpAngle::after [5/19] 17/17 tStart=1 tEnd=0.998123104 < [6/20] 9/9 tStart=0 tEnd=0.000993298772 < [1/25] 9/9 tStart=0 tEnd=0.000963086711 F 7
SkOpAngle::afterPart {{{1,5}, {0.995679087,5.00108023}, {0.991365337,5.00215916}, {0.987057447,5.00323725}}} id=5
SkOpAngle::afterPart {{{1,5}, {0.999006689,4.99602699}}} id=6
SkOpAngle::afterPart {{{1,5}, {0.999668495,4.99867398}, {0.999339999,4.9973488}, {0.999010324,4.99602461}}} id=1
SkOpAngle::after [1/25] 9/9 tStart=0 tEnd=0.000963086711 < [6/20] 9/9 tStart=0 tEnd=0.000993298772 < [3/48] 17/17 tStart=1 tEnd=0.998382791 T 7
SkOpAngle::afterPart {{{1,5}, {0.999668495,4.99867398}, {0.999339999,4.9973488}, {0.999010324,4.99602461}}} id=1
SkOpAngle::afterPart {{{1,5}, {0.999006689,4.99602699}}} id=6
SkOpAngle::afterPart {{{1,5}, {0.987062335,5.00323439}}} id=3
SkOpSegment::sortAngles [6] tStart=0 [11]
SkOpSegment::sortAngles [6] tStart=0.000993298772 [16]
SkOpSegment::sortAngles [6] tStart=0.00104243869 [29]
SkOpAngle::after [6/23] 25/25 tStart=0.00104243869 tEnd=0.000993298772 < [2/36] 1/1 tStart=0.524349463 tEnd=0.524348945 < [6/24] 9/9 tStart=0.00104243869 tEnd=1 T 4
SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.999006689,4.99602699}}} id=6
SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.998958844,4.99582929}, {0.998958153,4.9958294}, {0.998959422,4.99582863}}} id=2
SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0,1}}} id=6
SkOpAngle::after [6/23] 25/25 tStart=0.00104243869 tEnd=0.000993298772 < [2/37] 17/17 tStart=0.524349463 tEnd=0.526050901 < [2/36] 1/1 tStart=0.524349463 tEnd=0.524348945 F 4
SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.999006689,4.99602699}}} id=6
SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.994789605,4.99835173}, {0.990606297,5.00087438}, {0.986407638,5.00339794}}} id=2
SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.998958844,4.99582929}, {0.998958153,4.9958294}, {0.998959422,4.99582863}}} id=2
SkOpAngle::after [2/36] 1/1 tStart=0.524349463 tEnd=0.524348945 < [2/37] 17/17 tStart=0.524349463 tEnd=0.526050901 < [6/24] 9/9 tStart=0.00104243869 tEnd=1 F 4
SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.998958844,4.99582929}, {0.998958153,4.9958294}, {0.998959422,4.99582863}}} id=2
SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.994789605,4.99835173}, {0.990606297,5.00087438}, {0.986407638,5.00339794}}} id=2
SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0,1}}} id=6
SkOpAngle::after [6/24] 9/9 tStart=0.00104243869 tEnd=1 < [2/37] 17/17 tStart=0.524349463 tEnd=0.526050901 < [6/23] 25/25 tStart=0.00104243869 tEnd=0.000993298772 T 4
SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0,1}}} id=6
SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.994789605,4.99835173}, {0.990606297,5.00087438}, {0.986407638,5.00339794}}} id=2
SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.999006689,4.99602699}}} id=6
SkOpSegment::sortAngles [1] tStart=0 [1]
SkOpSegment::sortAngles [1] tStart=0.000963086711 [18]
SkOpSegment::sortAngles [1] tStart=0.00101062542 [31]
SkOpAngle::after [1/28] 25/25 tStart=0.00101062542 tEnd=0.000963086711 < [2/34] 1/1 tStart=0.524348945 tEnd=0.501700561 < [1/29] 9/5 tStart=0.00101062542 tEnd=1 T 4
SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.998975691,4.99589399}, {0.998994052,4.99595925}, {0.999010324,4.99602461}}} id=1
SkOpAngle::afterPart {{{0.998959422,4.99582863}, {1.05444048,4.9622619}, {1.10720815,4.92886332}, {1.15735686,4.89566994}}} id=2
SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.657089182,3.62237127}, {1.29933088,3.23380746}, {1.70591938,3.38288999}}} id=1
SkOpAngle::after [1/28] 25/25 tStart=0.00101062542 tEnd=0.000963086711 < [2/35] 17/17 tStart=0.524348945 tEnd=0.524349463 < [2/34] 1/1 tStart=0.524348945 tEnd=0.501700561 F 4
SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.998975691,4.99589399}, {0.998994052,4.99595925}, {0.999010324,4.99602461}}} id=1
SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.998958153,4.9958294}, {0.998958844,4.99582929}, {0.998957574,4.99583006}}} id=2
SkOpAngle::afterPart {{{0.998959422,4.99582863}, {1.05444048,4.9622619}, {1.10720815,4.92886332}, {1.15735686,4.89566994}}} id=2
SkOpAngle::after [2/34] 1/1 tStart=0.524348945 tEnd=0.501700561 < [2/35] 17/17 tStart=0.524348945 tEnd=0.524349463 < [1/29] 9/5 tStart=0.00101062542 tEnd=1 F 4
SkOpAngle::afterPart {{{0.998959422,4.99582863}, {1.05444048,4.9622619}, {1.10720815,4.92886332}, {1.15735686,4.89566994}}} id=2
SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.998958153,4.9958294}, {0.998958844,4.99582929}, {0.998957574,4.99583006}}} id=2
SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.657089182,3.62237127}, {1.29933088,3.23380746}, {1.70591938,3.38288999}}} id=1
SkOpAngle::after [1/29] 9/5 tStart=0.00101062542 tEnd=1 < [2/35] 17/17 tStart=0.524348945 tEnd=0.524349463 < [1/28] 25/25 tStart=0.00101062542 tEnd=0.000963086711 T 4
SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.657089182,3.62237127}, {1.29933088,3.23380746}, {1.70591938,3.38288999}}} id=1
SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.998958153,4.9958294}, {0.998958844,4.99582929}, {0.998957574,4.99583006}}} id=2
SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.998975691,4.99589399}, {0.998994052,4.99595925}, {0.999010324,4.99602461}}} id=1
SkOpSegment::sortAngles [2] tStart=0.441853762 [20]
SkOpSegment::sortAngles [2] tStart=0.501700561 [22]
SkOpSegment::sortAngles [2] tStart=0.524348945 [32]
SkOpSegment::sortAngles [2] tStart=0.524349463 [30]
SkOpSegment::sortAngles [2] tStart=0.526050901 [33]
SkOpAngle::after [2/38] 1/1 tStart=0.526050901 tEnd=0.524349463 < [3/44] 17/17 tStart=0.998300955 tEnd=0 < [2/39] 17/17 tStart=0.526050901 tEnd=0.526051613 T 11
SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.990606297,5.00087438}, {0.994789605,4.99835173}, {0.998957574,4.99583006}}} id=2
SkOpAngle::afterPart {{{0.986407638,5.00339794}, {-7,7}}} id=3
SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.986405881,5.003399}, {0.986404149,5.00340022}, {0.986402392,5.00340128}}} id=2
SkOpAngle::after [2/38] 1/1 tStart=0.526050901 tEnd=0.524349463 < [3/45] 1/1 tStart=0.998300955 tEnd=0.998382791 < [3/44] 17/17 tStart=0.998300955 tEnd=0 F 12
SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.990606297,5.00087438}, {0.994789605,4.99835173}, {0.998957574,4.99583006}}} id=2
SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.987062335,5.00323439}}} id=3
SkOpAngle::afterPart {{{0.986407638,5.00339794}, {-7,7}}} id=3
SkOpAngle::after [3/44] 17/17 tStart=0.998300955 tEnd=0 < [3/45] 1/1 tStart=0.998300955 tEnd=0.998382791 < [2/39] 17/17 tStart=0.526050901 tEnd=0.526051613 F 5
SkOpAngle::afterPart {{{0.986407638,5.00339794}, {-7,7}}} id=3
SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.987062335,5.00323439}}} id=3
SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.986405881,5.003399}, {0.986404149,5.00340022}, {0.986402392,5.00340128}}} id=2
SkOpAngle::after [2/39] 17/17 tStart=0.526050901 tEnd=0.526051613 < [3/45] 1/1 tStart=0.998300955 tEnd=0.998382791 < [2/38] 1/1 tStart=0.526050901 tEnd=0.524349463 T 11
SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.986405881,5.003399}, {0.986404149,5.00340022}, {0.986402392,5.00340128}}} id=2
SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.987062335,5.00323439}}} id=3
SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.990606297,5.00087438}, {0.994789605,4.99835173}, {0.998957574,4.99583006}}} id=2
SkOpSegment::sortAngles [2] tStart=0.526051613 [28]
SkOpSegment::sortAngles [2] tStart=0.547732168 [24]
SkOpSegment::sortAngles [3] tStart=0.998300955 [34]
SkOpSegment::sortAngles [3] tStart=0.998382791 [26]
SkOpSegment::sortAngles [3] tStart=1 [6]
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0 (0,1) tEnd=0.51391312 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.51391312 (1.50189435,4.63748884) tEnd=0.570807669 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.570807669 (1.15735686,4.89566994) tEnd=0.594931837 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.594931837 (0.999010324,4.99602461) tEnd=0.59493238 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.59493238 (0.999006689,4.99602699) tEnd=0.596717201 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717201 (0.987062335,5.00323439) tEnd=0.596717927 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717927 (0.987057447,5.00323725) tEnd=0.621522123 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 (-1.40665555,5.83952332) tEnd=0.998028054 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998028054 (0.986402392,5.00340128) tEnd=0.998123104 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998123104 (0.987057447,5.00323725) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (1,5 0,1) t=0 (1,5) tEnd=0.000993298772 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (1,5 0,1) t=0.000993298772 (0.999006689,4.99602699) tEnd=0.00104243869 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (1,5 0,1) t=0.00104243869 (0.998957574,4.99583006) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0 (1,5) tEnd=0.000963086711 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.000963086711 (0.999010324,4.99602461) tEnd=0.00101062542 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.00101062542 (0.998959422,4.99582863) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0 (1.70591938,3.38288999) tEnd=0.441853762 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.441853762 (1.50189435,4.63748884) tEnd=0.501700561 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.501700561 (1.15735686,4.89566994) tEnd=0.524348945 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524348945 (0.998959422,4.99582863) tEnd=0.524349463 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524349463 (0.998957574,4.99583006) tEnd=0.526050901 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526050901 (0.986407638,5.00339794) tEnd=0.526051613 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526051613 (0.986402392,5.00340128) tEnd=0.547732168 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.547732168 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0 (-7,7) tEnd=0.998300955 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0.998300955 (0.986407638,5.00339794) tEnd=0.998382791 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0.998382791 (0.987062335,5.00323439) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::findTop
SkOpAngle::dumpOne [6/49] next=4/50 sect=25/25 s=1 [12] e=0.00104243869 [29] sgn=1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [4/50] next=6/49 sect=29/25 s=0 [7] e=0.51391312 [19] sgn=-1 windVal=1 windSum=? operand
SkOpSegment::findTop id=6 s=0.00104243869 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
SkOpSegment::markWinding id=6 (1,5 0,1) t=0.00104243869 [29] (0.998957574,4.99583006) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0 [7] (0,1) tEnd=0.51391312 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=6 (1,5 0,1) t=0.00104243869 [29] (0.998957574,4.99583006) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::activeOp id=6 t=0.00104243869 tEnd=1 op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::markDone id=6 (1,5 0,1) t=0.00104243869 [29] (0.998957574,4.99583006) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0 [7] (0,1) tEnd=0.51391312 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp chase.append id=4 windSum=-2147483647
SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0 [3] (1.70591938,3.38288999) tEnd=0.441853762 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.00101062542 [31] (0.998959422,4.99582863) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=1 span=31 windSum=-1
SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.51391312 [19] (1.50189435,4.63748884) tEnd=0.570807669 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=21 windSum=?
SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.441853762 [20] (1.50189435,4.63748884) tEnd=0.501700561 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=2 span=22 windSum=?
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.51391312 (1.50189435,4.63748884) tEnd=0.570807669 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.570807669 (1.15735686,4.89566994) tEnd=0.594931837 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.594931837 (0.999010324,4.99602461) tEnd=0.59493238 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.59493238 (0.999006689,4.99602699) tEnd=0.596717201 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717201 (0.987062335,5.00323439) tEnd=0.596717927 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717927 (0.987057447,5.00323725) tEnd=0.621522123 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 (-1.40665555,5.83952332) tEnd=0.998028054 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998028054 (0.986402392,5.00340128) tEnd=0.998123104 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998123104 (0.987057447,5.00323725) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (1,5 0,1) t=0 (1,5) tEnd=0.000993298772 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=6 (1,5 0,1) t=0.000993298772 (0.999006689,4.99602699) tEnd=0.00104243869 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0 (1,5) tEnd=0.000963086711 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.000963086711 (0.999010324,4.99602461) tEnd=0.00101062542 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.00101062542 (0.998959422,4.99582863) tEnd=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0 (1.70591938,3.38288999) tEnd=0.441853762 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.441853762 (1.50189435,4.63748884) tEnd=0.501700561 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.501700561 (1.15735686,4.89566994) tEnd=0.524348945 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524348945 (0.998959422,4.99582863) tEnd=0.524349463 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524349463 (0.998957574,4.99583006) tEnd=0.526050901 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526050901 (0.986407638,5.00339794) tEnd=0.526051613 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526051613 (0.986402392,5.00340128) tEnd=0.547732168 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.547732168 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0 (-7,7) tEnd=0.998300955 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0.998300955 (0.986407638,5.00339794) tEnd=0.998382791 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0.998382791 (0.987062335,5.00323439) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=2 t=0.441853762 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0 [3] (1.70591938,3.38288999) tEnd=0.441853762 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=2 from=(1.50189435,4.63748884) to=(1.70591938,3.38288999)
path.moveTo(1.50189435,4.63748884);
path.cubicTo(2.22382402,4.01592445, 2.04853964,3.50851727, 1.70591938,3.38288999);
SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524348945 [32] (0.998959422,4.99582863) tEnd=0.524349463 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=2 span=30 windSum=?
SkOpSegment::markWinding id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.000963086711 [18] (0.999010324,4.99602461) tEnd=0.00101062542 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=1 span=18 windSum=1
SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.501700561 [22] (1.15735686,4.89566994) tEnd=0.524348945 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=2 span=22 windSum=-1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [1/29] next=2/35 sect=9/5 s=0.00101062542 [31] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
SkOpAngle::dumpOne [2/35] next=1/28 sect=17/17 s=0.524348945 [32] e=0.524349463 [30] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1
SkOpAngle::dumpOne [1/28] next=2/34 sect=25/25 s=0.00101062542 [31] e=0.000963086711 [18] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1
SkOpAngle::dumpOne [2/34] next=1/29 sect=1/1 s=0.524348945 [32] e=0.501700561 [22] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
SkOpSegment::activeOp id=2 t=0.524348945 tEnd=0.524349463 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::findNextOp chase.append segment=2 span=30 windSum=-2147483647
SkOpSegment::activeOp id=1 t=0.00101062542 tEnd=0.000963086711 op=sect miFrom=1 miTo=0 suFrom=1 suTo=1 result=1
SkOpSegment::findNextOp chase.append segment=1 span=18 windSum=1
SkOpSegment::activeOp id=2 t=0.524348945 tEnd=0.501700561 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::findNextOp chase.append segment=2 span=22 windSum=-1
SkOpSegment::markDone id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.00101062542 [31] (0.998959422,4.99582863) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[1] to:[2] start=3697004 end=3696812
bridgeOp current id=1 from=(1.70591938,3.38288999) to=(0.998959422,4.99582863)
path.cubicTo(1.29933083,3.23380756, 0.657089174,3.6223712, 0.998959422,4.99582863);
SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524349463 [30] (0.998957574,4.99583006) tEnd=0.526050901 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=2 span=33 windSum=?
SkOpSegment::markWinding id=6 (1,5 0,1) t=0.000993298772 [16] (0.999006689,4.99602699) tEnd=0.00104243869 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=6 span=16 windSum=-1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [2/36] next=6/24 sect=1/1 s=0.524349463 [30] e=0.524348945 [32] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1
SkOpAngle::dumpOne [6/24] next=2/37 sect=9/9 s=0.00104243869 [29] e=1 [12] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
SkOpAngle::dumpOne [2/37] next=6/23 sect=17/17 s=0.524349463 [30] e=0.526050901 [33] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [6/23] next=2/36 sect=25/25 s=0.00104243869 [29] e=0.000993298772 [16] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
SkOpSegment::activeOp id=6 t=0.00104243869 tEnd=1 op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::activeOp id=2 t=0.524349463 tEnd=0.526050901 op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524349463 [30] (0.998957574,4.99583006) tEnd=0.526050901 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=2 span=33 windSum=-2147483647
SkOpSegment::activeOp id=6 t=0.00104243869 tEnd=0.000993298772 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::findNextOp chase.append segment=6 span=16 windSum=-1
SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524348945 [32] (0.998959422,4.99582863) tEnd=0.524349463 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[2] to:[6] start=3696716 end=3695468
bridgeOp current id=2 from=(0.998959422,4.99582863) to=(0.998957574,4.99583006)
path.cubicTo(0.99895817,4.99582958, 0.998958826,4.99582911, 0.998957574,4.99583006);
SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.59493238 [15] (0.999006689,4.99602699) tEnd=0.596717201 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=25 windSum=?
SkOpSegment::markWinding id=6 (1,5 0,1) t=0 [11] (1,5) tEnd=0.000993298772 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=6 span=11 windSum=1
SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.594931837 [17] (0.999010324,4.99602461) tEnd=0.59493238 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=17 windSum=-1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [6/22] next=4/8 sect=9/9 s=0.000993298772 [16] e=0.00104243869 [29] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
SkOpAngle::dumpOne [4/8] next=6/21 sect=17/17 s=0.59493238 [15] e=0.596717201 [25] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=1 operand
SkOpAngle::dumpOne [6/21] next=4/7 sect=25/25 s=0.000993298772 [16] e=0 [11] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=1 operand
SkOpAngle::dumpOne [4/7] next=6/22 sect=1/1 s=0.59493238 [15] e=0.594931837 [17] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
SkOpSegment::activeOp id=4 t=0.59493238 tEnd=0.596717201 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::findNextOp chase.append segment=4 span=25 windSum=-2147483647
SkOpSegment::activeOp id=6 t=0.000993298772 tEnd=0 op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
SkOpSegment::findNextOp chase.append segment=6 span=11 windSum=1
SkOpSegment::activeOp id=4 t=0.59493238 tEnd=0.594931837 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::findNextOp chase.append segment=4 span=17 windSum=-1
SkOpSegment::markDone id=6 (1,5 0,1) t=0.000993298772 [16] (0.999006689,4.99602699) tEnd=0.00104243869 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[6] to:[4] start=3695372 end=3696332
bridgeOp current id=6 from=(0.998957574,4.99583006) to=(0.999006689,4.99602699)
SkOpSegment::markWinding id=3 (-7,7 1,5) t=0.998300955 [34] (0.986407638,5.00339794) tEnd=0.998382791 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=3 span=34 windSum=1
SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717201 [25] (0.987062335,5.00323439) tEnd=0.596717927 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=13 windSum=?
SkOpSegment::markWinding id=3 (-7,7 1,5) t=0.998382791 [26] (0.987062335,5.00323439) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=3 span=6
SkOpSegment::findNextOp
SkOpAngle::dumpOne [4/9] next=3/46 sect=1/1 s=0.596717201 [25] e=0.59493238 [15] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=1 operand
SkOpAngle::dumpOne [3/46] next=4/10 sect=17/17 s=0.998382791 [26] e=0.998300955 [34] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [4/10] next=3/47 sect=17/17 s=0.596717201 [25] e=0.596717927 [13] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 operand
SkOpAngle::dumpOne [3/47] next=4/9 sect=1/1 s=0.998382791 [26] e=1 [6] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=1
SkOpSegment::activeOp id=3 t=0.998382791 tEnd=0.998300955 op=sect miFrom=1 miTo=0 suFrom=0 suTo=0 result=0
SkOpSegment::markDone id=3 (-7,7 1,5) t=0.998300955 [34] (0.986407638,5.00339794) tEnd=0.998382791 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=3 span=34 windSum=1
SkOpSegment::activeOp id=4 t=0.596717201 tEnd=0.596717927 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717201 [25] (0.987062335,5.00323439) tEnd=0.596717927 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=4 span=13 windSum=-2147483647
SkOpSegment::activeOp id=3 t=0.998382791 tEnd=1 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::findNextOp chase.append segment=3 span=6
SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.59493238 [15] (0.999006689,4.99602699) tEnd=0.596717201 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[4] to:[3] start=3696428 end=3694284
bridgeOp current id=4 from=(0.999006689,4.99602699) to=(0.987062335,5.00323439)
path.lineTo(0.999006689,4.99602699);
path.cubicTo(0.995030105,4.99843454, 0.991048634,5.00083685, 0.987062335,5.00323439);
SkOpSegment::markWinding id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998123104 [14] (0.987057447,5.00323725) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=5 span=14 windSum=1
SkOpSegment::markWinding id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0 [1] (1,5) tEnd=0.000963086711 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=1 span=18 windSum=1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [3/48] next=5/19 sect=17/17 s=1 [6] e=0.998382791 [26] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=1
SkOpAngle::dumpOne [5/19] next=1/25 sect=17/17 s=1 [10] e=0.998123104 [14] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0 operand
SkOpAngle::dumpOne [1/25] next=6/20 sect=9/9 s=0 [1] e=0.000963086711 [18] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [6/20] next=3/48 sect=9/9 s=0 [11] e=0.000993298772 [16] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=1 operand
SkOpSegment::activeOp id=5 t=1 tEnd=0.998123104 op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::markDone id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998123104 [14] (0.987057447,5.00323725) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=5 span=14 windSum=1
SkOpSegment::activeOp id=1 t=0 tEnd=0.000963086711 op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
SkOpSegment::markDone id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0 [1] (1,5) tEnd=0.000963086711 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
SkOpSegment::activeOp id=6 t=0 tEnd=0.000993298772 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::markDone id=3 (-7,7 1,5) t=0.998382791 [26] (0.987062335,5.00323439) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[3] to:[6] start=3694964 end=3695468
bridgeOp current id=3 from=(0.987062335,5.00323439) to=(1,5)
SkOpSegment::findNextOp
SkOpAngle::dumpOne [6/21] next=4/7 sect=25/25 s=0.000993298772 [16] e=0 [11] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=1 operand
SkOpAngle::dumpOne [4/7] next=6/22 sect=1/1 s=0.59493238 [15] e=0.594931837 [17] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
SkOpAngle::dumpOne [6/22] next=4/8 sect=9/9 s=0.000993298772 [16] e=0.00104243869 [29] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 done operand
SkOpAngle::dumpOne [4/8] next=6/21 sect=17/17 s=0.59493238 [15] e=0.596717201 [25] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=1 done operand
SkOpSegment::activeOp id=4 t=0.59493238 tEnd=0.594931837 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::activeOp id=6 t=0.000993298772 tEnd=0.00104243869 op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
SkOpSegment::activeOp id=4 t=0.59493238 tEnd=0.596717201 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::markDone id=6 (1,5 0,1) t=0 [11] (1,5) tEnd=0.000993298772 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[6] to:[4] start=3695372 end=3695564
bridgeOp current id=6 from=(1,5) to=(0.999006689,4.99602699)
path.lineTo(1,5);
SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.570807669 [21] (1.15735686,4.89566994) tEnd=0.594931837 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=21 windSum=-1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [4/6] next=1/26 sect=17/17 s=0.594931837 [17] e=0.59493238 [15] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
SkOpAngle::dumpOne [1/26] next=4/5 sect=25/25 s=0.000963086711 [18] e=0 [1] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
SkOpAngle::dumpOne [4/5] next=1/27 sect=1/1 s=0.594931837 [17] e=0.570807669 [21] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
SkOpAngle::dumpOne [1/27] next=4/6 sect=9/9 s=0.000963086711 [18] e=0.00101062542 [31] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1
SkOpSegment::activeOp id=1 t=0.000963086711 tEnd=0 op=sect miFrom=1 miTo=0 suFrom=0 suTo=0 result=0
SkOpSegment::activeOp id=4 t=0.594931837 tEnd=0.570807669 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.570807669 [21] (1.15735686,4.89566994) tEnd=0.594931837 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp chase.append segment=4 span=21 windSum=-1
SkOpSegment::activeOp id=1 t=0.000963086711 tEnd=0.00101062542 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.594931837 [17] (0.999010324,4.99602461) tEnd=0.59493238 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[4] to:[1] start=3695660 end=3696908
bridgeOp current id=4 from=(0.999006689,4.99602699) to=(0.999010324,4.99602461)
path.lineTo(0.999006689,4.99602699);
path.cubicTo(0.999007881,4.99602604, 0.999009132,4.99602556, 0.999010324,4.99602461);
SkOpSegment::findNextOp
SkOpAngle::dumpOne [1/28] next=2/34 sect=25/25 s=0.00101062542 [31] e=0.000963086711 [18] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1
SkOpAngle::dumpOne [2/34] next=1/29 sect=1/1 s=0.524348945 [32] e=0.501700561 [22] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
SkOpAngle::dumpOne [1/29] next=2/35 sect=9/5 s=0.00101062542 [31] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
SkOpAngle::dumpOne [2/35] next=1/28 sect=17/17 s=0.524348945 [32] e=0.524349463 [30] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 done
SkOpSegment::activeOp id=2 t=0.524348945 tEnd=0.501700561 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::activeOp id=1 t=0.00101062542 tEnd=1 op=sect miFrom=1 miTo=0 suFrom=1 suTo=1 result=1
SkOpSegment::activeOp id=2 t=0.524348945 tEnd=0.524349463 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::markDone id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.000963086711 [18] (0.999010324,4.99602461) tEnd=0.00101062542 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[1] to:[2] start=3697004 end=3696044
bridgeOp current id=1 from=(0.999010324,4.99602461) to=(0.998959422,4.99582863)
path.cubicTo(0.998994052,4.99595928, 0.998975694,4.99589396, 0.998959422,4.99582863);
SkOpSegment::findNextOp
SkOpAngle::dumpOne [2/33] next=4/4 sect=17/17 s=0.501700561 [22] e=0.524348945 [32] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
SkOpAngle::dumpOne [4/4] next=2/32 sect=17/17 s=0.570807669 [21] e=0.594931837 [17] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
SkOpAngle::dumpOne [2/32] next=4/3 sect=1/1 s=0.501700561 [22] e=0.441853762 [20] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [4/3] next=2/33 sect=1/1 s=0.570807669 [21] e=0.51391312 [19] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
SkOpSegment::activeOp id=4 t=0.570807669 tEnd=0.594931837 op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::activeOp id=2 t=0.501700561 tEnd=0.441853762 op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.441853762 [20] (1.50189435,4.63748884) tEnd=0.501700561 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::activeOp id=4 t=0.570807669 tEnd=0.51391312 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.501700561 [22] (1.15735686,4.89566994) tEnd=0.524348945 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[2] to:[4] start=3695948 end=3695756
bridgeOp current id=2 from=(0.998959422,4.99582863) to=(1.15735686,4.89566994)
path.cubicTo(1.0544405,4.96226168, 1.10720813,4.92886353, 1.15735686,4.89566994);
SkOpSegment::findNextOp
SkOpAngle::dumpOne [4/2] next=2/31 sect=17/17 s=0.51391312 [19] e=0.570807669 [21] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [2/31] next=4/1 sect=17/17 s=0.441853762 [20] e=0.501700561 [22] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
SkOpAngle::dumpOne [4/1] next=2/30 sect=1/9 s=0.51391312 [19] e=0 [7] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
SkOpAngle::dumpOne [2/30] next=4/2 sect=1/5 s=0.441853762 [20] e=0 [3] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
SkOpSegment::activeOp id=2 t=0.441853762 tEnd=0.501700561 op=sect miFrom=1 miTo=0 suFrom=0 suTo=0 result=0
SkOpSegment::activeOp id=4 t=0.51391312 tEnd=0 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::nextChase mismatched signs
SkOpSegment::activeOp id=2 t=0.441853762 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.51391312 [19] (1.50189435,4.63748884) tEnd=0.570807669 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[4] to:[2] start=3695852 end=3693972
bridgeOp current id=4 from=(1.15735686,4.89566994) to=(1.50189435,4.63748884)
path.cubicTo(1.27938318,4.81463385, 1.39520502,4.72855091, 1.50189435,4.63748884);
path.close();
SkOpSegment::markWinding id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998028054 [27] (0.986402392,5.00340128) tEnd=0.998123104 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=5 span=27 windSum=1
SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717927 [13] (0.987057447,5.00323725) tEnd=0.621522123 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=23 windSum=?
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717927 (0.987057447,5.00323725) tEnd=0.621522123 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 (-1.40665555,5.83952332) tEnd=0.998028054 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998028054 (0.986402392,5.00340128) tEnd=0.998123104 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526050901 (0.986407638,5.00339794) tEnd=0.526051613 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526051613 (0.986402392,5.00340128) tEnd=0.547732168 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.547732168 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0 (-7,7) tEnd=0.998300955 windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=5 t=0.998123104 tEnd=0.998028054 op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
SkOpSegment::markDone id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998028054 [27] (0.986402392,5.00340128) tEnd=0.998123104 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
bridgeOp chase.append id=5 windSum=1
SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526050901 [33] (0.986407638,5.00339794) tEnd=0.526051613 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=2 span=33 windSum=-1
SkOpSegment::markWinding id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 [9] (-1.40665555,5.83952332) tEnd=0.998028054 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 [23] (0.818326533,5.10029507) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=4 span=23 windSum=1
SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526051613 [28] (0.986402392,5.00340128) tEnd=0.547732168 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=2 span=24 windSum=?
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717927 (0.987057447,5.00323725) tEnd=0.621522123 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 (0.818326533,5.10029507) tEnd=1 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 (-1.40665555,5.83952332) tEnd=0.998028054 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526050901 (0.986407638,5.00339794) tEnd=0.526051613 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526051613 (0.986402392,5.00340128) tEnd=0.547732168 windSum=-1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.547732168 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0 (-7,7) tEnd=0.998300955 windSum=? windValue=1 oppValue=0
SkOpSegment::activeOp id=2 t=0.526051613 tEnd=0.526050901 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::markWinding id=3 (-7,7 1,5) t=0 [5] (-7,7) tEnd=0.998300955 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.547732168 [24] (0.818326533,5.10029507) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
SkOpSegment::markAngle last segment=2 span=24 windSum=-1
SkOpSegment::findNextOp
SkOpAngle::dumpOne [2/39] next=3/45 sect=17/17 s=0.526050901 [33] e=0.526051613 [28] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1
SkOpAngle::dumpOne [3/45] next=2/38 sect=1/1 s=0.998300955 [34] e=0.998382791 [26] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
SkOpAngle::dumpOne [2/38] next=3/44 sect=1/1 s=0.526050901 [33] e=0.524349463 [30] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
SkOpAngle::dumpOne [3/44] next=2/39 sect=17/17 s=0.998300955 [34] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpSegment::activeOp id=3 t=0.998300955 tEnd=0.998382791 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::activeOp id=2 t=0.526050901 tEnd=0.524349463 op=sect miFrom=1 miTo=0 suFrom=1 suTo=1 result=1
SkOpSegment::activeOp id=3 t=0.998300955 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::findNextOp chase.append segment=2 span=24 windSum=-1
SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526050901 [33] (0.986407638,5.00339794) tEnd=0.526051613 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[2] to:[3] start=3697196 end=3694188
bridgeOp current id=2 from=(0.986402392,5.00340128) to=(0.986407638,5.00339794)
path.moveTo(0.986402392,5.00340128);
path.cubicTo(0.986404121,5.00340033, 0.986405909,5.0033989, 0.986407638,5.00339794);
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=3 (-7,7 1,5) t=0 [5] (-7,7) tEnd=0.998300955 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
bridgeOp current id=3 from=(0.986407638,5.00339794) to=(-7,7)
SkOpSegment::findNextOp
SkOpAngle::dumpOne [2/43] next=4/13 sect=17/17 s=0.547732168 [24] e=1 [4] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [4/13] next=2/42 sect=1/1 s=0.621522123 [23] e=0.596717927 [13] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0 operand
SkOpAngle::dumpOne [2/42] next=4/14 sect=1/1 s=0.547732168 [24] e=0.526051613 [28] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [4/14] next=2/43 sect=17/17 s=0.621522123 [23] e=1 [8] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
SkOpSegment::activeOp id=4 t=0.621522123 tEnd=0.596717927 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717927 [13] (0.987057447,5.00323725) tEnd=0.621522123 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
SkOpSegment::activeOp id=2 t=0.547732168 tEnd=0.526051613 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::activeOp id=4 t=0.621522123 tEnd=1 op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.547732168 [24] (0.818326533,5.10029507) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[2] to:[2] start=3696236 end=3696620
bridgeOp current id=2 from=(-7,7) to=(0.818326533,5.10029507)
path.lineTo(-7,7);
path.cubicTo(-2.74884105,6.50567913, -0.403636068,5.77677965, 0.818326533,5.10029507);
SkOpSegment::findNextOp
SkOpAngle::dumpOne [2/41] next=5/16 sect=17/17 s=0.526051613 [28] e=0.547732168 [24] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
SkOpAngle::dumpOne [5/16] next=2/40 sect=1/1 s=0.998028054 [27] e=0.998123104 [14] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done operand
SkOpAngle::dumpOne [2/40] next=5/15 sect=1/1 s=0.526051613 [28] e=0.526050901 [33] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 done
SkOpAngle::dumpOne [5/15] next=2/41 sect=17/17 s=0.998028054 [27] e=0 [9] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
SkOpSegment::activeOp id=5 t=0.998028054 tEnd=0.998123104 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::activeOp id=2 t=0.526051613 tEnd=0.526050901 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::activeOp id=5 t=0.998028054 tEnd=0 op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526051613 [28] (0.986402392,5.00340128) tEnd=0.547732168 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[2] to:[2] start=3696620 end=3697100
bridgeOp current id=2 from=(0.818326533,5.10029507) to=(0.986402392,5.00340128)
path.cubicTo(0.876904249,5.06786633, 0.932900846,5.03555775, 0.986402392,5.00340128);
path.close();
SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 (0.818326533,5.10029507) tEnd=1 windSum=1 windValue=1 oppValue=0
SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 (-1.40665555,5.83952332) tEnd=0.998028054 windSum=1 windValue=1 oppValue=0
SkOpSegment::activeOp id=4 t=0.621522123 tEnd=1 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
SkOpSegment::findNextOp simple
SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 [23] (0.818326533,5.10029507) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
bridgeOp current id=4 from=(0.818326533,5.10029507) to=(-1.40665555,5.83952332)
path.moveTo(0.818326533,5.10029507);
path.cubicTo(-0.0515338294,5.57917166, -1.08048022,5.8321104, -1.40665555,5.83952332);
SkOpSegment::findNextOp
SkOpAngle::dumpOne [5/15] next=2/41 sect=17/17 s=0.998028054 [27] e=0 [9] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
SkOpAngle::dumpOne [2/41] next=5/16 sect=17/17 s=0.526051613 [28] e=0.547732168 [24] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
SkOpAngle::dumpOne [5/16] next=2/40 sect=1/1 s=0.998028054 [27] e=0.998123104 [14] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done operand
SkOpAngle::dumpOne [2/40] next=5/15 sect=1/1 s=0.526051613 [28] e=0.526050901 [33] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 done
SkOpSegment::activeOp id=2 t=0.526051613 tEnd=0.547732168 op=sect miFrom=1 miTo=0 suFrom=0 suTo=0 result=0
SkOpSegment::activeOp id=5 t=0.998028054 tEnd=0.998123104 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
SkOpSegment::activeOp id=2 t=0.526051613 tEnd=0.526050901 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
SkOpSegment::markDone id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 [9] (-1.40665555,5.83952332) tEnd=0.998028054 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
SkOpSegment::findNextOp from:[5] to:[2] start=3696620 end=3697100
bridgeOp current id=5 from=(-1.40665555,5.83952332) to=(0.986402392,5.00340128)
path.cubicTo(-1.75417423,5.84742165, -1.30394065,5.57661104, 0.986402392,5.00340128);
</div>
<div id="loop15">
seg=1 {{{2, 6}, {1.65952897f, 4.63811588f}, {2.14982176f, 4.28087616f}, {2.47761083f, 4.44151449f}}}
seg=2 {{{2.47761083f, 4.44151449f}, {3.11257339f, 4.75268841f}, {3.13775873f, 7.00713778f}, {-4.66666651f, 7.66666651f}}}
seg=3 {{{-4.66666651f, 7.66666651f}, {2, 6}}}
seg=4 {{{1, 2}, {5.36990452f, 5.30695486f}, {0.700912476f, 6.77265263f}, {-0.0185294151f, 6.75294161f}}}
seg=5 {{{-0.0185294151f, 6.75294161f}, {-0.314340472f, 6.74483728f}, {0.057554245f, 6.48561144f}, {2, 6}}}
seg=6 {{{2, 6}, {1, 2}}}
SkOpSegment::findTop id=6 s=0.00507799291 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="loop14">
seg=1 {{{1, 6}, {0.659528971f, 4.63811588f}, {1.14982188f, 4.28087616f}, {1.47761095f, 4.44151449f}}}
seg=2 {{{1.47761095f, 4.44151449f}, {2.11257339f, 4.75268793f}, {2.13775921f, 7.00713778f}, {-5.66666651f, 7.66666651f}}}
seg=3 {{{-5.66666651f, 7.66666651f}, {1, 6}}}
seg=4 {{{0, 2}, {4.36990452f, 5.30695486f}, {-0.299087524f, 6.77265263f}, {-1.01852942f, 6.75294161f}}}
seg=5 {{{-1.01852942f, 6.75294161f}, {-1.31434047f, 6.74483728f}, {-0.942445755f, 6.48561144f}, {1, 6}}}
seg=6 {{{1, 6}, {0, 2}}}
SkOpSegment::findTop id=6 s=0.00507799945 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="loop13">
seg=1 {{{1, 5}, {0.659528852f, 3.63811541f}, {1.149822f, 3.28087616f}, {1.47761106f, 3.44151473f}}}
seg=2 {{{1.47761106f, 3.44151473f}, {2.11257339f, 3.75268865f}, {2.13775826f, 6.00713778f}, {-5.66666651f, 6.66666651f}}}
seg=3 {{{-5.66666651f, 6.66666651f}, {1, 5}}}
seg=4 {{{0, 1}, {4.36990452f, 4.30695486f}, {-0.299087524f, 5.77265263f}, {-1.01852942f, 5.75294161f}}}
seg=5 {{{-1.01852942f, 5.75294161f}, {-1.31434047f, 5.74483728f}, {-0.942445755f, 5.48561144f}, {1, 5}}}
seg=6 {{{1, 5}, {0, 1}}}
SkOpSegment::findTop id=6 s=0.00507799266 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="loop12">
seg=1 {{{1, 2}, {0.555084825f, 3.7796607f}, {-0.318720877f, 4.30564117f}, {-0.315034658f, 4.31186438f}}}
seg=2 {{{-0.315034658f, 4.31186438f}, {-0.310435653f, 4.31962824f}, {1.06002736f, 3.51836181f}, {6.33333349f, 3.33333349f}}}
seg=3 {{{6.33333349f, 3.33333349f}, {1, 2}}}
seg=4 {{{0, 6}, {-1.59502935f, 4.82471514f}, {0.0235646963f, 4.15684462f}, {1.34154034f, 3.61301661f}}}
seg=5 {{{1.34154034f, 3.61301661f}, {2.64018726f, 3.07716417f}, {3.64696836f, 2.66174221f}, {1, 2}}}
seg=6 {{{1, 2}, {0, 6}}}
SkOpSegment::findTop id=1 s=1 e=0 cw=0 swap=1 inflections=1 monotonic=1
</div>
<div id="cubicOp132">
seg=1 {{{5, 6}, {3.38059044f, 4.38059044f}, {3.07242441f, 1.44993687f}, {3.01378202f, 1.45492136f}}}
seg=2 {{{3.01378202f, 1.45492136f}, {3, 1.45609283f}, {3, 1.61940968f}, {3, 2}}}
seg=3 {{{3, 2}, {5, 6}}}
seg=4 {{{0, 3}, {0.763932049f, 3}, {1.81966019f, 3.29179597f}, {2.72135973f, 3.54101968f}}}
seg=5 {{{2.72135973f, 3.54101968f}, {4.18033981f, 3.9442718f}, {5.23606777f, 4.23606777f}, {4, 3}}}
seg=6 {{{4, 3}, {0, 3}}}
SkOpSegment::findTop id=1 s=0.617509 e=1 cw=1 swap=0 inflections=1 monotonic=0
</div>
<div id="loop11">
seg=1 {{{0, 1}, {0.320388377f, 1.64077675f}, {0.247290015f, 1.90517497f}, {0.191798091f, 1.89185679f}}}
seg=2 {{{0.191798091f, 1.89185679f}, {0.0740879625f, 1.86360621f}, {0.0355987549f, 0.585760415f}, {4, -1}}}
seg=3 {{{4, -1}, {0, 1}}}
seg=4 {{{1, 3}, {-1.0564518f, 1.79032254f}, {1.45265341f, 0.229448318f}, {1.45381773f, 0.22913377f}}}
seg=5 {{{1.45381773f, 0.22913377f}, {1.45425761f, 0.229014933f}, {1.0967741f, 0.451612949f}, {0, 1}}}
seg=6 {{{0, 1}, {1, 3}}}
SkOpSegment::findTop id=2 s=0.721621552 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="loop10">
seg=1 {{{5, 6}, {3.44873571f, 4.44873571f}, {2.4990766f, 3.4990766f}, {1.64551306f, 3.57876182f}}}
seg=2 {{{1.64551306f, 3.57876182f}, {0.298127174f, 3.70454836f}, {-0.809808373f, 6.39524937f}, {-3.66666651f, 13.333334f}}}
seg=3 {{{-3.66666651f, 13.333334f}, {5, 6}}}
seg=4 {{{1, 2}, {1, 2}, {-3.66666651f, 13.333334f}, {5, 6}}}
seg=5 {{{5, 6}, {1, 2}}}
SkOpSegment::findTop id=4 s=0.366025384 e=0 cw=1 swap=0 inflections=1 monotonic=1
</div>
<div id="circlesOp3">
seg=1 {{{{2, 1}, {2, -1}, {0, -1}}}, 0.707106769f}
seg=2 {{{{0, -1}, {-2, -1}, {-2, 1}}}, 0.707106769f}
seg=3 {{{{-2, 1}, {-2, 3}, {0, 3}}}, 0.707106769f}
seg=4 {{{{0, 3}, {2, 3}, {2, 1}}}, 0.707106769f}
seg=5 {{{{6, 5}, {6, 8}, {3, 8}}}, 0.707106769f}
seg=6 {{{{3, 8}, {0, 8}, {0, 5}}}, 0.707106769f}
seg=7 {{{{0, 5}, {0, 2}, {3, 2}}}, 0.707106769f}
seg=8 {{{{3, 2}, {6, 2}, {6, 5}}}, 0.707106769f}
SkOpSegment::findTop id=2 s=1 e=0 cw=1 swap=0 inflections=0 monotonic=1
SkOpSegment::findTop id=7 s=0 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="loop9">
seg=1 {{{0, 1}, {0.294448644f, 1.58889723f}, {0.198747262f, 1.7442944f}, {0.0660428554f, 1.65340209f}}}
seg=2 {{{0.0660428554f, 1.65340209f}, {-0.251940489f, 1.43560803f}, {-0.782382965f, -0.196299091f}, {3.33333325f, -0.666666627f}}}
seg=3 {{{3.33333325f, -0.666666627f}, {0, 1}}}
seg=4 {{{1, 3}, {-1.22353387f, 1.09411383f}, {0.319867611f, 0.12996155f}, {0.886705518f, 0.107543148f}}}
seg=5 {{{0.886705518f, 0.107543148f}, {1.21211064f, 0.0946733952f}, {1.21568203f, 0.392158985f}, {0, 1}}}
seg=6 {{{0, 1}, {1, 3}}}
SkOpSegment::findTop id=2 s=0.481221389 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="loop8">
seg=1 {{{0, 1}, {0.307691187f, 1.92307353f}, {0.0631181896f, 2.19920897f}, {-0.13654758f, 2.10514426f}}}
seg=2 {{{-0.13654758f, 2.10514426f}, {-0.585797966f, 1.89349782f}, {-0.807703257f, -0.192306399f}, {6, -1}}}
seg=3 {{{6, -1}, {0, 1}}}
seg=4 {{{1, 4}, {-2.25000453f, 1.42241001f}, {1.1314013f, 0.0505309105f}, {1.87140274f, 0.0363764353f}}}
seg=5 {{{1.87140274f, 0.0363764353f}, {2.23191476f, 0.0294806957f}, {1.96551132f, 0.344829559f}, {0, 1}}}
seg=6 {{{0, 1}, {1, 4}}}
SkOpSegment::findTop id=2 s=0.471276477 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="rects5">
seg=1 {{{5, 5}, {6, 5}}}
seg=2 {{{6, 5}, {6, 6}}}
seg=3 {{{6, 6}, {5, 6}}}
seg=4 {{{5, 6}, {5, 5}}}
seg=5 {{{5, 5}, {6, 5}}}
seg=6 {{{6, 5}, {6, 6}}}
seg=7 {{{6, 6}, {5, 6}}}
seg=8 {{{5, 6}, {5, 5}}}
seg=9 {{{0, 0}, {6, 0}}}
seg=10 {{{6, 0}, {6, 6}}}
seg=11 {{{6, 6}, {0, 6}}}
seg=12 {{{0, 6}, {0, 0}}}
seg=13 {{{5, 5}, {6, 5}}}
seg=14 {{{6, 5}, {6, 6}}}
seg=15 {{{6, 6}, {5, 6}}}
seg=16 {{{5, 6}, {5, 5}}}
SkOpSegment::findTop id=12 s=0 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
SkOpSegment::findTop id=16 s=0 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="loop7">
seg=1 {{{0, 1}, {0.824406445f, 1.82440639f}, {1.12019932f, 2.1201992f}, {1.31279516f, 2.06377077f}}}
seg=2 {{{1.31279516f, 2.06377077f}, {1.82105184f, 1.91485715f}, {1.6106205f, -0.687005401f}, {8.5f, -2.5f}}}
seg=3 {{{8.5f, -2.5f}, {0, 1}}}
seg=4 {{{3, 4}, {0.333333254f, 1.33333325f}, {3.66666675f, -0.666666746f}, {3.66666651f, -0.666666567f}}}
seg=5 {{{3.66666651f, -0.666666567f}, {3.66666651f, -0.666666508f}, {2.83333302f, -0.166666508f}, {0, 1}}}
seg=6 {{{0, 1}, {3, 4}}}
SkOpSegment::findTop id=2 s=0.655266494 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp130a">
seg=1 {{{5, 6}, {4.30769253f, 5.68047333f}, {3.61538434f, 3.44378686f}}}
seg=2 {{{3.61538434f, 3.44378686f}, {2.80769205f, 0.69970417f}, {2, 1}}}
seg=3 {{{2, 1}, {5, 6}}}
seg=4 {{{5, 6}, {1.16057944f, 2.50466418f}, {3.69335032f, 3.61631155f}}}
seg=5 {{{3.69335032f, 3.61631155f}, {5.779459f, 4.49557161f}, {6, 4}}}
seg=6 {{{6, 4}, {5, 6}}}
SkOpSegment::findTop id=2 s=0 e=1 cw=0 swap=1 inflections=0 monotonic=0
</div>
<div id="rRect1x">
seg=1 {{{{20.6499996f, 5.6500001f}, {20.6499996f, 1.13611996f}, {25.1403999f, 0.649999976f}}}, 0.888487995f}
seg=2 {{{25.1403999f, 0.649999976f}, {25.6499996f, 0.649999976f}}}
seg=3 {{{25.6499996f, 0.649999976f}, {26.1595993f, 0.676039994f}}}
seg=4 {{{{26.1595993f, 0.676039994f}, {30.6499996f, 1.13611996f}, {30.6499996f, 5.6500001f}}}, 0.888487995f}
seg=5 {{{30.6499996f, 5.6500001f}, {30.6499996f, 25.6499996f}}}
seg=6 {{{{30.6499996f, 25.6499996f}, {30.6499996f, 20.6499996f}, {25.6499996f, 20.6499996f}}}, 0.707107008f}
seg=7 {{{25.6499996f, 20.6499996f}, {20.6499996f, 20.6499996f}}}
seg=8 {{{20.6499996f, 20.6499996f}, {20.6499996f, 5.6500001f}}}
seg=9 {{{20.6499996f, 20.6499996f}, {5.6500001f, 20.6499996f}}}
seg=10 {{{{5.6500001f, 20.6499996f}, {0.649999976f, 20.6499996f}, {0.649999976f, 25.6499996f}}}, 0.707107008f}
seg=11 {{{0.649999976f, 25.6499996f}, {0.649999976f, 45.6500015f}}}
seg=12 {{{{0.649999976f, 45.6500015f}, {0.649999976f, 50.6500015f}, {5.6500001f, 50.6500015f}}}, 0.707107008f}
seg=13 {{{5.6500001f, 50.6500015f}, {25.6499996f, 50.6500015f}}}
seg=14 {{{{25.6499996f, 50.6500015f}, {30.6499996f, 50.6500015f}, {30.6499996f, 45.6500015f}}}, 0.707107008f}
seg=15 {{{30.6499996f, 45.6500015f}, {30.6499996f, 25.6499996f}}}
seg=16 {{{{30.6499996f, 25.6499996f}, {30.6499996f, 30.6499996f}, {25.6499996f, 30.6499996f}}}, 0.707107008f}
seg=17 {{{{25.6499996f, 30.6499996f}, {20.6499996f, 30.6499996f}, {20.6499996f, 25.6499996f}}}, 0.707107008f}
seg=18 {{{20.6499996f, 25.6499996f}, {20.6499996f, 20.6499996f}}}
seg=19 {{{20.6499996f, 45.6500015f}, {20.6499996f, 25.6499996f}}}
seg=20 {{{{20.6499996f, 25.6499996f}, {20.6499996f, 20.6499996f}, {25.6499996f, 20.6499996f}}}, 0.707107008f}
seg=21 {{{25.6499996f, 20.6499996f}, {45.6500015f, 20.6499996f}}}
seg=22 {{{{45.6500015f, 20.6499996f}, {50.6500015f, 20.6499996f}, {50.6500015f, 25.6499996f}}}, 0.707107008f}
seg=23 {{{50.6500015f, 25.6499996f}, {50.6500015f, 45.6500015f}}}
seg=24 {{{{50.6500015f, 45.6500015f}, {50.6500015f, 50.6500015f}, {45.6500015f, 50.6500015f}}}, 0.707107008f}
seg=25 {{{45.6500015f, 50.6500015f}, {25.6499996f, 50.6500015f}}}
seg=26 {{{{25.6499996f, 50.6500015f}, {20.6499996f, 50.6500015f}, {20.6499996f, 45.6500015f}}}, 0.707107008f}
SkOpSegment::findTop id=1 s=0 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="circlesOp2">
seg=1 {{{{4, 1}, {4, -3}, {0, -3}}}, 0.707106769f}
seg=2 {{{{0, -3}, {-4, -3}, {-4, 1}}}, 0.707106769f}
seg=3 {{{{-4, 1}, {-4, 5}, {0, 5}}}, 0.707106769f}
seg=4 {{{{0, 5}, {4, 5}, {4, 1}}}, 0.707106769f}
seg=5 {{{{3, 4}, {3, 7}, {0, 7}}}, 0.707106769f}
seg=6 {{{{0, 7}, {-3, 7}, {-3, 4}}}, 0.707106769f}
seg=7 {{{{-3, 4}, {-3, 1}, {0, 1}}}, 0.707106769f}
seg=8 {{{{0, 1}, {3, 1}, {3, 4}}}, 0.707106769f}
SkOpSegment::findTop id=2 s=1 e=0 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="circlesOp1">
seg=1 {{{{2, 1}, {2, -1}, {0, -1}}}, 0.707106769f}
seg=2 {{{{0, -1}, {-2, -1}, {-2, 1}}}, 0.707106769f}
seg=3 {{{{-2, 1}, {-2, 3}, {0, 3}}}, 0.707106769f}
seg=4 {{{{0, 3}, {2, 3}, {2, 1}}}, 0.707106769f}
seg=5 {{{{1, 1}, {1, 2}, {0, 2}}}, 0.707106769f}
seg=6 {{{{0, 2}, {-1, 2}, {-1, 1}}}, 0.707106769f}
seg=7 {{{{-1, 1}, {-1, 0}, {0, 0}}}, 0.707106769f}
seg=8 {{{{0, 0}, {1, 0}, {1, 1}}}, 0.707106769f}
SkOpSegment::findTop id=2 s=1 e=0 cw=1 swap=0 inflections=0 monotonic=1
SkOpSegment::findTop id=7 s=0 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp131">
seg=1 {{{0, 1}, {1.59338665f, 2.59338665f}, {2.34047961f, 2.21208811f}, {3.14026093f, 1.80389869f}}}
seg=2 {{{3.14026093f, 1.80389869f}, {3.84629369f, 1.44355631f}, {4.59338665f, 1.06225777f}, {6, 2}}}
seg=3 {{{6, 2}, {0, 1}}}
seg=4 {{{0, 3}, {0.936749876f, 4.40512466f}, {1.21537447f, 3.83587384f}, {1.55512238f, 3.14174342f}}}
seg=5 {{{1.55512238f, 3.14174342f}, {1.94075036f, 2.35387659f}, {2.40512466f, 1.40512478f}, {4, 3}}}
seg=6 {{{4, 3}, {0, 3}}}
SkOpSegment::findTop id=1 s=1 e=0 cw=1 swap=0 inflections=1 monotonic=0
SkOpSegment::findTop id=5 s=0.0594875287 e=1 cw=1 swap=0 inflections=0 monotonic=0
</div>
<div id="cubicOp130">
seg=1 {{{5, 6}, {4.53846169f, 6}, {4.07692289f, 4.72189331f}, {3.61538434f, 3.44378686f}}}
seg=2 {{{3.61538434f, 3.44378686f}, {3.07692289f, 1.95266271f}, {2.53846145f, 0.461538464f}, {2, 1}}}
seg=3 {{{2, 1}, {5, 6}}}
seg=4 {{{0, 3}, {0.538927794f, 2.46107221f}, {2.23962831f, 3.08391714f}, {3.69335032f, 3.61631155f}}}
seg=5 {{{3.69335032f, 3.61631155f}, {4.93706226f, 4.07179403f}, {6, 4.46107197f}, {6, 4}}}
seg=6 {{{6, 4}, {0, 3}}}
SkOpSegment::findTop id=2 s=0 e=1 cw=0 swap=1 inflections=1 monotonic=0
</div>
<div id="cubicOp129">
seg=1 {{{5, 6}, {3.75592899f, 4.75592899f}, {2.89878607f, 2.73800159f}, {2.42857146f, 1.63099933f}}}
seg=2 {{{2.42857146f, 1.63099933f}, {2.14285707f, 0.958356798f}, {2, 0.622035503f}, {2, 1}}}
seg=3 {{{2, 1}, {5, 6}}}
seg=4 {{{0, 2}, {0.394448727f, 2}, {1.41125667f, 2.46676946f}, {2.37532973f, 2.90933061f}}}
seg=5 {{{2.37532973f, 2.90933061f}, {3.85535884f, 3.58874345f}, {5.21110249f, 4.21110249f}, {4, 3}}}
seg=6 {{{4, 3}, {0, 2}}}
SkOpSegment::findTop id=2 s=0 e=1 cw=0 swap=1 inflections=1 monotonic=0
</div>
<div id="cubicOp128">
seg=1 {{{0, 1}, {0, 2.5f}, {1.6875f, 2.3125f}, {3.375f, 2.125f}}}
seg=2 {{{3.375f, 2.125f}, {3.9375f, 2.0625f}, {4.5f, 2}, {5, 2}}}
seg=3 {{{5, 2}, {0, 1}}}
seg=4 {{{2, 3}, {2, 3.68301272f}, {1.88337338f, 3.54963923f}, {1.80943513f, 3.07782435f}}}
seg=5 {{{1.80943513f, 3.07782435f}, {1.66686702f, 2.16806936f}, {1.68301272f, 0}, {3, 0}}}
seg=6 {{{3, 0}, {2, 3}}}
SkOpSegment::findTop id=5 s=0.458125233 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp127">
seg=1 {{{0, 1}, {1, 5}, {6, 0}, {3, 0}}}
seg=2 {{{3, 0}, {0, 1}}}
seg=3 {{{0, 6}, {8.60313773e-013f, 5.99999571f}}}
seg=4 {{{0, 5.99999571f}, {0, 2.99999666f}, {1.00000215f, 0}, {5, 1}}}
seg=5 {{{5, 1}, {0, 6}}}
SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="cubicOp126">
seg=1 {{{0, 1}, {0, 2.11686611f}, {1.87108481f, 1.67449486f}, {2.82691956f, 1.24019969f}}}
seg=2 {{{2.82691956f, 1.24019969f}, {3.58272195f, 0.896791577f}, {3.76626778f, 0.558433056f}, {2, 1}}}
seg=3 {{{2, 1}, {0, 1}}}
seg=4 {{{0, 6}, {0.183503419f, 5.26598644f}, {0.333333343f, 4.59931993f}, {0.468027353f, 4}}}
seg=5 {{{0.468027353f, 4}, {1.06734705f, 1.33333337f}, {1.36700678f, 0}, {3, 0}}}
seg=6 {{{3, 0}, {0, 6}}}
SkOpSegment::findTop id=5 s=0.50000003 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp125">
seg=1 {{{0, 1}, {1.78887355f, 3.9814558f}, {2.51105762f, 3.40727997f}, {3.4386673f, 2.66977954f}}}
seg=2 {{{3.4386673f, 2.66977954f}, {4.06668949f, 2.17046738f}, {4.78887367f, 1.59629118f}, {6, 2}}}
seg=3 {{{6, 2}, {0, 1}}}
seg=4 {{{1, 3}, {1.38379598f, 4.15138769f}, {1.47299325f, 3.97708178f}, {1.71985495f, 3.49467373f}}}
seg=5 {{{1.71985495f, 3.49467373f}, {2.11620402f, 2.7201426f}, {2.91897964f, 1.15138781f}, {6, 3}}}
seg=6 {{{6, 3}, {1, 3}}}
SkOpSegment::findTop id=1 s=0.361627626 e=0 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp124">
seg=1 {{{0, 1}, {1, 5}, {6, 0}, {3, 0}}}
seg=2 {{{3, 0}, {0, 1}}}
seg=3 {{{0, 6}, {8.60313773e-013f, 5.99999571f}}}
seg=4 {{{0, 5.99999571f}, {0, 2.99999666f}, {1.00000215f, 0}, {5, 1}}}
seg=5 {{{5, 1}, {0, 6}}}
SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="loop6">
seg=1 {{{0, 1}, {0.392703831f, 1.78540766f}, {0.219947904f, 2.05676103f}, {0.218561709f, 2.05630541f}}}
seg=2 {{{0.218561709f, 2.05630541f}, {0.216418028f, 2.05560064f}, {0.624105453f, 1.40486407f}, {4.16666651f, 1.00000012f}}}
seg=3 {{{4.16666651f, 1.00000012f}, {0, 1}}}
seg=4 {{{1, 3}, {-0.401122808f, 2.29943848f}, {0.544325948f, 1.78292203f}, {1.15289307f, 1.45045042f}}}
seg=5 {{{1.15289307f, 1.45045042f}, {1.70257246f, 1.15015018f}, {1.97741222f, 1}, {0, 1}}}
seg=6 {{{0, 1}, {1, 3}}}
SkOpSegment::findTop id=1 s=0.924875102 e=0 cw=0 swap=0 inflections=0 monotonic=1
</div>
<div id="loop5">
seg=1 {{{0, 2}, {1, 2}, {1, 1.66666663f}, {0.833333313f, 1.33333325f}}}
seg=2 {{{0.833333313f, 1.33333325f}, {0, 2}}}
seg=3 {{{1, 2}, {1, 1.66666663f}, {0.833333313f, 1.33333325f}, {0, 2}}}
seg=4 {{{0, 2}, {1, 2}}}
SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="cubicOp123">
seg=1 {{{0, 1}, {0.541499972f, 3.16599989f}, {1.08299994f, 2.69299984f}, {2.10083938f, 1.80391729f}}}
seg=2 {{{2.10083938f, 1.80391729f}, {2.96266651f, 1.05111134f}, {4.16599989f, 0}, {6, 0}}}
seg=3 {{{6, 0}, {0, 1}}}
seg=4 {{{0, 2}, {0, 3.81689167f}, {0.206318453f, 3.57059884f}, {0.806384504f, 2.85426903f}}}
seg=5 {{{0.806384504f, 2.85426903f}, {1.52740121f, 1.99355423f}, {2.81689167f, 0.454222918f}, {5, 1}}}
seg=6 {{{5, 1}, {0, 2}}}
SkOpSegment::findTop id=2 s=0.699168961 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp122">
seg=1 {{{0, 1}, {2.36543417f, 4.15391207f}, {3.48747301f, 2.3342433f}, {3.85631156f, 0.933137774f}}}
seg=2 {{{3.85631156f, 0.933137774f}, {3.95525837f, 0.55726862f}, {4, 0.211521983f}, {4, 0}}}
seg=3 {{{4, 0}, {0, 1}}}
seg=4 {{{1, 4}, {0.608183205f, 4}, {0.523407221f, 3.38591838f}, {0.805823922f, 2.81942582f}}}
seg=5 {{{0.805823922f, 2.81942582f}, {1.24419475f, 1.94010842f}, {2.56726718f, 1.17545033f}, {5, 3}}}
seg=6 {{{5, 3}, {1, 4}}}
SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="cubicOp121">
seg=1 {{{0, 1}, {1.90192389f, 2.90192389f}, {2.59807634f, 2.79422879f}, {3.1076951f, 2.71539044f}}}
seg=2 {{{3.1076951f, 2.71539044f}, {3.40192366f, 2.669873f}, {3.63397455f, 2.63397455f}, {4, 3}}}
seg=3 {{{4, 3}, {0, 1}}}
seg=4 {{{2, 3}, {2.36602545f, 3.36602545f}, {2.330127f, 3.06217766f}, {2.28460979f, 2.67691422f}}}
seg=5 {{{2.28460979f, 2.67691422f}, {2.20577145f, 2.00961876f}, {2.09807634f, 1.09807622f}, {4, 3}}}
seg=6 {{{4, 3}, {2, 3}}}
SkOpSegment::findTop id=1 s=0.577350301 e=0 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp120">
seg=1 {{{0, 1}, {1.30277562f, 2.95416355f}, {1.75693905f, 2.36249042f}, {2.46804166f, 1.43608332f}}}
seg=2 {{{2.46804166f, 1.43608332f}, {2.84861231f, 0.940285206f}, {3.30277562f, 0.348612189f}, {4, 0}}}
seg=3 {{{4, 0}, {0, 1}}}
seg=4 {{{1, 2}, {0.75f, 2.5f}, {0.625f, 2.625f}, {0.625f, 2.5625f}}}
seg=5 {{{0.625f, 2.5625f}, {0.625f, 2.375f}, {1.75f, 0.5f}, {4, 2}}}
seg=6 {{{4, 2}, {1, 2}}}
SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="cubicOp119">
seg=1 {{{0, 1}, {2, 3.66666675f}, {2.22222209f, 2.77777767f}, {2.44444442f, 1.88888884f}}}
seg=2 {{{2.44444442f, 1.88888884f}, {2.55555558f, 1.44444442f}, {2.66666675f, 1}, {3, 1}}}
seg=3 {{{3, 1}, {0, 1}}}
seg=4 {{{1, 2}, {1, 2.15061641f}, {1, 2.21049166f}, {1.01366711f, 2.21379328f}}}
seg=5 {{{1.01366711f, 2.21379328f}, {1.09074128f, 2.23241305f}, {1.60246587f, 0.451849401f}, {5, 3}}}
seg=6 {{{5, 3}, {1, 2}}}
SkOpSegment::findTop id=1 s=0.202188199 e=0 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="loop4">
seg=1 {{{0, 5}, {1, 5}, {1, 4}, {0.833333313f, 3}}}
seg=2 {{{0.833333313f, 3}, {0, 5}}}
seg=3 {{{1, 5}, {1, 4}, {0.833333313f, 3}, {0, 5}}}
seg=4 {{{0, 5}, {1, 5}}}
SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="loop3">
seg=1 {{{0, 1}, {0.821109116f, 2.09481215f}, {0.918055832f, 2.51540422f}, {0.916212499f, 2.51465869f}}}
seg=2 {{{0.916212499f, 2.51465869f}, {0.911321044f, 2.51268077f}, {0.210793018f, -0.456171691f}, {10.5f, -1.66666651f}}}
seg=3 {{{10.5f, -1.66666651f}, {0, 1}}}
seg=4 {{{3, 5}, {-1.52495909f, 1.60628057f}, {3.54785824f, -0.251794577f}, {3.99093199f, -0.261532843f}}}
seg=5 {{{3.99093199f, -0.261532843f}, {4.20064306f, -0.26614207f}, {3.37318897f, 0.143317103f}, {0, 1}}}
seg=6 {{{0, 1}, {3, 5}}}
SkOpSegment::findTop id=2 s=0.705435785 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="loop2">
seg=1 {{{0, 1}, {1.67274892f, 2.67274904f}, {2.4128015f, 3.4128015f}, {3.00024128f, 3.30683374f}}}
seg=2 {{{3.00024128f, 3.30683374f}, {3.46634817f, 3.22275305f}, {3.83637452f, 2.60604262f}, {4.5f, 1.5f}}}
seg=3 {{{4.5f, 1.5f}, {0, 1}}}
seg=4 {{{3, 4}, {3, 4}, {4.5f, 1.5f}, {0, 1}}}
seg=5 {{{0, 1}, {3, 4}}}
SkOpSegment::findTop id=1 s=0.000717644924 e=0 cw=0 swap=0 inflections=0 monotonic=1
</div>
<div id="loop1asQuad">
seg=1 {{{0, 1}, {0.252181143f, 2.2899034f}, {-0.139477089f, 2.87209582f}}}
seg=2 {{{-0.139477089f, 2.87209582f}, {-0.933131516f, 3.75277662f}, {-0.4629125f, 3.49947596f}}}
seg=3 {{{-0.4629125f, 3.49947596f}, {-0.097509779f, 3.12475419f}, {8.83333302f, 2.33333349f}}}
seg=4 {{{8.83333302f, 2.33333349f}, {0, 1}}}
seg=5 {{{1, 5}, {-2.5842278f, 3.81228638f}, {1.17642736f, 2.92531323f}}}
seg=6 {{{1.17642736f, 2.92531323f}, {5.29706097f, 1.99295568f}, {0, 1}}}
seg=7 {{{0, 1}, {1, 5}}}
SkOpSegment::findTop id=1 s=1 e=0 cw=0 swap=0 inflections=0 monotonic=1
</div>
<div id="loop1">
seg=1 {{{0, 1}, {0.461014599f, 2.84405851f}, {-0.707401514f, 3.48375487f}, {-0.680115759f, 3.53963876f}}}
seg=2 {{{-0.680115759f, 3.53963876f}, {-0.648215175f, 3.60497427f}, {1.01804495f, 2.87231898f}, {8.83333302f, 2.33333349f}}}
seg=3 {{{8.83333302f, 2.33333349f}, {0, 1}}}
seg=4 {{{1, 5}, {-2.24405169f, 4.18898726f}, {-0.476109624f, 3.53583241f}, {1.17642748f, 2.92531323f}}}
seg=5 {{{1.17642748f, 2.92531323f}, {2.91992569f, 2.28118896f}, {4.53496456f, 1.68452311f}, {0, 1}}}
seg=6 {{{0, 1}, {1, 5}}}
SkOpSegment::findTop id=1 s=1 e=0 cw=0 swap=0 inflections=1 monotonic=1
</div>
<div id="issue3517">
seg=1 {{{31.3500004f, 57.75f}, {31.5277309f, 57.7495461f}, {31.7054615f, 57.7540665f}, {31.8831921f, 57.7585831f}}}
seg=2 {{{31.8831921f, 57.7585831f}, {32.2554626f, 57.7680473f}, {32.6277313f, 57.7775116f}, {33, 57.7412987f}}}
seg=3 {{{33, 57.7412987f}, {33.2959328f, 57.712513f}, {33.5918655f, 57.6452522f}, {33.8877983f, 57.5779915f}}}
seg=4 {{{33.8877983f, 57.5779915f}, {34.1418648f, 57.5202446f}, {34.3959312f, 57.4624977f}, {34.6500015f, 57.4291f}}}
seg=5 {{{34.6500015f, 57.4291f}, {35.2000008f, 57.3568993f}, {35.75f, 57.3223f}, {36.2999992f, 57.3078995f}}}
seg=6 {{{36.2999992f, 57.3078995f}, {36.8499985f, 57.293499f}, {37.4000015f, 57.3143005f}, {37.9500008f, 57.3428001f}}}
seg=7 {{{37.9500008f, 57.3428001f}, {38.5f, 57.3712006f}, {39.0499992f, 57.4112015f}, {39.5999985f, 57.4785995f}}}
seg=8 {{{39.5999985f, 57.4785995f}, {39.8435669f, 57.5084496f}, {40.0871315f, 57.5558472f}, {40.3306961f, 57.6032486f}}}
seg=9 {{{40.3306961f, 57.6032486f}, {40.6371307f, 57.6628838f}, {40.9435654f, 57.7225189f}, {41.25f, 57.7472f}}}
seg=10 {{{41.25f, 57.7472f}, {41.7999992f, 57.7915993f}, {42.3499985f, 57.7961998f}, {42.9000015f, 57.7444992f}}}
seg=11 {{{42.9000015f, 57.7444992f}, {43.2496109f, 57.7116356f}, {43.5992203f, 57.6357002f}, {43.9488297f, 57.5597649f}}}
seg=12 {{{43.9488297f, 57.5597649f}, {44.1492195f, 57.5162392f}, {44.3496094f, 57.4727173f}, {44.5499992f, 57.4373016f}}}
seg=13 {{{44.5499992f, 57.4373016f}, {44.7069931f, 57.4095268f}, {44.8639908f, 57.3792114f}, {45.0209846f, 57.348896f}}}
seg=14 {{{45.0209846f, 57.348896f}, {45.41399f, 57.2730026f}, {45.8069954f, 57.197113f}, {46.2000008f, 57.1610985f}}}
seg=15 {{{46.2000008f, 57.1610985f}, {46.60075f, 57.1243744f}, {47.0014992f, 57.1284256f}, {47.4022484f, 57.1324768f}}}
seg=16 {{{47.4022484f, 57.1324768f}, {47.5514984f, 57.1339874f}, {47.7007484f, 57.135498f}, {47.8499985f, 57.1348991f}}}
seg=17 {{{47.8499985f, 57.1348991f}, {48.2035446f, 57.1334877f}, {48.5570869f, 57.1376495f}, {48.9106293f, 57.1418114f}}}
seg=18 {{{48.9106293f, 57.1418114f}, {49.1070862f, 57.1441269f}, {49.3035431f, 57.1464424f}, {49.5f, 57.1478004f}}}
seg=19 {{{49.5f, 57.1478004f}, {50.0499992f, 57.1515999f}, {50.5999985f, 57.1553001f}, {51.1500015f, 57.1579018f}}}
seg=20 {{{51.1500015f, 57.1579018f}, {51.3961868f, 57.1590652f}, {51.6423721f, 57.159626f}, {51.8885574f, 57.1601868f}}}
seg=21 {{{51.8885574f, 57.1601868f}, {52.1923714f, 57.160881f}, {52.4961853f, 57.1615753f}, {52.7999992f, 57.1633987f}}}
seg=22 {{{52.7999992f, 57.1633987f}, {53.1410751f, 57.1654434f}, {53.4821548f, 57.1686859f}, {53.8232307f, 57.1719246f}}}
seg=23 {{{53.8232307f, 57.1719246f}, {54.0321541f, 57.1739082f}, {54.2410774f, 57.1758919f}, {54.4500008f, 57.1776009f}}}
seg=24 {{{54.4500008f, 57.1776009f}, {54.624424f, 57.178997f}, {54.7988472f, 57.1809158f}, {54.9732704f, 57.1828346f}}}
seg=25 {{{54.9732704f, 57.1828346f}, {55.3488464f, 57.1869621f}, {55.7244225f, 57.1910934f}, {56.0999985f, 57.1899986f}}}
seg=26 {{{56.0999985f, 57.1899986f}, {56.6262779f, 57.1884689f}, {57.1525536f, 57.1788826f}, {57.6788292f, 57.1692924f}}}
seg=27 {{{57.6788292f, 57.1692924f}, {57.75f, 57.1679993f}}}
seg=28 {{{57.75f, 57.1679993f}, {57.9838562f, 57.1637497f}, {58.2177124f, 57.157238f}, {58.4515724f, 57.1507263f}}}
seg=29 {{{58.4515724f, 57.1507263f}, {58.7677155f, 57.141922f}, {59.0838585f, 57.1331215f}, {59.4000015f, 57.1299019f}}}
seg=30 {{{59.4000015f, 57.1299019f}, {59.7474785f, 57.1263618f}, {60.0949554f, 57.1288528f}, {60.4424324f, 57.1313438f}}}
seg=31 {{{60.4424324f, 57.1313438f}, {60.6449547f, 57.1327934f}, {60.847477f, 57.134243f}, {61.0499992f, 57.1344986f}}}
seg=32 {{{61.0499992f, 57.1344986f}, {61.2477646f, 57.1347504f}, {61.4455299f, 57.1334648f}, {61.6432953f, 57.1321793f}}}
seg=33 {{{61.6432953f, 57.1321793f}, {61.9955292f, 57.1298866f}, {62.3477669f, 57.127594f}, {62.7000008f, 57.1339989f}}}
seg=34 {{{62.7000008f, 57.1339989f}, {63.0998077f, 57.1413422f}, {63.4996147f, 57.1586723f}, {63.8994217f, 57.1760025f}}}
seg=35 {{{63.8994217f, 57.1760025f}, {64.049614f, 57.1825104f}, {64.1998062f, 57.1890182f}, {64.3499985f, 57.1949997f}}}
seg=36 {{{64.3499985f, 57.1949997f}, {64.5562439f, 57.2032127f}, {64.7624893f, 57.2134476f}, {64.9687347f, 57.2236862f}}}
seg=37 {{{64.9687347f, 57.2236862f}, {65.3124924f, 57.2407494f}, {65.6562424f, 57.2578125f}, {66, 57.2654991f}}}
seg=38 {{{66, 57.2654991f}, {66.3287354f, 57.2728539f}, {66.6574707f, 57.2711296f}, {66.9862061f, 57.2694092f}}}
seg=39 {{{66.9862061f, 57.2694092f}, {67.2074738f, 57.2682495f}, {67.4287338f, 57.2670898f}, {67.6500015f, 57.2686996f}}}
seg=40 {{{67.6500015f, 57.2686996f}, {67.7921829f, 57.2697601f}, {67.9343643f, 57.2701569f}, {68.0765457f, 57.2705536f}}}
seg=41 {{{68.0765457f, 57.2705536f}, {68.4843597f, 57.271698f}, {68.8921814f, 57.2728424f}, {69.3000031f, 57.2896004f}}}
seg=42 {{{69.3000031f, 57.2896004f}, {69.62323f, 57.3028793f}, {69.9464645f, 57.3286667f}, {70.2696915f, 57.3544502f}}}
seg=43 {{{70.2696915f, 57.3544502f}, {70.49646f, 57.3725395f}, {70.7232285f, 57.3906288f}, {70.9499969f, 57.4043999f}}}
seg=44 {{{70.9499969f, 57.4043999f}, {71.5f, 57.4376984f}, {72.0500031f, 57.4668007f}, {72.5999985f, 57.4896011f}}}
seg=45 {{{72.5999985f, 57.4896011f}, {72.7172928f, 57.494442f}, {72.8345871f, 57.4997368f}, {72.9518814f, 57.5050316f}}}
seg=46 {{{72.9518814f, 57.5050316f}, {73.3845901f, 57.5245667f}, {73.8172913f, 57.5441017f}, {74.25f, 57.5407982f}}}
seg=47 {{{74.25f, 57.5407982f}, {74.8000031f, 57.536499f}, {75.3499985f, 57.5068016f}, {75.9000015f, 57.4640999f}}}
seg=48 {{{75.9000015f, 57.4640999f}, {76.1685486f, 57.443203f}, {76.4370956f, 57.4094048f}, {76.7056427f, 57.3756104f}}}
seg=49 {{{76.7056427f, 57.3756104f}, {76.9870911f, 57.3401909f}, {77.2685471f, 57.3047714f}, {77.5500031f, 57.2841988f}}}
seg=50 {{{77.5500031f, 57.2841988f}, {78.0999985f, 57.2439995f}, {78.6500015f, 57.216301f}, {79.1999969f, 57.2228012f}}}
seg=51 {{{79.1999969f, 57.2228012f}, {79.5648727f, 57.2271118f}, {79.9297485f, 57.2552795f}, {80.2946167f, 57.2834473f}}}
seg=52 {{{80.2946167f, 57.2834473f}, {80.479744f, 57.2977371f}, {80.6648712f, 57.312027f}, {80.8499985f, 57.3232002f}}}
seg=53 {{{80.8499985f, 57.3232002f}, {81.0279541f, 57.3339081f}, {81.2059097f, 57.3453102f}, {81.3838654f, 57.3567123f}}}
seg=54 {{{81.3838654f, 57.3567123f}, {81.7559128f, 57.3805466f}, {82.1279526f, 57.4043808f}, {82.5f, 57.4219017f}}}
seg=55 {{{82.5f, 57.4219017f}, {83.0500031f, 57.4477997f}, {83.5999985f, 57.4636993f}, {84.1500015f, 57.4786987f}}}
seg=56 {{{84.1500015f, 57.4786987f}, {84.5231628f, 57.4888763f}, {84.8963242f, 57.4955521f}, {85.2694855f, 57.5022316f}}}
seg=57 {{{85.2694855f, 57.5022316f}, {85.4463196f, 57.5053978f}, {85.6231613f, 57.508564f}, {85.8000031f, 57.5121002f}}}
seg=58 {{{85.8000031f, 57.5121002f}, {85.9800262f, 57.515667f}, {86.1600571f, 57.5200043f}, {86.3400803f, 57.5243416f}}}
seg=59 {{{86.3400803f, 57.5243416f}, {86.7100525f, 57.5332603f}, {87.0800247f, 57.5421791f}, {87.4499969f, 57.5443993f}}}
seg=60 {{{87.4499969f, 57.5443993f}, {87.5730286f, 57.5451355f}, {87.6960602f, 57.5466385f}, {87.8190918f, 57.5481415f}}}
seg=61 {{{87.8190918f, 57.5481415f}, {88.2460632f, 57.5533638f}, {88.6730347f, 57.5585823f}, {89.0999985f, 57.5317993f}}}
seg=62 {{{89.0999985f, 57.5317993f}, {89.3298035f, 57.5173416f}, {89.5596085f, 57.4766998f}, {89.7894135f, 57.4360542f}}}
seg=63 {{{89.7894135f, 57.4360542f}, {90.1096115f, 57.379425f}, {90.4298019f, 57.3227959f}, {90.75f, 57.3370018f}}}
seg=64 {{{90.75f, 57.3370018f}, {91.0554504f, 57.3504982f}, {91.3609009f, 57.4328346f}, {91.6663513f, 57.5151711f}}}
seg=65 {{{91.6663513f, 57.5151711f}, {91.9109039f, 57.581089f}, {92.1554489f, 57.6470108f}, {92.4000015f, 57.6776009f}}}
seg=66 {{{92.4000015f, 57.6776009f}, {92.8340607f, 57.7319756f}, {93.2681274f, 57.7380829f}, {93.7021942f, 57.7441902f}}}
seg=67 {{{93.7021942f, 57.7441902f}, {93.8181305f, 57.7458191f}, {93.9340668f, 57.747448f}, {94.0500031f, 57.75f}}}
seg=68 {{{94.0500031f, 57.75f}, {94.4166641f, 57.7580681f}, {94.7833328f, 57.7553787f}, {95.1499939f, 57.7526894f}}}
seg=69 {{{95.1499939f, 57.7526894f}, {95.3333282f, 57.7513428f}, {95.5166626f, 57.75f}, {95.6999969f, 57.75f}}}
seg=70 {{{95.6999969f, 57.75f}, {31.3500004f, 57.75f}}}
seg=71 {{{31.3500004f, 57.75f}, {31.5277309f, 57.7504539f}, {31.7054615f, 57.7459335f}, {31.8831921f, 57.7414169f}}}
seg=72 {{{31.8831921f, 57.7414169f}, {32.2554626f, 57.7319527f}, {32.6277313f, 57.7224884f}, {33, 57.7587013f}}}
seg=73 {{{33, 57.7587013f}, {33.2959328f, 57.787487f}, {33.5918655f, 57.8547478f}, {33.8877983f, 57.9220085f}}}
seg=74 {{{33.8877983f, 57.9220085f}, {34.1418648f, 57.9797554f}, {34.3959312f, 58.0375023f}, {34.6500015f, 58.0709f}}}
seg=75 {{{34.6500015f, 58.0709f}, {35.2000008f, 58.1431007f}, {35.75f, 58.1777f}, {36.2999992f, 58.1921005f}}}
seg=76 {{{36.2999992f, 58.1921005f}, {36.8499985f, 58.206501f}, {37.4000015f, 58.1856995f}, {37.9500008f, 58.1571999f}}}
seg=77 {{{37.9500008f, 58.1571999f}, {38.5f, 58.1287994f}, {39.0499992f, 58.0887985f}, {39.5999985f, 58.0214005f}}}
seg=78 {{{39.5999985f, 58.0214005f}, {39.8435669f, 57.9915504f}, {40.0871315f, 57.9441528f}, {40.3306961f, 57.8967514f}}}
seg=79 {{{40.3306961f, 57.8967514f}, {40.6371307f, 57.8371162f}, {40.9435654f, 57.7774811f}, {41.25f, 57.7528f}}}
seg=80 {{{41.25f, 57.7528f}, {41.7999992f, 57.7084007f}, {42.3499985f, 57.7038002f}, {42.9000015f, 57.7555008f}}}
seg=81 {{{42.9000015f, 57.7555008f}, {43.2496109f, 57.7883644f}, {43.5992203f, 57.8642998f}, {43.9488297f, 57.9402351f}}}
seg=82 {{{43.9488297f, 57.9402351f}, {44.1492195f, 57.9837608f}, {44.3496094f, 58.0272827f}, {44.5499992f, 58.0626984f}}}
seg=83 {{{44.5499992f, 58.0626984f}, {44.7069931f, 58.0904732f}, {44.8639908f, 58.1207886f}, {45.0209846f, 58.151104f}}}
seg=84 {{{45.0209846f, 58.151104f}, {45.41399f, 58.2269974f}, {45.8069954f, 58.302887f}, {46.2000008f, 58.3389015f}}}
seg=85 {{{46.2000008f, 58.3389015f}, {46.60075f, 58.3756256f}, {47.0014992f, 58.3715744f}, {47.4022484f, 58.3675232f}}}
seg=86 {{{47.4022484f, 58.3675232f}, {47.5514984f, 58.3660126f}, {47.7007484f, 58.364502f}, {47.8499985f, 58.3651009f}}}
seg=87 {{{47.8499985f, 58.3651009f}, {48.2035446f, 58.3665123f}, {48.5570869f, 58.3623505f}, {48.9106293f, 58.3581886f}}}
seg=88 {{{48.9106293f, 58.3581886f}, {49.1070862f, 58.3558731f}, {49.3035431f, 58.3535576f}, {49.5f, 58.3521996f}}}
seg=89 {{{49.5f, 58.3521996f}, {50.0499992f, 58.3484001f}, {50.5999985f, 58.3446999f}, {51.1500015f, 58.3420982f}}}
seg=90 {{{51.1500015f, 58.3420982f}, {51.3961868f, 58.3409348f}, {51.6423721f, 58.340374f}, {51.8885574f, 58.3398132f}}}
seg=91 {{{51.8885574f, 58.3398132f}, {52.1923714f, 58.339119f}, {52.4961853f, 58.3384247f}, {52.7999992f, 58.3366013f}}}
seg=92 {{{52.7999992f, 58.3366013f}, {53.1410751f, 58.3345566f}, {53.4821548f, 58.3313141f}, {53.8232307f, 58.3280754f}}}
seg=93 {{{53.8232307f, 58.3280754f}, {54.0321541f, 58.3260918f}, {54.2410774f, 58.3241081f}, {54.4500008f, 58.3223991f}}}
seg=94 {{{54.4500008f, 58.3223991f}, {54.624424f, 58.321003f}, {54.7988472f, 58.3190842f}, {54.9732704f, 58.3171654f}}}
seg=95 {{{54.9732704f, 58.3171654f}, {55.3488464f, 58.3130379f}, {55.7244225f, 58.3089066f}, {56.0999985f, 58.3100014f}}}
seg=96 {{{56.0999985f, 58.3100014f}, {56.6262779f, 58.3115311f}, {57.1525536f, 58.3211174f}, {57.6788292f, 58.3307076f}}}
seg=97 {{{57.6788292f, 58.3307076f}, {57.75f, 58.3320007f}}}
seg=98 {{{57.75f, 58.3320007f}, {57.9838562f, 58.3362503f}, {58.2177124f, 58.342762f}, {58.4515724f, 58.3492737f}}}
seg=99 {{{58.4515724f, 58.3492737f}, {58.7677155f, 58.358078f}, {59.0838585f, 58.3668785f}, {59.4000015f, 58.3700981f}}}
seg=100 {{{59.4000015f, 58.3700981f}, {59.7474785f, 58.3736382f}, {60.0949554f, 58.3711472f}, {60.4424324f, 58.3686562f}}}
seg=101 {{{60.4424324f, 58.3686562f}, {60.6449547f, 58.3672066f}, {60.847477f, 58.365757f}, {61.0499992f, 58.3655014f}}}
seg=102 {{{61.0499992f, 58.3655014f}, {61.2477646f, 58.3652496f}, {61.4455299f, 58.3665352f}, {61.6432953f, 58.3678207f}}}
seg=103 {{{61.6432953f, 58.3678207f}, {61.9955292f, 58.3701134f}, {62.3477669f, 58.372406f}, {62.7000008f, 58.3660011f}}}
seg=104 {{{62.7000008f, 58.3660011f}, {63.0998077f, 58.3586578f}, {63.4996147f, 58.3413277f}, {63.8994217f, 58.3239975f}}}
seg=105 {{{63.8994217f, 58.3239975f}, {64.049614f, 58.3174896f}, {64.1998062f, 58.3109818f}, {64.3499985f, 58.3050003f}}}
seg=106 {{{64.3499985f, 58.3050003f}, {64.5562439f, 58.2967873f}, {64.7624893f, 58.2865524f}, {64.9687347f, 58.2763138f}}}
seg=107 {{{64.9687347f, 58.2763138f}, {65.3124924f, 58.2592506f}, {65.6562424f, 58.2421875f}, {66, 58.2345009f}}}
seg=108 {{{66, 58.2345009f}, {66.3287354f, 58.2271461f}, {66.6574707f, 58.2288704f}, {66.9862061f, 58.2305908f}}}
seg=109 {{{66.9862061f, 58.2305908f}, {67.2074738f, 58.2317505f}, {67.4287338f, 58.2329102f}, {67.6500015f, 58.2313004f}}}
seg=110 {{{67.6500015f, 58.2313004f}, {67.7921829f, 58.2302399f}, {67.9343643f, 58.2298431f}, {68.0765457f, 58.2294464f}}}
seg=111 {{{68.0765457f, 58.2294464f}, {68.4843597f, 58.228302f}, {68.8921814f, 58.2271576f}, {69.3000031f, 58.2103996f}}}
seg=112 {{{69.3000031f, 58.2103996f}, {69.62323f, 58.1971207f}, {69.9464645f, 58.1713333f}, {70.2696915f, 58.1455498f}}}
seg=113 {{{70.2696915f, 58.1455498f}, {70.49646f, 58.1274605f}, {70.7232285f, 58.1093712f}, {70.9499969f, 58.0956001f}}}
seg=114 {{{70.9499969f, 58.0956001f}, {71.5f, 58.0623016f}, {72.0500031f, 58.0331993f}, {72.5999985f, 58.0103989f}}}
seg=115 {{{72.5999985f, 58.0103989f}, {72.7172928f, 58.005558f}, {72.8345871f, 58.0002632f}, {72.9518814f, 57.9949684f}}}
seg=116 {{{72.9518814f, 57.9949684f}, {73.3845901f, 57.9754333f}, {73.8172913f, 57.9558983f}, {74.25f, 57.9592018f}}}
seg=117 {{{74.25f, 57.9592018f}, {74.8000031f, 57.963501f}, {75.3499985f, 57.9931984f}, {75.9000015f, 58.0359001f}}}
seg=118 {{{75.9000015f, 58.0359001f}, {76.1685486f, 58.056797f}, {76.4370956f, 58.0905952f}, {76.7056427f, 58.1243896f}}}
seg=119 {{{76.7056427f, 58.1243896f}, {76.9870911f, 58.1598091f}, {77.2685471f, 58.1952286f}, {77.5500031f, 58.2158012f}}}
seg=120 {{{77.5500031f, 58.2158012f}, {78.0999985f, 58.2560005f}, {78.6500015f, 58.283699f}, {79.1999969f, 58.2771988f}}}
seg=121 {{{79.1999969f, 58.2771988f}, {79.5648727f, 58.2728882f}, {79.9297485f, 58.2447205f}, {80.2946167f, 58.2165527f}}}
seg=122 {{{80.2946167f, 58.2165527f}, {80.479744f, 58.2022629f}, {80.6648712f, 58.187973f}, {80.8499985f, 58.1767998f}}}
seg=123 {{{80.8499985f, 58.1767998f}, {81.0279541f, 58.1660919f}, {81.2059097f, 58.1546898f}, {81.3838654f, 58.1432877f}}}
seg=124 {{{81.3838654f, 58.1432877f}, {81.7559128f, 58.1194534f}, {82.1279526f, 58.0956192f}, {82.5f, 58.0780983f}}}
seg=125 {{{82.5f, 58.0780983f}, {83.0500031f, 58.0522003f}, {83.5999985f, 58.0363007f}, {84.1500015f, 58.0213013f}}}
seg=126 {{{84.1500015f, 58.0213013f}, {84.5231628f, 58.0111237f}, {84.8963242f, 58.0044479f}, {85.2694855f, 57.9977684f}}}
seg=127 {{{85.2694855f, 57.9977684f}, {85.4463196f, 57.9946022f}, {85.6231613f, 57.991436f}, {85.8000031f, 57.9878998f}}}
seg=128 {{{85.8000031f, 57.9878998f}, {85.9800262f, 57.984333f}, {86.1600571f, 57.9799957f}, {86.3400803f, 57.9756584f}}}
seg=129 {{{86.3400803f, 57.9756584f}, {86.7100525f, 57.9667397f}, {87.0800247f, 57.9578209f}, {87.4499969f, 57.9556007f}}}
seg=130 {{{87.4499969f, 57.9556007f}, {87.5730286f, 57.9548645f}, {87.6960602f, 57.9533615f}, {87.8190918f, 57.9518585f}}}
seg=131 {{{87.8190918f, 57.9518585f}, {88.2460632f, 57.9466362f}, {88.6730347f, 57.9414177f}, {89.0999985f, 57.9682007f}}}
seg=132 {{{89.0999985f, 57.9682007f}, {89.3298035f, 57.9826584f}, {89.5596085f, 58.0233002f}, {89.7894135f, 58.0639458f}}}
seg=133 {{{89.7894135f, 58.0639458f}, {90.1096115f, 58.120575f}, {90.4298019f, 58.1772041f}, {90.75f, 58.1629982f}}}
seg=134 {{{90.75f, 58.1629982f}, {91.0554504f, 58.1495018f}, {91.3609009f, 58.0671654f}, {91.6663513f, 57.9848289f}}}
seg=135 {{{91.6663513f, 57.9848289f}, {91.9109039f, 57.918911f}, {92.1554489f, 57.8529892f}, {92.4000015f, 57.8223991f}}}
seg=136 {{{92.4000015f, 57.8223991f}, {92.8340607f, 57.7680244f}, {93.2681274f, 57.7619171f}, {93.7021942f, 57.7558098f}}}
seg=137 {{{93.7021942f, 57.7558098f}, {93.8181305f, 57.7541809f}, {93.9340668f, 57.752552f}, {94.0500031f, 57.75f}}}
seg=138 {{{94.0500031f, 57.75f}, {94.4166641f, 57.7419319f}, {94.7833328f, 57.7446213f}, {95.1499939f, 57.7473106f}}}
seg=139 {{{95.1499939f, 57.7473106f}, {95.3333282f, 57.7486572f}, {95.5166626f, 57.75f}, {95.6999969f, 57.75f}}}
seg=140 {{{95.6999969f, 57.75f}, {31.3500004f, 57.75f}}}
SkOpSegment::findTop id=30 s=0 e=1 cw=1 swap=0 inflections=1 monotonic=0
SkOpSegment::findTop id=1 s=0 e=0.0941555322 cw=1 swap=0 inflections=0 monotonic=0
</div>
<div id="cubicOp118">
seg=1 {{{0, 1}, {2.72052217f, 4.40065289f}, {4.05331135f, 3.17552996f}, {4.94220781f, 2.35844159f}}}
seg=2 {{{4.94220781f, 2.35844159f}, {5.36026096f, 1.97415996f}, {5.68013048f, 1.68013048f}, {6, 2}}}
seg=3 {{{6, 2}, {0, 1}}}
seg=4 {{{1, 5}, {1.31421423f, 5.31421423f}, {1.43096733f, 4.93731451f}, {1.59843969f, 4.39668417f}}}
seg=5 {{{1.59843969f, 4.39668417f}, {1.96395504f, 3.21673512f}, {2.57107115f, 1.2568568f}, {6, 4}}}
seg=6 {{{6, 4}, {1, 5}}}
SkOpSegment::findTop id=1 s=0.326039489 e=0 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp117">
seg=1 {{{0, 1}, {4, 5}, {6, 0}, {1, 0}}}
seg=2 {{{1, 0}, {0, 1}}}
seg=3 {{{0, 6}, {0, 1}, {1, 0}, {5, 4}}}
seg=4 {{{5, 4}, {0, 6}}}
SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="cubicOp116">
seg=1 {{{0, 1}, {4, 6}, {2, 0}, {2, 0}}}
seg=2 {{{2, 0}, {0, 1}}}
seg=3 {{{0, 2}, {0, 2}, {1, 0}, {6, 4}}}
seg=4 {{{6, 4}, {0, 2}}}
SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="testRect2">
seg=1 {{{0, 0}, {1, 0}}}
seg=2 {{{1, 0}, {1, 1}}}
seg=3 {{{1, 1}, {0, 1}}}
seg=4 {{{0, 1}, {0, 0}}}
seg=5 {{{4, 4}, {5, 4}}}
seg=6 {{{5, 4}, {5, 5}}}
seg=7 {{{5, 5}, {4, 5}}}
seg=8 {{{4, 5}, {4, 4}}}
seg=9 {{{0, 0}, {2, 0}}}
seg=10 {{{2, 0}, {2, 2}}}
seg=11 {{{2, 2}, {0, 2}}}
seg=12 {{{0, 2}, {0, 0}}}
seg=13 {{{0, 0}, {6, 0}}}
seg=14 {{{6, 0}, {6, 6}}}
seg=15 {{{6, 6}, {0, 6}}}
seg=16 {{{0, 6}, {0, 0}}}
SkOpSegment::findTop id=4 s=0 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
SkOpSegment::findTop id=10 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
SkOpSegment::findTop id=8 s=0 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="testRect1">
seg=1 {{{0, 0}, {0, 60}}}
seg=2 {{{0, 60}, {60, 60}}}
seg=3 {{{60, 60}, {60, 0}}}
seg=4 {{{60, 0}, {0, 0}}}
seg=5 {{{30, 20}, {30, 50}}}
seg=6 {{{30, 50}, {50, 50}}}
seg=7 {{{50, 50}, {50, 20}}}
seg=8 {{{50, 20}, {30, 20}}}
seg=9 {{{24, 20}, {24, 30}}}
seg=10 {{{24, 30}, {36, 30}}}
seg=11 {{{36, 30}, {36, 20}}}
seg=12 {{{36, 20}, {24, 20}}}
SkOpSegment::findTop id=1 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
SkOpSegment::findTop id=9 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="cubicOp115">
seg=1 {{{0, 1}, {1.61405063f, 2.61405063f}, {2.07025266f, 2.49132824f}, {2.61449003f, 2.34492373f}}}
seg=2 {{{2.61449003f, 2.34492373f}, {3.08181477f, 2.21920943f}, {3.61405063f, 2.07603359f}, {5, 3}}}
seg=3 {{{5, 3}, {0, 1}}}
seg=4 {{{1, 2}, {1.92116463f, 3.38174701f}, {1.99378502f, 3.0664053f}, {2.09721613f, 2.61727309f}}}
seg=5 {{{2.09721613f, 2.61727309f}, {2.21835113f, 2.09126544f}, {2.38174701f, 1.38174701f}, {4, 3}}}
seg=6 {{{4, 3}, {1, 2}}}
SkOpSegment::findTop id=1 s=0.326022598 e=0 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="issue2753">
seg=1 {{{142.701004f, 110.568001f}, {142.957001f, 100}}}
seg=2 {{{142.957001f, 100}, {153.835007f, 100}}}
seg=3 {{{153.835007f, 100}, {154.591995f, 108.188004f}}}
seg=4 {{{154.591995f, 108.188004f}, {154.591995f, 108.188004f}, {153.173004f, 108.483002f}, {152.830002f, 109.412003f}}}
seg=5 {{{152.830002f, 109.412003f}, {142.701004f, 110.568001f}}}
seg=6 {{{39, 124.000999f}, {50.5999985f, 117.000999f}}}
seg=7 {{{50.5999985f, 117.000999f}, {50.5999985f, 117.000999f}, {164.600998f, 85.1999969f}, {188.201004f, 117.600998f}}}
seg=8 {{{188.201004f, 117.600998f}, {188.201004f, 117.600998f}, {174.800995f, 93}, {39, 124.000999f}}}
SkOpSegment::findTop id=1 s=0.711321242 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="cubicOp114">
seg=1 {{{0, 1}, {0.414792418f, 1.82958484f}, {0.313426584f, 2.14301133f}, {0.373881191f, 2.17816687f}}}
seg=2 {{{0.373881191f, 2.17816687f}, {0.459173232f, 2.22776604f}, {0.866565943f, 1.72347176f}, {3.5f, 1.33333337f}}}
seg=3 {{{3.5f, 1.33333337f}, {0, 1}}}
seg=4 {{{1, 3}, {0.0426487327f, 2.5213244f}, {0.574644804f, 2.11902547f}, {1.00564098f, 1.79310346f}}}
seg=5 {{{1.00564098f, 1.79310346f}, {1.47503781f, 1.43814266f}, {1.82463527f, 1.17377484f}, {0, 1}}}
seg=6 {{{0, 1}, {1, 3}}}
SkOpSegment::findTop id=1 s=1 e=0 cw=0 swap=0 inflections=1 monotonic=1
</div>
<div id="issue2808">
seg=1 {{{509.203003f, 385.60199f}, {509.203003f, 415.688385f}, {487.928711f, 436.962708f}}}
seg=2 {{{487.928711f, 436.962708f}, {466.654388f, 458.237f}, {436.567993f, 458.237f}}}
seg=3 {{{436.567993f, 458.237f}, {406.481598f, 458.237f}, {385.207275f, 436.962708f}}}
seg=4 {{{385.207275f, 436.962708f}, {363.932983f, 415.688385f}, {363.932983f, 385.60199f}}}
seg=5 {{{363.932983f, 385.60199f}, {363.932983f, 355.515594f}, {385.207275f, 334.241272f}}}
seg=6 {{{385.207275f, 334.241272f}, {406.481598f, 312.96698f}, {436.567993f, 312.96698f}}}
seg=7 {{{436.567993f, 312.96698f}, {466.654388f, 312.96698f}, {487.928711f, 334.241272f}}}
seg=8 {{{487.928711f, 334.241272f}, {509.203003f, 355.515594f}, {509.203003f, 385.60199f}}}
seg=9 {{{449.033997f, 290.872986f}, {449.033997f, 301.028259f}, {441.853149f, 308.209106f}}}
seg=10 {{{441.853149f, 308.209106f}, {434.672272f, 315.389984f}, {424.516998f, 315.389984f}}}
seg=11 {{{424.516998f, 315.389984f}, {414.361725f, 315.389984f}, {407.180847f, 308.209106f}}}
seg=12 {{{407.180847f, 308.209106f}, {400, 301.028259f}, {400, 290.872986f}}}
seg=13 {{{400, 290.872986f}, {400, 280.717712f}, {407.180847f, 273.536865f}}}
seg=14 {{{407.180847f, 273.536865f}, {414.361725f, 266.355988f}, {424.516998f, 266.355988f}}}
seg=15 {{{424.516998f, 266.355988f}, {434.672272f, 266.355988f}, {441.853149f, 273.536865f}}}
seg=16 {{{441.853149f, 273.536865f}, {449.033997f, 280.717712f}, {449.033997f, 290.872986f}}}
SkOpSegment::findTop id=14 s=0 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp114asQuad">
seg=1 {{{0, 1}, {0.379368573f, 1.85681283f}, {0.345243573f, 2.06850648f}}}
seg=2 {{{0.345243573f, 2.06850648f}, {0.351496071f, 2.16414928f}, {0.373881161f, 2.1781671f}}}
seg=3 {{{0.373881161f, 2.1781671f}, {0.397930771f, 2.19363928f}, {0.51556462f, 2.12826824f}}}
seg=4 {{{0.51556462f, 2.12826824f}, {0.687509f, 2.01822186f}, {1.35475695f, 1.79181767f}}}
seg=5 {{{1.35475695f, 1.79181767f}, {2.02200508f, 1.56541348f}, {3.5f, 1.33333337f}}}
seg=6 {{{3.5f, 1.33333337f}, {0, 1}}}
seg=7 {{{1, 3}, {0.536049783f, 2.76066208f}, {0.480196089f, 2.54678321f}}}
seg=8 {{{0.480196089f, 2.54678321f}, {0.424342394f, 2.33290434f}, {0.59987992f, 2.14448452f}}}
seg=9 {{{0.59987992f, 2.14448452f}, {0.775417507f, 1.95606446f}, {1.00564098f, 1.79310346f}}}
seg=10 {{{1.00564098f, 1.79310346f}, {1.25936198f, 1.615623f}, {1.35901463f, 1.46834028f}}}
seg=11 {{{1.35901463f, 1.46834028f}, {1.45866716f, 1.32105756f}, {1.17598116f, 1.20397246f}}}
seg=12 {{{1.17598116f, 1.20397246f}, {0.893295109f, 1.08688736f}, {0, 1}}}
seg=13 {{{0, 1}, {1, 3}}}
SkOpSegment::findTop id=1 s=1 e=0 cw=0 swap=0 inflections=0 monotonic=1
</div>
<div id="rects4">
seg=1 {{{0, 0}, {1, 0}}}
seg=2 {{{1, 0}, {1, 1}}}
seg=3 {{{1, 1}, {0, 1}}}
seg=4 {{{0, 1}, {0, 0}}}
seg=5 {{{0, 0}, {2, 0}}}
seg=6 {{{2, 0}, {2, 2}}}
seg=7 {{{2, 2}, {0, 2}}}
seg=8 {{{0, 2}, {0, 0}}}
seg=9 {{{0, 0}, {2, 0}}}
seg=10 {{{2, 0}, {2, 2}}}
seg=11 {{{2, 2}, {0, 2}}}
seg=12 {{{0, 2}, {0, 0}}}
seg=13 {{{0, 0}, {3, 0}}}
seg=14 {{{3, 0}, {3, 3}}}
seg=15 {{{3, 3}, {0, 3}}}
seg=16 {{{0, 3}, {0, 0}}}
SkOpSegment::findTop id=16 s=0.666666667 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="rects3">
seg=1 {{{0, 0}, {1, 0}}}
seg=2 {{{1, 0}, {1, 1}}}
seg=3 {{{1, 1}, {0, 1}}}
seg=4 {{{0, 1}, {0, 0}}}
seg=5 {{{0, 0}, {4, 0}}}
seg=6 {{{4, 0}, {4, 4}}}
seg=7 {{{4, 4}, {0, 4}}}
seg=8 {{{0, 4}, {0, 0}}}
seg=9 {{{0, 0}, {2, 0}}}
seg=10 {{{2, 0}, {2, 2}}}
seg=11 {{{2, 2}, {0, 2}}}
seg=12 {{{0, 2}, {0, 0}}}
seg=13 {{{0, 0}, {2, 0}}}
seg=14 {{{2, 0}, {2, 2}}}
seg=15 {{{2, 2}, {0, 2}}}
seg=16 {{{0, 2}, {0, 0}}}
SkOpSegment::findTop id=16 s=0.5 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="rects2">
seg=1 {{{0, 0}, {4, 0}}}
seg=2 {{{4, 0}, {4, 4}}}
seg=3 {{{4, 4}, {0, 4}}}
seg=4 {{{0, 4}, {0, 0}}}
seg=5 {{{3, 3}, {4, 3}}}
seg=6 {{{4, 3}, {4, 4}}}
seg=7 {{{4, 4}, {3, 4}}}
seg=8 {{{3, 4}, {3, 3}}}
seg=9 {{{3, 3}, {6, 3}}}
seg=10 {{{6, 3}, {6, 6}}}
seg=11 {{{6, 6}, {3, 6}}}
seg=12 {{{3, 6}, {3, 3}}}
seg=13 {{{3, 3}, {4, 3}}}
seg=14 {{{4, 3}, {4, 4}}}
seg=15 {{{4, 4}, {3, 4}}}
seg=16 {{{3, 4}, {3, 3}}}
SkOpSegment::findTop id=4 s=0 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="rects1">
seg=1 {{{0, 0}, {1, 0}}}
seg=2 {{{1, 0}, {1, 1}}}
seg=3 {{{1, 1}, {0, 1}}}
seg=4 {{{0, 1}, {0, 0}}}
seg=5 {{{0, 0}, {6, 0}}}
seg=6 {{{6, 0}, {6, 6}}}
seg=7 {{{6, 6}, {0, 6}}}
seg=8 {{{0, 6}, {0, 0}}}
seg=9 {{{0, 0}, {1, 0}}}
seg=10 {{{1, 0}, {1, 1}}}
seg=11 {{{1, 1}, {0, 1}}}
seg=12 {{{0, 1}, {0, 0}}}
seg=13 {{{0, 0}, {2, 0}}}
seg=14 {{{2, 0}, {2, 2}}}
seg=15 {{{2, 2}, {0, 2}}}
seg=16 {{{0, 2}, {0, 0}}}
SkOpSegment::findTop id=10 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="issue2540">
seg=1 {{{26.5054989f, 85.7396011f}, {55.534996f, 51.539257f}, {52.9281731f, 55.838932f}, {42.6237564f, 68.9841232f}}}
seg=2 {{{42.6237564f, 68.9841232f}, {32.449646f, 81.963089f}, {14.7713947f, 103.565269f}, {12.6310005f, 105.247002f}}}
seg=3 {{{12.6310005f, 105.247002f}, {11.0819998f, 106.463997f}, {11.526f, 104.464996f}, {11.526f, 104.464996f}}}
seg=4 {{{11.526f, 104.464996f}, {23.1654987f, 89.7287979f}}}
seg=5 {{{23.1654987f, 89.7287979f}, {23.1654987f, 89.7287979f}, {-10.1713009f, 119.916f}, {-17.1620007f, 120.824997f}}}
seg=6 {{{-17.1620007f, 120.824997f}, {-19.1149998f, 121.079002f}, {-18.0380001f, 119.792992f}, {-18.0380001f, 119.792992f}}}
seg=7 {{{-18.0380001f, 119.792992f}, {-18.0380001f, 119.792992f}, {14.2210007f, 90.6070023f}, {26.5054989f, 85.7396011f}}}
seg=8 {{{-25.0779991f, 124.912003f}, {-25.0779991f, 124.912003f}, {-25.9509983f, 125.954002f}, {-24.3689995f, 125.748001f}}}
seg=9 {{{-24.3689995f, 125.748001f}, {-21.9028339f, 125.427361f}, {-18.6384659f, 122.25f}, {-14.3234777f, 118.050026f}}}
seg=10 {{{-14.3234777f, 118.050026f}, {-4.11791182f, 108.116493f}, {11.9647217f, 92.462532f}, {37.2640038f, 95.3540039f}}}
seg=11 {{{37.2640038f, 95.3540039f}, {37.2640038f, 95.3540039f}, {11.3710003f, 83.7339935f}, {-25.0779991f, 124.912003f}}}
SkOpSegment::findTop id=1 s=0 e=1 cw=1 swap=0 inflections=0 monotonic=0
</div>
<div id="issue2504">
seg=1 {{{34.2421875f, -5.97656298f}, {35.4531212f, 0}}}
seg=2 {{{35.4531212f, 0}, {31.9375f, 0}}}
seg=3 {{{31.9375f, 0}, {34.2421875f, -5.97656298f}}}
seg=4 {{{36.7184372f, 0.888650894f}, {36.7184372f, 0.888650894f}, {35.1233864f, 0.554015458f}, {34.5114098f, -0.115255356f}}}
seg=5 {{{34.5114098f, -0.115255356f}, {33.8994255f, -0.78452611f}, {34.5348434f, -5.67775536f}, {34.5348434f, -5.67775536f}}}
seg=6 {{{34.5348434f, -5.67775536f}, {36.7184372f, 0.888650894f}}}
SkOpSegment::findTop id=3 s=0 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="kari1">
seg=1 {{{39.9375f, -5.8359375f}, {40.625f, -5.7890625f}}}
seg=2 {{{40.625f, -5.7890625f}, {37.7109375f, 1.3515625f}}}
seg=3 {{{37.7109375f, 1.3515625f}, {37.203125f, 0.9609375f}}}
seg=4 {{{37.203125f, 0.9609375f}, {39.9375f, -5.8359375f}}}
seg=5 {{{37.5273438f, -1.44140625f}, {37.8736992f, -1.69921875f}, {38.1640625f, -2.140625f}, {38.3984375f, -2.765625f}}}
seg=6 {{{38.3984375f, -2.765625f}, {38.640625f, -2.609375f}}}
seg=7 {{{38.640625f, -2.609375f}, {38.53125f, -1.89583337f}, {38.0664444f, -0.154893041f}, {38.0664444f, -0.154893041f}}}
seg=8 {{{38.0664444f, -0.154893041f}, {38.0664444f, -0.154893041f}, {37.1809883f, -1.18359375f}, {37.5273438f, -1.44140625f}}}
SkOpSegment::findTop id=4 s=0.525375331 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="quadOp10i">
seg=1 {{{0, 0}, {1, 8}, {3, 5}}}
seg=2 {{{3, 5}, {8, 1}}}
seg=3 {{{8, 1}, {0, 0}}}
seg=4 {{{0, 0}, {8, 1}, {4, 8}}}
seg=5 {{{4, 8}, {0, 0}}}
SkOpSegment::findTop id=1 s=0.923076923 e=0 cw=1 swap=0 inflections=0 monotonic=0
</div>
<div id="cubicOp113">
seg=1 {{{2, 4}, {2.4000001f, 4.4000001f}, {2.5333333f, 4.5333333f}, {2.64533329f, 4.51733351f}}}
seg=2 {{{2.64533329f, 4.51733351f}, {2.81333327f, 4.49333382f}, {2.9333334f, 4.13333368f}, {3.83333325f, 3.83333349f}}}
seg=3 {{{3.83333325f, 3.83333349f}, {2, 4}}}
seg=4 {{{3, 5}, {2.71823359f, 4.71823359f}, {2.82350469f, 4.46623945f}, {2.90056849f, 4.28176689f}}}
seg=5 {{{2.90056849f, 4.28176689f}, {3.00583982f, 4.02977228f}, {3.05847549f, 3.90377498f}, {2, 4}}}
seg=6 {{{2, 4}, {3, 5}}}
SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="skpcarrot_is24">
seg=1 {{{945, 597}, {913.93396f, 597}, {891.96698f, 618.96698f}}}
seg=2 {{{891.96698f, 618.96698f}, {870, 640.93396f}, {870, 672}}}
seg=3 {{{870, 672}, {870, 703.06604f}, {891.96698f, 725.03302f}}}
seg=4 {{{891.96698f, 725.03302f}, {913.93396f, 747}, {945, 747}}}
seg=5 {{{945, 747}, {976.06604f, 747}, {998.03302f, 725.03302f}}}
seg=6 {{{998.03302f, 725.03302f}, {1020, 703.06604f}, {1020, 672}}}
seg=7 {{{1020, 672}, {1020, 640.93396f}, {998.03302f, 618.96698f}}}
seg=8 {{{998.03302f, 618.96698f}, {976.06604f, 597}, {945, 597}}}
seg=9 {{{945.080994f, 597.161987f}, {903.659973f, 597.161987f}, {870.080994f, 630.73999f}, {870.080994f, 672.161987f}}}
seg=10 {{{870.080994f, 672.161987f}, {870.080994f, 676.096008f}, {870.387024f, 679.957031f}, {870.971008f, 683.726013f}}}
seg=11 {{{870.971008f, 683.726013f}, {876.53302f, 719.656006f}, {907.593994f, 747.161987f}, {945.080994f, 747.161987f}}}
seg=12 {{{945.080994f, 747.161987f}, {982.567993f, 747.161987f}, {1013.62903f, 719.656006f}, {1019.19104f, 683.726013f}}}
seg=13 {{{1019.19104f, 683.726013f}, {1019.77502f, 679.955017f}, {1020.08099f, 676.094971f}, {1020.08099f, 672.161987f}}}
seg=14 {{{1020.08099f, 672.161987f}, {1020.08002f, 630.73999f}, {986.502014f, 597.161987f}, {945.080994f, 597.161987f}}}
SkOpSegment::findTop id=1 s=1 e=0 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="issue1417">
seg=1 {{{122.589088f, 82.2836456f}, {129.821579f, 80}, {138, 80}}}
seg=2 {{{138, 80}, {147.156921f, 80}, {155.128036f, 82.862793f}}}
seg=3 {{{155.128036f, 82.862793f}, {161.176468f, 100}}}
seg=4 {{{161.176468f, 100}, {115.294121f, 100}}}
seg=5 {{{115.294121f, 100}, {122.589088f, 82.2836456f}}}
seg=6 {{{98.6819458f, 140.343842f}, {115.294121f, 100}}}
seg=7 {{{115.294121f, 100}, {97.9337616f, 100}}}
seg=8 {{{97.9337616f, 100}, {88, 112.94265f}, {88, 130}}}
seg=9 {{{88, 130}, {88, 131.54483f}, {88.0814896f, 133.05603f}}}
seg=10 {{{88.0814896f, 133.05603f}, {98.6819458f, 140.343842f}}}
seg=11 {{{136.969696f, 166.666672f}, {98.6819458f, 140.343842f}}}
seg=12 {{{98.6819458f, 140.343842f}, {93.4589462f, 153.028259f}}}
seg=13 {{{93.4589462f, 153.028259f}, {96.9411697f, 159.651855f}, {102.644661f, 165.355347f}}}
seg=14 {{{102.644661f, 165.355347f}, {110.792465f, 173.503143f}, {120.817978f, 177.117783f}}}
seg=15 {{{120.817978f, 177.117783f}, {136.969696f, 166.666672f}}}
seg=16 {{{175.830978f, 141.521133f}, {136.969696f, 166.666672f}}}
seg=17 {{{136.969696f, 166.666672f}, {153.157288f, 177.795639f}}}
seg=18 {{{153.157288f, 177.795639f}, {164.392426f, 174.318268f}, {173.355347f, 165.355347f}}}
seg=19 {{{173.355347f, 165.355347f}, {177.805817f, 160.904861f}, {180.903809f, 155.894165f}}}
seg=20 {{{180.903809f, 155.894165f}, {175.830978f, 141.521133f}}}
seg=21 {{{175.830978f, 141.521133f}, {187.878281f, 133.725815f}}}
seg=22 {{{187.878281f, 133.725815f}, {188, 131.888062f}, {188, 130}}}
seg=23 {{{188, 130}, {188, 112.942657f}, {178.066238f, 100}}}
seg=24 {{{178.066238f, 100}, {161.176468f, 100}}}
seg=25 {{{161.176468f, 100}, {175.830978f, 141.521133f}}}
seg=26 {{{174.117645f, 100}, {161.176468f, 100}}}
seg=27 {{{161.176468f, 100}, {155.128036f, 82.862793f}}}
seg=28 {{{155.128036f, 82.862793f}, {153.149719f, 82.1522903f}, {151.098419f, 81.6181335f}}}
seg=29 {{{151.098419f, 81.6181335f}, {143.529419f, 100}}}
seg=30 {{{143.529419f, 100}, {161.176468f, 100}}}
seg=31 {{{161.176468f, 100}, {168.235291f, 120}}}
seg=32 {{{168.235291f, 120}, {181.176468f, 120}}}
seg=33 {{{181.176468f, 120}, {186.366196f, 134.704224f}}}
seg=34 {{{186.366196f, 134.704224f}, {187.878281f, 133.725815f}}}
seg=35 {{{187.878281f, 133.725815f}, {188, 131.888062f}, {188, 130}}}
seg=36 {{{188, 130}, {188, 124.809471f}, {187.08017f, 120}}}
seg=37 {{{187.08017f, 120}, {181.176468f, 120}}}
seg=38 {{{181.176468f, 120}, {174.117645f, 100}}}
seg=39 {{{88.919838f, 120}, {107.058823f, 120}}}
seg=40 {{{107.058823f, 120}, {98.6819458f, 140.343842f}}}
seg=41 {{{98.6819458f, 140.343842f}, {88.0814896f, 133.05603f}}}
seg=42 {{{88.0814896f, 133.05603f}, {88, 131.54483f}, {88, 130}}}
seg=43 {{{88, 130}, {88, 124.809517f}, {88.919838f, 120}}}
seg=44 {{{96.6762161f, 145.214905f}, {98.6819458f, 140.343842f}}}
seg=45 {{{98.6819458f, 140.343842f}, {120.687675f, 155.472778f}}}
seg=46 {{{120.687675f, 155.472778f}, {118.681946f, 160.343842f}}}
seg=47 {{{118.681946f, 160.343842f}, {96.6762161f, 145.214905f}}}
seg=48 {{{113.232178f, 173.578995f}, {116.880264f, 175.698059f}, {120.817978f, 177.117783f}}}
seg=49 {{{120.817978f, 177.117783f}, {132.286499f, 169.696976f}}}
seg=50 {{{132.286499f, 169.696976f}, {118.681946f, 160.343842f}}}
seg=51 {{{118.681946f, 160.343842f}, {113.232178f, 173.578995f}}}
SkOpSegment::findTop id=1 s=0 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp112">
seg=1 {{{2, 4}, {2, 3.70563841f}, {2.34659529f, 3.58457422f}, {2.70820665f, 3.45826507f}}}
seg=2 {{{2.70820665f, 3.45826507f}, {3.57505441f, 3.15547919f}, {4.52819157f, 2.82255316f}, {1, 0}}}
seg=3 {{{1, 0}, {2, 4}}}
seg=4 {{{4, 6}, {0.809847832f, 2.01230979f}, {2.70823097f, 1.84102118f}, {3.10041142f, 1.93512106f}}}
seg=5 {{{3.10041142f, 1.93512106f}, {3.19996977f, 1.95900917f}, {3.20246196f, 2}, {3, 2}}}
seg=6 {{{3, 2}, {4, 6}}}
SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="skpadspert_net23">
seg=1 {{{0, 483.5f}, {0, 482.5f}}}
seg=2 {{{0, 482.5f}, {30.5f, 482.5f}}}
seg=3 {{{30.5f, 482.5f}, {32.709137f, 482.5f}, {34.5f, 484.290863f}, {34.5f, 486.5f}}}
seg=4 {{{34.5f, 486.5f}, {34.5f, 678.5f}}}
seg=5 {{{34.5f, 678.5f}, {34.5f, 680.709167f}, {32.709137f, 682.5f}, {30.5f, 682.5f}}}
seg=6 {{{30.5f, 682.5f}, {0, 682.5f}}}
seg=7 {{{0, 682.5f}, {0, 681.5f}}}
seg=8 {{{0, 681.5f}, {30.5f, 681.5f}}}
seg=9 {{{30.5f, 681.5f}, {32.1568565f, 681.5f}, {33.5f, 680.15686f}, {33.5f, 678.5f}}}
seg=10 {{{33.5f, 678.5f}, {33.5f, 486.5f}}}
seg=11 {{{33.5f, 486.5f}, {33.5f, 484.84314f}, {32.1568565f, 483.5f}, {30.5f, 483.5f}}}
seg=12 {{{30.5f, 483.5f}, {0, 483.5f}}}
seg=13 {{{0, 482}, {35, 482}}}
seg=14 {{{35, 482}, {35, 683}}}
seg=15 {{{35, 683}, {0, 683}}}
seg=16 {{{0, 683}, {0, 482}}}
SkOpSegment::findTop id=16 s=0.997512438 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="skpadspert_de11">
seg=1 {{{0, 682.5f}, {30.5f, 682.5f}}}
seg=2 {{{30.5f, 682.5f}, {32.709137f, 682.5f}, {34.5f, 680.709167f}, {34.5f, 678.5f}}}
seg=3 {{{34.5f, 678.5f}, {34.5f, 486.5f}}}
seg=4 {{{34.5f, 486.5f}, {34.5f, 484.290863f}, {32.709137f, 482.5f}, {30.5f, 482.5f}}}
seg=5 {{{30.5f, 482.5f}, {0, 482.5f}}}
seg=6 {{{0, 482.5f}, {0, 682.5f}}}
seg=7 {{{0, 482}, {35, 482}}}
seg=8 {{{35, 482}, {35, 683}}}
seg=9 {{{35, 683}, {0, 683}}}
seg=10 {{{0, 683}, {0, 482}}}
SkOpSegment::findTop id=10 s=0.997512438 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="findFirst1">
seg=1 {{{0, 1}, {0.535714269f, 3.67857122f}, {1.93239796f, 3.20025516f}, {2.65260553f, 2.33245277f}}}
seg=2 {{{2.65260553f, 2.33245277f}, {3.27678561f, 1.58035731f}, {3.39285707f, 0.535714269f}, {2, 1}}}
seg=3 {{{2, 1}, {0, 1}}}
seg=4 {{{0, 5}, {0.104356073f, 4.68693161f}, {0.19782196f, 4.3847537f}, {0.287216395f, 4.09573889f}}}
seg=5 {{{0.287216395f, 4.09573889f}, {1.05445099f, 1.6152463f}, {1.52178037f, 0.104356073f}, {6, 1}}}
seg=6 {{{6, 1}, {0, 5}}}
SkOpSegment::findTop id=5 s=0.648442804 e=1 cw=1 swap=0 inflections=0 monotonic=0
</div>
<div id="xOp2i">
seg=1 {{{1, 5}, {0, 4}, {3, 2}, {6, 1}}}
seg=2 {{{6, 1}, {1, 5}}}
seg=3 {{{2, 3}, {1, 6}, {5, 1}, {4, 0}}}
seg=4 {{{4, 0}, {2, 3}}}
SkOpSegment::findTop id=4 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="xOp3i">
seg=1 {{{1, 4}, {0.888116956f, 4.11188316f}, {0.838822961f, 4.16117716f}, {0.838112772f, 4.1604867f}}}
seg=2 {{{0.838112772f, 4.1604867f}, {0.832475185f, 4.15500689f}, {3.88811707f, 1}, {3, 1}}}
seg=3 {{{3, 1}, {1, 4}}}
seg=4 {{{1, 4}, {1, 3.30277562f}, {2.45836544f, 2.11942935f}, {3.68041658f, 1.12783337f}}}
seg=5 {{{3.68041658f, 1.12783337f}, {4.21110249f, 0.697224319f}, {4.69722462f, 0.302775621f}, {5, 0}}}
seg=6 {{{5, 0}, {1, 4}}}
SkOpSegment::findTop id=5 s=0 e=1 cw=0 swap=0 inflections=1 monotonic=1
</div>
<div id="xOp1u">
seg=1 {{{1, 4}, {2.5f, 4.5f}, {3, 4}, {3.5f, 3.5f}}}
seg=2 {{{3.5f, 3.5f}, {4, 3}, {4.5f, 2.5f}, {6, 3}}}
seg=3 {{{6, 3}, {1, 4}}}
seg=4 {{{2, 3}, {2.5f, 4.5f}, {3, 4}, {3.5f, 3.5f}}}
seg=5 {{{3.5f, 3.5f}, {4, 3}, {4.5f, 2.5f}, {5, 4}}}
seg=6 {{{5, 4}, {2, 3}}}
SkOpSegment::findTop id=2 s=0 e=1 cw=1 swap=0 inflections=1 monotonic=0
</div>
<div id="xOp1i">
seg=1 {{{1, 4}, {1, 4.90867758f}, {5.12847471f, 0.863185406f}, {5.13222885f, 0.867009521f}}}
seg=2 {{{5.13222885f, 0.867009521f}, {5.13260603f, 0.867393851f}, {5.09132242f, 0.908677578f}, {5, 1}}}
seg=3 {{{5, 1}, {1, 4}}}
seg=4 {{{0, 6}, {0.280776411f, 5.7192235f}, {0.719223619f, 5.20194101f}, {1.22680116f, 4.60309792f}}}
seg=5 {{{1.22680116f, 4.60309792f}, {2.52698779f, 3.06913042f}, {4.2807765f, 1}, {5, 1}}}
seg=6 {{{5, 1}, {0, 6}}}
SkOpSegment::findTop id=1 s=0.890295441 e=1 cw=0 swap=0 inflections=1 monotonic=0
</div>
<div id="cubicOp111">
seg=1 {{{1, 4}, {0.888116956f, 4.11188316f}, {0.838822961f, 4.16117716f}, {0.838112772f, 4.1604867f}}}
seg=2 {{{0.838112772f, 4.1604867f}, {0.832475185f, 4.15500689f}, {3.88811707f, 1}, {3, 1}}}
seg=3 {{{3, 1}, {1, 4}}}
seg=4 {{{1, 4}, {1, 3.30277562f}, {2.45836544f, 2.11942935f}, {3.68041658f, 1.12783337f}}}
seg=5 {{{3.68041658f, 1.12783337f}, {4.21110249f, 0.697224319f}, {4.69722462f, 0.302775621f}, {5, 0}}}
seg=6 {{{5, 0}, {1, 4}}}
SkOpSegment::findTop id=5 s=0 e=1 cw=0 swap=0 inflections=1 monotonic=1
</div>
<div id="cubicOp110">
seg=1 {{{0, 0}, {1, 0}}}
seg=2 {{{1, 0}, {1, 1}}}
seg=3 {{{1, 1}, {0, 1}}}
seg=4 {{{0, 1}, {0, 0}}}
seg=5 {{{0, 0}, {4, 0}}}
seg=6 {{{4, 0}, {4, 4}}}
seg=7 {{{4, 4}, {0, 4}}}
seg=8 {{{0, 4}, {0, 0}}}
seg=9 {{{0, 0}, {2, 0}}}
seg=10 {{{2, 0}, {2, 2}}}
seg=11 {{{2, 2}, {0, 2}}}
seg=12 {{{0, 2}, {0, 0}}}
seg=13 {{{0, 0}, {2, 0}}}
seg=14 {{{2, 0}, {2, 2}}}
seg=15 {{{2, 2}, {0, 2}}}
seg=16 {{{0, 2}, {0, 0}}}
SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="cubicOp109">
seg=1 {{{0, 1}, {3.25028038f, 4.25028038f}, {5.18002033f, 3.53893995f}, {5.25270414f, 3.69462037f}}}
seg=2 {{{5.25270414f, 3.69462037f}, {5.26946974f, 3.73053002f}, {5.1874299f, 3.8125701f}, {5, 4}}}
seg=3 {{{5, 4}, {0, 1}}}
seg=4 {{{3, 6}, {3.38196611f, 5.61803389f}, {3.18033981f, 4.65247583f}, {3.00813055f, 3.82779074f}}}
seg=5 {{{3.00813055f, 3.82779074f}, {2.72949004f, 2.49342203f}, {2.52786398f, 1.5278641f}, {5, 4}}}
seg=6 {{{5, 4}, {3, 6}}}
SkOpSegment::findTop id=1 s=0.346236497 e=0 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp108">
seg=1 {{{0, 1}, {3.10102057f, 4.87627602f}, {2.5959177f, 2.74234605f}, {2.21224618f, 1.12143052f}}}
seg=2 {{{2.21224618f, 1.12143052f}, {2.10102057f, 0.651530623f}, {2, 0.224744856f}, {2, 0}}}
seg=3 {{{2, 0}, {0, 1}}}
seg=4 {{{1, 2}, {0.687867999f, 2}, {0.570588768f, 1.80514717f}, {0.70898211f, 1.65872073f}}}
seg=5 {{{0.70898211f, 1.65872073f}, {1.01396966f, 1.33603036f}, {2.56066012f, 1.24852812f}, {6, 4}}}
seg=6 {{{6, 4}, {1, 2}}}
SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="cubicOp107">
seg=1 {{{0, 1}, {3.10102057f, 4.87627602f}, {2.5959177f, 2.74234605f}, {2.21224618f, 1.12143052f}}}
seg=2 {{{2.21224618f, 1.12143052f}, {2.10102057f, 0.651530623f}, {2, 0.224744856f}, {2, 0}}}
seg=3 {{{2, 0}, {0, 1}}}
seg=4 {{{1, 2}, {0.687867999f, 2}, {0.570588768f, 1.80514717f}, {0.70898211f, 1.65872073f}}}
seg=5 {{{0.70898211f, 1.65872073f}, {1.01396966f, 1.33603036f}, {2.56066012f, 1.24852812f}, {6, 4}}}
seg=6 {{{6, 4}, {1, 2}}}
SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="cubicOp106">
seg=1 {{{0, 1}, {3.10102057f, 4.87627602f}, {2.5959177f, 2.74234605f}, {2.21224618f, 1.12143052f}}}
seg=2 {{{2.21224618f, 1.12143052f}, {2.10102057f, 0.651530623f}, {2, 0.224744856f}, {2, 0}}}
seg=3 {{{2, 0}, {0, 1}}}
seg=4 {{{1, 2}, {0.687867999f, 2}, {0.570588768f, 1.80514717f}, {0.70898211f, 1.65872073f}}}
seg=5 {{{0.70898211f, 1.65872073f}, {1.01396966f, 1.33603036f}, {2.56066012f, 1.24852812f}, {6, 4}}}
seg=6 {{{6, 4}, {1, 2}}}
SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="cubicOp105">
seg=1 {{{0, 1}, {0, 4}, {6, 5}, {2, 0}}}
seg=2 {{{2, 0}, {0, 1}}}
seg=3 {{{5, 6}, {0, 2}, {1, 0}, {4, 0}}}
seg=4 {{{4, 0}, {5, 6}}}
SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="cubicOp104">
seg=1 {{{0, 1}, {0, 3.97847962f}, {1.41941452f, 3.05356932f}, {2.98993444f, 2.03019667f}}}
seg=2 {{{2.98993444f, 2.03019667f}, {4.05586004f, 1.33562446f}, {5.19139194f, 0.595695913f}, {6, 1}}}
seg=3 {{{6, 1}, {0, 1}}}
seg=4 {{{0, 4}, {0.391700625f, 4.78340149f}, {0.629971862f, 4.33936739f}, {1.07540405f, 3.50927591f}}}
seg=5 {{{1.07540405f, 3.50927591f}, {1.76714694f, 2.22016883f}, {2.95850325f, 0}, {6, 0}}}
seg=6 {{{6, 0}, {0, 4}}}
SkOpSegment::findTop id=5 s=0.565236568 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp103">
seg=1 {{{0, 1}, {0.717624307f, 3.87049723f}, {1.43524861f, 2.10613275f}, {1.78330743f, 1.25038886f}}}
seg=2 {{{1.78330743f, 1.25038886f}, {1.92026401f, 0.913664818f}, {2, 0.717624307f}, {2, 1}}}
seg=3 {{{2, 1}, {0, 1}}}
seg=4 {{{0, 2}, {0.306225777f, 2}, {0.518677354f, 1.8124516f}, {0.780935109f, 1.58093512f}}}
seg=5 {{{0.780935109f, 1.58093512f}, {1.37509692f, 1.05641961f}, {2.22490311f, 0.306225777f}, {5, 1}}}
seg=6 {{{5, 1}, {0, 2}}}
SkOpSegment::findTop id=5 s=0.363276408 e=1 cw=1 swap=0 inflections=0 monotonic=0
</div>
<div id="cubicOp102">
seg=1 {{{0, 1}, {0.5f, 1.5f}, {0.75f, 1.25f}, {1.125f, 0.875f}}}
seg=2 {{{1.125f, 0.875f}, {1.5f, 0.5f}, {2, 0}, {3, 0}}}
seg=3 {{{3, 0}, {0, 1}}}
seg=4 {{{0, 1}, {0, 2}, {0.25f, 1.75f}, {0.625f, 1.375f}}}
seg=5 {{{0.625f, 1.375f}, {1, 1}, {1.5f, 0.5f}, {2, 1}}}
seg=6 {{{2, 1}, {0, 1}}}
SkOpSegment::findTop id=2 s=0.333333333 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp101">
seg=1 {{{0, 1}, {1, 2}, {1.5f, 2}, {2.125f, 2}}}
seg=2 {{{2.125f, 2}, {2.75f, 2}, {3.5f, 2}, {5, 3}}}
seg=3 {{{5, 3}, {0, 1}}}
seg=4 {{{1, 2}, {2, 3.5f}, {2, 3}, {2, 2.375f}}}
seg=5 {{{2, 2.375f}, {2, 1.75f}, {2, 1}, {3, 2}}}
seg=6 {{{3, 2}, {1, 2}}}
SkOpSegment::findTop id=1 s=0.936896287 e=0 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp100">
seg=1 {{{0, 1}, {0, 1.5f}, {0.5f, 1.5f}, {1.25f, 1.5f}}}
seg=2 {{{1.25f, 1.5f}, {2, 1.5f}, {3, 1.5f}, {4, 2}}}
seg=3 {{{4, 2}, {0, 1}}}
seg=4 {{{1, 2}, {1.5f, 3}, {1.5f, 2.5f}, {1.5f, 1.75f}}}
seg=5 {{{1.5f, 1.75f}, {1.5f, 1}, {1.5f, 0}, {2, 0}}}
seg=6 {{{2, 0}, {1, 2}}}
SkOpSegment::findTop id=5 s=0.333333333 e=1 cw=1 swap=0 inflections=0 monotonic=1
</div>
<div id="cubicOp99">
seg=1 {{{3, 6}, {1.09807611f, 4.09807587f}, {2.81346655f, 4.20577097f}, {4.06921959f, 4.28460979f}}}
seg=2 {{{4.06921959f, 4.28460979f}, {4.79422855f, 4.33012724f}, {5.36602545f, 4.36602545f}, {5, 4}}}
seg=3 {{{5, 4}, {3, 6}}}
seg=4 {{{5, 6}, {4.63397455f, 5.63397455f}, {4.66987276f, 5.13397455f}, {4.71539021f, 4.5f}}}
seg=5 {{{4.71539021f, 4.5f}, {4.79422855f, 3.40192366f}, {4.90192366f, 1.90192378f}, {3, 0}}}
seg=6 {{{3, 0}, {5, 6}}}
SkOpSegment::findTop id=6 s=0.717614994 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
</div>
<div id="loops4i">
seg=1 {{{0, 3}, {0, 2.58243537f}, {0, 2.33923101f}, {-0.12134438f, 2.20971465f}}}
seg=2 {{{-0.12134438f, 2.20971465f}, {-0.29060027f, 2.02906013f}, {-0.695940912f, 2.06959414f}, {-1.66666663f, 2.16666675f}}}
seg=3 {{{-1.66666663f, 2.16666675f}, {0, 3}}}
seg=4 {{{0, 2}, {0, 2}, {-1.66666663f, 2.16666675f}, {0, 3}}}
seg=5 {{{0, 3}, {0, 2}}}
-SkOpSegment::findTop- baseAngle
SkOpAngle::dumpOne [4/10] next=5/9 sect=17/17 s=0 [7] e=0.366025448 [11] sgn=-1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [5/9] next=4/10 sect=23/23 s=1 [10] e=0 [9] sgn=1 windVal=1 windSum=? operand stop
-SkOpSegment::findTop- firstAngle
SkOpAngle::dumpOne [4/10] next=5/9 sect=17/17 s=0 [7] e=0.366025448 [11] sgn=-1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [5/9] next=4/10 sect=23/23 s=1 [10] e=0 [9] sgn=1 windVal=1 windSum=? operand stop
SkOpSegment::findTop id=4 s=0.366025448 e=0 (+) cw=0 swap=1 inflections=1 monotonic=0
</div>
<div id="loops5i">
seg=1 {{{1, 2}, {0.442417026f, 2}, {0.195732832f, 2}, {0.115487516f, 2.11556792f}}}
seg=2 {{{0.115487516f, 2.11556792f}, {0.0518164635f, 2.20726585f}, {0.0929304957f, 2.37172198f}, {0.166666672f, 2.66666675f}}}
seg=3 {{{0.166666672f, 2.66666675f}, {1, 2}}}
seg=4 {{{0, 2}, {0, 2}, {0.166666672f, 2.66666675f}, {1, 2}}}
seg=5 {{{1, 2}, {0, 2}}}
-SkOpSegment::findTop- baseAngle
SkOpAngle::dumpOne [4/10] next=5/9 sect=25/25 s=0 [7] e=0.366024971 [11] sgn=-1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [5/9] next=4/10 sect=31/31 s=1 [10] e=0 [9] sgn=1 windVal=1 windSum=? operand stop
-SkOpSegment::findTop- firstAngle
SkOpAngle::dumpOne [4/10] next=5/9 sect=25/25 s=0 [7] e=0.366024971 [11] sgn=-1 windVal=1 windSum=? operand
SkOpAngle::dumpOne [5/9] next=4/10 sect=31/31 s=1 [10] e=0 [9] sgn=1 windVal=1 windSum=? operand stop
SkOpSegment::findTop id=4 s=0.366024971 e=0 (+) cw=0 swap=1 inflections=1 monotonic=0
</div>
</div>
<script type="text/javascript">
var testDivs = [
loops5i,
loops4i,
quadRect1,
quadRect2,
quadRect3,
quadRect4,
quadRect5,
quadRect6,
cubicOp141,
cubicOp58d,
issue3651_5,
cubicOp142,
cubicOp139,
issue3651_4,
cubics138,
cubicOp136a,
cubicOp136,
loop16,
loop15,
loop14,
loop13,
loop12,
cubicOp132,
loop11,
loop10,
circlesOp3,
loop9,
loop8,
rects5,
loop7,
cubicOp130a,
rRect1x,
circlesOp2,
circlesOp1,
cubicOp131,
cubicOp130,
cubicOp129,
cubicOp128,
cubicOp127,
cubicOp126,
cubicOp125,
cubicOp124,
loop6,
loop5,
cubicOp123,
cubicOp122,
cubicOp121,
cubicOp120,
cubicOp119,
loop4,
loop3,
loop2,
loop1asQuad,
loop1,
issue3517,
cubicOp118,
cubicOp117,
cubicOp116,
testRect2,
testRect1,
cubicOp115,
issue2753,
cubicOp114,
issue2808,
cubicOp114asQuad,
rects4,
rects3,
rects2,
rects1,
issue2540,
issue2504,
kari1,
quadOp10i,
cubicOp113,
skpcarrot_is24,
issue1417,
cubicOp112,
skpadspert_net23,
skpadspert_de11,
findFirst1,
xOp2i,
xOp3i,
xOp1u,
xOp1i,
cubicOp111,
cubicOp110,
cubicOp109,
cubicOp108,
cubicOp107,
cubicOp106,
cubicOp105,
cubicOp104,
cubicOp103,
cubicOp102,
cubicOp101,
cubicOp100,
cubicOp99,
];
var decimal_places = 3; // make this 3 to show more precision
var tests = [];
var testLines = [];
var testTitles = [];
var testIndex = 0;
var ctx;
var xmin, xmax, focusXmin, focusXmax;
var ymin, ymax, focusYmin, focusYmax;
var scale;
var mouseX, mouseY;
var srcLeft, srcTop;
var screenWidth, screenHeight;
var drawnPts, drawnLines, drawnQuads, drawnConics, drawnCubics;
var curveT = 0;
var pt_labels = 2;
var collect_bounds = false;
var control_lines = 0;
var curve_t = false;
var debug_xy = 1;
var focus_enabled = false;
var focus_on_selection = false;
var step_limit = 0;
var draw_active = false;
var draw_add = false;
var draw_angle = 0;
var draw_deriviatives = 0;
var draw_hints = false;
var draw_id = false;
var draw_intersection = 0;
var draw_intersectT = false;
var draw_legend = true;
var draw_log = false;
var draw_mark = false;
var draw_midpoint = false;
var draw_op = 0;
var draw_sequence = false;
var draw_sort = 0;
var draw_top = false;
var draw_path = 3;
var draw_computed = 0;
var retina_scale = !!window.devicePixelRatio;
var activeCount = 0;
var addCount = 0;
var angleCount = 0;
var opCount = 0;
var sectCount = 0;
var sortCount = 0;
var topCount = 0;
var markCount = 0;
var activeMax = 0;
var addMax = 0;
var angleMax = 0;
var sectMax = 0;
var sectMax2 = 0;
var sortMax = 0;
var topMax = 0;
var markMax = 0;
var opMax = 0;
var stepMax = 0;
var lastIndex = 0;
var hasPath = false;
var hasComputedPath = false;
var angleBetween = false;
var afterIndex = 0;
var firstActiveSpan = -1;
var logStart = -1;
var logRange = 0;
var SPAN_ID = 0;
var SPAN_X1 = SPAN_ID + 1;
var SPAN_Y1 = SPAN_X1 + 1;
var SPAN_X2 = SPAN_Y1 + 1;
var SPAN_Y2 = SPAN_X2 + 1;
var SPAN_L_T = SPAN_Y2 + 1;
var SPAN_L_TX = SPAN_L_T + 1;
var SPAN_L_TY = SPAN_L_TX + 1;
var SPAN_L_TEND = SPAN_L_TY + 1;
var SPAN_L_OTHER = SPAN_L_TEND + 1;
var SPAN_L_OTHERT = SPAN_L_OTHER + 1;
var SPAN_L_OTHERI = SPAN_L_OTHERT + 1;
var SPAN_L_SUM = SPAN_L_OTHERI + 1;
var SPAN_L_VAL = SPAN_L_SUM + 1;
var SPAN_L_OPP = SPAN_L_VAL + 1;
var SPAN_X3 = SPAN_Y2 + 1;
var SPAN_Y3 = SPAN_X3 + 1;
var SPAN_Q_T = SPAN_Y3 + 1;
var SPAN_Q_TX = SPAN_Q_T + 1;
var SPAN_Q_TY = SPAN_Q_TX + 1;
var SPAN_Q_TEND = SPAN_Q_TY + 1;
var SPAN_Q_OTHER = SPAN_Q_TEND + 1;
var SPAN_Q_OTHERT = SPAN_Q_OTHER + 1;
var SPAN_Q_OTHERI = SPAN_Q_OTHERT + 1;
var SPAN_Q_SUM = SPAN_Q_OTHERI + 1;
var SPAN_Q_VAL = SPAN_Q_SUM + 1;
var SPAN_Q_OPP = SPAN_Q_VAL + 1;
var SPAN_K_W = SPAN_Y3 + 1;
var SPAN_K_T = SPAN_K_W + 1;
var SPAN_K_TX = SPAN_K_T + 1;
var SPAN_K_TY = SPAN_K_TX + 1;
var SPAN_K_TEND = SPAN_K_TY + 1;
var SPAN_K_OTHER = SPAN_K_TEND + 1;
var SPAN_K_OTHERT = SPAN_K_OTHER + 1;
var SPAN_K_OTHERI = SPAN_K_OTHERT + 1;
var SPAN_K_SUM = SPAN_K_OTHERI + 1;
var SPAN_K_VAL = SPAN_K_SUM + 1;
var SPAN_K_OPP = SPAN_K_VAL + 1;
var SPAN_X4 = SPAN_Y3 + 1;
var SPAN_Y4 = SPAN_X4 + 1;
var SPAN_C_T = SPAN_Y4 + 1;
var SPAN_C_TX = SPAN_C_T + 1;
var SPAN_C_TY = SPAN_C_TX + 1;
var SPAN_C_TEND = SPAN_C_TY + 1;
var SPAN_C_OTHER = SPAN_C_TEND + 1;
var SPAN_C_OTHERT = SPAN_C_OTHER + 1;
var SPAN_C_OTHERI = SPAN_C_OTHERT + 1;
var SPAN_C_SUM = SPAN_C_OTHERI + 1;
var SPAN_C_VAL = SPAN_C_SUM + 1;
var SPAN_C_OPP = SPAN_C_VAL + 1;
var ACTIVE_LINE_SPAN = 1;
var ACTIVE_QUAD_SPAN = ACTIVE_LINE_SPAN + 1;
var ACTIVE_CONIC_SPAN = ACTIVE_QUAD_SPAN + 1;
var ACTIVE_CUBIC_SPAN = ACTIVE_CONIC_SPAN + 1;
var ADD_MOVETO = ACTIVE_CUBIC_SPAN + 1;
var ADD_LINETO = ADD_MOVETO + 1;
var ADD_QUADTO = ADD_LINETO + 1;
var ADD_CONICTO = ADD_QUADTO + 1;
var ADD_CUBICTO = ADD_CONICTO + 1;
var ADD_CLOSE = ADD_CUBICTO + 1;
var ADD_FILL = ADD_CLOSE + 1;
var PATH_LINE = ADD_FILL + 1;
var PATH_QUAD = PATH_LINE + 1;
var PATH_CONIC = PATH_QUAD + 1;
var PATH_CUBIC = PATH_CONIC + 1;
var INTERSECT_LINE = PATH_CUBIC + 1;
var INTERSECT_LINE_2 = INTERSECT_LINE + 1;
var INTERSECT_LINE_NO = INTERSECT_LINE_2 + 1;
var INTERSECT_QUAD_LINE = INTERSECT_LINE_NO + 1;
var INTERSECT_QUAD_LINE_2 = INTERSECT_QUAD_LINE + 1;
var INTERSECT_QUAD_LINE_NO = INTERSECT_QUAD_LINE_2 + 1;
var INTERSECT_QUAD = INTERSECT_QUAD_LINE_NO + 1;
var INTERSECT_QUAD_2 = INTERSECT_QUAD + 1;
var INTERSECT_QUAD_NO = INTERSECT_QUAD_2 + 1;
var INTERSECT_CONIC_LINE = INTERSECT_QUAD_NO + 1;
var INTERSECT_CONIC_LINE_2 = INTERSECT_CONIC_LINE + 1;
var INTERSECT_CONIC_LINE_NO = INTERSECT_CONIC_LINE_2 + 1;
var INTERSECT_CONIC = INTERSECT_CONIC_LINE_NO + 1;
var INTERSECT_CONIC_2 = INTERSECT_CONIC + 1;
var INTERSECT_CONIC_NO = INTERSECT_CONIC_2 + 1;
var INTERSECT_SELF_CUBIC = INTERSECT_CONIC_NO + 1;
var INTERSECT_SELF_CUBIC_NO = INTERSECT_SELF_CUBIC + 1;
var INTERSECT_CUBIC_LINE = INTERSECT_SELF_CUBIC_NO + 1;
var INTERSECT_CUBIC_LINE_2 = INTERSECT_CUBIC_LINE + 1;
var INTERSECT_CUBIC_LINE_3 = INTERSECT_CUBIC_LINE_2 + 1;
var INTERSECT_CUBIC_LINE_NO = INTERSECT_CUBIC_LINE_3 + 1;
var INTERSECT_CUBIC_QUAD = INTERSECT_CUBIC_LINE_NO + 1;
var INTERSECT_CUBIC_QUAD_2 = INTERSECT_CUBIC_QUAD + 1;
var INTERSECT_CUBIC_QUAD_3 = INTERSECT_CUBIC_QUAD_2 + 1;
var INTERSECT_CUBIC_QUAD_4 = INTERSECT_CUBIC_QUAD_3 + 1;
var INTERSECT_CUBIC_QUAD_NO = INTERSECT_CUBIC_QUAD_4 + 1;
var INTERSECT_CUBIC = INTERSECT_CUBIC_QUAD_NO + 1;
var INTERSECT_CUBIC_2 = INTERSECT_CUBIC + 1;
var INTERSECT_CUBIC_3 = INTERSECT_CUBIC_2 + 1;
var INTERSECT_CUBIC_4 = INTERSECT_CUBIC_3 + 1;
// FIXME: add cubic 5- 9
var INTERSECT_CUBIC_NO = INTERSECT_CUBIC_4 + 1;
var SORT_UNARY = INTERSECT_CUBIC_NO + 1;
var SORT_BINARY = SORT_UNARY + 1;
var OP_DIFFERENCE = SORT_BINARY + 1;
var OP_INTERSECT = OP_DIFFERENCE + 1;
var OP_UNION = OP_INTERSECT + 1;
var OP_XOR = OP_UNION + 1;
var MARK_LINE = OP_XOR + 1;
var MARK_QUAD = MARK_LINE + 1;
var MARK_CONIC = MARK_QUAD + 1;
var MARK_CUBIC = MARK_CONIC + 1;
var MARK_DONE_LINE = MARK_CUBIC + 1;
var MARK_DONE_QUAD = MARK_DONE_LINE + 1;
var MARK_DONE_CONIC = MARK_DONE_QUAD + 1;
var MARK_DONE_CUBIC = MARK_DONE_CONIC + 1;
var MARK_UNSORTABLE_LINE = MARK_DONE_CUBIC + 1;
var MARK_UNSORTABLE_QUAD = MARK_UNSORTABLE_LINE + 1;
var MARK_UNSORTABLE_CONIC = MARK_UNSORTABLE_QUAD + 1;
var MARK_UNSORTABLE_CUBIC = MARK_UNSORTABLE_CONIC + 1;
var MARK_SIMPLE_LINE = MARK_UNSORTABLE_CUBIC + 1;
var MARK_SIMPLE_QUAD = MARK_SIMPLE_LINE + 1;
var MARK_SIMPLE_CONIC = MARK_SIMPLE_QUAD + 1;
var MARK_SIMPLE_CUBIC = MARK_SIMPLE_CONIC + 1;
var MARK_SIMPLE_DONE_LINE = MARK_SIMPLE_CUBIC + 1;
var MARK_SIMPLE_DONE_QUAD = MARK_SIMPLE_DONE_LINE + 1;
var MARK_SIMPLE_DONE_CONIC = MARK_SIMPLE_DONE_QUAD + 1;
var MARK_SIMPLE_DONE_CUBIC = MARK_SIMPLE_DONE_CONIC + 1;
var MARK_DONE_UNARY_LINE = MARK_SIMPLE_DONE_CUBIC + 1;
var MARK_DONE_UNARY_QUAD = MARK_DONE_UNARY_LINE + 1;
var MARK_DONE_UNARY_CONIC = MARK_DONE_UNARY_QUAD + 1;
var MARK_DONE_UNARY_CUBIC = MARK_DONE_UNARY_CONIC + 1;
var MARK_ANGLE_LAST = MARK_DONE_UNARY_CUBIC + 1;
var COMPUTED_SET_1 = MARK_ANGLE_LAST + 1;
var COMPUTED_SET_2 = COMPUTED_SET_1 + 1;
var ANGLE_AFTER = COMPUTED_SET_2;
var ANGLE_AFTERPART = ANGLE_AFTER + 1;
var ACTIVE_OP = ANGLE_AFTERPART + 1;
var FRAG_TYPE_LAST = ACTIVE_OP;
var REC_TYPE_UNKNOWN = -1;
var REC_TYPE_PATH = 0;
var REC_TYPE_PATH2 = 1;
var REC_TYPE_SECT = 2;
var REC_TYPE_ACTIVE = 3;
var REC_TYPE_ADD = 4;
var REC_TYPE_SORT = 5;
var REC_TYPE_OP = 6;
var REC_TYPE_MARK = 7;
var REC_TYPE_COMPUTED = 8;
var REC_TYPE_COIN = 9;
var REC_TYPE_ANGLE = 10;
var REC_TYPE_ACTIVE_OP = 11;
var REC_TYPE_AFTERPART = 12;
var REC_TYPE_TOP = 13;
var REC_TYPE_LAST = REC_TYPE_TOP;
function strs_to_nums(strs) {
var result = [];
for (var idx = 1; idx < strs.length; ++idx) {
var str = strs[idx];
var num = parseFloat(str);
if (isNaN(num)) {
result.push(str);
} else {
result.push(num);
}
}
return result;
}
function filter_str_by(id, str, regex, array) {
if (regex.test(str)) {
var strs = regex.exec(str);
var result = strs_to_nums(strs);
array.push(id);
array.push(result);
return true;
}
return false;
}
function construct_regexp2(pattern) {
var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
escape = escape.replace(/UNSORTABLE/g, "\\*\\*\\* UNSORTABLE \\*\\*\\*");
escape = escape.replace(/CUBIC_VAL/g, "\\(P_VAL P_VAL P_VAL P_VAL\\)");
escape = escape.replace(/CONIC_VAL/g, "\\(P_VAL P_VAL P_VAL W_VAL\\)");
escape = escape.replace(/QUAD_VAL/g, "\\(P_VAL P_VAL P_VAL\\)");
escape = escape.replace(/LINE_VAL/g, "\\(P_VAL P_VAL\\)");
escape = escape.replace(/FILL_TYPE/g, "SkPath::k[a-zA-Z]+_FillType");
escape = escape.replace(/PTR_VAL/g, "0x[0-9A-F]+");
escape = escape.replace(/PT_VAL/g, "\\(P_VAL\\)");
escape = escape.replace(/P_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?, ?(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
escape = escape.replace(/W_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
escape = escape.replace(/PATH/g, "pathB?");
escape = escape.replace(/IDX/g, "(-?\\d+)");
escape = escape.replace(/NUM/g, "(-?\\d+)");
escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
return new RegExp(escape, 'i');
}
function construct_regexp2c(pattern) {
var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
escape = escape.replace(/UNSORTABLE/g, "\\*\\*\\* UNSORTABLE \\*\\*\\*");
escape = escape.replace(/CUBIC_VAL/g, "(?:\\$\\d = )?\\{\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}\\}");
escape = escape.replace(/CONIC_VAL/g, "(?:\\$\\d = )?\\{\\{\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}\\}, W_VAL\\}");
escape = escape.replace(/QUAD_VAL/g, "(?:\\$\\d = )?\\{\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}\\}");
escape = escape.replace(/LINE_VAL/g, "(?:\\$\\d = )?\\{\\{\\{P_VAL\\}, \\{P_VAL\\}\\}\\}");
escape = escape.replace(/FILL_TYPE/g, "SkPath::k[a-zA-Z]+_FillType");
escape = escape.replace(/PTR_VAL/g, "0x[0-9A-F]+");
escape = escape.replace(/PT_VAL/g, "\\{\\{P_VAL\\}\\}");
escape = escape.replace(/P_VAL/g, "(?:f?[xX] = )?(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?, *(?: f?[yY] = )?(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
escape = escape.replace(/W_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
escape = escape.replace(/OPER/g, "[a-z]+");
escape = escape.replace(/PATH/g, "pathB?");
escape = escape.replace(/T_F/g, "([TF])");
escape = escape.replace(/IDX/g, "(-?\\d+)");
escape = escape.replace(/NUM/g, "(-?\\d+)");
escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
return new RegExp(escape, 'i');
}
function match_regexp(str, lineNo, array, id, pattern) {
var regex = construct_regexp2(pattern);
if (filter_str_by(id, str, regex, array)) {
return true;
}
regex = construct_regexp2c(pattern);
return filter_str_by(id, str, regex, array);
}
function endsWith(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}
function parse_all(test) {
var lines = test.match(/[^\r\n]+/g);
var records = []; // a rec can be the original paths, a set of intersections, a set of active spans, a sort, or a path add
var record = [];
var recType = REC_TYPE_UNKNOWN;
var lastLineNo;
var moveX, moveY;
for (var lineNo = 0; lineNo < lines.length; ++lineNo) {
var line = lines[lineNo];
if (line.length == 0) {
continue;
}
var opStart = "SkOpSegment::";
if (line.lastIndexOf(opStart, 0) === 0) {
line = line.substr(opStart.length);
}
var angleStart = "SkOpAngle::";
if (line.lastIndexOf(angleStart, 0) === 0) {
line = line.substr(angleStart.length);
}
var type = line.lastIndexOf("debugShowActiveSpans", 0) === 0 ? REC_TYPE_ACTIVE
: line.lastIndexOf("((SkOpSegment*)", 0) === 0 ? REC_TYPE_PATH2
: line.lastIndexOf("debugShowTs", 0) === 0 ? REC_TYPE_COIN
: line.lastIndexOf("afterPart", 0) === 0 ? REC_TYPE_AFTERPART
: line.lastIndexOf("debugShow", 0) === 0 ? REC_TYPE_SECT
: line.lastIndexOf("activeOp", 0) === 0 ? REC_TYPE_ACTIVE_OP
: line.lastIndexOf("computed", 0) === 0 ? REC_TYPE_COMPUTED
: line.lastIndexOf("debugOne", 0) === 0 ? REC_TYPE_SORT
: line.lastIndexOf("dumpOne", 0) === 0 ? REC_TYPE_SORT
: line.lastIndexOf("findTop", 0) === 0 ? REC_TYPE_TOP
: line.lastIndexOf("pathB.", 0) === 0 ? REC_TYPE_ADD
: line.lastIndexOf("path.", 0) === 0 ? REC_TYPE_ADD
: line.lastIndexOf("after", 0) === 0 ? REC_TYPE_ANGLE
: line.lastIndexOf("mark", 0) === 0 ? REC_TYPE_MARK
: line.lastIndexOf(" {{", 0) === 0 ? REC_TYPE_COMPUTED
: line.lastIndexOf("seg=", 0) === 0 ? REC_TYPE_PATH
: line.lastIndexOf("op", 0) === 0 ? REC_TYPE_OP
: line.lastIndexOf("$", 0) === 0 ? REC_TYPE_PATH
: REC_TYPE_UNKNOWN;
if (recType != type || recType == REC_TYPE_ADD || recType == REC_TYPE_SECT
|| recType == REC_TYPE_ACTIVE_OP || recType == REC_TYPE_ANGLE) {
if (recType != REC_TYPE_UNKNOWN) {
records.push(recType);
records.push(lastLineNo);
records.push(record);
}
record = [];
recType = type;
lastLineNo = lineNo;
}
var found = false;
switch (recType) {
case REC_TYPE_ACTIVE:
found = match_regexp(line, lineNo, record, ACTIVE_LINE_SPAN, "debugShowActiveSpans" +
" id=IDX LINE_VAL t=T_VAL PT_VAL tEnd=T_VAL windSum=OPT windValue=IDX oppValue=NUM"
) || match_regexp(line, lineNo, record, ACTIVE_QUAD_SPAN, "debugShowActiveSpans" +
" id=IDX QUAD_VAL t=T_VAL PT_VAL tEnd=T_VAL windSum=OPT windValue=IDX oppValue=NUM"
) || match_regexp(line, lineNo, record, ACTIVE_CONIC_SPAN, "debugShowActiveSpans" +
" id=IDX CONIC_VAL t=T_VAL PT_VAL tEnd=T_VAL windSum=OPT windValue=IDX oppValue=NUM"
) || match_regexp(line, lineNo, record, ACTIVE_CUBIC_SPAN, "debugShowActiveSpans" +
" id=IDX CUBIC_VAL t=T_VAL PT_VAL tEnd=T_VAL windSum=OPT windValue=IDX oppValue=NUM"
);
break;
case REC_TYPE_ACTIVE_OP:
found = match_regexp(line, lineNo, record, ACTIVE_OP, "activeOp" +
" id=IDX t=T_VAL tEnd=T_VAL op=OPER miFrom=NUM miTo=NUM suFrom=NUM suTo=NUM result=IDX"
);
break;
case REC_TYPE_ADD:
if (match_regexp(line, lineNo, record, ADD_MOVETO, "PATH.moveTo(P_VAL);")) {
moveX = record[1][0];
moveY = record[1][1];
found = true;
} else if (match_regexp(line, lineNo, record, ADD_LINETO, "PATH.lineTo(P_VAL);")) {
record[1].unshift(moveY);
record[1].unshift(moveX);
moveX = record[1][2];
moveY = record[1][3];
found = true;
} else if (match_regexp(line, lineNo, record, ADD_QUADTO, "PATH.quadTo(P_VAL, P_VAL);")) {
record[1].unshift(moveY);
record[1].unshift(moveX);
moveX = record[1][4];
moveY = record[1][5];
found = true;
} else if (match_regexp(line, lineNo, record, ADD_CONICTO, "PATH.conicTo(P_VAL, P_VAL, T_VAL);")) {
record[1].unshift(moveY);
record[1].unshift(moveX);
moveX = record[1][4];
moveY = record[1][5];
found = true;
} else if (match_regexp(line, lineNo, record, ADD_CUBICTO, "PATH.cubicTo(P_VAL, P_VAL, P_VAL);")) {
record[1].unshift(moveY);
record[1].unshift(moveX);
moveX = record[1][6];
moveY = record[1][7];
found = true;
} else if (match_regexp(line, lineNo, record, ADD_FILL, "PATH.setFillType(FILL_TYPE);")) {
found = true;
} else {
found = match_regexp(line, lineNo, record, ADD_CLOSE, "PATH.close();");
}
break;
case REC_TYPE_AFTERPART:
found = match_regexp(line, lineNo, record, PATH_LINE, "afterPart LINE_VAL")
|| match_regexp(line, lineNo, record, PATH_QUAD, "afterPart QUAD_VAL")
|| match_regexp(line, lineNo, record, PATH_CONIC, "afterPart CONIC_VAL")
|| match_regexp(line, lineNo, record, PATH_CUBIC, "afterPart CUBIC_VAL")
break;
case REC_TYPE_ANGLE:
found = match_regexp(line, lineNo, record, ANGLE_AFTER, "after " +
"[IDX/IDX] NUM/NUM tStart=T_VAL tEnd=T_VAL < [IDX/IDX] NUM/NUM tStart=T_VAL tEnd=T_VAL < [IDX/IDX] NUM/NUM tStart=T_VAL tEnd=T_VAL T_F IDX");
break;
case REC_TYPE_COIN:
found = true;
break;
case REC_TYPE_COMPUTED:
found = line == "computed quadratics given"
|| match_regexp(line, lineNo, record, COMPUTED_SET_1, "computed quadratics set 1"
) || match_regexp(line, lineNo, record, COMPUTED_SET_2, "computed quadratics set 2"
) || match_regexp(line, lineNo, record, PATH_QUAD, " QUAD_VAL,"
) || match_regexp(line, lineNo, record, PATH_CONIC, " CONIC_VAL,"
) || match_regexp(line, lineNo, record, PATH_CUBIC, " CUBIC_VAL,"
);
break;
case REC_TYPE_PATH:
found = match_regexp(line, lineNo, record, PATH_LINE, "seg=IDX LINE_VAL"
) || match_regexp(line, lineNo, record, PATH_QUAD, "seg=IDX QUAD_VAL"
) || match_regexp(line, lineNo, record, PATH_CONIC, "seg=IDX CONIC_VAL"
) || match_regexp(line, lineNo, record, PATH_CUBIC, "seg=IDX CUBIC_VAL"
);
break;
case REC_TYPE_PATH2:
found = match_regexp(line, lineNo, record, PATH_LINE, "((SkOpSegment*) PTR_VAL) [IDX] {LINE_VAL}"
) || match_regexp(line, lineNo, record, PATH_QUAD, "((SkOpSegment*) PTR_VAL) [IDX] {QUAD_VAL}"
) || match_regexp(line, lineNo, record, PATH_CONIC, "((SkOpSegment*) PTR_VAL) [IDX] {CONIC_VAL}"
) || match_regexp(line, lineNo, record, PATH_CUBIC, "((SkOpSegment*) PTR_VAL) [IDX] {CUBIC_VAL}"
);
break;
case REC_TYPE_SECT:
found = match_regexp(line, lineNo, record, INTERSECT_LINE, "debugShowLineIntersection" +
" wtTs[0]=T_VAL LINE_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_LINE_2, "debugShowLineIntersection" +
" wtTs[0]=T_VAL LINE_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_LINE_NO, "debugShowLineIntersection" +
" no intersect LINE_VAL LINE_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE, "debugShowQuadLineIntersection" +
" wtTs[0]=T_VAL QUAD_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE_2, "debugShowQuadLineIntersection" +
" wtTs[0]=T_VAL QUAD_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE_NO, "debugShowQuadLineIntersection" +
" no intersect QUAD_VAL LINE_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_QUAD, "debugShowQuadIntersection" +
" wtTs[0]=T_VAL QUAD_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_QUAD_2, "debugShowQuadIntersection" +
" wtTs[0]=T_VAL QUAD_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_QUAD_NO, "debugShowQuadIntersection" +
" no intersect QUAD_VAL QUAD_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CONIC_LINE, "debugShowConicLineIntersection" +
" wtTs[0]=T_VAL CONIC_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CONIC_LINE_2, "debugShowConicLineIntersection" +
" wtTs[0]=T_VAL CONIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CONIC_LINE_NO, "debugShowConicLineIntersection" +
" no intersect CONIC_VAL LINE_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CONIC, "debugShowConicIntersection" +
" wtTs[0]=T_VAL CONIC_VAL PT_VAL wnTs[0]=T_VAL CONIC_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CONIC_2, "debugShowConicIntersection" +
" wtTs[0]=T_VAL CONIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL CONIC_VAL wnTs[1]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CONIC_NO, "debugShowConicIntersection" +
" no intersect CONIC_VAL CONIC_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE, "debugShowCubicLineIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_2, "debugShowCubicLineIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_3, "debugShowCubicLineIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_NO, "debugShowCubicLineIntersection" +
" no intersect CUBIC_VAL LINE_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD, "debugShowCubicQuadIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_2, "debugShowCubicQuadIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_3, "debugShowCubicQuadIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_4, "debugShowCubicQuadIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL wtTs[3]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL wnTs[3]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_NO, "debugShowCubicQuadIntersection" +
" no intersect CUBIC_VAL QUAD_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC, "debugShowCubicIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_2, "debugShowCubicIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_3, "debugShowCubicIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_4, "debugShowCubicIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wtTs[3]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL wnTs[3]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_NO, "debugShowCubicIntersection" +
" no intersect CUBIC_VAL CUBIC_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_SELF_CUBIC, "debugShowCubicIntersection" +
" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL"
) || match_regexp(line, lineNo, record, INTERSECT_SELF_CUBIC_NO, "debugShowCubicIntersection" +
" no self intersect CUBIC_VAL"
);
break;
case REC_TYPE_SORT:
var hasDone = / done/.test(line);
var hasUnorderable = / unorderable/.test(line);
var hasSmall = / small/.test(line);
var hasTiny = / tiny/.test(line);
var hasOperand = / operand/.test(line);
var hasStop = / stop/.test(line);
line.replace(/[ a-z]+$/, "");
found = match_regexp(line, lineNo, record, SORT_UNARY, "debugOne" +
" [IDX/IDX] next=IDX/IDX sect=IDX/IDX s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT"
) || match_regexp(line, lineNo, record, SORT_BINARY, "debugOne" +
" [IDX/IDX] next=IDX/IDX sect=IDX/IDX s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT oppVal=IDX oppSum=OPT"
) || match_regexp(line, lineNo, record, SORT_UNARY, "dumpOne" +
" [IDX/IDX] next=IDX/IDX sect=NUM/NUM s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT"
) || match_regexp(line, lineNo, record, SORT_BINARY, "dumpOne" +
" [IDX/IDX] next=IDX/IDX sect=NUM/NUM s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT oppVal=IDX oppSum=OPT"
);
if (found) {
record[1].push(hasDone);
record[1].push(hasUnorderable);
record[1].push(hasSmall);
record[1].push(hasTiny);
record[1].push(hasOperand);
record[1].push(hasStop);
}
break;
case REC_TYPE_TOP:
found = match_regexp(line, lineNo, record, ACTIVE_OP, "findTop" +
" id=IDX s=T_VAL e=T_VAL cw=NUM swap=NUM inflections=NUM monotonic=NUM"
) || match_regexp(line, lineNo, record, ACTIVE_OP, "findTop" +
" id=IDX s=T_VAL e=T_VAL (-) cw=NUM swap=NUM inflections=NUM monotonic=NUM"
) || match_regexp(line, lineNo, record, ACTIVE_OP, "findTop" +
" id=IDX s=T_VAL e=T_VAL (+) cw=NUM swap=NUM inflections=NUM monotonic=NUM"
);
break;
case REC_TYPE_MARK:
found = match_regexp(line, lineNo, record, MARK_LINE, "markWinding" +
" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX"
) || match_regexp(line, lineNo, record, MARK_QUAD, "markWinding" +
" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX"
) || match_regexp(line, lineNo, record, MARK_CONIC, "markWinding" +
" id=IDX CONIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX"
) || match_regexp(line, lineNo, record, MARK_CUBIC, "markWinding" +
" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX"
) || match_regexp(line, lineNo, record, MARK_DONE_LINE, "markDone" +
" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=OPT newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX oppValue=OPT"
) || match_regexp(line, lineNo, record, MARK_DONE_QUAD, "markDone" +
" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=OPT newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX oppValue=OPT"
) || match_regexp(line, lineNo, record, MARK_DONE_CONIC, "markDone" +
" id=IDX CONIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=OPT newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX oppValue=OPT"
) || match_regexp(line, lineNo, record, MARK_DONE_CUBIC, "markDone" +
" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=OPT newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX oppValue=OPT"
) || match_regexp(line, lineNo, record, MARK_SIMPLE_LINE, "markWinding" +
" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
) || match_regexp(line, lineNo, record, MARK_SIMPLE_QUAD, "markWinding" +
" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
) || match_regexp(line, lineNo, record, MARK_SIMPLE_CONIC, "markWinding" +
" id=IDX CONIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
) || match_regexp(line, lineNo, record, MARK_SIMPLE_CUBIC, "markWinding" +
" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
) || match_regexp(line, lineNo, record, MARK_ANGLE_LAST, "markAngle" +
" last segment=IDX span=IDX"
) || match_regexp(line, lineNo, record, MARK_ANGLE_LAST, "markAngle" +
" last segment=IDX span=IDX windSum=OPT");
break;
case REC_TYPE_OP:
if (line.lastIndexOf("oppSign oppSign=", 0) === 0
|| line.lastIndexOf("operator<", 0) === 0) {
found = true;
break;
}
found = match_regexp(line, lineNo, record, OP_DIFFERENCE, "op diff"
) || match_regexp(line, lineNo, record, OP_INTERSECT, "op intersect"
) || match_regexp(line, lineNo, record, OP_INTERSECT, "op sect"
) || match_regexp(line, lineNo, record, OP_UNION, "op union"
) || match_regexp(line, lineNo, record, OP_XOR, "op xor"
);
break;
case REC_TYPE_UNKNOWN:
found = true;
break;
}
if (!found) {
console.log(line + " [" + lineNo + "] of type " + type + " not found");
}
}
if (recType != REC_TYPE_UNKNOWN) {
records.push(recType);
records.push(lastLineNo);
records.push(record);
}
if (records.length >= 1) {
tests[testIndex] = records;
testLines[testIndex] = lines;
}
}
function init(test) {
var canvas = document.getElementById('canvas');
if (!canvas.getContext) return;
ctx = canvas.getContext('2d');
var resScale = retina_scale && window.devicePixelRatio ? window.devicePixelRatio : 1;
var unscaledWidth = window.innerWidth - 20;
var unscaledHeight = window.innerHeight - 20;
screenWidth = unscaledWidth;
screenHeight = unscaledHeight;
canvas.width = unscaledWidth * resScale;
canvas.height = unscaledHeight * resScale;
canvas.style.width = unscaledWidth + 'px';
canvas.style.height = unscaledHeight + 'px';
if (resScale != 1) {
ctx.scale(resScale, resScale);
}
xmin = Infinity;
xmax = -Infinity;
ymin = Infinity;
ymax = -Infinity;
hasPath = hasComputedPath = false;
firstActiveSpan = -1;
for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
var recType = test[tIndex];
if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
console.log("unknown rec type: " + recType);
throw "stop execution";
}
var records = test[tIndex + 2];
for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
var fragType = records[recordIndex];
if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_TYPE_LAST) {
console.log("unknown in range frag type: " + fragType);
throw "stop execution";
}
var frags = records[recordIndex + 1];
var first = 0;
var last = -1;
var first2 = 0;
var last2 = 0;
switch (recType) {
case REC_TYPE_COMPUTED:
if (fragType == COMPUTED_SET_1 || fragType == COMPUTED_SET_2) {
break;
}
hasComputedPath = true;
case REC_TYPE_PATH:
first = 1;
switch (fragType) {
case PATH_LINE:
last = 5;
break;
case PATH_CONIC:
case PATH_QUAD:
last = 7;
break;
case PATH_CUBIC:
last = 9;
break;
default:
console.log("unknown " + (recType == REC_TYPE_PATH ? "REC_TYPE_PATH"
: "REC_TYPE_COMPUTED") + " frag type:" + fragType);
throw "stop execution";
}
if (recType == REC_TYPE_PATH) {
hasPath = true;
}
break;
case REC_TYPE_PATH2:
first = 1;
switch (fragType) {
case PATH_LINE:
last = 5;
break;
case PATH_CONIC:
case PATH_QUAD:
last = 7;
break;
case PATH_CUBIC:
last = 9;
break;
default:
console.log("unknown " + (recType == REC_TYPE_PATH2 ? "REC_TYPE_PATH2"
: "REC_TYPE_COMPUTED") + " frag type:" + fragType);
throw "stop execution";
}
if (recType == REC_TYPE_PATH2) {
hasPath = true;
}
break;
case REC_TYPE_ACTIVE:
if (firstActiveSpan < 0) {
firstActiveSpan = tIndex;
}
first = 1;
switch (fragType) {
case ACTIVE_LINE_SPAN:
last = 5;
break;
case ACTIVE_CONIC_SPAN:
case ACTIVE_QUAD_SPAN:
last = 7;
break;
case ACTIVE_CUBIC_SPAN:
last = 9;
break;
default:
console.log("unknown REC_TYPE_ACTIVE frag type: " + fragType);
throw "stop execution";
}
break;
case REC_TYPE_ADD:
switch (fragType) {
case ADD_MOVETO:
break;
case ADD_LINETO:
last = 4;
break;
case ADD_CONICTO:
case ADD_QUADTO:
last = 6;
break;
case ADD_CUBICTO:
last = 8;
break;
case ADD_CLOSE:
case ADD_FILL:
break;
default:
console.log("unknown REC_TYPE_ADD frag type: " + fragType);
throw "stop execution";
}
break;
case REC_TYPE_AFTERPART:
switch (fragType) {
case PATH_LINE:
last = 4;
break;
case PATH_CONIC:
case PATH_QUAD:
last = 6;
break;
case PATH_CUBIC:
last = 8;
break;
default:
console.log("unknown REC_TYPE_ACTIVEPART frag type: " + fragType);
throw "stop execution";
}
break;
case REC_TYPE_SECT:
switch (fragType) {
case INTERSECT_LINE:
first = 1; last = 5; first2 = 8; last2 = 12;
break;
case INTERSECT_LINE_2:
first = 1; last = 5; first2 = 11; last2 = 15;
break;
case INTERSECT_LINE_NO:
first = 0; last = 4; first2 = 4; last2 = 8;
break;
case INTERSECT_CONIC_LINE:
first = 1; last = 7; first2 = 11; last2 = 15;
break;
case INTERSECT_QUAD_LINE:
first = 1; last = 7; first2 = 10; last2 = 14;
break;
case INTERSECT_CONIC_LINE_2:
first = 1; last = 7; first2 = 14; last2 = 18;
break;
case INTERSECT_QUAD_LINE_2:
first = 1; last = 7; first2 = 13; last2 = 17;
break;
case INTERSECT_CONIC_LINE_NO:
first = 0; last = 6; first2 = 7; last2 = 11;
break;
case INTERSECT_QUAD_LINE_NO:
first = 0; last = 6; first2 = 6; last2 = 10;
break;
case INTERSECT_CONIC:
first = 1; last = 7; first2 = 11; last2 = 17;
break;
case INTERSECT_QUAD:
first = 1; last = 7; first2 = 10; last2 = 16;
break;
case INTERSECT_CONIC_2:
first = 1; last = 7; first2 = 14; last2 = 20;
break;
case INTERSECT_QUAD_2:
first = 1; last = 7; first2 = 13; last2 = 19;
break;
case INTERSECT_CONIC_NO:
first = 0; last = 6; first2 = 7; last2 = 13;
break;
case INTERSECT_QUAD_NO:
first = 0; last = 6; first2 = 6; last2 = 12;
break;
case INTERSECT_SELF_CUBIC:
first = 1; last = 9;
break;
case INTERSECT_SELF_CUBIC_NO:
first = 0; last = 8;
break;
case INTERSECT_CUBIC_LINE:
first = 1; last = 9; first2 = 12; last2 = 16;
break;
case INTERSECT_CUBIC_LINE_2:
first = 1; last = 9; first2 = 15; last2 = 19;
break;
case INTERSECT_CUBIC_LINE_3:
first = 1; last = 9; first2 = 18; last2 = 22;
break;
case INTERSECT_CUBIC_LINE_NO:
first = 0; last = 8; first2 = 8; last2 = 12;
break;
case INTERSECT_CUBIC_QUAD:
first = 1; last = 9; first2 = 12; last2 = 18;
break;
case INTERSECT_CUBIC_QUAD_2:
first = 1; last = 9; first2 = 15; last2 = 21;
break;
case INTERSECT_CUBIC_QUAD_3:
first = 1; last = 9; first2 = 18; last2 = 24;
break;
case INTERSECT_CUBIC_QUAD_4:
first = 1; last = 9; first2 = 21; last2 = 27;
break;
case INTERSECT_CUBIC_QUAD_NO:
first = 0; last = 8; first2 = 8; last2 = 14;
break;
case INTERSECT_CUBIC:
first = 1; last = 9; first2 = 12; last2 = 20;
break;
case INTERSECT_CUBIC_2:
first = 1; last = 9; first2 = 15; last2 = 23;
break;
case INTERSECT_CUBIC_3:
first = 1; last = 9; first2 = 18; last2 = 26;
break;
case INTERSECT_CUBIC_4:
first = 1; last = 9; first2 = 21; last2 = 29;
break;
case INTERSECT_CUBIC_NO:
first = 0; last = 8; first2 = 8; last2 = 16;
break;
default:
console.log("unknown REC_TYPE_SECT frag type: " + fragType);
throw "stop execution";
}
break;
default:
continue;
}
for (var idx = first; idx < last; idx += 2) {
xmin = Math.min(xmin, frags[idx]);
xmax = Math.max(xmax, frags[idx]);
ymin = Math.min(ymin, frags[idx + 1]);
ymax = Math.max(ymax, frags[idx + 1]);
}
for (var idx = first2; idx < last2; idx += 2) {
xmin = Math.min(xmin, frags[idx]);
xmax = Math.max(xmax, frags[idx]);
ymin = Math.min(ymin, frags[idx + 1]);
ymax = Math.max(ymax, frags[idx + 1]);
}
}
}
var angleBounds = [Infinity, Infinity, -Infinity, -Infinity];
for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
var recType = test[tIndex];
var records = test[tIndex + 2];
for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
var fragType = records[recordIndex];
var frags = records[recordIndex + 1];
switch (recType) {
case REC_TYPE_ACTIVE_OP:
if (!draw_op) {
break;
}
{
var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
curve_extremes(curve, angleBounds);
}
break;
case REC_TYPE_ANGLE:
if (!draw_angle) {
break;
}
{
var curve = curvePartialByID(test, frags[0], frags[4], frags[5]);
curve_extremes(curve, angleBounds);
curve = curvePartialByID(test, frags[6], frags[10], frags[11]);
curve_extremes(curve, angleBounds);
curve = curvePartialByID(test, frags[12], frags[16], frags[17]);
}
break;
case REC_TYPE_SORT:
if (!draw_sort) {
break;
}
if (fragType == SORT_UNARY || fragType == SORT_BINARY) {
var curve = curvePartialByID(test, frags[0], frags[6], frags[8]);
curve_extremes(curve, angleBounds);
}
break;
case REC_TYPE_TOP:
if (!draw_top) {
break;
}
{
var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
curve_extremes(curve, angleBounds);
}
break;
}
}
}
xmin = Math.min(xmin, angleBounds[0]);
ymin = Math.min(ymin, angleBounds[1]);
xmax = Math.max(xmax, angleBounds[2]);
ymax = Math.max(ymax, angleBounds[3]);
setScale(xmin, xmax, ymin, ymax);
if (hasPath == false && hasComputedPath == true && !draw_computed) {
draw_computed = 7; // show quadratics, conics, and cubics
}
if (hasPath == true && hasComputedPath == false && draw_computed) {
draw_computed = 0;
}
}
function curveByID(test, id) {
var tIndex = -3;
while ((tIndex += 3) < test.length) {
var recType = test[tIndex];
if (recType == REC_TYPE_OP) {
continue;
}
if (recType != REC_TYPE_PATH) {
return [];
}
var records = test[tIndex + 2];
for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
var fragType = records[recordIndex];
var frags = records[recordIndex + 1];
if (frags[0] == id) {
switch (fragType) {
case PATH_LINE:
return [frags[1], frags[2], frags[3], frags[4]];
case PATH_QUAD:
return [frags[1], frags[2], frags[3], frags[4],
frags[5], frags[6]];
case PATH_CONIC:
return [frags[1], frags[2], frags[3], frags[4],
frags[5], frags[6], frags[7]];
case PATH_CUBIC:
return [frags[1], frags[2], frags[3], frags[4],
frags[5], frags[6], frags[7], frags[8]];
}
}
}
}
return [];
}
function curvePartialByID(test, id, t0, t1) {
var tIndex = -3;
while ((tIndex += 3) < test.length) {
var recType = test[tIndex];
if (recType == REC_TYPE_OP) {
continue;
}
if (recType != REC_TYPE_PATH) {
return [];
}
var records = test[tIndex + 2];
for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
var fragType = records[recordIndex];
var frags = records[recordIndex + 1];
if (frags[0] == id) {
switch (fragType) {
case PATH_LINE:
return linePartial(frags[1], frags[2], frags[3], frags[4], t0, t1);
case PATH_QUAD:
return quadPartial(frags[1], frags[2], frags[3], frags[4],
frags[5], frags[6], t0, t1);
case PATH_CONIC:
return conicPartial(frags[1], frags[2], frags[3], frags[4],
frags[5], frags[6], frags[7], t0, t1);
case PATH_CUBIC:
return cubicPartial(frags[1], frags[2], frags[3], frags[4],
frags[5], frags[6], frags[7], frags[8], t0, t1);
}
}
}
}
return [];
}
function idByCurve(test, frag, type) {
var tIndex = 0;
while (tIndex < test.length) {
var recType = test[tIndex];
if (recType != REC_TYPE_PATH) {
++tIndex;
continue;
}
var records = test[tIndex + 2];
for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
var fragType = records[recordIndex];
var frags = records[recordIndex + 1];
if (frag.length != frags.length - 1) {
continue;
}
switch (fragType) {
case PATH_LINE:
if (frag[0] != frags[1] || frag[1] != frags[2]
|| frag[2] != frags[3] || frag[3] != frags[4]) {
continue;
}
return frags[0];
case PATH_QUAD:
if (frag[0] != frags[1] || frag[1] != frags[2]
|| frag[2] != frags[3] || frag[3] != frags[4]
|| frag[4] != frags[5] || frag[5] != frags[6]) {
continue;
}
return frags[0];
case PATH_CONIC:
if (frag[0] != frags[1] || frag[1] != frags[2]
|| frag[2] != frags[3] || frag[3] != frags[4]
|| frag[4] != frags[5] || frag[5] != frags[6]
|| frag[6] != frags[7]) {
continue;
}
return frags[0];
case PATH_CUBIC:
if (frag[0] != frags[1] || frag[1] != frags[2]
|| frag[2] != frags[3] || frag[3] != frags[4]
|| frag[4] != frags[5] || frag[5] != frags[6]
|| frag[6] != frags[7] || frag[7] != frags[8]) {
continue;
}
return frags[0];
}
}
++tIndex;
}
return -1;
}
function curve_extremes(curve, bounds) {
var length = curve.length == 7 ? 6 : curve.length;
for (var index = 0; index < curve.length; index += 2) {
var x = curve[index];
var y = curve[index + 1];
bounds[0] = Math.min(bounds[0], x);
bounds[1] = Math.min(bounds[1], y);
bounds[2] = Math.max(bounds[2], x);
bounds[3] = Math.max(bounds[3], y);
}
}
function setScale(x0, x1, y0, y1) {
var srcWidth = x1 - x0;
var srcHeight = y1 - y0;
var usableWidth = screenWidth;
var xDigits = Math.ceil(Math.log(Math.abs(xmax)) / Math.log(10));
var yDigits = Math.ceil(Math.log(Math.abs(ymax)) / Math.log(10));
usableWidth -= (xDigits + yDigits) * 10;
usableWidth -= decimal_places * 10;
if (draw_legend) {
usableWidth -= 40;
}
var hscale = usableWidth / srcWidth;
var vscale = screenHeight / srcHeight;
scale = Math.min(hscale, vscale);
var invScale = 1 / scale;
var sxmin = x0 - invScale * 5;
var symin = y0 - invScale * 10;
var sxmax = x1 + invScale * (6 * decimal_places + 10);
var symax = y1 + invScale * 10;
srcWidth = sxmax - sxmin;
srcHeight = symax - symin;
hscale = usableWidth / srcWidth;
vscale = screenHeight / srcHeight;
scale = Math.min(hscale, vscale);
srcLeft = sxmin;
srcTop = symin;
}
function drawArc(curve, op, from, to) {
var type = PATH_LINE + (curve.length / 2 - 2);
var pt = pointAtT(curve, type, op ? 0.4 : 0.6);
var dy = pt.y - curve[1];
var dx = pt.x - curve[0];
var dist = Math.sqrt(dy * dy + dx * dx);
var _dist = dist * scale;
var angle = Math.atan2(dy, dx);
var _px = (curve[0] - srcLeft) * scale;
var _py = (curve[1] - srcTop) * scale;
var divisor = 4;
var endDist;
do {
var ends = [];
for (var index = -1; index <= 1; index += 2) {
var px = Math.cos(index * Math.PI / divisor);
var py = Math.sin(index * Math.PI / divisor);
ends.push(px);
ends.push(py);
}
var endDx = (ends[2] - ends[0]) * scale * dist;
var endDy = (ends[3] - ends[1]) * scale * dist;
endDist = Math.sqrt(endDx * endDx + endDy * endDy);
if (endDist < 100) {
break;
}
divisor *= 2;
} while (true);
if (endDist < 30) {
return;
}
if (op) {
divisor *= 2;
}
ctx.strokeStyle = op ? "rgba(210,0,45, 0.4)" : "rgba(90,90,90, 0.5)";
ctx.beginPath();
ctx.arc(_px, _py, _dist, angle - Math.PI / divisor, angle + Math.PI / divisor, false);
ctx.stroke();
var saveAlign = ctx.textAlign;
var saveStyle = ctx.fillStyle;
var saveFont = ctx.font;
ctx.textAlign = "center";
ctx.fillStyle = "black";
ctx.font = "normal 24px Arial";
divisor *= 0.8;
for (var index = -1; index <= 1; index += 2) {
var px = curve[0] + Math.cos(angle + index * Math.PI / divisor) * dist;
var py = curve[1] + Math.sin(angle + index * Math.PI / divisor) * dist;
var _px = (px - srcLeft) * scale;
var _py = (py - srcTop) * scale;
ctx.fillText(index < 0 ? to.toString() : from.toString(), _px, _py + 8);
}
ctx.textAlign = saveAlign;
ctx.fillStyle = saveStyle;
ctx.font = saveFont;
}
function drawPoint(px, py, end) {
var length = drawnPts.length == 7 ? 6 : drawnPts.length;
for (var pts = 0; pts < length; pts += 2) {
var x = drawnPts[pts];
var y = drawnPts[pts + 1];
if (px == x && py == y) {
return;
}
}
drawnPts.push(px);
drawnPts.push(py);
var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
var _px = (px - srcLeft) * scale;
var _py = (py - srcTop) * scale;
ctx.beginPath();
ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
ctx.closePath();
if (end) {
ctx.fill();
} else {
ctx.stroke();
}
if (debug_xy) {
ctx.textAlign = "left";
ctx.fillText(label, _px + 5, _py);
}
}
function coordCount(curveType) {
switch (curveType) {
case PATH_LINE:
return 4;
case PATH_QUAD:
return 6;
case PATH_CONIC:
return 6;
case PATH_CUBIC:
return 8;
}
return -1;
}
function drawPoints(ptArray, curveType, drawControls) {
var count = coordCount(curveType);
for (var idx = 0; idx < count; idx += 2) {
if (!drawControls && idx != 0 && idx != count - 2) {
continue;
}
drawPoint(ptArray[idx], ptArray[idx + 1], idx == 0 || idx == count - 2);
}
}
function drawControlLines(curve, curveType, drawEnd) {
if (curveType == PATH_LINE) {
return;
}
ctx.strokeStyle = "rgba(0,0,0, 0.3)";
drawLine(curve[0], curve[1], curve[2], curve[3]);
drawLine(curve[2], curve[3], curve[4], curve[5]);
if (curveType == PATH_CUBIC) {
drawLine(curve[4], curve[5], curve[6], curve[7]);
if (drawEnd > 1) {
drawLine(curve[6], curve[7], curve[0], curve[1]);
if (drawEnd > 2) {
drawLine(curve[0], curve[1], curve[4], curve[5]);
drawLine(curve[6], curve[7], curve[2], curve[3]);
}
}
} else if (drawEnd > 1) {
drawLine(curve[4], curve[5], curve[0], curve[1]);
}
}
function pointAtT(curve, curveType, t) {
var xy = {};
switch (curveType) {
case PATH_LINE:
var a = 1 - t;
var b = t;
xy.x = a * curve[0] + b * curve[2];
xy.y = a * curve[1] + b * curve[3];
break;
case PATH_QUAD:
var one_t = 1 - t;
var a = one_t * one_t;
var b = 2 * one_t * t;
var c = t * t;
xy.x = a * curve[0] + b * curve[2] + c * curve[4];
xy.y = a * curve[1] + b * curve[3] + c * curve[5];
break;
case PATH_CONIC:
var one_t = 1 - t;
var a = one_t * one_t;
var b = 2 * one_t * t;
var c = t * t;
xy.x = a * curve[0] + b * curve[2] * curve[6] + c * curve[4];
xy.y = a * curve[1] + b * curve[3] * curve[6] + c * curve[5];
var d = a + b * curve[6] + c;
xy.x /= d;
xy.y /= d;
break;
case PATH_CUBIC:
var one_t = 1 - t;
var one_t2 = one_t * one_t;
var a = one_t2 * one_t;
var b = 3 * one_t2 * t;
var t2 = t * t;
var c = 3 * one_t * t2;
var d = t2 * t;
xy.x = a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
xy.y = a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
break;
}
return xy;
}
function drawPointAtT(curve, curveType) {
var x, y;
var xy = pointAtT(curve, curveType, curveT);
drawPoint(xy.x, xy.y, true);
if (!draw_intersectT) {
return;
}
ctx.fillStyle = "red";
drawTAtPointUp(xy.x, xy.y, curveT);
}
function drawTAtPointUp(px, py, t) {
var label = t.toFixed(decimal_places);
var _px = (px - srcLeft)* scale;
var _py = (py - srcTop) * scale;
ctx.fillText(label, _px + 5, _py - 10);
}
function drawTAtPointDown(px, py, t) {
var label = t.toFixed(decimal_places);
var _px = (px - srcLeft)* scale;
var _py = (py - srcTop) * scale;
ctx.fillText(label, _px + 5, _py + 10);
}
function alreadyDrawnLine(x1, y1, x2, y2) {
if (collect_bounds) {
if (focus_enabled) {
focusXmin = Math.min(focusXmin, x1, x2);
focusYmin = Math.min(focusYmin, y1, y2);
focusXmax = Math.max(focusXmax, x1, x2);
focusYmax = Math.max(focusYmax, y1, y2);
}
return true;
}
for (var pts = 0; pts < drawnLines.length; pts += 4) {
if (x1 == drawnLines[pts] && y1 == drawnLines[pts + 1]
&& x2 == drawnLines[pts + 2] && y2 == drawnLines[pts + 3]) {
return true;
}
}
drawnLines.push(x1);
drawnLines.push(y1);
drawnLines.push(x2);
drawnLines.push(y2);
return false;
}
function drawLine(x1, y1, x2, y2) {
if (alreadyDrawnLine(x1, y1, x2, y2)) {
return;
}
ctx.beginPath();
ctx.moveTo((x1 - srcLeft) * scale,
(y1 - srcTop) * scale);
ctx.lineTo((x2 - srcLeft) * scale,
(y2 - srcTop) * scale);
ctx.stroke();
}
function linePartial(x1, y1, x2, y2, t1, t2) {
var dx = x1 - x2;
var dy = y1 - y2;
var array = [
x1 - t1 * dx,
y1 - t1 * dy,
x1 - t2 * dx,
y1 - t2 * dy
];
return array;
}
function drawLinePartial(x1, y1, x2, y2, t1, t2) {
var a = linePartial(x1, y1, x2, y2, t1, t2);
var ax = a[0];
var ay = a[1];
var bx = a[2];
var by = a[3];
if (alreadyDrawnLine(ax, ay, bx, by)) {
return;
}
ctx.beginPath();
ctx.moveTo((ax - srcLeft) * scale,
(ay - srcTop) * scale);
ctx.lineTo((bx - srcLeft) * scale,
(by - srcTop) * scale);
ctx.stroke();
}
function alreadyDrawnQuad(x1, y1, x2, y2, x3, y3) {
if (collect_bounds) {
if (focus_enabled) {
focusXmin = Math.min(focusXmin, x1, x2, x3);
focusYmin = Math.min(focusYmin, y1, y2, y3);
focusXmax = Math.max(focusXmax, x1, x2, x3);
focusYmax = Math.max(focusYmax, y1, y2, y3);
}
return true;
}
for (var pts = 0; pts < drawnQuads.length; pts += 6) {
if (x1 == drawnQuads[pts] && y1 == drawnQuads[pts + 1]
&& x2 == drawnQuads[pts + 2] && y2 == drawnQuads[pts + 3]
&& x3 == drawnQuads[pts + 4] && y3 == drawnQuads[pts + 5]) {
return true;
}
}
drawnQuads.push(x1);
drawnQuads.push(y1);
drawnQuads.push(x2);
drawnQuads.push(y2);
drawnQuads.push(x3);
drawnQuads.push(y3);
return false;
}
function drawQuad(x1, y1, x2, y2, x3, y3) {
if (alreadyDrawnQuad(x1, y1, x2, y2, x3, y3)) {
return;
}
ctx.beginPath();
ctx.moveTo((x1 - srcLeft) * scale,
(y1 - srcTop) * scale);
ctx.quadraticCurveTo((x2 - srcLeft) * scale,
(y2 - srcTop) * scale,
(x3 - srcLeft) * scale,
(y3 - srcTop) * scale);
ctx.stroke();
}
function interp(A, B, t) {
return A + (B - A) * t;
}
function interp_quad_coords(x1, x2, x3, t)
{
var ab = interp(x1, x2, t);
var bc = interp(x2, x3, t);
var abc = interp(ab, bc, t);
return abc;
}
function quadPartial(x1, y1, x2, y2, x3, y3, t1, t2) {
var ax = interp_quad_coords(x1, x2, x3, t1);
var ay = interp_quad_coords(y1, y2, y3, t1);
var dx = interp_quad_coords(x1, x2, x3, (t1 + t2) / 2);
var dy = interp_quad_coords(y1, y2, y3, (t1 + t2) / 2);
var cx = interp_quad_coords(x1, x2, x3, t2);
var cy = interp_quad_coords(y1, y2, y3, t2);
var bx = 2*dx - (ax + cx)/2;
var by = 2*dy - (ay + cy)/2;
var array = [
ax, ay, bx, by, cx, cy
];
return array;
}
function drawQuadPartial(x1, y1, x2, y2, x3, y3, t1, t2) {
var a = quadPartial(x1, y1, x2, y2, x3, y3, t1, t2);
var ax = a[0];
var ay = a[1];
var bx = a[2];
var by = a[3];
var cx = a[4];
var cy = a[5];
if (alreadyDrawnQuad(ax, ay, bx, by, cx, cy)) {
return;
}
ctx.beginPath();
ctx.moveTo((ax - srcLeft) * scale,
(ay - srcTop) * scale);
ctx.quadraticCurveTo((bx - srcLeft) * scale,
(by - srcTop) * scale,
(cx - srcLeft) * scale,
(cy - srcTop) * scale);
ctx.stroke();
}
function alreadyDrawnConic(x1, y1, x2, y2, x3, y3, w) {
if (collect_bounds) {
if (focus_enabled) {
focusXmin = Math.min(focusXmin, x1, x2, x3);
focusYmin = Math.min(focusYmin, y1, y2, y3);
focusXmax = Math.max(focusXmax, x1, x2, x3);
focusYmax = Math.max(focusYmax, y1, y2, y3);
}
return true;
}
for (var pts = 0; pts < drawnConics.length; pts += 8) {
if (x1 == drawnConics[pts] && y1 == drawnCubics[pts + 1]
&& x2 == drawnCubics[pts + 2] && y2 == drawnCubics[pts + 3]
&& x3 == drawnCubics[pts + 4] && y3 == drawnCubics[pts + 5]
&& w == drawnCubics[pts + 6]) {
return true;
}
}
drawnConics.push(x1);
drawnConics.push(y1);
drawnConics.push(x2);
drawnConics.push(y2);
drawnConics.push(x3);
drawnConics.push(y3);
drawnCubics.push(w);
return false;
}
var kMaxConicToQuadPOW2 = 5;
function computeQuadPOW2(curve, tol) {
var a = curve[6] - 1;
var k = a / (4 * (2 + a));
var x = k * (curve[0] - 2 * curve[2] + curve[4]);
var y = k * (curve[1] - 2 * curve[3] + curve[5]);
var error = Math.sqrt(x * x + y * y);
var pow2;
for (pow2 = 0; pow2 < kMaxConicToQuadPOW2; ++pow2) {
if (error <= tol) {
break;
}
error *= 0.25;
}
return pow2;
}
function subdivide_w_value(w) {
return Math.sqrt(0.5 + w * 0.5);
}
function chop(curve, part1, part2) {
var w = curve[6];
var scale = 1 / (1 + w);
part1[0] = curve[0];
part1[1] = curve[1];
part1[2] = (curve[0] + curve[2] * w) * scale;
part1[3] = (curve[1] + curve[3] * w) * scale;
part1[4] = part2[0] = (curve[0] + (curve[2] * w) * 2 + curve[4]) * scale * 0.5;
part1[5] = part2[1] = (curve[1] + (curve[3] * w) * 2 + curve[5]) * scale * 0.5;
part2[2] = (curve[2] * w + curve[4]) * scale;
part2[3] = (curve[3] * w + curve[5]) * scale;
part2[4] = curve[4];
part2[5] = curve[5];
part1[6] = part2[6] = subdivide_w_value(w);
}
function subdivide(curve, level, pts) {
if (0 == level) {
pts.push(curve[2]);
pts.push(curve[3]);
pts.push(curve[4]);
pts.push(curve[5]);
} else {
var part1 = [], part2 = [];
chop(curve, part1, part2);
--level;
subdivide(part1, level, pts);
subdivide(part2, level, pts);
}
}
function chopIntoQuadsPOW2(curve, pow2, pts) {
subdivide(curve, pow2, pts);
return 1 << pow2;
}
function drawConicWithQuads(x1, y1, x2, y2, x3, y3, w) {
if (alreadyDrawnConic(x1, y1, x2, y2, x3, y3, w)) {
return;
}
ctx.beginPath();
ctx.moveTo((x1 - srcLeft) * scale,
(y1 - srcTop) * scale);
var tol = 1 / scale;
var curve = [x1, y1, x2, y2, x3, y3, w];
var pow2 = computeQuadPOW2(curve, tol);
var pts = [];
chopIntoQuadsPOW2(curve, pow2, pts);
for (var i = 0; i < pts.length; i += 4) {
ctx.quadraticCurveTo(
(pts[i + 0] - srcLeft) * scale, (pts[i + 1] - srcTop) * scale,
(pts[i + 2] - srcLeft) * scale, (pts[i + 3] - srcTop) * scale);
}
ctx.stroke();
}
function conic_eval_numerator(x1, x2, x3, w, t) {
var src2w = x2 * w;
var C = x1;
var A = x3 - 2 * src2w + C;
var B = 2 * (src2w - C);
return (A * t + B) * t + C;
}
function conic_eval_denominator(w, t) {
var B = 2 * (w - 1);
var C = 1;
var A = -B;
return (A * t + B) * t + C;
}
function conicPartial(x1, y1, x2, y2, x3, y3, w, t1, t2) {
var ax = conic_eval_numerator(x1, x2, x3, w, t1);
var ay = conic_eval_numerator(y1, y2, y3, w, t1);
var az = conic_eval_denominator(w, t1);
var midT = (t1 + t2) / 2;
var dx = conic_eval_numerator(x1, x2, x3, w, midT);
var dy = conic_eval_numerator(y1, y2, y3, w, midT);
var dz = conic_eval_denominator(w, midT);
var cx = conic_eval_numerator(x1, x2, x3, w, t2);
var cy = conic_eval_numerator(y1, y2, y3, w, t2);
var cz = conic_eval_denominator(w, t2);
var bx = 2 * dx - (ax + cx) / 2;
var by = 2 * dy - (ay + cy) / 2;
var bz = 2 * dz - (az + cz) / 2;
var dt = t2 - t1;
var dt_1 = 1 - dt;
var partW = (1 + dt * (w - 1)) / Math.sqrt(dt * dt + 2 * dt * dt_1 * w + dt_1 * dt_1);
var array = [
ax / az, ay / az, bx / bz, by / bz, cx / cz, cy / cz, partW
];
return array;
}
function drawConicPartial(x1, y1, x2, y2, x3, y3, w, t1, t2) {
var a = conicPartial(x1, y1, x2, y2, x3, y3, w, t1, t2);
var ax = a[0];
var ay = a[1];
var bx = a[2];
var by = a[3];
var cx = a[4];
var cy = a[5];
var w_ = a[6];
drawConicWithQuads(ax, ay, bx, by, cx, cy, w_);
}
function alreadyDrawnCubic(x1, y1, x2, y2, x3, y3, x4, y4) {
if (collect_bounds) {
if (focus_enabled) {
focusXmin = Math.min(focusXmin, x1, x2, x3, x4);
focusYmin = Math.min(focusYmin, y1, y2, y3, y4);
focusXmax = Math.max(focusXmax, x1, x2, x3, x4);
focusYmax = Math.max(focusYmax, y1, y2, y3, y4);
}
return true;
}
for (var pts = 0; pts < drawnCubics.length; pts += 8) {
if (x1 == drawnCubics[pts] && y1 == drawnCubics[pts + 1]
&& x2 == drawnCubics[pts + 2] && y2 == drawnCubics[pts + 3]
&& x3 == drawnCubics[pts + 4] && y3 == drawnCubics[pts + 5]
&& x4 == drawnCubics[pts + 6] && y4 == drawnCubics[pts + 7]) {
return true;
}
}
drawnCubics.push(x1);
drawnCubics.push(y1);
drawnCubics.push(x2);
drawnCubics.push(y2);
drawnCubics.push(x3);
drawnCubics.push(y3);
drawnCubics.push(x4);
drawnCubics.push(y4);
return false;
}
function drawCubic(x1, y1, x2, y2, x3, y3, x4, y4) {
if (alreadyDrawnCubic(x1, y1, x2, y2, x3, y3, x4, y4)) {
return;
}
ctx.beginPath();
ctx.moveTo((x1 - srcLeft) * scale,
(y1 - srcTop) * scale);
ctx.bezierCurveTo((x2 - srcLeft) * scale,
(y2 - srcTop) * scale,
(x3 - srcLeft) * scale,
(y3 - srcTop) * scale,
(x4 - srcLeft) * scale,
(y4 - srcTop) * scale);
ctx.stroke();
}
function interp_cubic_coords(x1, x2, x3, x4, t)
{
var ab = interp(x1, x2, t);
var bc = interp(x2, x3, t);
var cd = interp(x3, x4, t);
var abc = interp(ab, bc, t);
var bcd = interp(bc, cd, t);
var abcd = interp(abc, bcd, t);
return abcd;
}
function cubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
var ax = interp_cubic_coords(x1, x2, x3, x4, t1);
var ay = interp_cubic_coords(y1, y2, y3, y4, t1);
var ex = interp_cubic_coords(x1, x2, x3, x4, (t1*2+t2)/3);
var ey = interp_cubic_coords(y1, y2, y3, y4, (t1*2+t2)/3);
var fx = interp_cubic_coords(x1, x2, x3, x4, (t1+t2*2)/3);
var fy = interp_cubic_coords(y1, y2, y3, y4, (t1+t2*2)/3);
var dx = interp_cubic_coords(x1, x2, x3, x4, t2);
var dy = interp_cubic_coords(y1, y2, y3, y4, t2);
var mx = ex * 27 - ax * 8 - dx;
var my = ey * 27 - ay * 8 - dy;
var nx = fx * 27 - ax - dx * 8;
var ny = fy * 27 - ay - dy * 8;
var bx = (mx * 2 - nx) / 18;
var by = (my * 2 - ny) / 18;
var cx = (nx * 2 - mx) / 18;
var cy = (ny * 2 - my) / 18;
var array = [
ax, ay, bx, by, cx, cy, dx, dy
];
return array;
}
function drawCubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
var a = cubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
var ax = a[0];
var ay = a[1];
var bx = a[2];
var by = a[3];
var cx = a[4];
var cy = a[5];
var dx = a[6];
var dy = a[7];
if (alreadyDrawnCubic(ax, ay, bx, by, cx, cy, dx, dy)) {
return;
}
ctx.beginPath();
ctx.moveTo((ax - srcLeft) * scale,
(ay - srcTop) * scale);
ctx.bezierCurveTo((bx - srcLeft) * scale,
(by - srcTop) * scale,
(cx - srcLeft) * scale,
(cy - srcTop) * scale,
(dx - srcLeft) * scale,
(dy - srcTop) * scale);
ctx.stroke();
}
function drawCurve(c) {
switch (c.length) {
case 4:
drawLine(c[0], c[1], c[2], c[3]);
break;
case 6:
drawQuad(c[0], c[1], c[2], c[3], c[4], c[5]);
break;
case 7:
drawConicWithQuads(c[0], c[1], c[2], c[3], c[4], c[5], c[6]);
break;
case 8:
drawCubic(c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7]);
break;
}
}
function boundsWidth(pts) {
var min = pts[0];
var max = pts[0];
var length = pts.length == 7 ? 6 : pts.length;
for (var idx = 2; idx < length; idx += 2) {
min = Math.min(min, pts[idx]);
max = Math.max(max, pts[idx]);
}
return max - min;
}
function boundsHeight(pts) {
var min = pts[1];
var max = pts[1];
var length = pts.length == 7 ? 6 : pts.length;
for (var idx = 3; idx < length; idx += 2) {
min = Math.min(min, pts[idx]);
max = Math.max(max, pts[idx]);
}
return max - min;
}
function tangent(pts) {
var dx = pts[2] - pts[0];
var dy = pts[3] - pts[1];
if (dx == 0 && dy == 0 && pts.length > 4) {
dx = pts[4] - pts[0];
dy = pts[5] - pts[1];
if (dx == 0 && dy == 0 && pts.length == 8) {
dx = pts[6] - pts[0];
dy = pts[7] - pts[1];
}
}
return Math.atan2(-dy, dx);
}
function hodograph(cubic) {
var hodo = [];
hodo[0] = 3 * (cubic[2] - cubic[0]);
hodo[1] = 3 * (cubic[3] - cubic[1]);
hodo[2] = 3 * (cubic[4] - cubic[2]);
hodo[3] = 3 * (cubic[5] - cubic[3]);
hodo[4] = 3 * (cubic[6] - cubic[4]);
hodo[5] = 3 * (cubic[7] - cubic[5]);
return hodo;
}
function hodograph2(cubic) {
var quad = hodograph(cubic);
var hodo = [];
hodo[0] = 2 * (quad[2] - quad[0]);
hodo[1] = 2 * (quad[3] - quad[1]);
hodo[2] = 2 * (quad[4] - quad[2]);
hodo[3] = 2 * (quad[5] - quad[3]);
return hodo;
}
function quadraticRootsReal(A, B, C, s) {
if (A == 0) {
if (B == 0) {
s[0] = 0;
return C == 0;
}
s[0] = -C / B;
return 1;
}
/* normal form: x^2 + px + q = 0 */
var p = B / (2 * A);
var q = C / A;
var p2 = p * p;
if (p2 < q) {
return 0;
}
var sqrt_D = 0;
if (p2 > q) {
sqrt_D = sqrt(p2 - q);
}
s[0] = sqrt_D - p;
s[1] = -sqrt_D - p;
return 1 + s[0] != s[1];
}
function add_valid_ts(s, realRoots, t) {
var foundRoots = 0;
for (var index = 0; index < realRoots; ++index) {
var tValue = s[index];
if (tValue >= 0 && tValue <= 1) {
for (var idx2 = 0; idx2 < foundRoots; ++idx2) {
if (t[idx2] != tValue) {
t[foundRoots++] = tValue;
}
}
}
}
return foundRoots;
}
function quadraticRootsValidT(a, b, c, t) {
var s = [];
var realRoots = quadraticRootsReal(A, B, C, s);
var foundRoots = add_valid_ts(s, realRoots, t);
return foundRoots != 0;
}
function find_cubic_inflections(cubic, tValues) {
var Ax = src[2] - src[0];
var Ay = src[3] - src[1];
var Bx = src[4] - 2 * src[2] + src[0];
var By = src[5] - 2 * src[3] + src[1];
var Cx = src[6] + 3 * (src[2] - src[4]) - src[0];
var Cy = src[7] + 3 * (src[3] - src[5]) - src[1];
return quadraticRootsValidT(Bx * Cy - By * Cx, (Ax * Cy - Ay * Cx),
Ax * By - Ay * Bx, tValues);
}
function dxy_at_t(curve, type, t) {
var dxy = {};
if (type == PATH_QUAD) {
var a = t - 1;
var b = 1 - 2 * t;
var c = t;
dxy.x = a * curve[0] + b * curve[2] + c * curve[4];
dxy.y = a * curve[1] + b * curve[3] + c * curve[5];
} else if (type == PATH_CONIC) {
var p20x = curve[4] - curve[0];
var p20y = curve[5] - curve[1];
var p10xw = (curve[2] - curve[0]) * curve[6];
var p10yw = (curve[3] - curve[1]) * curve[6];
var coeff0x = curve[6] * p20x - p20x;
var coeff0y = curve[6] * p20y - p20y;
var coeff1x = p20x - 2 * p10xw;
var coeff1y = p20y - 2 * p10yw;
dxy.x = t * (t * coeff0x + coeff1x) + p10xw;
dxy.y = t * (t * coeff0y + coeff1y) + p10yw;
} else if (type == PATH_CUBIC) {
var one_t = 1 - t;
var a = curve[0];
var b = curve[2];
var c = curve[4];
var d = curve[6];
dxy.x = 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
a = curve[1];
b = curve[3];
c = curve[5];
d = curve[7];
dxy.y = 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
}
return dxy;
}
function drawLabel(num, px, py) {
ctx.beginPath();
ctx.arc(px, py, 8, 0, Math.PI*2, true);
ctx.closePath();
ctx.strokeStyle = "rgba(0,0,0, 0.4)";
ctx.lineWidth = num == 0 || num == 3 ? 2 : 1;
ctx.stroke();
ctx.fillStyle = "black";
ctx.font = "normal 10px Arial";
// ctx.rotate(0.001);
ctx.fillText(num, px - 2, py + 3);
// ctx.rotate(-0.001);
}
function drawLabelX(ymin, num, loc) {
var px = (loc - srcLeft) * scale;
var py = (ymin - srcTop) * scale - 20;
drawLabel(num, px, py);
}
function drawLabelY(xmin, num, loc) {
var px = (xmin - srcLeft) * scale - 20;
var py = (loc - srcTop) * scale;
drawLabel(num, px, py);
}
function drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY) {
ctx.beginPath();
ctx.moveTo(hx, hy - 100);
ctx.lineTo(hx, hy);
ctx.strokeStyle = hMinY < 0 ? "green" : "blue";
ctx.stroke();
ctx.beginPath();
ctx.moveTo(hx, hy);
ctx.lineTo(hx, hy + 100);
ctx.strokeStyle = hMaxY > 0 ? "green" : "blue";
ctx.stroke();
ctx.beginPath();
ctx.moveTo(hx - 100, hy);
ctx.lineTo(hx, hy);
ctx.strokeStyle = hMinX < 0 ? "green" : "blue";
ctx.stroke();
ctx.beginPath();
ctx.moveTo(hx, hy);
ctx.lineTo(hx + 100, hy);
ctx.strokeStyle = hMaxX > 0 ? "green" : "blue";
ctx.stroke();
}
function scalexy(x, y, mag) {
var length = Math.sqrt(x * x + y * y);
return mag / length;
}
function drawArrow(x, y, dx, dy, s) {
var dscale = scalexy(dx, dy, 1 / scale * 100 * s);
dx *= dscale;
dy *= dscale;
ctx.beginPath();
ctx.moveTo((x - srcLeft) * scale, (y - srcTop) * scale);
x += dx;
y += dy;
ctx.lineTo((x - srcLeft) * scale, (y - srcTop) * scale);
dx /= 10;
dy /= 10;
ctx.lineTo((x - dy - srcLeft) * scale, (y + dx - srcTop) * scale);
ctx.lineTo((x + dx * 2 - srcLeft) * scale, (y + dy * 2 - srcTop) * scale);
ctx.lineTo((x + dy - srcLeft) * scale, (y - dx - srcTop) * scale);
ctx.lineTo((x - srcLeft) * scale, (y - srcTop) * scale);
ctx.strokeStyle = "rgba(0,75,0, 0.4)";
ctx.stroke();
}
function x_at_t(curve, t) {
var one_t = 1 - t;
if (curve.length == 4) {
return one_t * curve[0] + t * curve[2];
}
var one_t2 = one_t * one_t;
var t2 = t * t;
if (curve.length == 6) {
return one_t2 * curve[0] + 2 * one_t * t * curve[2] + t2 * curve[4];
}
if (curve.length == 7) {
return (one_t2 * curve[0] + 2 * one_t * t * curve[2] * curve[6] + t2 * curve[4])
/ (one_t2 +2 * one_t * t * curve[6] + t2);
}
var a = one_t2 * one_t;
var b = 3 * one_t2 * t;
var c = 3 * one_t * t2;
var d = t2 * t;
return a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
}
function y_at_t(curve, t) {
var one_t = 1 - t;
if (curve.length == 4) {
return one_t * curve[1] + t * curve[3];
}
var one_t2 = one_t * one_t;
var t2 = t * t;
if (curve.length == 6) {
return one_t2 * curve[1] + 2 * one_t * t * curve[3] + t2 * curve[5];
}
if (curve.length == 7) {
return (one_t2 * curve[1] + 2 * one_t * t * curve[3] * curve[6] + t2 * curve[5])
/ (one_t2 +2 * one_t * t * curve[6] + t2);
}
var a = one_t2 * one_t;
var b = 3 * one_t2 * t;
var c = 3 * one_t * t2;
var d = t2 * t;
return a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
}
function drawOrder(curve, label) {
var px = x_at_t(curve, 0.75);
var py = y_at_t(curve, 0.75);
var _px = (px - srcLeft) * scale;
var _py = (py - srcTop) * scale;
ctx.beginPath();
ctx.arc(_px, _py, 15, 0, Math.PI * 2, true);
ctx.closePath();
ctx.fillStyle = "white";
ctx.fill();
if (label == 'L') {
ctx.strokeStyle = "rgba(255,0,0, 1)";
ctx.fillStyle = "rgba(255,0,0, 1)";
} else {
ctx.strokeStyle = "rgba(0,0,255, 1)";
ctx.fillStyle = "rgba(0,0,255, 1)";
}
ctx.stroke();
ctx.font = "normal 16px Arial";
ctx.textAlign = "center";
ctx.fillText(label, _px, _py + 5);
ctx.font = "normal 10px Arial";
}
function drawID(curve, id) {
var px = x_at_t(curve, 0.5);
var py = y_at_t(curve, 0.5);
var _px = (px - srcLeft) * scale;
var _py = (py - srcTop) * scale;
draw_id_at(id, _px, _py);
}
function draw_id_at(id, _px, _py) {
ctx.beginPath();
ctx.arc(_px, _py, 15, 0, Math.PI * 2, true);
ctx.closePath();
ctx.fillStyle = "white";
ctx.fill();
ctx.strokeStyle = "rgba(127,127,0, 1)";
ctx.fillStyle = "rgba(127,127,0, 1)";
ctx.stroke();
ctx.font = "normal 16px Arial";
ctx.textAlign = "center";
ctx.fillText(id, _px, _py + 5);
ctx.font = "normal 10px Arial";
}
function drawLinePartialID(id, x1, y1, x2, y2, t1, t2) {
var curve = [x1, y1, x2, y2];
drawCurvePartialID(id, curve, t1, t2);
}
function drawQuadPartialID(id, x1, y1, x2, y2, x3, y3, t1, t2) {
var curve = [x1, y1, x2, y2, x3, y3];
drawCurvePartialID(id, curve, t1, t2);
}
function drawConicPartialID(id, x1, y1, x2, y2, x3, y3, w, t1, t2) {
var curve = [x1, y1, x2, y2, x3, y3, w];
drawCurvePartialID(id, curve, t1, t2);
}
function drawCubicPartialID(id, x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
var curve = [x1, y1, x2, y2, x3, y3, x4, y4];
drawCurvePartialID(id, curve, t1, t2);
}
function drawCurvePartialID(id, curve, t1, t2) {
var px = x_at_t(curve, (t1 + t2) / 2);
var py = y_at_t(curve, (t1 + t2) / 2);
var _px = (px - srcLeft) * scale;
var _py = (py - srcTop) * scale;
draw_id_at(id, _px, _py);
}
function drawCurveSpecials(test, curve, type) {
if (pt_labels) {
drawPoints(curve, type, pt_labels == 2);
}
if (control_lines != 0) {
drawControlLines(curve, type, control_lines);
}
if (curve_t) {
drawPointAtT(curve, type);
}
if (draw_midpoint) {
var mid = pointAtT(curve, type, 0.5);
drawPoint(mid.x, mid.y, true);
}
if (draw_id) {
var id = idByCurve(test, curve, type);
if (id >= 0) {
drawID(curve, id);
}
}
if (type == PATH_LINE) {
return;
}
if (draw_deriviatives > 0) {
var d = dxy_at_t(curve, type, 0);
drawArrow(curve[0], curve[1], d.x, d.y, 1);
if (draw_deriviatives == 2) {
d = dxy_at_t(curve, type, 1);
if (type == PATH_CUBIC) {
drawArrow(curve[6], curve[7], d.x, d.y, 1);
} else {
drawArrow(curve[4], curve[5], d.x, d.y, 1);
}
}
if (draw_midpoint) {
var mid = pointAtT(curve, type, 0.5);
d = dxy_at_t(curve, type, 0.5);
drawArrow(mid.x, mid.y, d.x, d.y, 1);
}
}
if (type != PATH_CUBIC) {
return;
}
if (draw_sequence) {
var ymin = Math.min(curve[1], curve[3], curve[5], curve[7]);
for (var i = 0; i < 8; i+= 2) {
drawLabelX(ymin, i >> 1, curve[i]);
}
var xmin = Math.min(curve[0], curve[2], curve[4], curve[6]);
for (var i = 1; i < 8; i+= 2) {
drawLabelY(xmin, i >> 1, curve[i]);
}
}
}
function logCurves(test) {
for (curves in test) {
var curve = test[curves];
dumpCurve(curve);
}
}
function curveToString(curve) {
var str = "{{";
var length = curve.length == 7 ? 6 : curve.length;
if (curve.length == 7) {
str += "{";
}
for (i = 0; i < length; i += 2) {
str += curve[i].toFixed(decimal_places) + "," + curve[i + 1].toFixed(decimal_places);
if (i < curve.length - 2) {
str += "}, {";
}
}
str += "}";
if (curve.length == 7) {
str += "}, " + curve[6].toFixed(decimal_places);
}
str += "}";
return str;
}
function dumpCurve(curve) {
console.log(curveToString(curve));
}
function draw(test, lines, title) {
ctx.fillStyle = "rgba(0,0,0, 0.1)";
ctx.font = "normal 50px Arial";
ctx.textAlign = "left";
ctx.fillText(title, 50, 50);
ctx.font = "normal 10px Arial";
ctx.lineWidth = "1.001"; "0.999";
var secondPath = test.length;
var closeCount = 0;
logStart = -1;
logRange = 0;
// find last active rec type at this step
var curType = test[0];
var curStep = 0;
var hasOp = false;
var lastActive = 0;
var lastAdd = 0;
var lastSect = 0;
var lastSort = 0;
var lastMark = 0;
var lastTop = 0;
activeCount = 0;
addCount = 0;
angleCount = 0;
opCount = 0;
sectCount = 0;
sortCount = 0;
topCount = 0;
markCount = 0;
activeMax = 0;
addMax = 0;
angleMax = 0;
opMax = 0;
sectMax = 0;
sectMax2 = 0;
sortMax = 0;
topMax = 0;
markMax = 0;
lastIndex = test.length - 3;
for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
var recType = test[tIndex];
if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
console.log("unknown rec type: " + recType);
throw "stop execution";
}
// if (curType == recType && curType != REC_TYPE_ADD) {
// continue;
// }
var inStepRange = step_limit == 0 || curStep < step_limit;
curType = recType;
if (recType == REC_TYPE_OP) {
hasOp = true;
continue;
}
if (recType == REC_TYPE_UNKNOWN) {
// these types do not advance step
continue;
}
var bumpStep = false;
var records = test[tIndex + 2];
var fragType = records[0];
if (recType == REC_TYPE_ADD) {
if (records.length != 2) {
console.log("expect only two elements: " + records.length);
throw "stop execution";
}
if (fragType == ADD_MOVETO || fragType == ADD_CLOSE) {
continue;
}
++addMax;
if (!draw_add || !inStepRange) {
continue;
}
lastAdd = tIndex;
++addCount;
bumpStep = true;
}
if (recType == REC_TYPE_PATH && hasOp) {
secondPath = tIndex;
}
if (recType == REC_TYPE_PATH2 && hasOp) {
secondPath = tIndex;
}
if (recType == REC_TYPE_ACTIVE) {
++activeMax;
if (!draw_active || !inStepRange) {
continue;
}
lastActive = tIndex;
++activeCount;
bumpStep = true;
}
if (recType == REC_TYPE_ACTIVE_OP) {
++opMax;
if (!draw_op || !inStepRange) {
continue;
}
lastOp = tIndex;
++opCount;
bumpStep = true;
}
if (recType == REC_TYPE_AFTERPART) {
if (draw_angle != 3 || !inStepRange) {
continue;
}
lastAngle = tIndex;
++angleCount;
bumpStep = true;
}
if (recType == REC_TYPE_ANGLE) {
++angleMax;
if (draw_angle == 0 || draw_angle == 3 || !inStepRange) {
continue;
}
lastAngle = tIndex;
++angleCount;
bumpStep = true;
}
if (recType == REC_TYPE_SECT) {
if (records.length != 2) {
console.log("expect only two elements: " + records.length);
throw "stop execution";
}
++sectMax;
var sectBump = 1;
switch (fragType) {
case INTERSECT_LINE:
case INTERSECT_QUAD_LINE:
case INTERSECT_QUAD:
case INTERSECT_CONIC_LINE:
case INTERSECT_CONIC:
case INTERSECT_SELF_CUBIC:
case INTERSECT_CUBIC_LINE:
case INTERSECT_CUBIC_QUAD:
case INTERSECT_CUBIC:
sectBump = 1;
break;
case INTERSECT_LINE_2:
case INTERSECT_QUAD_LINE_2:
case INTERSECT_QUAD_2:
case INTERSECT_CONIC_LINE_2:
case INTERSECT_CONIC_2:
case INTERSECT_CUBIC_LINE_2:
case INTERSECT_CUBIC_QUAD_2:
case INTERSECT_CUBIC_2:
sectBump = 2;
break;
case INTERSECT_LINE_NO:
case INTERSECT_QUAD_LINE_NO:
case INTERSECT_QUAD_NO:
case INTERSECT_CONIC_LINE_NO:
case INTERSECT_CONIC_NO:
case INTERSECT_SELF_CUBIC_NO:
case INTERSECT_CUBIC_LINE_NO:
case INTERSECT_CUBIC_QUAD_NO:
case INTERSECT_CUBIC_NO:
sectBump = 0;
break;
case INTERSECT_CUBIC_LINE_3:
case INTERSECT_CUBIC_QUAD_3:
case INTERSECT_CUBIC_3:
sectBump = 3;
break;
case INTERSECT_CUBIC_QUAD_4:
case INTERSECT_CUBIC_4:
sectBump = 4;
break;
default:
console.log("missing case " + records.length);
throw "stop execution";
}
sectMax2 += sectBump;
if (draw_intersection <= 1 || !inStepRange) {
continue;
}
lastSect = tIndex;
sectCount += sectBump;
bumpStep = true;
}
if (recType == REC_TYPE_SORT) {
++sortMax;
if (!draw_sort || !inStepRange) {
continue;
}
lastSort = tIndex;
++sortCount;
bumpStep = true;
}
if (recType == REC_TYPE_TOP) {
++topMax;
if (!draw_top || !inStepRange) {
continue;
}
lastTop = tIndex;
++topCount;
bumpStep = true;
}
if (recType == REC_TYPE_MARK) {
++markMax;
if (!draw_mark || !inStepRange) {
continue;
}
lastMark = tIndex;
++markCount;
bumpStep = true;
}
if (bumpStep) {
lastIndex = tIndex;
logStart = test[tIndex + 1];
logRange = records.length / 2;
++curStep;
}
}
stepMax = (draw_add ? addMax : 0)
+ (draw_active ? activeMax : 0)
+ (draw_angle ? angleMax : 0)
+ (draw_op ? opMax : 0)
+ (draw_sort ? sortMax : 0)
+ (draw_top ? topMax : 0)
+ (draw_mark ? markMax : 0)
+ (draw_intersection == 2 ? sectMax : draw_intersection == 3 ? sectMax2 : 0);
if (stepMax == 0) {
stepMax = addMax + activeMax + angleMax + opMax + sortMax + topMax + markMax;
}
drawnPts = [];
drawnLines = [];
drawnQuads = [];
drawnConics = [];
drawnCubics = [];
focusXmin = focusYmin = Infinity;
focusXmax = focusYmax = -Infinity;
var pathIndex = 0;
var opLetter = 'S';
for (var tIndex = lastIndex; tIndex >= 0; tIndex -= 3) {
var recType = test[tIndex];
var records = test[tIndex + 2];
for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
var fragType = records[recordIndex];
if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_TYPE_LAST) {
console.log("unknown in range frag type: " + fragType);
throw "stop execution";
}
var frags = records[recordIndex + 1];
focus_enabled = false;
switch (recType) {
case REC_TYPE_COMPUTED:
if (draw_computed == 0) {
continue;
}
ctx.lineWidth = 1;
ctx.strokeStyle = pathIndex == 0 ? "black" : "red";
ctx.fillStyle = "blue";
var drawThis = false;
switch (fragType) {
case PATH_QUAD:
if ((draw_computed & 0x9) == 1 || ((draw_computed & 8) != 0
&& (draw_computed & 7) == pathIndex)) {
drawQuad(frags[0], frags[1], frags[2], frags[3],
frags[4], frags[5]);
drawThis = true;
}
break;
case PATH_CONIC:
if ((draw_computed & 0xA) == 2 || ((draw_computed & 8) != 0
&& (draw_computed & 7) == pathIndex)) {
drawConicWithQuads(frags[0], frags[1], frags[2], frags[3],
frags[4], frags[5], frags[6]);
drawThis = true;
}
break;
case PATH_CUBIC:
if ((draw_computed & 0xC) == 4 || ((draw_computed & 8) != 0
&& (draw_computed & 7) == pathIndex)) {
drawCubic(frags[0], frags[1], frags[2], frags[3],
frags[4], frags[5], frags[6], frags[7]);
drawThis = true;
}
++pathIndex;
break;
case COMPUTED_SET_1:
pathIndex = 0;
break;
case COMPUTED_SET_2:
pathIndex = 1;
break;
default:
console.log("unknown REC_TYPE_COMPUTED frag type: " + fragType);
throw "stop execution";
}
if (!drawThis || collect_bounds) {
break;
}
drawCurveSpecials(test, frags, fragType);
break;
case REC_TYPE_PATH:
case REC_TYPE_PATH2:
if (!draw_path) {
continue;
}
var firstPath = tIndex < secondPath;
if ((draw_path & (firstPath ? 1 : 2)) == 0) {
continue;
}
ctx.lineWidth = 1;
ctx.strokeStyle = firstPath ? "black" : "red";
ctx.fillStyle = "blue";
var frags2 = [];
switch (fragType) {
case PATH_LINE:
for (var i = 0; i < 4; ++ i) { frags2[i] = frags[i + 1]; }
drawLine(frags2[0], frags2[1], frags2[2], frags2[3]);
break;
case PATH_QUAD:
for (var i = 0; i < 6; ++ i) { frags2[i] = frags[i + 1]; }
drawQuad(frags2[0], frags2[1], frags2[2], frags2[3],
frags2[4], frags2[5]);
break;
case PATH_CONIC:
for (var i = 0; i < 7; ++ i) { frags2[i] = frags[i + 1]; }
drawConicWithQuads(frags2[0], frags2[1], frags2[2], frags2[3],
frags2[4], frags2[5], frags2[6]);
break;
case PATH_CUBIC:
for (var i = 0; i < 8; ++ i) { frags2[i] = frags[i + 1]; }
drawCubic(frags2[0], frags2[1], frags2[2], frags2[3],
frags2[4], frags2[5], frags2[6], frags2[7]);
break;
default:
console.log("unknown REC_TYPE_PATH2 frag type: " + fragType);
throw "stop execution";
}
if (collect_bounds) {
break;
}
drawCurveSpecials(test, frags2, fragType);
break;
case REC_TYPE_OP:
switch (fragType) {
case OP_INTERSECT: opLetter = 'I'; break;
case OP_DIFFERENCE: opLetter = 'D'; break;
case OP_UNION: opLetter = 'U'; break;
case OP_XOR: opLetter = 'X'; break;
default:
console.log("unknown REC_TYPE_OP frag type: " + fragType);
throw "stop execution";
}
break;
case REC_TYPE_ACTIVE:
if (!draw_active || (step_limit > 0 && tIndex < lastActive)) {
continue;
}
var x1 = frags[SPAN_X1];
var y1 = frags[SPAN_Y1];
var x2 = frags[SPAN_X2];
var y2 = frags[SPAN_Y2];
var x3, y3, x3, y4, t1, t2, w;
ctx.lineWidth = 3;
ctx.strokeStyle = "rgba(0,0,255, 0.3)";
focus_enabled = true;
switch (fragType) {
case ACTIVE_LINE_SPAN:
t1 = frags[SPAN_L_T];
t2 = frags[SPAN_L_TEND];
drawLinePartial(x1, y1, x2, y2, t1, t2);
if (draw_id) {
drawLinePartialID(frags[0], x1, y1, x2, y2, t1, t2);
}
break;
case ACTIVE_QUAD_SPAN:
x3 = frags[SPAN_X3];
y3 = frags[SPAN_Y3];
t1 = frags[SPAN_Q_T];
t2 = frags[SPAN_Q_TEND];
drawQuadPartial(x1, y1, x2, y2, x3, y3, t1, t2);
if (draw_id) {
drawQuadPartialID(frags[0], x1, y1, x2, y2, x3, y3, t1, t2);
}
break;
case ACTIVE_CONIC_SPAN:
x3 = frags[SPAN_X3];
y3 = frags[SPAN_Y3];
t1 = frags[SPAN_K_T];
t2 = frags[SPAN_K_TEND];
w = frags[SPAN_K_W];
drawConicPartial(x1, y1, x2, y2, x3, y3, w, t1, t2);
if (draw_id) {
drawConicPartialID(frags[0], x1, y1, x2, y2, x3, y3, w, t1, t2);
}
break;
case ACTIVE_CUBIC_SPAN:
x3 = frags[SPAN_X3];
y3 = frags[SPAN_Y3];
x4 = frags[SPAN_X4];
y4 = frags[SPAN_Y4];
t1 = frags[SPAN_C_T];
t2 = frags[SPAN_C_TEND];
drawCubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
if (draw_id) {
drawCubicPartialID(frags[0], x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
}
break;
default:
console.log("unknown REC_TYPE_ACTIVE frag type: " + fragType);
throw "stop execution";
}
break;
case REC_TYPE_ACTIVE_OP:
if (!draw_op || (step_limit > 0 && tIndex < lastOp)) {
continue;
}
focus_enabled = true;
ctx.lineWidth = 3;
var activeSpan = frags[7] == "1";
ctx.strokeStyle = activeSpan ? "rgba(45,160,0, 0.3)" : "rgba(255,45,0, 0.5)";
var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
drawCurve(curve);
if (draw_op > 1) {
drawArc(curve, false, frags[3], frags[4]);
drawArc(curve, true, frags[5], frags[6]);
}
break;
case REC_TYPE_ADD:
if (!draw_add) {
continue;
}
ctx.lineWidth = 3;
ctx.strokeStyle = closeCount == 0 ? "rgba(0,0,255, 0.3)"
: closeCount == 1 ? "rgba(0,127,0, 0.3)"
: closeCount == 2 ? "rgba(0,127,127, 0.3)"
: closeCount == 3 ? "rgba(127,127,0, 0.3)"
: "rgba(127,0,127, 0.3)";
focus_enabled = true;
switch (fragType) {
case ADD_MOVETO:
break;
case ADD_LINETO:
if (step_limit == 0 || tIndex >= lastAdd) {
drawLine(frags[0], frags[1], frags[2], frags[3]);
}
break;
case ADD_QUADTO:
if (step_limit == 0 || tIndex >= lastAdd) {
drawQuad(frags[0], frags[1], frags[2], frags[3], frags[4], frags[5]);
}
break;
case ADD_CONICTO:
if (step_limit == 0 || tIndex >= lastAdd) {
drawConicWithQuads(frags[0], frags[1], frags[2], frags[3],
frags[4], frags[5], frags[6]);
}
break;
case ADD_CUBICTO:
if (step_limit == 0 || tIndex >= lastAdd) {
drawCubic(frags[0], frags[1], frags[2], frags[3],
frags[4], frags[5], frags[6], frags[7]);
}
break;
case ADD_CLOSE:
++closeCount;
break;
case ADD_FILL:
break;
default:
console.log("unknown REC_TYPE_ADD frag type: " + fragType);
throw "stop execution";
}
break;
case REC_TYPE_ANGLE:
angleBetween = frags[18] == "T";
afterIndex = 0;
if (draw_angle == 0 || draw_angle == 3 || (step_limit > 0 && tIndex < lastAngle)) {
continue;
}
focus_enabled = true;
ctx.lineWidth = 3;
ctx.strokeStyle = "rgba(127,45,127, 0.3)";
var leftCurve = curvePartialByID(test, frags[0], frags[4], frags[5]);
var midCurve = curvePartialByID(test, frags[6], frags[10], frags[11]);
var rightCurve = curvePartialByID(test, frags[12], frags[16], frags[17]);
drawCurve(leftCurve);
drawCurve(rightCurve);
ctx.strokeStyle = angleBetween ? "rgba(0,160,45, 0.3)" : "rgba(255,0,45, 0.5)";
drawCurve(midCurve);
if (draw_angle > 1) {
drawOrder(leftCurve, 'L');
drawOrder(rightCurve, 'R');
}
break;
case REC_TYPE_AFTERPART:
if (draw_angle != 3 || (step_limit > 0 && tIndex < lastAngle)) {
continue;
}
ctx.strokeStyle = afterIndex == 0 ? "rgba(255,0,0, 1.0)"
: (afterIndex == 1) == angleBetween ? "rgba(0,128,0, 1.0)"
: "rgba(0,0,255, 1.0)";
switch (fragType) {
case PATH_LINE:
drawLine(frags[0], frags[1], frags[2], frags[3]);
break;
case PATH_QUAD:
drawQuad(frags[0], frags[1], frags[2], frags[3],
frags[4], frags[5]);
break;
case PATH_CONIC:
drawConicWithQuads(frags[0], frags[1], frags[2], frags[3],
frags[4], frags[5], frags[6]);
break;
case PATH_CUBIC:
drawCubic(frags[0], frags[1], frags[2], frags[3],
frags[4], frags[5], frags[6], frags[7]);
break;
default:
console.log("unknown REC_TYPE_AFTERPART frag type: " + fragType);
throw "stop execution";
}
++afterIndex;
break;
case REC_TYPE_SECT:
if (!draw_intersection) {
continue;
}
if (draw_intersection != 1 && (step_limit > 0 && tIndex < lastSect)) {
continue;
}
// draw_intersection == 1 : show all
// draw_intersection == 2 : step == 0 ? show all : show intersection line #step
// draw_intersection == 3 : step == 0 ? show all : show intersection #step
ctx.lineWidth = 1;
ctx.strokeStyle = "rgba(0,0,255, 0.3)";
ctx.fillStyle = "blue";
focus_enabled = true;
var f = [];
var c1s;
var c1l;
var c2s;
var c2l;
switch (fragType) {
case INTERSECT_LINE:
f.push(5, 6, 0, 7);
c1s = 1; c1l = 4; c2s = 8; c2l = 4;
break;
case INTERSECT_LINE_2:
f.push(5, 6, 0, 10);
f.push(8, 9, 7, 15);
c1s = 1; c1l = 4; c2s = 11; c2l = 4;
break;
case INTERSECT_LINE_NO:
c1s = 0; c1l = 4; c2s = 4; c2l = 4;
break;
case INTERSECT_QUAD_LINE:
f.push(7, 8, 0, 9);
c1s = 1; c1l = 6; c2s = 10; c2l = 4;
break;
case INTERSECT_QUAD_LINE_2:
f.push(7, 8, 0, 12);
f.push(10, 11, 9, 17);
c1s = 1; c1l = 6; c2s = 13; c2l = 4;
break;
case INTERSECT_QUAD_LINE_NO:
c1s = 0; c1l = 6; c2s = 6; c2l = 4;
break;
case INTERSECT_QUAD:
f.push(7, 8, 0, 9);
c1s = 1; c1l = 6; c2s = 10; c2l = 6;
break;
case INTERSECT_QUAD_2:
f.push(7, 8, 0, 12);
f.push(10, 11, 9, 19);
c1s = 1; c1l = 6; c2s = 13; c2l = 6;
break;
case INTERSECT_QUAD_NO:
c1s = 0; c1l = 6; c2s = 6; c2l = 6;
break;
case INTERSECT_CONIC_LINE:
f.push(8, 9, 0, 10);
c1s = 1; c1l = 7; c2s = 11; c2l = 4;
break;
case INTERSECT_CONIC_LINE_2:
f.push(8, 9, 0, 12);
f.push(11, 12, 10, 18);
c1s = 1; c1l = 7; c2s = 14; c2l = 4;
break;
case INTERSECT_CONIC_LINE_NO:
c1s = 0; c1l = 7; c2s = 7; c2l = 4;
break;
case INTERSECT_CONIC:
f.push(8, 9, 0, 10);
c1s = 1; c1l = 7; c2s = 11; c2l = 7;
break;
case INTERSECT_CONIC_2:
f.push(8, 9, 0, 13);
f.push(11, 12, 10, 21);
c1s = 1; c1l = 7; c2s = 14; c2l = 7;
break;
case INTERSECT_CONIC_NO:
c1s = 0; c1l = 7; c2s = 7; c2l = 7;
break;
case INTERSECT_SELF_CUBIC:
f.push(9, 10, 0, 11);
c1s = 1; c1l = 8; c2s = 0; c2l = 0;
break;
case INTERSECT_SELF_CUBIC_NO:
c1s = 0; c1l = 8; c2s = 0; c2l = 0;
break;
case INTERSECT_CUBIC_LINE:
f.push(9, 10, 0, 11);
c1s = 1; c1l = 8; c2s = 12; c2l = 4;
break;
case INTERSECT_CUBIC_LINE_2:
f.push(9, 10, 0, 14);
f.push(12, 13, 11, 19);
c1s = 1; c1l = 8; c2s = 15; c2l = 4;
break;
case INTERSECT_CUBIC_LINE_3:
f.push(9, 10, 0, 17);
f.push(12, 13, 11, 22);
f.push(15, 16, 14, 23);
c1s = 1; c1l = 8; c2s = 18; c2l = 4;
break;
case INTERSECT_CUBIC_QUAD_NO:
c1s = 0; c1l = 8; c2s = 8; c2l = 6;
break;
case INTERSECT_CUBIC_QUAD:
f.push(9, 10, 0, 11);
c1s = 1; c1l = 8; c2s = 12; c2l = 6;
break;
case INTERSECT_CUBIC_QUAD_2:
f.push(9, 10, 0, 14);
f.push(12, 13, 11, 21);
c1s = 1; c1l = 8; c2s = 15; c2l = 6;
break;
case INTERSECT_CUBIC_QUAD_3:
f.push(9, 10, 0, 17);
f.push(12, 13, 11, 24);
f.push(15, 16, 14, 25);
c1s = 1; c1l = 8; c2s = 18; c2l = 6;
break;
case INTERSECT_CUBIC_QUAD_4:
f.push(9, 10, 0, 20);
f.push(12, 13, 11, 27);
f.push(15, 16, 14, 28);
f.push(18, 19, 17, 29);
c1s = 1; c1l = 8; c2s = 21; c2l = 6;
break;
case INTERSECT_CUBIC_LINE_NO:
c1s = 0; c1l = 8; c2s = 8; c2l = 4;
break;
case INTERSECT_CUBIC:
f.push(9, 10, 0, 11);
c1s = 1; c1l = 8; c2s = 12; c2l = 8;
break;
case INTERSECT_CUBIC_2:
f.push(9, 10, 0, 14);
f.push(12, 13, 11, 23);
c1s = 1; c1l = 8; c2s = 15; c2l = 8;
break;
case INTERSECT_CUBIC_3:
f.push(9, 10, 0, 17);
f.push(12, 13, 11, 26);
f.push(15, 16, 14, 27);
c1s = 1; c1l = 8; c2s = 18; c2l = 8;
break;
case INTERSECT_CUBIC_4:
f.push(9, 10, 0, 20);
f.push(12, 13, 11, 29);
f.push(15, 16, 14, 30);
f.push(18, 19, 17, 31);
c1s = 1; c1l = 8; c2s = 21; c2l = 8;
break;
case INTERSECT_CUBIC_NO:
c1s = 0; c1l = 8; c2s = 8; c2l = 8;
break;
default:
console.log("unknown REC_TYPE_SECT frag type: " + fragType);
throw "stop execution";
}
if (draw_intersection != 1) {
var id = -1;
var curve;
switch (c1l) {
case 4:
drawLine(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3]);
if (draw_id) {
curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3]];
id = idByCurve(test, curve, PATH_LINE);
}
break;
case 6:
drawQuad(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
frags[c1s + 4], frags[c1s + 5]);
if (draw_id) {
curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
frags[c1s + 4], frags[c1s + 5]];
id = idByCurve(test, curve, PATH_QUAD);
}
break;
case 7:
drawConicWithQuads(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
frags[c1s + 4], frags[c1s + 5], frags[c1s + 6]);
if (draw_id) {
curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
frags[c1s + 4], frags[c1s + 5], frags[c1s + 6]];
id = idByCurve(test, curve, PATH_CONIC);
}
break;
case 8:
drawCubic(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
frags[c1s + 4], frags[c1s + 5], frags[c1s + 6], frags[c1s + 7]);
if (draw_id) {
curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
frags[c1s + 4], frags[c1s + 5], frags[c1s + 6], frags[c1s + 7]];
id = idByCurve(test, curve, PATH_CUBIC);
}
break;
}
if (id >= 0) {
drawID(curve, id);
}
id = -1;
switch (c2l) {
case 0:
break;
case 4:
drawLine(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3]);
if (draw_id) {
curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3]];
id = idByCurve(test, curve, PATH_LINE);
}
break;
case 6:
drawQuad(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
frags[c2s + 4], frags[c2s + 5]);
if (draw_id) {
curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
frags[c2s + 4], frags[c2s + 5]];
id = idByCurve(test, curve, PATH_QUAD);
}
break;
case 7:
drawConicWithQuads(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
frags[c2s + 4], frags[c2s + 5], frags[c2s + 6]);
if (draw_id) {
curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
frags[c2s + 4], frags[c2s + 5], frags[c2s + 6]];
id = idByCurve(test, curve, PATH_CONIC);
}
break;
case 8:
drawCubic(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
frags[c2s + 4], frags[c2s + 5], frags[c2s + 6], frags[c2s + 7]);
if (draw_id) {
curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
frags[c2s + 4], frags[c2s + 5], frags[c2s + 6], frags[c2s + 7]];
id = idByCurve(test, curve, PATH_CUBIC);
}
break;
}
if (id >= 0) {
drawID(curve, id);
}
}
if (collect_bounds) {
break;
}
if (draw_intersection != 3 || step_limit == 0 || tIndex >= lastSect) {
for (var idx = 0; idx < f.length; idx += 4) {
drawPoint(frags[f[idx]], frags[f[idx + 1]], true);
}
}
if (!draw_intersectT) {
break;
}
ctx.fillStyle = "red";
if (draw_intersection != 3 || step_limit == 0 || tIndex >= lastSect) {
for (var idx = 0; idx < f.length; idx += 4) {
drawTAtPointUp(frags[f[idx]], frags[f[idx + 1]], frags[f[idx + 2]]);
drawTAtPointDown(frags[f[idx]], frags[f[idx + 1]], frags[f[idx + 3]]);
}
}
break;
case REC_TYPE_SORT:
if (!draw_sort || (step_limit > 0 && tIndex < lastSort)) {
continue;
}
ctx.lineWidth = 3;
ctx.strokeStyle = "rgba(127,127,0, 0.5)";
focus_enabled = true;
switch (fragType) {
case SORT_UNARY:
case SORT_BINARY:
var curve = curvePartialByID(test, frags[0], frags[6], frags[8]);
drawCurve(curve);
break;
default:
console.log("unknown REC_TYPE_SORT frag type: " + fragType);
throw "stop execution";
}
break;
case REC_TYPE_TOP:
if (!draw_top || (step_limit > 0 && tIndex < lastTop)) {
continue;
}
ctx.lineWidth = 3;
ctx.strokeStyle = "rgba(127,127,0, 0.5)";
focus_enabled = true;
{
var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
drawCurve(curve);
var type = PATH_LINE + (curve.length / 2 - 2);
var mid = pointAtT(curve, type, 0.5);
var d = dxy_at_t(curve, type, 0.5);
drawArrow(mid.x, mid.y, d.x, d.y, 0.3);
}
break;
case REC_TYPE_MARK:
if (!draw_mark || (step_limit > 0 && tIndex < lastMark)) {
continue;
}
ctx.lineWidth = 3;
ctx.strokeStyle = fragType >= MARK_DONE_LINE ?
"rgba(127,0,127, 0.5)" : "rgba(127,127,0, 0.5)";
focus_enabled = true;
switch (fragType) {
case MARK_LINE:
case MARK_DONE_LINE:
case MARK_UNSORTABLE_LINE:
case MARK_SIMPLE_LINE:
case MARK_SIMPLE_DONE_LINE:
case MARK_DONE_UNARY_LINE:
drawLinePartial(frags[1], frags[2], frags[3], frags[4],
frags[5], frags[9]);
if (draw_id) {
drawLinePartialID(frags[0], frags[1], frags[2], frags[3], frags[4],
frags[5], frags[9]);
}
break;
case MARK_QUAD:
case MARK_DONE_QUAD:
case MARK_UNSORTABLE_QUAD:
case MARK_SIMPLE_QUAD:
case MARK_SIMPLE_DONE_QUAD:
case MARK_DONE_UNARY_QUAD:
drawQuadPartial(frags[1], frags[2], frags[3], frags[4],
frags[5], frags[6], frags[7], frags[11]);
if (draw_id) {
drawQuadPartialID(frags[0], frags[1], frags[2], frags[3], frags[4],
frags[5], frags[6], frags[7], frags[11]);
}
break;
case MARK_CUBIC:
case MARK_DONE_CUBIC:
case MARK_UNSORTABLE_CUBIC:
case MARK_SIMPLE_CUBIC:
case MARK_SIMPLE_DONE_CUBIC:
case MARK_DONE_UNARY_CUBIC:
drawCubicPartial(frags[1], frags[2], frags[3], frags[4],
frags[5], frags[6], frags[7], frags[8], frags[9], frags[13]);
if (draw_id) {
drawCubicPartialID(frags[0], frags[1], frags[2], frags[3], frags[4],
frags[5], frags[6], frags[7], frags[8], frags[9], frags[13]);
}
break;
case MARK_ANGLE_LAST:
// FIXME: ignored for now
break;
default:
console.log("unknown REC_TYPE_MARK frag type: " + fragType);
throw "stop execution";
}
break;
default:
continue;
}
}
switch (recType) {
case REC_TYPE_SORT:
if (!draw_sort || (step_limit > 0 && tIndex < lastSort)) {
break;
}
var angles = []; // use tangent lines to describe arcs
var windFrom = [];
var windTo = [];
var opp = [];
var minXY = Number.MAX_VALUE;
var partial;
focus_enabled = true;
var someUnsortable = false;
for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
var fragType = records[recordIndex];
var frags = records[recordIndex + 1];
var unsortable = (fragType == SORT_UNARY && frags[14]) ||
(fragType == SORT_BINARY && frags[16]);
someUnsortable |= unsortable;
switch (fragType) {
case SORT_UNARY:
case SORT_BINARY:
partial = curvePartialByID(test, frags[0], frags[6], frags[8]);
break;
default:
console.log("unknown REC_TYPE_SORT frag type: " + fragType);
throw "stop execution";
}
var dx = boundsWidth(partial);
var dy = boundsHeight(partial);
minXY = Math.min(minXY, dx * dx + dy * dy);
if (collect_bounds) {
continue;
}
angles.push(tangent(partial));
var from = frags[12];
var to = frags[12];
var sgn = frags[10];
if (sgn < 0) {
from -= frags[11];
} else if (sgn > 0) {
to -= frags[11];
}
windFrom.push(from + (unsortable ? "!" : ""));
windTo.push(to + (unsortable ? "!" : ""));
opp.push(fragType == SORT_BINARY);
if (draw_sort == 1) {
drawOrder(partial, frags[12]);
} else {
drawOrder(partial, (recordIndex / 2) + 1);
}
}
var radius = Math.sqrt(minXY) / 2 * scale;
radius = Math.min(50, radius);
var scaledRadius = radius / scale;
var centerX = partial[0];
var centerY = partial[1];
if (collect_bounds) {
if (focus_enabled) {
focusXmin = Math.min(focusXmin, centerX - scaledRadius);
focusYmin = Math.min(focusYmin, centerY - scaledRadius);
focusXmax = Math.max(focusXmax, centerX + scaledRadius);
focusYmax = Math.max(focusYmax, centerY + scaledRadius);
}
break;
}
break;
default:
break;
}
}
if (collect_bounds) {
return;
}
if (draw_log && logStart >= 0) {
ctx.font = "normal 10px Arial";
ctx.textAlign = "left";
ctx.beginPath();
var top = screenHeight - 20 - (logRange + 2) * 10;
ctx.rect(50, top, screenWidth - 100, (logRange + 2) * 10);
ctx.fillStyle = "white";
ctx.fill();
ctx.fillStyle = "rgba(0,0,0, 0.5)";
if (logStart > 0) {
ctx.fillText(lines[logStart - 1], 50, top + 8);
}
ctx.fillStyle = "black";
for (var idx = 0; idx < logRange; ++idx) {
ctx.fillText(lines[logStart + idx], 50, top + 18 + 10 * idx);
}
ctx.fillStyle = "rgba(0,0,0, 0.5)";
if (logStart + logRange < lines.length) {
ctx.fillText(lines[logStart + logRange], 50, top + 18 + 10 * logRange);
}
}
if (draw_legend) {
var pos = 0;
var drawSomething = draw_add | draw_active | draw_angle | draw_sort | draw_mark;
// drawBox(pos++, "yellow", "black", opLetter, true, '');
drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_intersection > 1 ? sectCount : sectMax2, draw_intersection, intersectionKey);
drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_add ? addCount : addMax, draw_add, addKey);
drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_active ? activeCount : activeMax, draw_active, activeKey);
drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_angle ? angleCount : angleMax, draw_angle, angleKey);
drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_op ? opCount : opMax, draw_op, opKey);
drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_sort ? sortCount : sortMax, draw_sort, sortKey);
drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_top ? topCount : topMax, draw_top, topKey);
drawBox(pos++, "rgba(127,0,127, 0.3)", "black", draw_mark ? markCount : markMax, draw_mark, markKey);
drawBox(pos++, "black", "white",
(new Array('P', 'P1', 'P2', 'P'))[draw_path], draw_path != 0, pathKey);
drawBox(pos++, "rgba(0,63,0, 0.7)", "white",
(new Array('Q', 'Q', 'C', 'QC', 'Qc', 'Cq'))[draw_computed],
draw_computed != 0, computedKey);
drawBox(pos++, "green", "black", step_limit, drawSomething, '');
drawBox(pos++, "green", "black", stepMax, drawSomething, '');
drawBox(pos++, "rgba(255,0,0, 0.6)", "black", lastIndex, drawSomething & draw_log, '');
drawBox(pos++, "rgba(255,0,0, 0.6)", "black", test.length - 1, drawSomething & draw_log, '');
if (curve_t) {
drawCurveTControl();
}
ctx.font = "normal 20px Arial";
ctx.fillStyle = "rgba(0,0,0, 0.3)";
ctx.textAlign = "right";
ctx.fillText(scale.toFixed(decimal_places) + 'x' , screenWidth - 10, screenHeight - 5);
}
if (draw_hints) {
ctx.font = "normal 10px Arial";
ctx.fillStyle = "rgba(0,0,0, 0.5)";
ctx.textAlign = "right";
var y = 4;
ctx.fillText("control lines : " + controlLinesKey, ctx.screenWidthwidth - 10, pos * 50 + y++ * 10);
ctx.fillText("curve t : " + curveTKey, screenWidth - 10, pos * 50 + y++ * 10);
ctx.fillText("deriviatives : " + deriviativesKey, screenWidth - 10, pos * 50 + y++ * 10);
ctx.fillText("intersect t : " + intersectTKey, screenWidth - 10, pos * 50 + y++ * 10);
ctx.fillText("log : " + logKey, screenWidth - 10, pos * 50 + y++ * 10);
ctx.fillText("log curve : " + logCurvesKey, screenWidth - 10, pos * 50 + y++ * 10);
ctx.fillText("mid point : " + midpointKey, screenWidth - 10, pos * 50 + y++ * 10);
ctx.fillText("points : " + ptsKey, screenWidth - 10, pos * 50 + y++ * 10);
ctx.fillText("sequence : " + sequenceKey, screenWidth - 10, pos * 50 + y++ * 10);
ctx.fillText("xy : " + xyKey, screenWidth - 10, pos * 50 + y++ * 10);
}
}
function drawBox(y, backC, foreC, str, enable, label) {
ctx.beginPath();
ctx.fillStyle = backC;
ctx.rect(screenWidth - 40, y * 50 + 10, 40, 30);
ctx.fill();
ctx.font = "normal 16px Arial";
ctx.fillStyle = foreC;
ctx.textAlign = "center";
ctx.fillText(str, screenWidth - 20, y * 50 + 32);
if (!enable) {
ctx.fillStyle = "rgba(255,255,255, 0.5)";
ctx.fill();
}
if (label != '') {
ctx.font = "normal 9px Arial";
ctx.fillStyle = "black";
ctx.fillText(label, screenWidth - 47, y * 50 + 40);
}
}
function drawCurveTControl() {
ctx.lineWidth = 2;
ctx.strokeStyle = "rgba(0,0,0, 0.3)";
ctx.beginPath();
ctx.rect(screenWidth - 80, 40, 28, screenHeight - 80);
ctx.stroke();
var ty = 40 + curveT * (screenHeight - 80);
ctx.beginPath();
ctx.moveTo(screenWidth - 80, ty);
ctx.lineTo(screenWidth - 85, ty - 5);
ctx.lineTo(screenWidth - 85, ty + 5);
ctx.lineTo(screenWidth - 80, ty);
ctx.fillStyle = "rgba(0,0,0, 0.6)";
ctx.fill();
var num = curveT.toFixed(decimal_places);
ctx.font = "normal 10px Arial";
ctx.textAlign = "left";
ctx.fillText(num, screenWidth - 78, ty);
}
function ptInTControl() {
var e = window.event;
var tgt = e.target || e.srcElement;
var left = tgt.offsetLeft;
var top = tgt.offsetTop;
var x = (e.clientX - left);
var y = (e.clientY - top);
if (x < screenWidth - 80 || x > screenWidth - 50) {
return false;
}
if (y < 40 || y > screenHeight - 80) {
return false;
}
curveT = (y - 40) / (screenHeight - 120);
if (curveT < 0 || curveT > 1) {
throw "stop execution";
}
return true;
}
function drawTop() {
if (tests[testIndex] == null) {
var str = testDivs[testIndex].textContent;
parse_all(str);
var title = testDivs[testIndex].id.toString();
testTitles[testIndex] = title;
}
init(tests[testIndex]);
redraw();
}
function redraw() {
if (focus_on_selection) {
collect_bounds = true;
draw(tests[testIndex], testLines[testIndex], testTitles[testIndex]);
collect_bounds = false;
if (focusXmin < focusXmax && focusYmin < focusYmax) {
setScale(focusXmin, focusXmax, focusYmin, focusYmax);
}
}
ctx.beginPath();
ctx.fillStyle = "white";
ctx.rect(0, 0, screenWidth, screenHeight);
ctx.fill();
draw(tests[testIndex], testLines[testIndex], testTitles[testIndex]);
}
function dumpCurvePartial(test, id, t0, t1) {
var curve = curveByID(test, id);
var name = ["line", "quad", "cubic"][curve.length / 2 - 2];
console.log("id=" + id + " " + name + "=" + curveToString(curve)
+ " t0=" + t0 + " t1=" + t1
+ " partial=" + curveToString(curvePartialByID(test, id, t0, t1)));
}
function dumpAngleTest(test, id, t0, t1) {
var curve = curveByID(test, id);
console.log(" { {" + curveToString(curve) + "}, "
+ curve.length / 2 + ", " + t0 + ", " + t1 + ", {} }, //");
}
function dumpLogToConsole() {
if (logStart < 0) {
return;
}
var test = tests[testIndex];
var recType = REC_TYPE_UNKNOWN;
var records;
for (var index = 0; index < test.length; index += 3) {
var lastLineNo = test[index + 1];
if (lastLineNo >= logStart && lastLineNo < logStart + logRange) {
recType = test[index];
records = test[index + 2];
break;
}
}
if (recType == REC_TYPE_UNKNOWN) {
return;
}
var lines = testLines[testIndex];
for (var idx = 0; idx < logRange; ++idx) {
var line = lines[logStart + idx];
console.log(line);
for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
var fragType = records[recordIndex];
var frags = records[recordIndex + 1];
if (recType == REC_TYPE_ANGLE && fragType == ANGLE_AFTER) {
dumpCurvePartial(test, frags[0], frags[4], frags[5]);
dumpCurvePartial(test, frags[6], frags[10], frags[11]);
dumpCurvePartial(test, frags[12], frags[16], frags[17]);
console.log("\nstatic IntersectData intersectDataSet[] = { //");
dumpAngleTest(test, frags[0], frags[4], frags[5]);
dumpAngleTest(test, frags[6], frags[10], frags[11]);
dumpAngleTest(test, frags[12], frags[16], frags[17]);
console.log("}; //");
}
}
}
}
var activeKey = 'a';
var pathKey = 'b';
var pathBackKey = 'B';
var centerKey = 'c';
var addKey = 'd';
var deriviativesKey = 'f';
var angleKey = 'g';
var angleBackKey = 'G';
var intersectionKey = 'i';
var intersectionBackKey = 'I';
var sequenceKey = 'j';
var midpointKey = 'k';
var logKey = 'l';
var logToConsoleKey = 'L';
var markKey = 'm';
var sortKey = 'o';
var opKey = 'p';
var opBackKey = 'P';
var computedKey = 'q';
var computedBackKey = 'Q';
var stepKey = 's';
var stepBackKey = 'S';
var intersectTKey = 't';
var topKey = 'T';
var curveTKey = 'u';
var controlLinesBackKey = 'V';
var controlLinesKey = 'v';
var ptsKey = 'x';
var xyKey = 'y';
var logCurvesKey = 'z';
var focusKey = '`';
var idKey = '.';
var retinaKey = '\\';
function doKeyPress(evt) {
var char = String.fromCharCode(evt.charCode);
var focusWasOn = false;
switch (char) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
decimal_places = char - '0';
redraw();
break;
case activeKey:
draw_active ^= true;
redraw();
break;
case addKey:
draw_add ^= true;
redraw();
break;
case angleKey:
draw_angle = (draw_angle + 1) % 4;
redraw();
break;
case angleBackKey:
draw_angle = (draw_angle + 2) % 3;
redraw();
break;
case centerKey:
setScale(xmin, xmax, ymin, ymax);
redraw();
break;
case controlLinesBackKey:
control_lines = (control_lines + 3) % 4;
redraw();
break;
case controlLinesKey:
control_lines = (control_lines + 1) % 4;
redraw();
break;
case computedBackKey:
draw_computed = (draw_computed + 5) % 6;
redraw();
break;
case computedKey:
draw_computed = (draw_computed + 1) % 6;
redraw();
break;
case curveTKey:
curve_t ^= true;
if (curve_t) {
draw_legend = true;
}
redraw();
break;
case deriviativesKey:
draw_deriviatives = (draw_deriviatives + 1) % 3;
redraw();
break;
case focusKey:
focus_on_selection ^= true;
setScale(xmin, xmax, ymin, ymax);
redraw();
break;
case idKey:
draw_id ^= true;
redraw();
break;
case intersectionBackKey:
draw_intersection = (draw_intersection + 3) % 4;
redraw();
break;
case intersectionKey:
draw_intersection = (draw_intersection + 1) % 4;
redraw();
break;
case intersectTKey:
draw_intersectT ^= true;
redraw();
break;
case logCurvesKey:
logCurves(tests[testIndex]);
break;
case logKey:
draw_log ^= true;
redraw();
break;
case logToConsoleKey:
if (draw_log) {
dumpLogToConsole();
}
break;
case markKey:
draw_mark ^= true;
redraw();
break;
case midpointKey:
draw_midpoint ^= true;
redraw();
break;
case opKey:
draw_op = (draw_op + 1) % 3;
redraw();
break;
case opBackKey:
draw_op = (draw_op + 2) % 3;
redraw();
break;
case pathKey:
draw_path = (draw_path + 1) % 4;
redraw();
break;
case pathBackKey:
draw_path = (draw_path + 3) % 4;
redraw();
break;
case ptsKey:
pt_labels = (pt_labels + 1) % 3;
redraw();
break;
case retinaKey:
retina_scale ^= true;
drawTop();
break;
case sequenceKey:
draw_sequence ^= true;
redraw();
break;
case sortKey:
draw_sort = (draw_sort + 1) % 3;
drawTop();
break;
case stepKey:
step_limit++;
if (step_limit > stepMax) {
step_limit = stepMax;
}
redraw();
break;
case stepBackKey:
step_limit--;
if (step_limit < 0) {
step_limit = 0;
}
redraw();
break;
case topKey:
draw_top ^= true;
redraw();
break;
case xyKey:
debug_xy = (debug_xy + 1) % 3;
redraw();
break;
case '-':
focusWasOn = focus_on_selection;
if (focusWasOn) {
focus_on_selection = false;
scale /= 1.2;
} else {
scale /= 2;
calcLeftTop();
}
redraw();
focus_on_selection = focusWasOn;
break;
case '=':
case '+':
focusWasOn = focus_on_selection;
if (focusWasOn) {
focus_on_selection = false;
scale *= 1.2;
} else {
scale *= 2;
calcLeftTop();
}
redraw();
focus_on_selection = focusWasOn;
break;
case '?':
draw_hints ^= true;
if (draw_hints && !draw_legend) {
draw_legend = true;
}
redraw();
break;
case '/':
draw_legend ^= true;
redraw();
break;
}
}
function doKeyDown(evt) {
var char = evt.keyCode;
var preventDefault = false;
switch (char) {
case 37: // left arrow
if (evt.shiftKey) {
testIndex -= 9;
}
if (--testIndex < 0)
testIndex = tests.length - 1;
drawTop();
preventDefault = true;
break;
case 39: // right arrow
if (evt.shiftKey) {
testIndex += 9;
}
if (++testIndex >= tests.length)
testIndex = 0;
drawTop();
preventDefault = true;
break;
}
if (preventDefault) {
evt.preventDefault();
return false;
}
return true;
}
(function() {
var hidden = "hidden";
// Standards:
if (hidden in document)
document.addEventListener("visibilitychange", onchange);
else if ((hidden = "mozHidden") in document)
document.addEventListener("mozvisibilitychange", onchange);
else if ((hidden = "webkitHidden") in document)
document.addEventListener("webkitvisibilitychange", onchange);
else if ((hidden = "msHidden") in document)
document.addEventListener("msvisibilitychange", onchange);
// IE 9 and lower:
else if ('onfocusin' in document)
document.onfocusin = document.onfocusout = onchange;
// All others:
else
window.onpageshow = window.onpagehide
= window.onfocus = window.onblur = onchange;
function onchange (evt) {
var v = 'visible', h = 'hidden',
evtMap = {
focus:v, focusin:v, pageshow:v, blur:h, focusout:h, pagehide:h
};
evt = evt || window.event;
if (evt.type in evtMap)
document.body.className = evtMap[evt.type];
else
document.body.className = this[hidden] ? "hidden" : "visible";
}
})();
function calcXY() {
var e = window.event;
var tgt = e.target || e.srcElement;
var left = tgt.offsetLeft;
var top = tgt.offsetTop;
mouseX = (e.clientX - left) / scale + srcLeft;
mouseY = (e.clientY - top) / scale + srcTop;
}
function calcLeftTop() {
srcLeft = mouseX - screenWidth / 2 / scale;
srcTop = mouseY - screenHeight / 2 / scale;
}
var disableClick = false;
function handleMouseClick() {
if (disableClick) {
return;
}
if (!curve_t || !ptInTControl()) {
calcXY();
calcLeftTop();
}
redraw();
// if (!curve_t || !ptInTControl()) {
// mouseX = screenWidth / 2 / scale + srcLeft;
// mouseY = screenHeight / 2 / scale + srcTop;
// }
}
function handleMouseOver() {
calcXY();
if (debug_xy != 2) {
return;
}
var num = mouseX.toFixed(decimal_places) + ", " + mouseY.toFixed(decimal_places);
ctx.beginPath();
ctx.rect(300,100,num.length * 6,10);
ctx.fillStyle="white";
ctx.fill();
ctx.font = "normal 10px Arial";
ctx.fillStyle="black";
ctx.textAlign = "left";
ctx.fillText(num, 300, 108);
}
function start() {
for (var i = 0; i < testDivs.length; ++i) {
tests[i] = null;
}
testIndex = 0;
drawTop();
window.addEventListener('keypress', doKeyPress, true);
window.addEventListener('keydown', doKeyDown, true);
window.onresize = function() {
drawTop();
}
/*
window.onpagehide = function() {
disableClick = true;
}
*/
window.onpageshow = function () {
disableClick = false;
}
}
</script>
</head>
<body onLoad="start();">
<canvas id="canvas" width="750" height="500"
onmousemove="handleMouseOver()"
onclick="handleMouseClick()"
></canvas >
</body>
</html>