xref: /aosp_15_r20/external/skia/tests/PathOpsSimplifyTest.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1 /*
2  * Copyright 2012 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 #include "include/core/SkMatrix.h"
8 #include "include/core/SkPath.h"
9 #include "include/core/SkPathTypes.h"
10 #include "include/core/SkRect.h"
11 #include "include/core/SkScalar.h"
12 #include "include/core/SkTypes.h"
13 #include "include/pathops/SkPathOps.h"
14 #include "src/base/SkFloatBits.h"
15 #include "src/pathops/SkPathOpsDebug.h"
16 #include "tests/PathOpsExtendedTest.h"
17 #include "tests/Test.h"
18 
19 #include <cstddef>
20 #include <iterator>
21 
22 #define TEST(name) { name, #name }
23 
testDegenerates(skiatest::Reporter * reporter,const char * filename)24 static void testDegenerates(skiatest::Reporter* reporter, const char* filename) {
25     SkPath doubleback;
26     SkPath simple;
27 
28     doubleback.lineTo(1, 0);
29     REPORTER_ASSERT(reporter, Simplify(doubleback, &simple));
30     REPORTER_ASSERT(reporter, simple.isEmpty());
31 
32     doubleback.reset();
33     doubleback.lineTo(1, 0);
34     doubleback.lineTo(2, 0);
35     REPORTER_ASSERT(reporter, Simplify(doubleback, &simple));
36     REPORTER_ASSERT(reporter, simple.isEmpty());
37 
38     doubleback.reset();
39     doubleback.lineTo(-1, 0);
40     doubleback.lineTo(-1, 1);
41     doubleback.lineTo(-1, 0);
42     REPORTER_ASSERT(reporter, Simplify(doubleback, &simple));
43     REPORTER_ASSERT(reporter, simple.isEmpty());
44 
45     doubleback.reset();
46     doubleback.lineTo(1, 0);
47     doubleback.lineTo(1, 0);
48     doubleback.lineTo(1, 1);
49     doubleback.lineTo(1, 1);
50     doubleback.lineTo(1, 0);
51     REPORTER_ASSERT(reporter, Simplify(doubleback, &simple));
52     REPORTER_ASSERT(reporter, simple.isEmpty());
53 }
54 
testLine1(skiatest::Reporter * reporter,const char * filename)55 static void testLine1(skiatest::Reporter* reporter, const char* filename) {
56     SkPath path;
57     path.moveTo(2,0);
58     path.lineTo(1,1);
59     path.lineTo(0,0);
60     path.close();
61     testSimplify(reporter, path, filename);
62 }
63 
testLine1x(skiatest::Reporter * reporter,const char * filename)64 static void testLine1x(skiatest::Reporter* reporter, const char* filename) {
65     SkPath path;
66     path.setFillType(SkPathFillType::kEvenOdd);
67     path.moveTo(2,0);
68     path.lineTo(1,1);
69     path.lineTo(0,0);
70     path.close();
71     testSimplify(reporter, path, filename);
72 }
73 
addInnerCWTriangle(SkPath & path)74 static void addInnerCWTriangle(SkPath& path) {
75     path.moveTo(3,0);
76     path.lineTo(4,1);
77     path.lineTo(2,1);
78     path.close();
79 }
80 
addInnerCCWTriangle(SkPath & path)81 static void addInnerCCWTriangle(SkPath& path) {
82     path.moveTo(3,0);
83     path.lineTo(2,1);
84     path.lineTo(4,1);
85     path.close();
86 }
87 
addOuterCWTriangle(SkPath & path)88 static void addOuterCWTriangle(SkPath& path) {
89     path.moveTo(3,0);
90     path.lineTo(6,2);
91     path.lineTo(0,2);
92     path.close();
93 }
94 
addOuterCCWTriangle(SkPath & path)95 static void addOuterCCWTriangle(SkPath& path) {
96     path.moveTo(3,0);
97     path.lineTo(0,2);
98     path.lineTo(6,2);
99     path.close();
100 }
101 
testLine2(skiatest::Reporter * reporter,const char * filename)102 static void testLine2(skiatest::Reporter* reporter, const char* filename) {
103     SkPath path;
104     addInnerCWTriangle(path);
105     addOuterCWTriangle(path);
106     testSimplify(reporter, path, filename);
107 }
108 
testLine2x(skiatest::Reporter * reporter,const char * filename)109 static void testLine2x(skiatest::Reporter* reporter, const char* filename) {
110     SkPath path;
111     path.setFillType(SkPathFillType::kEvenOdd);
112     addInnerCWTriangle(path);
113     addOuterCWTriangle(path);
114     testSimplify(reporter, path, filename);
115 }
116 
testLine3(skiatest::Reporter * reporter,const char * filename)117 static void testLine3(skiatest::Reporter* reporter, const char* filename) {
118     SkPath path;
119     addInnerCCWTriangle(path);
120     addOuterCWTriangle(path);
121     testSimplify(reporter, path, filename);
122 }
123 
testLine3x(skiatest::Reporter * reporter,const char * filename)124 static void testLine3x(skiatest::Reporter* reporter, const char* filename) {
125     SkPath path;
126     path.setFillType(SkPathFillType::kEvenOdd);
127     addInnerCCWTriangle(path);
128     addOuterCWTriangle(path);
129     testSimplify(reporter, path, filename);
130 }
131 
testLine3a(skiatest::Reporter * reporter,const char * filename)132 static void testLine3a(skiatest::Reporter* reporter, const char* filename) {
133     SkPath path;
134     addInnerCWTriangle(path);
135     addOuterCCWTriangle(path);
136     testSimplify(reporter, path, filename);
137 }
138 
testLine3ax(skiatest::Reporter * reporter,const char * filename)139 static void testLine3ax(skiatest::Reporter* reporter, const char* filename) {
140     SkPath path;
141     path.setFillType(SkPathFillType::kEvenOdd);
142     addInnerCWTriangle(path);
143     addOuterCCWTriangle(path);
144     testSimplify(reporter, path, filename);
145 }
146 
testLine3b(skiatest::Reporter * reporter,const char * filename)147 static void testLine3b(skiatest::Reporter* reporter, const char* filename) {
148     SkPath path;
149     addInnerCCWTriangle(path);
150     addOuterCCWTriangle(path);
151     testSimplify(reporter, path, filename);
152 }
153 
testLine3bx(skiatest::Reporter * reporter,const char * filename)154 static void testLine3bx(skiatest::Reporter* reporter, const char* filename) {
155     SkPath path;
156     path.setFillType(SkPathFillType::kEvenOdd);
157     addInnerCCWTriangle(path);
158     addOuterCCWTriangle(path);
159     testSimplify(reporter, path, filename);
160 }
161 
testLine4(skiatest::Reporter * reporter,const char * filename)162 static void testLine4(skiatest::Reporter* reporter, const char* filename) {
163     SkPath path;
164     addOuterCCWTriangle(path);
165     addOuterCWTriangle(path);
166     testSimplify(reporter, path, filename);
167 }
168 
testLine4x(skiatest::Reporter * reporter,const char * filename)169 static void testLine4x(skiatest::Reporter* reporter, const char* filename) {
170     SkPath path;
171     path.setFillType(SkPathFillType::kEvenOdd);
172     addOuterCCWTriangle(path);
173     addOuterCWTriangle(path);
174     testSimplify(reporter, path, filename);
175 }
176 
testLine5(skiatest::Reporter * reporter,const char * filename)177 static void testLine5(skiatest::Reporter* reporter, const char* filename) {
178     SkPath path;
179     addOuterCWTriangle(path);
180     addOuterCWTriangle(path);
181     testSimplify(reporter, path, filename);
182 }
183 
testLine5x(skiatest::Reporter * reporter,const char * filename)184 static void testLine5x(skiatest::Reporter* reporter, const char* filename) {
185     SkPath path;
186     path.setFillType(SkPathFillType::kEvenOdd);
187     addOuterCWTriangle(path);
188     addOuterCWTriangle(path);
189     testSimplify(reporter, path, filename);
190 }
191 
testLine6(skiatest::Reporter * reporter,const char * filename)192 static void testLine6(skiatest::Reporter* reporter, const char* filename) {
193     SkPath path;
194     path.moveTo(0,0);
195     path.lineTo(4,0);
196     path.lineTo(2,2);
197     path.close();
198     path.moveTo(2,0);
199     path.lineTo(6,0);
200     path.lineTo(4,2);
201     path.close();
202     testSimplify(reporter, path, filename);
203 }
204 
testLine6x(skiatest::Reporter * reporter,const char * filename)205 static void testLine6x(skiatest::Reporter* reporter, const char* filename) {
206     SkPath path;
207     path.setFillType(SkPathFillType::kEvenOdd);
208     path.moveTo(0,0);
209     path.lineTo(4,0);
210     path.lineTo(2,2);
211     path.close();
212     path.moveTo(2,0);
213     path.lineTo(6,0);
214     path.lineTo(4,2);
215     path.close();
216     testSimplify(reporter, path, filename);
217 }
218 
testLine7(skiatest::Reporter * reporter,const char * filename)219 static void testLine7(skiatest::Reporter* reporter, const char* filename) {
220     SkPath path;
221     path.moveTo(0,0);
222     path.lineTo(4,0);
223     path.lineTo(2,2);
224     path.close();
225     path.moveTo(6,0);
226     path.lineTo(2,0);
227     path.lineTo(4,2);
228     path.close();
229     testSimplify(reporter, path, filename);
230 }
231 
testLine7x(skiatest::Reporter * reporter,const char * filename)232 static void testLine7x(skiatest::Reporter* reporter, const char* filename) {
233     SkPath path;
234     path.setFillType(SkPathFillType::kEvenOdd);
235     path.moveTo(0,0);
236     path.lineTo(4,0);
237     path.lineTo(2,2);
238     path.close();
239     path.moveTo(6,0);
240     path.lineTo(2,0);
241     path.lineTo(4,2);
242     path.close();
243     testSimplify(reporter, path, filename);
244 }
245 
testLine7a(skiatest::Reporter * reporter,const char * filename)246 static void testLine7a(skiatest::Reporter* reporter, const char* filename) {
247     SkPath path;
248     path.moveTo(0,0);
249     path.lineTo(4,0);
250     path.lineTo(2,2);
251     path.close();
252     testSimplify(reporter, path, filename);
253 }
254 
testLine7ax(skiatest::Reporter * reporter,const char * filename)255 static void testLine7ax(skiatest::Reporter* reporter, const char* filename) {
256     SkPath path;
257     path.setFillType(SkPathFillType::kEvenOdd);
258     path.moveTo(0,0);
259     path.lineTo(4,0);
260     path.lineTo(2,2);
261     path.close();
262     testSimplify(reporter, path, filename);
263 }
264 
testLine7b(skiatest::Reporter * reporter,const char * filename)265 static void testLine7b(skiatest::Reporter* reporter, const char* filename) {
266     SkPath path;
267     path.moveTo(0,0);
268     path.lineTo(4,0);
269     path.close();
270     path.moveTo(6,0);
271     path.lineTo(2,0);
272     path.lineTo(4,2);
273     path.close();
274     testSimplify(reporter, path, filename);
275 }
276 
testLine7bx(skiatest::Reporter * reporter,const char * filename)277 static void testLine7bx(skiatest::Reporter* reporter, const char* filename) {
278     SkPath path;
279     path.setFillType(SkPathFillType::kEvenOdd);
280     path.moveTo(0,0);
281     path.lineTo(4,0);
282     path.close();
283     path.moveTo(6,0);
284     path.lineTo(2,0);
285     path.lineTo(4,2);
286     path.close();
287     testSimplify(reporter, path, filename);
288 }
289 
testLine8(skiatest::Reporter * reporter,const char * filename)290 static void testLine8(skiatest::Reporter* reporter, const char* filename) {
291     SkPath path;
292     path.moveTo(0,4);
293     path.lineTo(4,4);
294     path.lineTo(2,2);
295     path.close();
296     path.moveTo(2,4);
297     path.lineTo(6,4);
298     path.lineTo(4,2);
299     path.close();
300     testSimplify(reporter, path, filename);
301 }
302 
testLine8x(skiatest::Reporter * reporter,const char * filename)303 static void testLine8x(skiatest::Reporter* reporter, const char* filename) {
304     SkPath path;
305     path.setFillType(SkPathFillType::kEvenOdd);
306     path.moveTo(0,4);
307     path.lineTo(4,4);
308     path.lineTo(2,2);
309     path.close();
310     path.moveTo(2,4);
311     path.lineTo(6,4);
312     path.lineTo(4,2);
313     path.close();
314     testSimplify(reporter, path, filename);
315 }
316 
testLine9(skiatest::Reporter * reporter,const char * filename)317 static void testLine9(skiatest::Reporter* reporter, const char* filename) {
318     SkPath path;
319     path.moveTo(0,4);
320     path.lineTo(4,4);
321     path.lineTo(2,2);
322     path.close();
323     path.moveTo(6,4);
324     path.lineTo(2,4);
325     path.lineTo(4,2);
326     path.close();
327     testSimplify(reporter, path, filename);
328 }
329 
testLine9x(skiatest::Reporter * reporter,const char * filename)330 static void testLine9x(skiatest::Reporter* reporter, const char* filename) {
331     SkPath path;
332     path.setFillType(SkPathFillType::kEvenOdd);
333     path.moveTo(0,4);
334     path.lineTo(4,4);
335     path.lineTo(2,2);
336     path.close();
337     path.moveTo(6,4);
338     path.lineTo(2,4);
339     path.lineTo(4,2);
340     path.close();
341     testSimplify(reporter, path, filename);
342 }
343 
testLine10(skiatest::Reporter * reporter,const char * filename)344 static void testLine10(skiatest::Reporter* reporter, const char* filename) {
345     SkPath path;
346     path.moveTo(0,4);
347     path.lineTo(4,4);
348     path.lineTo(2,2);
349     path.close();
350     path.moveTo(2,1);
351     path.lineTo(3,4);
352     path.lineTo(6,1);
353     path.close();
354     testSimplify(reporter, path, filename);
355 }
356 
testLine10x(skiatest::Reporter * reporter,const char * filename)357 static void testLine10x(skiatest::Reporter* reporter, const char* filename) {
358     SkPath path;
359     path.setFillType(SkPathFillType::kEvenOdd);
360     path.moveTo(0,4);
361     path.lineTo(4,4);
362     path.lineTo(2,2);
363     path.close();
364     path.moveTo(2,1);
365     path.lineTo(3,4);
366     path.lineTo(6,1);
367     path.close();
368     testSimplify(reporter, path, filename);
369 }
370 
testLine10a(skiatest::Reporter * reporter,const char * filename)371 static void testLine10a(skiatest::Reporter* reporter, const char* filename) {
372     SkPath path;
373     path.moveTo(0,4);
374     path.lineTo(8,4);
375     path.lineTo(4,0);
376     path.close();
377     path.moveTo(2,2);
378     path.lineTo(3,3);
379     path.lineTo(4,2);
380     path.close();
381     testSimplify(reporter, path, filename);
382 }
383 
testLine10ax(skiatest::Reporter * reporter,const char * filename)384 static void testLine10ax(skiatest::Reporter* reporter, const char* filename) {
385     SkPath path;
386     path.setFillType(SkPathFillType::kEvenOdd);
387     path.moveTo(0,4);
388     path.lineTo(8,4);
389     path.lineTo(4,0);
390     path.close();
391     path.moveTo(2,2);
392     path.lineTo(3,3);
393     path.lineTo(4,2);
394     path.close();
395     testSimplify(reporter, path, filename);
396 }
397 
addCWContainer(SkPath & path)398 static void addCWContainer(SkPath& path) {
399     path.moveTo(6,4);
400     path.lineTo(0,4);
401     path.lineTo(3,1);
402     path.close();
403 }
404 
addCCWContainer(SkPath & path)405 static void addCCWContainer(SkPath& path) {
406     path.moveTo(0,4);
407     path.lineTo(6,4);
408     path.lineTo(3,1);
409     path.close();
410 }
411 
addCWContents(SkPath & path)412 static void addCWContents(SkPath& path) {
413     path.moveTo(2,3);
414     path.lineTo(3,2);
415     path.lineTo(4,3);
416     path.close();
417 }
418 
addCCWContents(SkPath & path)419 static void addCCWContents(SkPath& path) {
420     path.moveTo(3,2);
421     path.lineTo(2,3);
422     path.lineTo(4,3);
423     path.close();
424 }
425 
testLine11(skiatest::Reporter * reporter,const char * filename)426 static void testLine11(skiatest::Reporter* reporter, const char* filename) {
427     SkPath path;
428     addCWContainer(path);
429     addCWContents(path);
430     testSimplify(reporter, path, filename);
431 }
432 
testLine11x(skiatest::Reporter * reporter,const char * filename)433 static void testLine11x(skiatest::Reporter* reporter, const char* filename) {
434     SkPath path;
435     path.setFillType(SkPathFillType::kEvenOdd);
436     addCWContainer(path);
437     addCWContents(path);
438     testSimplify(reporter, path, filename);
439 }
440 
testLine12(skiatest::Reporter * reporter,const char * filename)441 static void testLine12(skiatest::Reporter* reporter, const char* filename) {
442     SkPath path;
443     addCCWContainer(path);
444     addCWContents(path);
445     testSimplify(reporter, path, filename);
446 }
447 
testLine12x(skiatest::Reporter * reporter,const char * filename)448 static void testLine12x(skiatest::Reporter* reporter, const char* filename) {
449     SkPath path;
450     path.setFillType(SkPathFillType::kEvenOdd);
451     addCCWContainer(path);
452     addCWContents(path);
453     testSimplify(reporter, path, filename);
454 }
455 
testLine13(skiatest::Reporter * reporter,const char * filename)456 static void testLine13(skiatest::Reporter* reporter, const char* filename) {
457     SkPath path;
458     addCWContainer(path);
459     addCCWContents(path);
460     testSimplify(reporter, path, filename);
461 }
462 
testLine13x(skiatest::Reporter * reporter,const char * filename)463 static void testLine13x(skiatest::Reporter* reporter, const char* filename) {
464     SkPath path;
465     path.setFillType(SkPathFillType::kEvenOdd);
466     addCWContainer(path);
467     addCCWContents(path);
468     testSimplify(reporter, path, filename);
469 }
470 
testLine14(skiatest::Reporter * reporter,const char * filename)471 static void testLine14(skiatest::Reporter* reporter, const char* filename) {
472     SkPath path;
473     addCCWContainer(path);
474     addCCWContents(path);
475     testSimplify(reporter, path, filename);
476 }
477 
testLine14x(skiatest::Reporter * reporter,const char * filename)478 static void testLine14x(skiatest::Reporter* reporter, const char* filename) {
479     SkPath path;
480     path.setFillType(SkPathFillType::kEvenOdd);
481     addCCWContainer(path);
482     addCCWContents(path);
483     testSimplify(reporter, path, filename);
484 }
485 
testLine15(skiatest::Reporter * reporter,const char * filename)486 static void testLine15(skiatest::Reporter* reporter, const char* filename) {
487     SkPath path;
488     path.addRect(0, 0, 9, 9, SkPathDirection::kCW);
489     testSimplify(reporter, path, filename);
490 }
491 
testLine15x(skiatest::Reporter * reporter,const char * filename)492 static void testLine15x(skiatest::Reporter* reporter, const char* filename) {
493     SkPath path;
494     path.setFillType(SkPathFillType::kEvenOdd);
495     path.addRect(0, 0, 9, 9, SkPathDirection::kCW);
496     testSimplify(reporter, path, filename);
497 }
498 
testLine16(skiatest::Reporter * reporter,const char * filename)499 static void testLine16(skiatest::Reporter* reporter, const char* filename) {
500     SkPath path;
501     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
502     path.addRect(0, 4, 9, 9, SkPathDirection::kCW);
503     testSimplify(reporter, path, filename);
504 }
505 
testLine16x(skiatest::Reporter * reporter,const char * filename)506 static void testLine16x(skiatest::Reporter* reporter, const char* filename) {
507     SkPath path;
508     path.setFillType(SkPathFillType::kEvenOdd);
509     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
510     path.addRect(0, 4, 9, 9, SkPathDirection::kCW);
511     testSimplify(reporter, path, filename);
512 }
513 
testLine17(skiatest::Reporter * reporter,const char * filename)514 static void testLine17(skiatest::Reporter* reporter, const char* filename) {
515     SkPath path;
516     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
517     path.addRect(4, 12, 13, 13, SkPathDirection::kCW);
518     testSimplify(reporter, path, filename);
519 }
520 
testLine17x(skiatest::Reporter * reporter,const char * filename)521 static void testLine17x(skiatest::Reporter* reporter, const char* filename) {
522     SkPath path;
523     path.setFillType(SkPathFillType::kEvenOdd);
524     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
525     path.addRect(4, 12, 13, 13, SkPathDirection::kCW);
526     testSimplify(reporter, path, filename);
527 }
528 
testLine18(skiatest::Reporter * reporter,const char * filename)529 static void testLine18(skiatest::Reporter* reporter, const char* filename) {
530     SkPath path;
531     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
532     path.addRect(12, 4, 21, 21, SkPathDirection::kCW);
533     testSimplify(reporter, path, filename);
534 }
535 
testLine18x(skiatest::Reporter * reporter,const char * filename)536 static void testLine18x(skiatest::Reporter* reporter, const char* filename) {
537     SkPath path;
538     path.setFillType(SkPathFillType::kEvenOdd);
539     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
540     path.addRect(12, 4, 21, 21, SkPathDirection::kCW);
541     testSimplify(reporter, path, filename);
542 }
543 
testLine19(skiatest::Reporter * reporter,const char * filename)544 static void testLine19(skiatest::Reporter* reporter, const char* filename) {
545     SkPath path;
546     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
547     path.addRect(12, 16, 21, 21, SkPathDirection::kCW);
548     testSimplify(reporter, path, filename);
549 }
550 
testLine19x(skiatest::Reporter * reporter,const char * filename)551 static void testLine19x(skiatest::Reporter* reporter, const char* filename) {
552     SkPath path;
553     path.setFillType(SkPathFillType::kEvenOdd);
554     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
555     path.addRect(12, 16, 21, 21, SkPathDirection::kCW);
556     testSimplify(reporter, path, filename);
557 }
558 
testLine20(skiatest::Reporter * reporter,const char * filename)559 static void testLine20(skiatest::Reporter* reporter, const char* filename) {
560     SkPath path;
561     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
562     path.addRect(0, 12, 9, 9, SkPathDirection::kCW);
563     testSimplify(reporter, path, filename);
564 }
565 
testLine20x(skiatest::Reporter * reporter,const char * filename)566 static void testLine20x(skiatest::Reporter* reporter, const char* filename) {
567     SkPath path;
568     path.setFillType(SkPathFillType::kEvenOdd);
569     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
570     path.addRect(0, 12, 9, 9, SkPathDirection::kCW);
571     testSimplify(reporter, path, filename);
572 }
573 
testLine21(skiatest::Reporter * reporter,const char * filename)574 static void testLine21(skiatest::Reporter* reporter, const char* filename) {
575     SkPath path;
576     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
577     path.addRect(0, 16, 9, 9, SkPathDirection::kCW);
578     testSimplify(reporter, path, filename);
579 }
580 
testLine21x(skiatest::Reporter * reporter,const char * filename)581 static void testLine21x(skiatest::Reporter* reporter, const char* filename) {
582     SkPath path;
583     path.setFillType(SkPathFillType::kEvenOdd);
584     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
585     path.addRect(0, 16, 9, 9, SkPathDirection::kCW);
586     testSimplify(reporter, path, filename);
587 }
588 
testLine22(skiatest::Reporter * reporter,const char * filename)589 static void testLine22(skiatest::Reporter* reporter, const char* filename) {
590     SkPath path;
591     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
592     path.addRect(4, 12, 13, 13, SkPathDirection::kCW);
593     testSimplify(reporter, path, filename);
594 }
595 
testLine22x(skiatest::Reporter * reporter,const char * filename)596 static void testLine22x(skiatest::Reporter* reporter, const char* filename) {
597     SkPath path;
598     path.setFillType(SkPathFillType::kEvenOdd);
599     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
600     path.addRect(4, 12, 13, 13, SkPathDirection::kCW);
601     testSimplify(reporter, path, filename);
602 }
603 
testLine23(skiatest::Reporter * reporter,const char * filename)604 static void testLine23(skiatest::Reporter* reporter, const char* filename) {
605     SkPath path;
606     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
607     path.addRect(12, 0, 21, 21, SkPathDirection::kCW);
608     testSimplify(reporter, path, filename);
609 }
610 
testLine23x(skiatest::Reporter * reporter,const char * filename)611 static void testLine23x(skiatest::Reporter* reporter, const char* filename) {
612     SkPath path;
613     path.setFillType(SkPathFillType::kEvenOdd);
614     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
615     path.addRect(12, 0, 21, 21, SkPathDirection::kCW);
616     testSimplify(reporter, path, filename);
617 }
618 
testLine24a(skiatest::Reporter * reporter,const char * filename)619 static void testLine24a(skiatest::Reporter* reporter, const char* filename) {
620     SkPath path;
621     path.moveTo(2,0);
622     path.lineTo(4,4);
623     path.lineTo(0,4);
624     path.close();
625     path.moveTo(2,0);
626     path.lineTo(1,2);
627     path.lineTo(2,2);
628     path.close();
629     testSimplify(reporter, path, filename);
630 }
631 
testLine24ax(skiatest::Reporter * reporter,const char * filename)632 static void testLine24ax(skiatest::Reporter* reporter, const char* filename) {
633     SkPath path;
634     path.setFillType(SkPathFillType::kEvenOdd);
635     path.moveTo(2,0);
636     path.lineTo(4,4);
637     path.lineTo(0,4);
638     path.close();
639     path.moveTo(2,0);
640     path.lineTo(1,2);
641     path.lineTo(2,2);
642     path.close();
643     testSimplify(reporter, path, filename);
644 }
645 
testLine24(skiatest::Reporter * reporter,const char * filename)646 static void testLine24(skiatest::Reporter* reporter, const char* filename) {
647     SkPath path;
648     path.addRect(0, 18, 12, 12, SkPathDirection::kCW);
649     path.addRect(4, 12, 13, 13, SkPathDirection::kCW);
650     testSimplify(reporter, path, filename);
651 }
652 
testLine24x(skiatest::Reporter * reporter,const char * filename)653 static void testLine24x(skiatest::Reporter* reporter, const char* filename) {
654     SkPath path;
655     path.setFillType(SkPathFillType::kEvenOdd);
656     path.addRect(0, 18, 12, 12, SkPathDirection::kCW);
657     path.addRect(4, 12, 13, 13, SkPathDirection::kCW);
658     testSimplify(reporter, path, filename);
659 }
660 
testLine25(skiatest::Reporter * reporter,const char * filename)661 static void testLine25(skiatest::Reporter* reporter, const char* filename) {
662     SkPath path;
663     path.addRect(0, 6, 12, 12, SkPathDirection::kCW);
664     path.addRect(12, 0, 21, 21, SkPathDirection::kCW);
665     testSimplify(reporter, path, filename);
666 }
667 
testLine25x(skiatest::Reporter * reporter,const char * filename)668 static void testLine25x(skiatest::Reporter* reporter, const char* filename) {
669     SkPath path;
670     path.setFillType(SkPathFillType::kEvenOdd);
671     path.addRect(0, 6, 12, 12, SkPathDirection::kCW);
672     path.addRect(12, 0, 21, 21, SkPathDirection::kCW);
673     testSimplify(reporter, path, filename);
674 }
675 
testLine26(skiatest::Reporter * reporter,const char * filename)676 static void testLine26(skiatest::Reporter* reporter, const char* filename) {
677     SkPath path;
678     path.addRect(0, 18, 12, 12, SkPathDirection::kCW);
679     path.addRect(0, 12, 9, 9, SkPathDirection::kCW);
680     testSimplify(reporter, path, filename);
681 }
682 
testLine26x(skiatest::Reporter * reporter,const char * filename)683 static void testLine26x(skiatest::Reporter* reporter, const char* filename) {
684     SkPath path;
685     path.setFillType(SkPathFillType::kEvenOdd);
686     path.addRect(0, 18, 12, 12, SkPathDirection::kCW);
687     path.addRect(0, 12, 9, 9, SkPathDirection::kCW);
688     testSimplify(reporter, path, filename);
689 }
690 
testLine27(skiatest::Reporter * reporter,const char * filename)691 static void testLine27(skiatest::Reporter* reporter, const char* filename) {
692     SkPath path;
693     path.addRect(0, 18, 12, 12, SkPathDirection::kCW);
694     path.addRect(12, 8, 21, 21, SkPathDirection::kCW);
695     testSimplify(reporter, path, filename);
696 }
697 
testLine27x(skiatest::Reporter * reporter,const char * filename)698 static void testLine27x(skiatest::Reporter* reporter, const char* filename) {
699     SkPath path;
700     path.setFillType(SkPathFillType::kEvenOdd);
701     path.addRect(0, 18, 12, 12, SkPathDirection::kCW);
702     path.addRect(12, 8, 21, 21, SkPathDirection::kCW);
703     testSimplify(reporter, path, filename);
704 }
705 
testLine28(skiatest::Reporter * reporter,const char * filename)706 static void testLine28(skiatest::Reporter* reporter, const char* filename) {
707     SkPath path;
708     path.addRect(0, 6, 12, 12, SkPathDirection::kCW);
709     path.addRect(0, 0, 9, 9, SkPathDirection::kCW);
710     testSimplify(reporter, path, filename);
711 }
712 
testLine28x(skiatest::Reporter * reporter,const char * filename)713 static void testLine28x(skiatest::Reporter* reporter, const char* filename) {
714     SkPath path;
715     path.setFillType(SkPathFillType::kEvenOdd);
716     path.addRect(0, 6, 12, 12, SkPathDirection::kCW);
717     path.addRect(0, 0, 9, 9, SkPathDirection::kCW);
718     testSimplify(reporter, path, filename);
719 }
720 
testLine29(skiatest::Reporter * reporter,const char * filename)721 static void testLine29(skiatest::Reporter* reporter, const char* filename) {
722     SkPath path;
723     path.addRect(0, 18, 12, 12, SkPathDirection::kCW);
724     path.addRect(12, 12, 21, 21, SkPathDirection::kCW);
725     testSimplify(reporter, path, filename);
726 }
727 
testLine29x(skiatest::Reporter * reporter,const char * filename)728 static void testLine29x(skiatest::Reporter* reporter, const char* filename) {
729     SkPath path;
730     path.setFillType(SkPathFillType::kEvenOdd);
731     path.addRect(0, 18, 12, 12, SkPathDirection::kCW);
732     path.addRect(12, 12, 21, 21, SkPathDirection::kCW);
733     testSimplify(reporter, path, filename);
734 }
735 
testLine30(skiatest::Reporter * reporter,const char * filename)736 static void testLine30(skiatest::Reporter* reporter, const char* filename) {
737     SkPath path;
738     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
739     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
740     path.addRect(4, 4, 13, 13, SkPathDirection::kCW);
741     testSimplify(reporter, path, filename);
742 }
743 
testLine30x(skiatest::Reporter * reporter,const char * filename)744 static void testLine30x(skiatest::Reporter* reporter, const char* filename) {
745     SkPath path;
746     path.setFillType(SkPathFillType::kEvenOdd);
747     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
748     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
749     path.addRect(4, 4, 13, 13, SkPathDirection::kCW);
750     testSimplify(reporter, path, filename);
751 }
752 
testLine31(skiatest::Reporter * reporter,const char * filename)753 static void testLine31(skiatest::Reporter* reporter, const char* filename) {
754     SkPath path;
755     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
756     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
757     path.addRect(0, 4, 9, 9, SkPathDirection::kCW);
758     testSimplify(reporter, path, filename);
759 }
760 
testLine31x(skiatest::Reporter * reporter,const char * filename)761 static void testLine31x(skiatest::Reporter* reporter, const char* filename) {
762     SkPath path;
763     path.setFillType(SkPathFillType::kEvenOdd);
764     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
765     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
766     path.addRect(0, 4, 9, 9, SkPathDirection::kCW);
767     testSimplify(reporter, path, filename);
768 }
769 
testLine32(skiatest::Reporter * reporter,const char * filename)770 static void testLine32(skiatest::Reporter* reporter, const char* filename) {
771     SkPath path;
772     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
773     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
774     path.addRect(4, 12, 13, 13, SkPathDirection::kCW);
775     testSimplify(reporter, path, filename);
776 }
777 
testLine32x(skiatest::Reporter * reporter,const char * filename)778 static void testLine32x(skiatest::Reporter* reporter, const char* filename) {
779     SkPath path;
780     path.setFillType(SkPathFillType::kEvenOdd);
781     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
782     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
783     path.addRect(4, 12, 13, 13, SkPathDirection::kCW);
784     testSimplify(reporter, path, filename);
785 }
786 
testLine33(skiatest::Reporter * reporter,const char * filename)787 static void testLine33(skiatest::Reporter* reporter, const char* filename) {
788     SkPath path;
789     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
790     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
791     path.addRect(4, 16, 13, 13, SkPathDirection::kCW);
792     testSimplify(reporter, path, filename);
793 }
794 
testLine33x(skiatest::Reporter * reporter,const char * filename)795 static void testLine33x(skiatest::Reporter* reporter, const char* filename) {
796     SkPath path;
797     path.setFillType(SkPathFillType::kEvenOdd);
798     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
799     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
800     path.addRect(4, 16, 13, 13, SkPathDirection::kCW);
801     testSimplify(reporter, path, filename);
802 }
803 
testLine34(skiatest::Reporter * reporter,const char * filename)804 static void testLine34(skiatest::Reporter* reporter, const char* filename) {
805     SkPath path;
806     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
807     path.addRect(0, 6, 12, 12, SkPathDirection::kCW);
808     path.addRect(4, 12, 13, 13, SkPathDirection::kCW);
809     testSimplify(reporter, path, filename);
810 }
811 
testLine34x(skiatest::Reporter * reporter,const char * filename)812 static void testLine34x(skiatest::Reporter* reporter, const char* filename) {
813     SkPath path;
814     path.setFillType(SkPathFillType::kEvenOdd);
815     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
816     path.addRect(0, 6, 12, 12, SkPathDirection::kCW);
817     path.addRect(4, 12, 13, 13, SkPathDirection::kCW);
818     testSimplify(reporter, path, filename);
819 }
820 
testLine35(skiatest::Reporter * reporter,const char * filename)821 static void testLine35(skiatest::Reporter* reporter, const char* filename) {
822     SkPath path;
823     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
824     path.addRect(6, 0, 18, 18, SkPathDirection::kCW);
825     path.addRect(4, 16, 13, 13, SkPathDirection::kCW);
826     testSimplify(reporter, path, filename);
827 }
828 
testLine35x(skiatest::Reporter * reporter,const char * filename)829 static void testLine35x(skiatest::Reporter* reporter, const char* filename) {
830     SkPath path;
831     path.setFillType(SkPathFillType::kEvenOdd);
832     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
833     path.addRect(6, 0, 18, 18, SkPathDirection::kCW);
834     path.addRect(4, 16, 13, 13, SkPathDirection::kCW);
835     testSimplify(reporter, path, filename);
836 }
837 
testLine36(skiatest::Reporter * reporter,const char * filename)838 static void testLine36(skiatest::Reporter* reporter, const char* filename) {
839     SkPath path;
840     path.addRect(0, 10, 20, 20, SkPathDirection::kCW);
841     path.addRect(6, 12, 18, 18, SkPathDirection::kCW);
842     path.addRect(4, 16, 13, 13, SkPathDirection::kCW);
843     testSimplify(reporter, path, filename);
844 }
845 
testLine36x(skiatest::Reporter * reporter,const char * filename)846 static void testLine36x(skiatest::Reporter* reporter, const char* filename) {
847     SkPath path;
848     path.setFillType(SkPathFillType::kEvenOdd);
849     path.addRect(0, 10, 20, 20, SkPathDirection::kCW);
850     path.addRect(6, 12, 18, 18, SkPathDirection::kCW);
851     path.addRect(4, 16, 13, 13, SkPathDirection::kCW);
852     testSimplify(reporter, path, filename);
853 }
854 
testLine37(skiatest::Reporter * reporter,const char * filename)855 static void testLine37(skiatest::Reporter* reporter, const char* filename) {
856     SkPath path;
857     path.addRect(0, 20, 20, 20, SkPathDirection::kCW);
858     path.addRect(18, 24, 30, 30, SkPathDirection::kCW);
859     path.addRect(0, 0, 9, 9, SkPathDirection::kCW);
860     testSimplify(reporter, path, filename);
861 }
862 
testLine37x(skiatest::Reporter * reporter,const char * filename)863 static void testLine37x(skiatest::Reporter* reporter, const char* filename) {
864     SkPath path;
865     path.setFillType(SkPathFillType::kEvenOdd);
866     path.addRect(0, 20, 20, 20, SkPathDirection::kCW);
867     path.addRect(18, 24, 30, 30, SkPathDirection::kCW);
868     path.addRect(0, 0, 9, 9, SkPathDirection::kCW);
869     testSimplify(reporter, path, filename);
870 }
871 
testLine38(skiatest::Reporter * reporter,const char * filename)872 static void testLine38(skiatest::Reporter* reporter, const char* filename) {
873     SkPath path;
874     path.addRect(10, 0, 30, 30, SkPathDirection::kCW);
875     path.addRect(6, 12, 18, 18, SkPathDirection::kCW);
876     path.addRect(12, 12, 21, 21, SkPathDirection::kCW);
877     testSimplify(reporter, path, filename);
878 }
879 
testLine38x(skiatest::Reporter * reporter,const char * filename)880 static void testLine38x(skiatest::Reporter* reporter, const char* filename) {
881     SkPath path;
882     path.setFillType(SkPathFillType::kEvenOdd);
883     path.addRect(10, 0, 30, 30, SkPathDirection::kCW);
884     path.addRect(6, 12, 18, 18, SkPathDirection::kCW);
885     path.addRect(12, 12, 21, 21, SkPathDirection::kCW);
886     testSimplify(reporter, path, filename);
887 }
888 
testLine40(skiatest::Reporter * reporter,const char * filename)889 static void testLine40(skiatest::Reporter* reporter, const char* filename) {
890     SkPath path;
891     path.addRect(10, 0, 30, 30, SkPathDirection::kCW);
892     path.addRect(12, 18, 24, 24, SkPathDirection::kCW);
893     path.addRect(4, 16, 13, 13, SkPathDirection::kCW);
894     testSimplify(reporter, path, filename);
895 }
896 
testLine40x(skiatest::Reporter * reporter,const char * filename)897 static void testLine40x(skiatest::Reporter* reporter, const char* filename) {
898     SkPath path;
899     path.setFillType(SkPathFillType::kEvenOdd);
900     path.addRect(10, 0, 30, 30, SkPathDirection::kCW);
901     path.addRect(12, 18, 24, 24, SkPathDirection::kCW);
902     path.addRect(4, 16, 13, 13, SkPathDirection::kCW);
903     testSimplify(reporter, path, filename);
904 }
905 
testLine41(skiatest::Reporter * reporter,const char * filename)906 static void testLine41(skiatest::Reporter* reporter, const char* filename) {
907     SkPath path;
908     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
909     path.addRect(18, 24, 30, 30, SkPathDirection::kCW);
910     path.addRect(12, 0, 21, 21, SkPathDirection::kCW);
911     testSimplify(reporter, path, filename);
912 }
913 
testLine41x(skiatest::Reporter * reporter,const char * filename)914 static void testLine41x(skiatest::Reporter* reporter, const char* filename) {
915     SkPath path;
916     path.setFillType(SkPathFillType::kEvenOdd);
917     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
918     path.addRect(18, 24, 30, 30, SkPathDirection::kCW);
919     path.addRect(12, 0, 21, 21, SkPathDirection::kCW);
920     testSimplify(reporter, path, filename);
921 }
922 
testLine42(skiatest::Reporter * reporter,const char * filename)923 static void testLine42(skiatest::Reporter* reporter, const char* filename) {
924     SkPath path;
925     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
926     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
927     path.addRect(8, 16, 17, 17, SkPathDirection::kCW);
928     testSimplify(reporter, path, filename);
929 }
930 
testLine42x(skiatest::Reporter * reporter,const char * filename)931 static void testLine42x(skiatest::Reporter* reporter, const char* filename) {
932     SkPath path;
933     path.setFillType(SkPathFillType::kEvenOdd);
934     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
935     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
936     path.addRect(8, 16, 17, 17, SkPathDirection::kCW);
937     testSimplify(reporter, path, filename);
938 }
939 
testLine43(skiatest::Reporter * reporter,const char * filename)940 static void testLine43(skiatest::Reporter* reporter, const char* filename) {
941     SkPath path;
942     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
943     path.addRect(6, 24, 18, 18, SkPathDirection::kCW);
944     path.addRect(0, 32, 9, 36, SkPathDirection::kCCW);
945     testSimplify(reporter, path, filename);
946 }
947 
testLine43x(skiatest::Reporter * reporter,const char * filename)948 static void testLine43x(skiatest::Reporter* reporter, const char* filename) {
949     SkPath path;
950     path.setFillType(SkPathFillType::kEvenOdd);
951     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
952     path.addRect(6, 24, 18, 18, SkPathDirection::kCW);
953     path.addRect(0, 32, 9, 36, SkPathDirection::kCCW);
954     testSimplify(reporter, path, filename);
955 }
956 
testLine44(skiatest::Reporter * reporter,const char * filename)957 static void testLine44(skiatest::Reporter* reporter, const char* filename) {
958     SkPath path;
959     path.addRect(10, 40, 30, 30, SkPathDirection::kCW);
960     path.addRect(18, 0, 30, 30, SkPathDirection::kCW);
961     path.addRect(18, 32, 27, 36, SkPathDirection::kCCW);
962     testSimplify(reporter, path, filename);
963 }
964 
testLine44x(skiatest::Reporter * reporter,const char * filename)965 static void testLine44x(skiatest::Reporter* reporter, const char* filename) {
966     SkPath path;
967     path.setFillType(SkPathFillType::kEvenOdd);
968     path.addRect(10, 40, 30, 30, SkPathDirection::kCW);
969     path.addRect(18, 0, 30, 30, SkPathDirection::kCW);
970     path.addRect(18, 32, 27, 36, SkPathDirection::kCCW);
971     testSimplify(reporter, path, filename);
972 }
973 
testLine45(skiatest::Reporter * reporter,const char * filename)974 static void testLine45(skiatest::Reporter* reporter, const char* filename) {
975     SkPath path;
976     path.addRect(10, 0, 30, 30, SkPathDirection::kCW);
977     path.addRect(18, 0, 30, 30, SkPathDirection::kCW);
978     path.addRect(24, 32, 33, 36, SkPathDirection::kCW);
979     testSimplify(reporter, path, filename);
980 }
981 
testLine45x(skiatest::Reporter * reporter,const char * filename)982 static void testLine45x(skiatest::Reporter* reporter, const char* filename) {
983     SkPath path;
984     path.setFillType(SkPathFillType::kEvenOdd);
985     path.addRect(10, 0, 30, 30, SkPathDirection::kCW);
986     path.addRect(18, 0, 30, 30, SkPathDirection::kCW);
987     path.addRect(24, 32, 33, 36, SkPathDirection::kCW);
988     testSimplify(reporter, path, filename);
989 }
990 
testLine46(skiatest::Reporter * reporter,const char * filename)991 static void testLine46(skiatest::Reporter* reporter, const char* filename) {
992     SkPath path;
993     path.addRect(10, 40, 30, 30, SkPathDirection::kCW);
994     path.addRect(24, 0, 36, 36, SkPathDirection::kCW);
995     path.addRect(24, 32, 33, 36, SkPathDirection::kCW);
996     testSimplify(reporter, path, filename);
997 }
998 
testLine46x(skiatest::Reporter * reporter,const char * filename)999 static void testLine46x(skiatest::Reporter* reporter, const char* filename) {
1000     SkPath path;
1001     path.setFillType(SkPathFillType::kEvenOdd);
1002     path.addRect(10, 40, 30, 30, SkPathDirection::kCW);
1003     path.addRect(24, 0, 36, 36, SkPathDirection::kCW);
1004     path.addRect(24, 32, 33, 36, SkPathDirection::kCW);
1005     testSimplify(reporter, path, filename);
1006 }
1007 
testLine47(skiatest::Reporter * reporter,const char * filename)1008 static void testLine47(skiatest::Reporter* reporter, const char* filename) {
1009     SkPath path;
1010     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1011     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
1012     path.addRect(0, 0, 9, 9, SkPathDirection::kCCW);
1013     testSimplify(reporter, path, filename);
1014 }
1015 
testLine47x(skiatest::Reporter * reporter,const char * filename)1016 static void testLine47x(skiatest::Reporter* reporter, const char* filename) {
1017     SkPath path;
1018     path.setFillType(SkPathFillType::kEvenOdd);
1019     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1020     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
1021     path.addRect(0, 0, 9, 9, SkPathDirection::kCCW);
1022     testSimplify(reporter, path, filename);
1023 }
1024 
testLine48(skiatest::Reporter * reporter,const char * filename)1025 static void testLine48(skiatest::Reporter* reporter, const char* filename) {
1026     SkPath path;
1027     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1028     path.addRect(0, 6, 12, 12, SkPathDirection::kCW);
1029     path.addRect(0, 0, 9, 9, SkPathDirection::kCCW);
1030     testSimplify(reporter, path, filename);
1031 }
1032 
testLine48x(skiatest::Reporter * reporter,const char * filename)1033 static void testLine48x(skiatest::Reporter* reporter, const char* filename) {
1034     SkPath path;
1035     path.setFillType(SkPathFillType::kEvenOdd);
1036     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1037     path.addRect(0, 6, 12, 12, SkPathDirection::kCW);
1038     path.addRect(0, 0, 9, 9, SkPathDirection::kCCW);
1039     testSimplify(reporter, path, filename);
1040 }
1041 
testLine49(skiatest::Reporter * reporter,const char * filename)1042 static void testLine49(skiatest::Reporter* reporter, const char* filename) {
1043     SkPath path;
1044     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1045     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
1046     path.addRect(0, 0, 9, 9, SkPathDirection::kCW);
1047     testSimplify(reporter, path, filename);
1048 }
1049 
testLine49x(skiatest::Reporter * reporter,const char * filename)1050 static void testLine49x(skiatest::Reporter* reporter, const char* filename) {
1051     SkPath path;
1052     path.setFillType(SkPathFillType::kEvenOdd);
1053     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1054     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
1055     path.addRect(0, 0, 9, 9, SkPathDirection::kCW);
1056     testSimplify(reporter, path, filename);
1057 }
1058 
testLine50(skiatest::Reporter * reporter,const char * filename)1059 static void testLine50(skiatest::Reporter* reporter, const char* filename) {
1060     SkPath path;
1061     path.addRect(10, 30, 30, 30, SkPathDirection::kCW);
1062     path.addRect(24, 20, 36, 30, SkPathDirection::kCW);
1063     testSimplify(reporter, path, filename);
1064 }
1065 
testLine50x(skiatest::Reporter * reporter,const char * filename)1066 static void testLine50x(skiatest::Reporter* reporter, const char* filename) {
1067     SkPath path;
1068     path.setFillType(SkPathFillType::kEvenOdd);
1069     path.addRect(10, 30, 30, 30, SkPathDirection::kCW);
1070     path.addRect(24, 20, 36, 30, SkPathDirection::kCW);
1071     testSimplify(reporter, path, filename);
1072 }
1073 
testLine51(skiatest::Reporter * reporter,const char * filename)1074 static void testLine51(skiatest::Reporter* reporter, const char* filename) {
1075     SkPath path;
1076     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1077     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
1078     path.addRect(4, 12, 13, 13, SkPathDirection::kCCW);
1079     testSimplify(reporter, path, filename);
1080 }
1081 
testLine51x(skiatest::Reporter * reporter,const char * filename)1082 static void testLine51x(skiatest::Reporter* reporter, const char* filename) {
1083     SkPath path;
1084     path.setFillType(SkPathFillType::kEvenOdd);
1085     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1086     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
1087     path.addRect(4, 12, 13, 13, SkPathDirection::kCCW);
1088     testSimplify(reporter, path, filename);
1089 }
1090 
testLine52(skiatest::Reporter * reporter,const char * filename)1091 static void testLine52(skiatest::Reporter* reporter, const char* filename) {
1092     SkPath path;
1093     path.addRect(0, 30, 20, 20, SkPathDirection::kCW);
1094     path.addRect(6, 20, 18, 30, SkPathDirection::kCW);
1095     path.addRect(32, 0, 36, 41, SkPathDirection::kCW);
1096     testSimplify(reporter, path, filename);
1097 }
1098 
testLine52x(skiatest::Reporter * reporter,const char * filename)1099 static void testLine52x(skiatest::Reporter* reporter, const char* filename) {
1100     SkPath path;
1101     path.setFillType(SkPathFillType::kEvenOdd);
1102     path.addRect(0, 30, 20, 20, SkPathDirection::kCW);
1103     path.addRect(6, 20, 18, 30, SkPathDirection::kCW);
1104     path.addRect(32, 0, 36, 41, SkPathDirection::kCW);
1105     testSimplify(reporter, path, filename);
1106 }
1107 
testLine53(skiatest::Reporter * reporter,const char * filename)1108 static void testLine53(skiatest::Reporter* reporter, const char* filename) {
1109     SkPath path;
1110     path.addRect(10, 30, 30, 30, SkPathDirection::kCW);
1111     path.addRect(12, 20, 24, 30, SkPathDirection::kCW);
1112     path.addRect(12, 32, 21, 36, SkPathDirection::kCCW);
1113     testSimplify(reporter, path, filename);
1114 }
1115 
testLine53x(skiatest::Reporter * reporter,const char * filename)1116 static void testLine53x(skiatest::Reporter* reporter, const char* filename) {
1117     SkPath path;
1118     path.setFillType(SkPathFillType::kEvenOdd);
1119     path.addRect(10, 30, 30, 30, SkPathDirection::kCW);
1120     path.addRect(12, 20, 24, 30, SkPathDirection::kCW);
1121     path.addRect(12, 32, 21, 36, SkPathDirection::kCCW);
1122     testSimplify(reporter, path, filename);
1123 }
1124 
testLine54(skiatest::Reporter * reporter,const char * filename)1125 static void testLine54(skiatest::Reporter* reporter, const char* filename) {
1126     SkPath path;
1127     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1128     path.addRect(6, 0, 18, 18, SkPathDirection::kCW);
1129     path.addRect(8, 4, 17, 17, SkPathDirection::kCCW);
1130     testSimplify(reporter, path, filename);
1131 }
1132 
testLine54x(skiatest::Reporter * reporter,const char * filename)1133 static void testLine54x(skiatest::Reporter* reporter, const char* filename) {
1134     SkPath path;
1135     path.setFillType(SkPathFillType::kEvenOdd);
1136     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1137     path.addRect(6, 0, 18, 18, SkPathDirection::kCW);
1138     path.addRect(8, 4, 17, 17, SkPathDirection::kCCW);
1139     testSimplify(reporter, path, filename);
1140 }
1141 
testLine55(skiatest::Reporter * reporter,const char * filename)1142 static void testLine55(skiatest::Reporter* reporter, const char* filename) {
1143     SkPath path;
1144     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1145     path.addRect(6, 6, 18, 18, SkPathDirection::kCW);
1146     path.addRect(4, 4, 13, 13, SkPathDirection::kCCW);
1147     testSimplify(reporter, path, filename);
1148 }
1149 
testLine55x(skiatest::Reporter * reporter,const char * filename)1150 static void testLine55x(skiatest::Reporter* reporter, const char* filename) {
1151     SkPath path;
1152     path.setFillType(SkPathFillType::kEvenOdd);
1153     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1154     path.addRect(6, 6, 18, 18, SkPathDirection::kCW);
1155     path.addRect(4, 4, 13, 13, SkPathDirection::kCCW);
1156     testSimplify(reporter, path, filename);
1157 }
1158 
testLine56(skiatest::Reporter * reporter,const char * filename)1159 static void testLine56(skiatest::Reporter* reporter, const char* filename) {
1160     SkPath path;
1161     path.addRect(0, 20, 20, 20, SkPathDirection::kCW);
1162     path.addRect(18, 20, 30, 30, SkPathDirection::kCW);
1163     path.addRect(12, 0, 21, 21, SkPathDirection::kCCW);
1164     testSimplify(reporter, path, filename);
1165 }
1166 
testLine56x(skiatest::Reporter * reporter,const char * filename)1167 static void testLine56x(skiatest::Reporter* reporter, const char* filename) {
1168     SkPath path;
1169     path.setFillType(SkPathFillType::kEvenOdd);
1170     path.addRect(0, 20, 20, 20, SkPathDirection::kCW);
1171     path.addRect(18, 20, 30, 30, SkPathDirection::kCW);
1172     path.addRect(12, 0, 21, 21, SkPathDirection::kCCW);
1173     testSimplify(reporter, path, filename);
1174 }
1175 
testLine57(skiatest::Reporter * reporter,const char * filename)1176 static void testLine57(skiatest::Reporter* reporter, const char* filename) {
1177     SkPath path;
1178     path.addRect(20, 0, 40, 40, SkPathDirection::kCW);
1179     path.addRect(20, 0, 30, 40, SkPathDirection::kCW);
1180     path.addRect(12, 0, 21, 21, SkPathDirection::kCCW);
1181     testSimplify(reporter, path, filename);
1182 }
1183 
testLine57x(skiatest::Reporter * reporter,const char * filename)1184 static void testLine57x(skiatest::Reporter* reporter, const char* filename) {
1185     SkPath path;
1186     path.setFillType(SkPathFillType::kEvenOdd);
1187     path.addRect(20, 0, 40, 40, SkPathDirection::kCW);
1188     path.addRect(20, 0, 30, 40, SkPathDirection::kCW);
1189     path.addRect(12, 0, 21, 21, SkPathDirection::kCCW);
1190     testSimplify(reporter, path, filename);
1191 }
1192 
testLine58(skiatest::Reporter * reporter,const char * filename)1193 static void testLine58(skiatest::Reporter* reporter, const char* filename) {
1194     SkPath path;
1195     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1196     path.addRect(0, 0, 12, 12, SkPathDirection::kCCW);
1197     path.addRect(0, 12, 9, 9, SkPathDirection::kCCW);
1198     testSimplify(reporter, path, filename);
1199 }
1200 
testLine58x(skiatest::Reporter * reporter,const char * filename)1201 static void testLine58x(skiatest::Reporter* reporter, const char* filename) {
1202     SkPath path;
1203     path.setFillType(SkPathFillType::kEvenOdd);
1204     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1205     path.addRect(0, 0, 12, 12, SkPathDirection::kCCW);
1206     path.addRect(0, 12, 9, 9, SkPathDirection::kCCW);
1207     testSimplify(reporter, path, filename);
1208 }
1209 
testLine59(skiatest::Reporter * reporter,const char * filename)1210 static void testLine59(skiatest::Reporter* reporter, const char* filename) {
1211     SkPath path;
1212     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1213     path.addRect(6, 6, 18, 18, SkPathDirection::kCCW);
1214     path.addRect(4, 4, 13, 13, SkPathDirection::kCCW);
1215     testSimplify(reporter, path, filename);
1216 }
1217 
testLine59x(skiatest::Reporter * reporter,const char * filename)1218 static void testLine59x(skiatest::Reporter* reporter, const char* filename) {
1219     SkPath path;
1220     path.setFillType(SkPathFillType::kEvenOdd);
1221     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1222     path.addRect(6, 6, 18, 18, SkPathDirection::kCCW);
1223     path.addRect(4, 4, 13, 13, SkPathDirection::kCCW);
1224     testSimplify(reporter, path, filename);
1225 }
1226 
testLine60(skiatest::Reporter * reporter,const char * filename)1227 static void testLine60(skiatest::Reporter* reporter, const char* filename) {
1228     SkPath path;
1229     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1230     path.addRect(6, 12, 18, 18, SkPathDirection::kCCW);
1231     path.addRect(4, 12, 13, 13, SkPathDirection::kCCW);
1232     testSimplify(reporter, path, filename);
1233 }
1234 
testLine60x(skiatest::Reporter * reporter,const char * filename)1235 static void testLine60x(skiatest::Reporter* reporter, const char* filename) {
1236     SkPath path;
1237     path.setFillType(SkPathFillType::kEvenOdd);
1238     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1239     path.addRect(6, 12, 18, 18, SkPathDirection::kCCW);
1240     path.addRect(4, 12, 13, 13, SkPathDirection::kCCW);
1241     testSimplify(reporter, path, filename);
1242 }
1243 
testLine61(skiatest::Reporter * reporter,const char * filename)1244 static void testLine61(skiatest::Reporter* reporter, const char* filename) {
1245     SkPath path;
1246     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1247     path.addRect(12, 0, 24, 24, SkPathDirection::kCCW);
1248     path.addRect(12, 0, 21, 21, SkPathDirection::kCCW);
1249     testSimplify(reporter, path, filename);
1250 }
1251 
testLine61x(skiatest::Reporter * reporter,const char * filename)1252 static void testLine61x(skiatest::Reporter* reporter, const char* filename) {
1253     SkPath path;
1254     path.setFillType(SkPathFillType::kEvenOdd);
1255     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1256     path.addRect(12, 0, 24, 24, SkPathDirection::kCCW);
1257     path.addRect(12, 0, 21, 21, SkPathDirection::kCCW);
1258     testSimplify(reporter, path, filename);
1259 }
1260 
testLine62(skiatest::Reporter * reporter,const char * filename)1261 static void testLine62(skiatest::Reporter* reporter, const char* filename) {
1262     SkPath path;
1263     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1264     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1265     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
1266     path.addRect(4, 12, 13, 13, SkPathDirection::kCCW);
1267     testSimplify(reporter, path, filename);
1268 }
1269 
testLine62x(skiatest::Reporter * reporter,const char * filename)1270 static void testLine62x(skiatest::Reporter* reporter, const char* filename) {
1271     SkPath path;
1272     path.setFillType(SkPathFillType::kEvenOdd);
1273     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1274     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1275     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
1276     path.addRect(4, 12, 13, 13, SkPathDirection::kCCW);
1277     testSimplify(reporter, path, filename);
1278 }
1279 
testLine63(skiatest::Reporter * reporter,const char * filename)1280 static void testLine63(skiatest::Reporter* reporter, const char* filename) {
1281     SkPath path;
1282     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1283     path.addRect(0, 10, 20, 20, SkPathDirection::kCW);
1284     path.addRect(0, 6, 12, 12, SkPathDirection::kCCW);
1285     path.addRect(0, 32, 9, 36, SkPathDirection::kCCW);
1286     testSimplify(reporter, path, filename);
1287 }
1288 
testLine63x(skiatest::Reporter * reporter,const char * filename)1289 static void testLine63x(skiatest::Reporter* reporter, const char* filename) {
1290     SkPath path;
1291     path.setFillType(SkPathFillType::kEvenOdd);
1292     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1293     path.addRect(0, 10, 20, 20, SkPathDirection::kCW);
1294     path.addRect(0, 6, 12, 12, SkPathDirection::kCCW);
1295     path.addRect(0, 32, 9, 36, SkPathDirection::kCCW);
1296     testSimplify(reporter, path, filename);
1297 }
1298 
testLine64(skiatest::Reporter * reporter,const char * filename)1299 static void testLine64(skiatest::Reporter* reporter, const char* filename) {
1300     SkPath path;
1301     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1302     path.addRect(10, 40, 30, 30, SkPathDirection::kCW);
1303     path.addRect(18, 6, 30, 30, SkPathDirection::kCW);
1304     testSimplify(reporter, path, filename);
1305 }
1306 
testLine64x(skiatest::Reporter * reporter,const char * filename)1307 static void testLine64x(skiatest::Reporter* reporter, const char* filename) {
1308     SkPath path;
1309     path.setFillType(SkPathFillType::kEvenOdd);
1310     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1311     path.addRect(10, 40, 30, 30, SkPathDirection::kCW);
1312     path.addRect(18, 6, 30, 30, SkPathDirection::kCW);
1313     testSimplify(reporter, path, filename);
1314 }
1315 
testLine65(skiatest::Reporter * reporter,const char * filename)1316 static void testLine65(skiatest::Reporter* reporter, const char* filename) {
1317     SkPath path;
1318     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1319     path.addRect(10, 0, 30, 30, SkPathDirection::kCW);
1320     path.addRect(24, 0, 36, 36, SkPathDirection::kCW);
1321     path.addRect(32, 6, 36, 41, SkPathDirection::kCCW);
1322     testSimplify(reporter, path, filename);
1323 }
1324 
testLine65x(skiatest::Reporter * reporter,const char * filename)1325 static void testLine65x(skiatest::Reporter* reporter, const char* filename) {
1326     SkPath path;
1327     path.setFillType(SkPathFillType::kEvenOdd);
1328     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1329     path.addRect(10, 0, 30, 30, SkPathDirection::kCW);
1330     path.addRect(24, 0, 36, 36, SkPathDirection::kCW);
1331     path.addRect(32, 6, 36, 41, SkPathDirection::kCCW);
1332     testSimplify(reporter, path, filename);
1333 }
1334 
testLine66(skiatest::Reporter * reporter,const char * filename)1335 static void testLine66(skiatest::Reporter* reporter, const char* filename) {
1336     SkPath path;
1337     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1338     path.addRect(0, 30, 20, 20, SkPathDirection::kCW);
1339     path.addRect(12, 20, 24, 30, SkPathDirection::kCW);
1340     testSimplify(reporter, path, filename);
1341 }
1342 
testLine66x(skiatest::Reporter * reporter,const char * filename)1343 static void testLine66x(skiatest::Reporter* reporter, const char* filename) {
1344     SkPath path;
1345     path.setFillType(SkPathFillType::kEvenOdd);
1346     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1347     path.addRect(0, 30, 20, 20, SkPathDirection::kCW);
1348     path.addRect(12, 20, 24, 30, SkPathDirection::kCW);
1349     testSimplify(reporter, path, filename);
1350 }
1351 
testLine67(skiatest::Reporter * reporter,const char * filename)1352 static void testLine67(skiatest::Reporter* reporter, const char* filename) {
1353     SkPath path;
1354     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1355     path.addRect(10, 40, 30, 30, SkPathDirection::kCW);
1356     path.addRect(24, 20, 36, 30, SkPathDirection::kCW);
1357     path.addRect(32, 0, 36, 41, SkPathDirection::kCW);
1358     testSimplify(reporter, path, filename);
1359 }
1360 
testLine67x(skiatest::Reporter * reporter,const char * filename)1361 static void testLine67x(skiatest::Reporter* reporter, const char* filename) {
1362     SkPath path;
1363     path.setFillType(SkPathFillType::kEvenOdd);
1364     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1365     path.addRect(10, 40, 30, 30, SkPathDirection::kCW);
1366     path.addRect(24, 20, 36, 30, SkPathDirection::kCW);
1367     path.addRect(32, 0, 36, 41, SkPathDirection::kCW);
1368     testSimplify(reporter, path, filename);
1369 }
1370 
testLine68a(skiatest::Reporter * reporter,const char * filename)1371 static void testLine68a(skiatest::Reporter* reporter, const char* filename) {
1372     SkPath path;
1373     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1374     path.addRect(2, 2, 6, 6, SkPathDirection::kCW);
1375     path.addRect(1, 2, 4, 2, SkPathDirection::kCW);
1376     testSimplify(reporter, path, filename);
1377 }
1378 
testLine68ax(skiatest::Reporter * reporter,const char * filename)1379 static void testLine68ax(skiatest::Reporter* reporter, const char* filename) {
1380     SkPath path;
1381     path.setFillType(SkPathFillType::kEvenOdd);
1382     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1383     path.addRect(2, 2, 6, 6, SkPathDirection::kCW);
1384     path.addRect(1, 2, 4, 2, SkPathDirection::kCW);
1385     testSimplify(reporter, path, filename);
1386 }
1387 
testLine68b(skiatest::Reporter * reporter,const char * filename)1388 static void testLine68b(skiatest::Reporter* reporter, const char* filename) {
1389     SkPath path;
1390     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1391     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1392     path.addRect(1, 2, 2, 2, SkPathDirection::kCW);
1393     testSimplify(reporter, path, filename);
1394 }
1395 
testLine68bx(skiatest::Reporter * reporter,const char * filename)1396 static void testLine68bx(skiatest::Reporter* reporter, const char* filename) {
1397     SkPath path;
1398     path.setFillType(SkPathFillType::kEvenOdd);
1399     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1400     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1401     path.addRect(1, 2, 2, 2, SkPathDirection::kCW);
1402     testSimplify(reporter, path, filename);
1403 }
1404 
testLine68c(skiatest::Reporter * reporter,const char * filename)1405 static void testLine68c(skiatest::Reporter* reporter, const char* filename) {
1406     SkPath path;
1407     path.addRect(0, 0, 8, 8, SkPathDirection::kCCW);
1408     path.addRect(2, 2, 6, 6, SkPathDirection::kCW);
1409     path.addRect(1, 2, 4, 2, SkPathDirection::kCW);
1410     testSimplify(reporter, path, filename);
1411 }
1412 
testLine68cx(skiatest::Reporter * reporter,const char * filename)1413 static void testLine68cx(skiatest::Reporter* reporter, const char* filename) {
1414     SkPath path;
1415     path.setFillType(SkPathFillType::kEvenOdd);
1416     path.addRect(0, 0, 8, 8, SkPathDirection::kCCW);
1417     path.addRect(2, 2, 6, 6, SkPathDirection::kCW);
1418     path.addRect(1, 2, 4, 2, SkPathDirection::kCW);
1419     testSimplify(reporter, path, filename);
1420 }
1421 
testLine68d(skiatest::Reporter * reporter,const char * filename)1422 static void testLine68d(skiatest::Reporter* reporter, const char* filename) {
1423     SkPath path;
1424     path.addRect(0, 0, 8, 8, SkPathDirection::kCCW);
1425     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1426     path.addRect(1, 2, 4, 2, SkPathDirection::kCW);
1427     testSimplify(reporter, path, filename);
1428 }
1429 
testLine68dx(skiatest::Reporter * reporter,const char * filename)1430 static void testLine68dx(skiatest::Reporter* reporter, const char* filename) {
1431     SkPath path;
1432     path.setFillType(SkPathFillType::kEvenOdd);
1433     path.addRect(0, 0, 8, 8, SkPathDirection::kCCW);
1434     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1435     path.addRect(1, 2, 4, 2, SkPathDirection::kCW);
1436     testSimplify(reporter, path, filename);
1437 }
1438 
testLine68e(skiatest::Reporter * reporter,const char * filename)1439 static void testLine68e(skiatest::Reporter* reporter, const char* filename) {
1440     SkPath path;
1441     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1442     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1443     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1444     path.addRect(1, 2, 2, 2, SkPathDirection::kCW);
1445     testSimplify(reporter, path, filename);
1446 }
1447 
testLine68ex(skiatest::Reporter * reporter,const char * filename)1448 static void testLine68ex(skiatest::Reporter* reporter, const char* filename) {
1449     SkPath path;
1450     path.setFillType(SkPathFillType::kEvenOdd);
1451     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1452     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1453     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1454     path.addRect(1, 2, 2, 2, SkPathDirection::kCW);
1455     testSimplify(reporter, path, filename);
1456 }
1457 
testLine68f(skiatest::Reporter * reporter,const char * filename)1458 static void testLine68f(skiatest::Reporter* reporter, const char* filename) {
1459     SkPath path;
1460     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1461     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1462     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1463     path.addRect(1, 2, 2, 2, SkPathDirection::kCW);
1464     testSimplify(reporter, path, filename);
1465 }
1466 
testLine68fx(skiatest::Reporter * reporter,const char * filename)1467 static void testLine68fx(skiatest::Reporter* reporter, const char* filename) {
1468     SkPath path;
1469     path.setFillType(SkPathFillType::kEvenOdd);
1470     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1471     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1472     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1473     path.addRect(1, 2, 2, 2, SkPathDirection::kCW);
1474     testSimplify(reporter, path, filename);
1475 }
1476 
testLine68g(skiatest::Reporter * reporter,const char * filename)1477 static void testLine68g(skiatest::Reporter* reporter, const char* filename) {
1478     SkPath path;
1479     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1480     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1481     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1482     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1483     path.addRect(1, 2, 2, 2, SkPathDirection::kCW);
1484     testSimplify(reporter, path, filename);
1485 }
1486 
testLine68gx(skiatest::Reporter * reporter,const char * filename)1487 static void testLine68gx(skiatest::Reporter* reporter, const char* filename) {
1488     SkPath path;
1489     path.setFillType(SkPathFillType::kEvenOdd);
1490     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1491     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1492     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1493     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1494     path.addRect(1, 2, 2, 2, SkPathDirection::kCW);
1495     testSimplify(reporter, path, filename);
1496 }
1497 
testLine68h(skiatest::Reporter * reporter,const char * filename)1498 static void testLine68h(skiatest::Reporter* reporter, const char* filename) {
1499     SkPath path;
1500     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1501     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1502     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1503     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1504     path.addRect(1, 2, 2, 2, SkPathDirection::kCW);
1505     testSimplify(reporter, path, filename);
1506 }
1507 
testLine68hx(skiatest::Reporter * reporter,const char * filename)1508 static void testLine68hx(skiatest::Reporter* reporter, const char* filename) {
1509     SkPath path;
1510     path.setFillType(SkPathFillType::kEvenOdd);
1511     path.addRect(0, 0, 8, 8, SkPathDirection::kCW);
1512     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1513     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1514     path.addRect(2, 2, 6, 6, SkPathDirection::kCCW);
1515     path.addRect(1, 2, 2, 2, SkPathDirection::kCW);
1516     testSimplify(reporter, path, filename);
1517 }
1518 
testLine69(skiatest::Reporter * reporter,const char * filename)1519 static void testLine69(skiatest::Reporter* reporter, const char* filename) {
1520     SkPath path;
1521     path.addRect(0, 20, 20, 20, SkPathDirection::kCW);
1522     path.addRect(0, 20, 12, 30, SkPathDirection::kCW);
1523     path.addRect(12, 32, 21, 36, SkPathDirection::kCW);
1524     testSimplify(reporter, path, filename);
1525 }
1526 
testLine69x(skiatest::Reporter * reporter,const char * filename)1527 static void testLine69x(skiatest::Reporter* reporter, const char* filename) {
1528     SkPath path;
1529     path.setFillType(SkPathFillType::kEvenOdd);
1530     path.addRect(0, 20, 20, 20, SkPathDirection::kCW);
1531     path.addRect(0, 20, 12, 30, SkPathDirection::kCW);
1532     path.addRect(12, 32, 21, 36, SkPathDirection::kCW);
1533     testSimplify(reporter, path, filename);
1534 }
1535 
testLine70(skiatest::Reporter * reporter,const char * filename)1536 static void testLine70(skiatest::Reporter* reporter, const char* filename) {
1537     SkPath path;
1538     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1539     path.addRect(0, 24, 12, 12, SkPathDirection::kCW);
1540     path.addRect(12, 32, 21, 36, SkPathDirection::kCCW);
1541     testSimplify(reporter, path, filename);
1542 }
1543 
testLine70x(skiatest::Reporter * reporter,const char * filename)1544 static void testLine70x(skiatest::Reporter* reporter, const char* filename) {
1545     SkPath path;
1546     path.setFillType(SkPathFillType::kEvenOdd);
1547     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1548     path.addRect(0, 24, 12, 12, SkPathDirection::kCW);
1549     path.addRect(12, 32, 21, 36, SkPathDirection::kCCW);
1550     testSimplify(reporter, path, filename);
1551 }
1552 
testLine71(skiatest::Reporter * reporter,const char * filename)1553 static void testLine71(skiatest::Reporter* reporter, const char* filename) {
1554     SkPath path;
1555     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1556     path.addRect(12, 0, 24, 24, SkPathDirection::kCW);
1557     path.addRect(12, 32, 21, 36, SkPathDirection::kCW);
1558     testSimplify(reporter, path, filename);
1559 }
1560 
testLine71x(skiatest::Reporter * reporter,const char * filename)1561 static void testLine71x(skiatest::Reporter* reporter, const char* filename) {
1562     SkPath path;
1563     path.setFillType(SkPathFillType::kEvenOdd);
1564     path.addRect(0, 0, 20, 20, SkPathDirection::kCW);
1565     path.addRect(12, 0, 24, 24, SkPathDirection::kCW);
1566     path.addRect(12, 32, 21, 36, SkPathDirection::kCW);
1567     testSimplify(reporter, path, filename);
1568 }
1569 
testLine72(skiatest::Reporter * reporter,const char * filename)1570 static void testLine72(skiatest::Reporter* reporter, const char* filename) {
1571     SkPath path;
1572     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1573     path.addRect(10, 40, 30, 30, SkPathDirection::kCW);
1574     path.addRect(6, 20, 18, 30, SkPathDirection::kCW);
1575     testSimplify(reporter, path, filename);
1576 }
1577 
testLine72x(skiatest::Reporter * reporter,const char * filename)1578 static void testLine72x(skiatest::Reporter* reporter, const char* filename) {
1579     SkPath path;
1580     path.setFillType(SkPathFillType::kEvenOdd);
1581     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1582     path.addRect(10, 40, 30, 30, SkPathDirection::kCW);
1583     path.addRect(6, 20, 18, 30, SkPathDirection::kCW);
1584     testSimplify(reporter, path, filename);
1585 }
1586 
testLine73(skiatest::Reporter * reporter,const char * filename)1587 static void testLine73(skiatest::Reporter* reporter, const char* filename) {
1588     SkPath path;
1589     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1590     path.addRect(0, 40, 20, 20, SkPathDirection::kCW);
1591     path.addRect(0, 20, 12, 30, SkPathDirection::kCW);
1592     path.addRect(0, 0, 9, 9, SkPathDirection::kCCW);
1593     testSimplify(reporter, path, filename);
1594 }
1595 
testLine73x(skiatest::Reporter * reporter,const char * filename)1596 static void testLine73x(skiatest::Reporter* reporter, const char* filename) {
1597     SkPath path;
1598     path.setFillType(SkPathFillType::kEvenOdd);
1599     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1600     path.addRect(0, 40, 20, 20, SkPathDirection::kCW);
1601     path.addRect(0, 20, 12, 30, SkPathDirection::kCW);
1602     path.addRect(0, 0, 9, 9, SkPathDirection::kCCW);
1603     testSimplify(reporter, path, filename);
1604 }
1605 
testLine74(skiatest::Reporter * reporter,const char * filename)1606 static void testLine74(skiatest::Reporter* reporter, const char* filename) {
1607     SkPath path;
1608     path.addRect(20, 30, 40, 40, SkPathDirection::kCW);
1609     path.addRect(24, 20, 36, 30, SkPathDirection::kCCW);
1610     path.addRect(32, 24, 36, 41, SkPathDirection::kCCW);
1611     testSimplify(reporter, path, filename);
1612 }
1613 
testLine74x(skiatest::Reporter * reporter,const char * filename)1614 static void testLine74x(skiatest::Reporter* reporter, const char* filename) {
1615     SkPath path;
1616     path.setFillType(SkPathFillType::kEvenOdd);
1617     path.addRect(20, 30, 40, 40, SkPathDirection::kCW);
1618     path.addRect(24, 20, 36, 30, SkPathDirection::kCCW);
1619     path.addRect(32, 24, 36, 41, SkPathDirection::kCCW);
1620     testSimplify(reporter, path, filename);
1621 }
1622 
testLine75(skiatest::Reporter * reporter,const char * filename)1623 static void testLine75(skiatest::Reporter* reporter, const char* filename) {
1624     SkPath path;
1625     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1626     path.addRect(10, 0, 30, 30, SkPathDirection::kCCW);
1627     path.addRect(18, 0, 30, 30, SkPathDirection::kCCW);
1628     path.addRect(12, 0, 21, 21, SkPathDirection::kCCW);
1629     testSimplify(reporter, path, filename);
1630 }
1631 
testLine75x(skiatest::Reporter * reporter,const char * filename)1632 static void testLine75x(skiatest::Reporter* reporter, const char* filename) {
1633     SkPath path;
1634     path.setFillType(SkPathFillType::kEvenOdd);
1635     path.addRect(0, 0, 60, 60, SkPathDirection::kCW);
1636     path.addRect(10, 0, 30, 30, SkPathDirection::kCCW);
1637     path.addRect(18, 0, 30, 30, SkPathDirection::kCCW);
1638     path.addRect(12, 0, 21, 21, SkPathDirection::kCCW);
1639     testSimplify(reporter, path, filename);
1640 }
1641 
testLine76(skiatest::Reporter * reporter,const char * filename)1642 static void testLine76(skiatest::Reporter* reporter, const char* filename) {
1643     SkPath path;
1644     path.addRect(36, 0, 66, 60, SkPathDirection::kCW);
1645     path.addRect(10, 20, 40, 30, SkPathDirection::kCW);
1646     path.addRect(24, 20, 36, 30, SkPathDirection::kCCW);
1647     path.addRect(32, 6, 36, 41, SkPathDirection::kCCW);
1648     testSimplify(reporter, path, filename);
1649 }
1650 
testLine76x(skiatest::Reporter * reporter,const char * filename)1651 static void testLine76x(skiatest::Reporter* reporter, const char* filename) {
1652     SkPath path;
1653     path.setFillType(SkPathFillType::kEvenOdd);
1654     path.addRect(36, 0, 66, 60, SkPathDirection::kCW);
1655     path.addRect(10, 20, 40, 30, SkPathDirection::kCW);
1656     path.addRect(24, 20, 36, 30, SkPathDirection::kCCW);
1657     path.addRect(32, 6, 36, 41, SkPathDirection::kCCW);
1658     testSimplify(reporter, path, filename);
1659 }
1660 
testLine77(skiatest::Reporter * reporter,const char * filename)1661 static void testLine77(skiatest::Reporter* reporter, const char* filename) {
1662     SkPath path;
1663     path.addRect(20, 0, 40, 40, SkPathDirection::kCW);
1664     path.addRect(24, 6, 36, 36, SkPathDirection::kCCW);
1665     path.addRect(24, 32, 33, 36, SkPathDirection::kCCW);
1666     testSimplify(reporter, path, filename);
1667 }
1668 
testLine77x(skiatest::Reporter * reporter,const char * filename)1669 static void testLine77x(skiatest::Reporter* reporter, const char* filename) {
1670     SkPath path;
1671     path.setFillType(SkPathFillType::kEvenOdd);
1672     path.addRect(20, 0, 40, 40, SkPathDirection::kCW);
1673     path.addRect(24, 6, 36, 36, SkPathDirection::kCCW);
1674     path.addRect(24, 32, 33, 36, SkPathDirection::kCCW);
1675     testSimplify(reporter, path, filename);
1676 }
1677 
testLine78(skiatest::Reporter * reporter,const char * filename)1678 static void testLine78(skiatest::Reporter* reporter, const char* filename) {
1679     SkPath path;
1680     path.addRect(0, 0, 30, 60, SkPathDirection::kCW);
1681     path.addRect(10, 20, 30, 30, SkPathDirection::kCCW);
1682     path.addRect(18, 20, 30, 30, SkPathDirection::kCCW);
1683     path.addRect(32, 0, 36, 41, SkPathDirection::kCCW);
1684     testSimplify(reporter, path, filename);
1685 }
1686 
testLine78x(skiatest::Reporter * reporter,const char * filename)1687 static void testLine78x(skiatest::Reporter* reporter, const char* filename) {
1688     SkPath path;
1689     path.setFillType(SkPathFillType::kEvenOdd);
1690     path.addRect(0, 0, 30, 60, SkPathDirection::kCW);
1691     path.addRect(10, 20, 30, 30, SkPathDirection::kCCW);
1692     path.addRect(18, 20, 30, 30, SkPathDirection::kCCW);
1693     path.addRect(32, 0, 36, 41, SkPathDirection::kCCW);
1694     testSimplify(reporter, path, filename);
1695 }
1696 
testLine79(skiatest::Reporter * reporter,const char * filename)1697 static void testLine79(skiatest::Reporter* reporter, const char* filename) {
1698     SkPath path;
1699     path.addRect(0, 36, 60, 30, SkPathDirection::kCW);
1700     path.addRect(10, 30, 40, 30, SkPathDirection::kCW);
1701     path.addRect(0, 20, 12, 30, SkPathDirection::kCCW);
1702     path.addRect(0, 32, 9, 36, SkPathDirection::kCCW);
1703     testSimplify(reporter, path, filename);
1704 }
1705 
testLine79x(skiatest::Reporter * reporter,const char * filename)1706 static void testLine79x(skiatest::Reporter* reporter, const char* filename) {
1707     SkPath path;
1708     path.setFillType(SkPathFillType::kEvenOdd);
1709     path.addRect(0, 36, 60, 30, SkPathDirection::kCW);
1710     path.addRect(10, 30, 40, 30, SkPathDirection::kCW);
1711     path.addRect(0, 20, 12, 30, SkPathDirection::kCCW);
1712     path.addRect(0, 32, 9, 36, SkPathDirection::kCCW);
1713     testSimplify(reporter, path, filename);
1714 }
1715 
testLine81(skiatest::Reporter * reporter,const char * filename)1716 static void testLine81(skiatest::Reporter* reporter, const char* filename) {
1717     SkPath path;
1718     path.addRect(-1, -1, 3, 3, SkPathDirection::kCW);
1719     path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
1720     path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
1721     path.addRect(0, 0, 1, 1, SkPathDirection::kCW);
1722     path.addRect(1, 1, 2, 2, SkPathDirection::kCCW);
1723     testSimplify(reporter, path, filename);
1724 }
1725 
testDegenerate1(skiatest::Reporter * reporter,const char * filename)1726 static void testDegenerate1(skiatest::Reporter* reporter, const char* filename) {
1727     SkPath path;
1728     path.moveTo(0, 0);
1729     path.lineTo(0, 0);
1730     path.lineTo(2, 0);
1731     path.close();
1732     path.moveTo(0, 0);
1733     path.lineTo(1, 0);
1734     path.lineTo(2, 0);
1735     path.close();
1736     testSimplify(reporter, path, filename);
1737 }
1738 
testDegenerate1x(skiatest::Reporter * reporter,const char * filename)1739 static void testDegenerate1x(skiatest::Reporter* reporter, const char* filename) {
1740     SkPath path;
1741     path.setFillType(SkPathFillType::kEvenOdd);
1742     path.moveTo(0, 0);
1743     path.lineTo(0, 0);
1744     path.lineTo(2, 0);
1745     path.close();
1746     path.moveTo(0, 0);
1747     path.lineTo(1, 0);
1748     path.lineTo(2, 0);
1749     path.close();
1750     testSimplify(reporter, path, filename);
1751 }
1752 
testDegenerate2(skiatest::Reporter * reporter,const char * filename)1753 static void testDegenerate2(skiatest::Reporter* reporter, const char* filename) {
1754     SkPath path;
1755     path.moveTo(0, 0);
1756     path.lineTo(0, 0);
1757     path.lineTo(0, 0);
1758     path.close();
1759     path.moveTo(0, 0);
1760     path.lineTo(1, 0);
1761     path.lineTo(0, 1);
1762     path.close();
1763     testSimplify(reporter, path, filename);
1764 }
1765 
testDegenerate2x(skiatest::Reporter * reporter,const char * filename)1766 static void testDegenerate2x(skiatest::Reporter* reporter, const char* filename) {
1767     SkPath path;
1768     path.setFillType(SkPathFillType::kEvenOdd);
1769     path.moveTo(0, 0);
1770     path.lineTo(0, 0);
1771     path.lineTo(0, 0);
1772     path.close();
1773     path.moveTo(0, 0);
1774     path.lineTo(1, 0);
1775     path.lineTo(0, 1);
1776     path.close();
1777     testSimplify(reporter, path, filename);
1778 }
1779 
testDegenerate3(skiatest::Reporter * reporter,const char * filename)1780 static void testDegenerate3(skiatest::Reporter* reporter, const char* filename) {
1781     SkPath path;
1782     path.moveTo(0, 0);
1783     path.lineTo(2, 0);
1784     path.lineTo(1, 0);
1785     path.close();
1786     path.moveTo(0, 0);
1787     path.lineTo(0, 0);
1788     path.lineTo(3, 0);
1789     path.close();
1790     testSimplify(reporter, path, filename);
1791 }
1792 
testDegenerate3x(skiatest::Reporter * reporter,const char * filename)1793 static void testDegenerate3x(skiatest::Reporter* reporter, const char* filename) {
1794     SkPath path;
1795     path.setFillType(SkPathFillType::kEvenOdd);
1796     path.moveTo(0, 0);
1797     path.lineTo(2, 0);
1798     path.lineTo(1, 0);
1799     path.close();
1800     path.moveTo(0, 0);
1801     path.lineTo(0, 0);
1802     path.lineTo(3, 0);
1803     path.close();
1804     testSimplify(reporter, path, filename);
1805 }
1806 
testDegenerate4(skiatest::Reporter * reporter,const char * filename)1807 static void testDegenerate4(skiatest::Reporter* reporter, const char* filename) {
1808     SkPath path;
1809     path.moveTo(0, 0);
1810     path.lineTo(1, 0);
1811     path.lineTo(1, 3);
1812     path.close();
1813     path.moveTo(1, 0);
1814     path.lineTo(1, 1);
1815     path.lineTo(1, 2);
1816     path.close();
1817     testSimplify(reporter, path, filename);
1818 }
1819 
testDegenerate4x(skiatest::Reporter * reporter,const char * filename)1820 static void testDegenerate4x(skiatest::Reporter* reporter, const char* filename) {
1821     SkPath path;
1822     path.setFillType(SkPathFillType::kEvenOdd);
1823     path.moveTo(0, 0);
1824     path.lineTo(1, 0);
1825     path.lineTo(1, 3);
1826     path.close();
1827     path.moveTo(1, 0);
1828     path.lineTo(1, 1);
1829     path.lineTo(1, 2);
1830     path.close();
1831     testSimplify(reporter, path, filename);
1832 }
1833 
testNondegenerate1(skiatest::Reporter * reporter,const char * filename)1834 static void testNondegenerate1(skiatest::Reporter* reporter, const char* filename) {
1835     SkPath path;
1836     path.moveTo(0, 0);
1837     path.lineTo(3, 0);
1838     path.lineTo(1, 3);
1839     path.close();
1840     path.moveTo(1, 1);
1841     path.lineTo(2, 1);
1842     path.lineTo(1, 2);
1843     path.close();
1844     testSimplify(reporter, path, filename);
1845 }
1846 
testNondegenerate1x(skiatest::Reporter * reporter,const char * filename)1847 static void testNondegenerate1x(skiatest::Reporter* reporter, const char* filename) {
1848     SkPath path;
1849     path.setFillType(SkPathFillType::kEvenOdd);
1850     path.moveTo(0, 0);
1851     path.lineTo(3, 0);
1852     path.lineTo(1, 3);
1853     path.close();
1854     path.moveTo(1, 1);
1855     path.lineTo(2, 1);
1856     path.lineTo(1, 2);
1857     path.close();
1858     testSimplify(reporter, path, filename);
1859 }
1860 
testNondegenerate2(skiatest::Reporter * reporter,const char * filename)1861 static void testNondegenerate2(skiatest::Reporter* reporter, const char* filename) {
1862     SkPath path;
1863     path.moveTo(1, 0);
1864     path.lineTo(0, 1);
1865     path.lineTo(1, 1);
1866     path.close();
1867     path.moveTo(0, 2);
1868     path.lineTo(0, 3);
1869     path.lineTo(1, 2);
1870     path.close();
1871     testSimplify(reporter, path, filename);
1872 }
1873 
testNondegenerate2x(skiatest::Reporter * reporter,const char * filename)1874 static void testNondegenerate2x(skiatest::Reporter* reporter, const char* filename) {
1875     SkPath path;
1876     path.setFillType(SkPathFillType::kEvenOdd);
1877     path.moveTo(1, 0);
1878     path.lineTo(0, 1);
1879     path.lineTo(1, 1);
1880     path.close();
1881     path.moveTo(0, 2);
1882     path.lineTo(0, 3);
1883     path.lineTo(1, 2);
1884     path.close();
1885     testSimplify(reporter, path, filename);
1886 }
1887 
testNondegenerate3(skiatest::Reporter * reporter,const char * filename)1888 static void testNondegenerate3(skiatest::Reporter* reporter, const char* filename) {
1889     SkPath path;
1890     path.moveTo(0, 0);
1891     path.lineTo(1, 0);
1892     path.lineTo(2, 1);
1893     path.close();
1894     path.moveTo(0, 1);
1895     path.lineTo(1, 1);
1896     path.lineTo(0, 2);
1897     path.close();
1898     testSimplify(reporter, path, filename);
1899 }
1900 
testNondegenerate3x(skiatest::Reporter * reporter,const char * filename)1901 static void testNondegenerate3x(skiatest::Reporter* reporter, const char* filename) {
1902     SkPath path;
1903     path.setFillType(SkPathFillType::kEvenOdd);
1904     path.moveTo(0, 0);
1905     path.lineTo(1, 0);
1906     path.lineTo(2, 1);
1907     path.close();
1908     path.moveTo(0, 1);
1909     path.lineTo(1, 1);
1910     path.lineTo(0, 2);
1911     path.close();
1912     testSimplify(reporter, path, filename);
1913 }
1914 
testNondegenerate4(skiatest::Reporter * reporter,const char * filename)1915 static void testNondegenerate4(skiatest::Reporter* reporter, const char* filename) {
1916     SkPath path;
1917     path.moveTo(1, 0);
1918     path.lineTo(0, 1);
1919     path.lineTo(1, 2);
1920     path.close();
1921     path.moveTo(0, 2);
1922     path.lineTo(0, 3);
1923     path.lineTo(1, 3);
1924     path.close();
1925     testSimplify(reporter, path, filename);
1926 }
1927 
testNondegenerate4x(skiatest::Reporter * reporter,const char * filename)1928 static void testNondegenerate4x(skiatest::Reporter* reporter, const char* filename) {
1929     SkPath path;
1930     path.setFillType(SkPathFillType::kEvenOdd);
1931     path.moveTo(1, 0);
1932     path.lineTo(0, 1);
1933     path.lineTo(1, 2);
1934     path.close();
1935     path.moveTo(0, 2);
1936     path.lineTo(0, 3);
1937     path.lineTo(1, 3);
1938     path.close();
1939     testSimplify(reporter, path, filename);
1940 }
1941 
testQuadralateral5(skiatest::Reporter * reporter,const char * filename)1942 static void testQuadralateral5(skiatest::Reporter* reporter, const char* filename) {
1943     SkPath path;
1944     path.moveTo(0, 0);
1945     path.lineTo(0, 0);
1946     path.lineTo(1, 0);
1947     path.lineTo(1, 1);
1948     path.close();
1949     path.moveTo(0, 0);
1950     path.lineTo(2, 2);
1951     path.lineTo(3, 2);
1952     path.lineTo(3, 3);
1953     path.close();
1954     testSimplify(reporter, path, filename);
1955 }
1956 
testQuadralateral5x(skiatest::Reporter * reporter,const char * filename)1957 static void testQuadralateral5x(skiatest::Reporter* reporter, const char* filename) {
1958     SkPath path;
1959     path.setFillType(SkPathFillType::kEvenOdd);
1960     path.moveTo(0, 0);
1961     path.lineTo(0, 0);
1962     path.lineTo(1, 0);
1963     path.lineTo(1, 1);
1964     path.close();
1965     path.moveTo(0, 0);
1966     path.lineTo(2, 2);
1967     path.lineTo(3, 2);
1968     path.lineTo(3, 3);
1969     path.close();
1970     testSimplify(reporter, path, filename);
1971 }
1972 
testQuadralateral6(skiatest::Reporter * reporter,const char * filename)1973 static void testQuadralateral6(skiatest::Reporter* reporter, const char* filename) {
1974     SkPath path;
1975     path.moveTo(0, 0);
1976     path.lineTo(0, 0);
1977     path.lineTo(1, 0);
1978     path.lineTo(1, 1);
1979     path.close();
1980     path.moveTo(1, 0);
1981     path.lineTo(2, 0);
1982     path.lineTo(0, 2);
1983     path.lineTo(2, 2);
1984     path.close();
1985     testSimplify(reporter, path, filename);
1986 }
1987 
testQuadralateral6x(skiatest::Reporter * reporter,const char * filename)1988 static void testQuadralateral6x(skiatest::Reporter* reporter, const char* filename) {
1989     SkPath path;
1990     path.setFillType(SkPathFillType::kEvenOdd);
1991     path.moveTo(0, 0);
1992     path.lineTo(0, 0);
1993     path.lineTo(1, 0);
1994     path.lineTo(1, 1);
1995     path.close();
1996     path.moveTo(1, 0);
1997     path.lineTo(2, 0);
1998     path.lineTo(0, 2);
1999     path.lineTo(2, 2);
2000     path.close();
2001     testSimplify(reporter, path, filename);
2002 }
2003 
testFauxQuadralateral6(skiatest::Reporter * reporter,const char * filename)2004 static void testFauxQuadralateral6(skiatest::Reporter* reporter, const char* filename) {
2005     SkPath path;
2006     path.moveTo(0, 0);
2007     path.lineTo(1, 0);
2008     path.lineTo(1, 1);
2009     path.close();
2010     path.moveTo(1, 0);
2011     path.lineTo(2, 0);
2012     path.lineTo(1 + 1.0f/3, 2.0f/3);
2013     path.close();
2014     path.moveTo(1 + 1.0f/3, 2.0f/3);
2015     path.lineTo(0, 2);
2016     path.lineTo(2, 2);
2017     path.close();
2018     testSimplify(reporter, path, filename);
2019 }
2020 
testFauxQuadralateral6x(skiatest::Reporter * reporter,const char * filename)2021 static void testFauxQuadralateral6x(skiatest::Reporter* reporter, const char* filename) {
2022     SkPath path;
2023     path.setFillType(SkPathFillType::kEvenOdd);
2024     path.moveTo(0, 0);
2025     path.lineTo(1, 0);
2026     path.lineTo(1, 1);
2027     path.close();
2028     path.moveTo(1, 0);
2029     path.lineTo(2, 0);
2030     path.lineTo(1 + 1.0f/3, 2.0f/3);
2031     path.close();
2032     path.moveTo(1 + 1.0f/3, 2.0f/3);
2033     path.lineTo(0, 2);
2034     path.lineTo(2, 2);
2035     path.close();
2036     testSimplify(reporter, path, filename);
2037 }
2038 
testFauxQuadralateral6a(skiatest::Reporter * reporter,const char * filename)2039 static void testFauxQuadralateral6a(skiatest::Reporter* reporter, const char* filename) {
2040     SkPath path;
2041     path.moveTo(0, 0);
2042     path.lineTo(3, 0);
2043     path.lineTo(3, 3);
2044     path.close();
2045     path.moveTo(3, 0);
2046     path.lineTo(6, 0);
2047     path.lineTo(4, 2);
2048     path.close();
2049     path.moveTo(4, 2);
2050     path.lineTo(0, 6);
2051     path.lineTo(6, 6);
2052     path.close();
2053     testSimplify(reporter, path, filename);
2054 }
2055 
testFauxQuadralateral6ax(skiatest::Reporter * reporter,const char * filename)2056 static void testFauxQuadralateral6ax(skiatest::Reporter* reporter, const char* filename) {
2057     SkPath path;
2058     path.setFillType(SkPathFillType::kEvenOdd);
2059     path.moveTo(0, 0);
2060     path.lineTo(3, 0);
2061     path.lineTo(3, 3);
2062     path.close();
2063     path.moveTo(3, 0);
2064     path.lineTo(6, 0);
2065     path.lineTo(4, 2);
2066     path.close();
2067     path.moveTo(4, 2);
2068     path.lineTo(0, 6);
2069     path.lineTo(6, 6);
2070     path.close();
2071     testSimplify(reporter, path, filename);
2072 }
2073 
testFauxQuadralateral6b(skiatest::Reporter * reporter,const char * filename)2074 static void testFauxQuadralateral6b(skiatest::Reporter* reporter, const char* filename) {
2075     SkPath path;
2076     path.moveTo(0, 0);
2077     path.lineTo(3, 0);
2078     path.lineTo(3, 3);
2079     path.close();
2080     path.moveTo(3, 0);
2081     path.lineTo(6, 0);
2082     path.lineTo(4, 2);
2083     path.close();
2084     path.moveTo(4, 2);
2085     path.lineTo(6, 6);
2086     path.lineTo(0, 6);
2087     path.close();
2088     testSimplify(reporter, path, filename);
2089 }
2090 
testFauxQuadralateral6bx(skiatest::Reporter * reporter,const char * filename)2091 static void testFauxQuadralateral6bx(skiatest::Reporter* reporter, const char* filename) {
2092     SkPath path;
2093     path.setFillType(SkPathFillType::kEvenOdd);
2094     path.moveTo(0, 0);
2095     path.lineTo(3, 0);
2096     path.lineTo(3, 3);
2097     path.close();
2098     path.moveTo(3, 0);
2099     path.lineTo(6, 0);
2100     path.lineTo(4, 2);
2101     path.close();
2102     path.moveTo(4, 2);
2103     path.lineTo(6, 6);
2104     path.lineTo(0, 6);
2105     path.close();
2106     testSimplify(reporter, path, filename);
2107 }
2108 
testFauxQuadralateral6c(skiatest::Reporter * reporter,const char * filename)2109 static void testFauxQuadralateral6c(skiatest::Reporter* reporter, const char* filename) {
2110     SkPath path;
2111     path.moveTo(0, 0);
2112     path.lineTo(3, 3);
2113     path.lineTo(3, 0);
2114     path.close();
2115     path.moveTo(3, 0);
2116     path.lineTo(6, 0);
2117     path.lineTo(4, 2);
2118     path.close();
2119     path.moveTo(4, 2);
2120     path.lineTo(0, 6);
2121     path.lineTo(6, 6);
2122     path.close();
2123     testSimplify(reporter, path, filename);
2124 }
2125 
testFauxQuadralateral6cx(skiatest::Reporter * reporter,const char * filename)2126 static void testFauxQuadralateral6cx(skiatest::Reporter* reporter, const char* filename) {
2127     SkPath path;
2128     path.setFillType(SkPathFillType::kEvenOdd);
2129     path.moveTo(0, 0);
2130     path.lineTo(3, 3);
2131     path.lineTo(3, 0);
2132     path.close();
2133     path.moveTo(3, 0);
2134     path.lineTo(6, 0);
2135     path.lineTo(4, 2);
2136     path.close();
2137     path.moveTo(4, 2);
2138     path.lineTo(0, 6);
2139     path.lineTo(6, 6);
2140     path.close();
2141     testSimplify(reporter, path, filename);
2142 }
2143 
testFauxQuadralateral6d(skiatest::Reporter * reporter,const char * filename)2144 static void testFauxQuadralateral6d(skiatest::Reporter* reporter, const char* filename) {
2145     SkPath path;
2146     path.moveTo(0, 0);
2147     path.lineTo(3, 3);
2148     path.lineTo(3, 0);
2149     path.close();
2150     path.moveTo(3, 0);
2151     path.lineTo(6, 0);
2152     path.lineTo(4, 2);
2153     path.close();
2154     path.moveTo(4, 2);
2155     path.lineTo(6, 6);
2156     path.lineTo(0, 6);
2157     path.close();
2158     testSimplify(reporter, path, filename);
2159 }
2160 
testFauxQuadralateral6dx(skiatest::Reporter * reporter,const char * filename)2161 static void testFauxQuadralateral6dx(skiatest::Reporter* reporter, const char* filename) {
2162     SkPath path;
2163     path.setFillType(SkPathFillType::kEvenOdd);
2164     path.moveTo(0, 0);
2165     path.lineTo(3, 3);
2166     path.lineTo(3, 0);
2167     path.close();
2168     path.moveTo(3, 0);
2169     path.lineTo(6, 0);
2170     path.lineTo(4, 2);
2171     path.close();
2172     path.moveTo(4, 2);
2173     path.lineTo(6, 6);
2174     path.lineTo(0, 6);
2175     path.close();
2176     testSimplify(reporter, path, filename);
2177 }
2178 
testQuadralateral6a(skiatest::Reporter * reporter,const char * filename)2179 static void testQuadralateral6a(skiatest::Reporter* reporter, const char* filename) {
2180     SkPath path;
2181     path.moveTo(0, 0);
2182     path.lineTo(0, 0);
2183     path.lineTo(3, 0);
2184     path.lineTo(3, 3);
2185     path.close();
2186     path.moveTo(3, 0);
2187     path.lineTo(6, 0);
2188     path.lineTo(0, 6);
2189     path.lineTo(6, 6);
2190     path.close();
2191     testSimplify(reporter, path, filename);
2192 }
2193 
testQuadralateral6ax(skiatest::Reporter * reporter,const char * filename)2194 static void testQuadralateral6ax(skiatest::Reporter* reporter, const char* filename) {
2195     SkPath path;
2196     path.setFillType(SkPathFillType::kEvenOdd);
2197     path.moveTo(0, 0);
2198     path.lineTo(0, 0);
2199     path.lineTo(3, 0);
2200     path.lineTo(3, 3);
2201     path.close();
2202     path.moveTo(3, 0);
2203     path.lineTo(6, 0);
2204     path.lineTo(0, 6);
2205     path.lineTo(6, 6);
2206     path.close();
2207     testSimplify(reporter, path, filename);
2208 }
2209 
testQuadralateral7(skiatest::Reporter * reporter,const char * filename)2210 static void testQuadralateral7(skiatest::Reporter* reporter, const char* filename) {
2211     SkPath path;
2212     path.moveTo(0, 0);
2213     path.lineTo(0, 0);
2214     path.lineTo(1, 0);
2215     path.lineTo(2, 1);
2216     path.close();
2217     path.moveTo(1, 0);
2218     path.lineTo(1, 1);
2219     path.lineTo(2, 2);
2220     path.lineTo(1, 3);
2221     path.close();
2222     testSimplify(reporter, path, filename);
2223 }
2224 
testQuadralateral7x(skiatest::Reporter * reporter,const char * filename)2225 static void testQuadralateral7x(skiatest::Reporter* reporter, const char* filename) {
2226     SkPath path;
2227     path.setFillType(SkPathFillType::kEvenOdd);
2228     path.moveTo(0, 0);
2229     path.lineTo(0, 0);
2230     path.lineTo(1, 0);
2231     path.lineTo(2, 1);
2232     path.close();
2233     path.moveTo(1, 0);
2234     path.lineTo(1, 1);
2235     path.lineTo(2, 2);
2236     path.lineTo(1, 3);
2237     path.close();
2238     testSimplify(reporter, path, filename);
2239 }
2240 
testQuadralateral8(skiatest::Reporter * reporter,const char * filename)2241 static void testQuadralateral8(skiatest::Reporter* reporter, const char* filename) {
2242     SkPath path;
2243     path.moveTo(0, 0);
2244     path.lineTo(3, 1);
2245     path.lineTo(1, 3);
2246     path.lineTo(3, 3);
2247     path.close();
2248     path.moveTo(2, 1);
2249     path.lineTo(0, 2);
2250     path.lineTo(3, 2);
2251     path.lineTo(2, 3);
2252     path.close();
2253     testSimplify(reporter, path, filename);
2254 }
2255 
testQuadralateral8x(skiatest::Reporter * reporter,const char * filename)2256 static void testQuadralateral8x(skiatest::Reporter* reporter, const char* filename) {
2257     SkPath path;
2258     path.setFillType(SkPathFillType::kEvenOdd);
2259     path.moveTo(0, 0);
2260     path.lineTo(3, 1);
2261     path.lineTo(1, 3);
2262     path.lineTo(3, 3);
2263     path.close();
2264     path.moveTo(2, 1);
2265     path.lineTo(0, 2);
2266     path.lineTo(3, 2);
2267     path.lineTo(2, 3);
2268     path.close();
2269     testSimplify(reporter, path, filename);
2270 }
2271 
testQuadralateral9(skiatest::Reporter * reporter,const char * filename)2272 static void testQuadralateral9(skiatest::Reporter* reporter, const char* filename) {
2273     SkPath path;
2274     path.moveTo(0, 0);
2275     path.lineTo(1, 0);
2276     path.lineTo(1, 2);
2277     path.lineTo(2, 2);
2278     path.close();
2279     path.moveTo(1, 1);
2280     path.lineTo(2, 1);
2281     path.lineTo(1, 3);
2282     path.lineTo(2, 3);
2283     path.close();
2284     testSimplify(reporter, path, filename);
2285 }
2286 
testQuadralateral9x(skiatest::Reporter * reporter,const char * filename)2287 static void testQuadralateral9x(skiatest::Reporter* reporter, const char* filename) {
2288     SkPath path;
2289     path.setFillType(SkPathFillType::kEvenOdd);
2290     path.moveTo(0, 0);
2291     path.lineTo(1, 0);
2292     path.lineTo(1, 2);
2293     path.lineTo(2, 2);
2294     path.close();
2295     path.moveTo(1, 1);
2296     path.lineTo(2, 1);
2297     path.lineTo(1, 3);
2298     path.lineTo(2, 3);
2299     path.close();
2300     testSimplify(reporter, path, filename);
2301 }
2302 
testLine1a(skiatest::Reporter * reporter,const char * filename)2303 static void testLine1a(skiatest::Reporter* reporter, const char* filename) {
2304     SkPath path;
2305     path.setFillType(SkPathFillType::kWinding);
2306     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
2307     path.addRect(4, 0, 13, 13, SkPathDirection::kCCW);
2308     testSimplify(reporter, path, filename);
2309 }
2310 
testLine1ax(skiatest::Reporter * reporter,const char * filename)2311 static void testLine1ax(skiatest::Reporter* reporter, const char* filename) {
2312     SkPath path;
2313     path.setFillType(SkPathFillType::kEvenOdd);
2314     path.addRect(0, 0, 12, 12, SkPathDirection::kCW);
2315     path.addRect(4, 0, 13, 13, SkPathDirection::kCCW);
2316     testSimplify(reporter, path, filename);
2317 }
2318 
testLine2ax(skiatest::Reporter * reporter,const char * filename)2319 static void testLine2ax(skiatest::Reporter* reporter, const char* filename) {
2320     SkPath path;
2321     path.setFillType(SkPathFillType::kEvenOdd);
2322     path.addRect(0, 20, 20, 20, SkPathDirection::kCW);
2323     path.addRect(0, 20, 12, 30, SkPathDirection::kCW);
2324     path.addRect(12, 0, 21, 21, SkPathDirection::kCCW);
2325     testSimplify(reporter, path, filename);
2326 }
2327 
testLine3aax(skiatest::Reporter * reporter,const char * filename)2328 static void testLine3aax(skiatest::Reporter* reporter, const char* filename) {
2329     SkPath path;
2330     path.setFillType(SkPathFillType::kEvenOdd);
2331     path.addRect(10, 30, 30, 30, SkPathDirection::kCW);
2332     path.addRect(18, 20, 30, 30, SkPathDirection::kCCW);
2333     path.addRect(0, 32, 9, 36, SkPathDirection::kCCW);
2334     testSimplify(reporter, path, filename);
2335 }
2336 
testLine4ax(skiatest::Reporter * reporter,const char * filename)2337 static void testLine4ax(skiatest::Reporter* reporter, const char* filename) {
2338     SkPath path;
2339     path.setFillType(SkPathFillType::kEvenOdd);
2340     path.addRect(10, 30, 30, 30, SkPathDirection::kCW);
2341     path.addRect(24, 20, 36, 30, SkPathDirection::kCCW);
2342     path.addRect(0, 32, 9, 36, SkPathDirection::kCCW);
2343     testSimplify(reporter, path, filename);
2344 }
2345 
testQuadratic1(skiatest::Reporter * reporter,const char * filename)2346 static void testQuadratic1(skiatest::Reporter* reporter, const char* filename) {
2347     SkPath path;
2348     path.moveTo(0, 0);
2349     path.quadTo(0, 0, 0, 0);
2350     path.lineTo(1, 0);
2351     path.close();
2352     path.moveTo(0, 0);
2353     path.lineTo(0, 0);
2354     path.quadTo(0, 0, 0, 0);
2355     path.close();
2356     testSimplify(reporter, path, filename);
2357 }
2358 
testQuadratic1x(skiatest::Reporter * reporter,const char * filename)2359 static void testQuadratic1x(skiatest::Reporter* reporter, const char* filename) {
2360     SkPath path;
2361     path.setFillType(SkPathFillType::kEvenOdd);
2362     path.moveTo(0, 0);
2363     path.quadTo(0, 0, 0, 0);
2364     path.lineTo(1, 0);
2365     path.close();
2366     path.moveTo(0, 0);
2367     path.lineTo(0, 0);
2368     path.quadTo(0, 0, 0, 0);
2369     path.close();
2370     testSimplify(reporter, path, filename);
2371 }
2372 
testQuadratic2(skiatest::Reporter * reporter,const char * filename)2373 static void testQuadratic2(skiatest::Reporter* reporter, const char* filename) {
2374     SkPath path;
2375     path.moveTo(0, 0);
2376     path.quadTo(0, 0, 0, 0);
2377     path.lineTo(3, 0);
2378     path.close();
2379     path.moveTo(0, 0);
2380     path.lineTo(0, 0);
2381     path.quadTo(1, 0, 0, 1);
2382     path.close();
2383     testSimplify(reporter, path, filename);
2384 }
2385 
testQuadratic2x(skiatest::Reporter * reporter,const char * filename)2386 static void testQuadratic2x(skiatest::Reporter* reporter, const char* filename) {
2387     SkPath path;
2388     path.setFillType(SkPathFillType::kEvenOdd);
2389     path.moveTo(0, 0);
2390     path.quadTo(0, 0, 0, 0);
2391     path.lineTo(3, 0);
2392     path.close();
2393     path.moveTo(0, 0);
2394     path.lineTo(0, 0);
2395     path.quadTo(1, 0, 0, 1);
2396     path.close();
2397     testSimplify(reporter, path, filename);
2398 }
2399 
testQuadratic3(skiatest::Reporter * reporter,const char * filename)2400 static void testQuadratic3(skiatest::Reporter* reporter, const char* filename) {
2401     SkPath path;
2402     path.moveTo(0, 0);
2403     path.quadTo(0, 0, 1, 0);
2404     path.lineTo(0, 2);
2405     path.close();
2406     path.moveTo(0, 0);
2407     path.lineTo(0, 0);
2408     path.quadTo(1, 0, 0, 1);
2409     path.close();
2410     testSimplify(reporter, path, filename);
2411 }
2412 
testQuadratic3x(skiatest::Reporter * reporter,const char * filename)2413 static void testQuadratic3x(skiatest::Reporter* reporter, const char* filename) {
2414     SkPath path;
2415     path.setFillType(SkPathFillType::kEvenOdd);
2416     path.moveTo(0, 0);
2417     path.quadTo(0, 0, 1, 0);
2418     path.lineTo(0, 2);
2419     path.close();
2420     path.moveTo(0, 0);
2421     path.lineTo(0, 0);
2422     path.quadTo(1, 0, 0, 1);
2423     path.close();
2424     testSimplify(reporter, path, filename);
2425 }
2426 
testQuadratic4(skiatest::Reporter * reporter,const char * filename)2427 static void testQuadratic4(skiatest::Reporter* reporter, const char* filename) {
2428     SkPath path;
2429     path.moveTo(0, 0);
2430     path.quadTo(0, 0, 1, 0);
2431     path.lineTo(0, 2);
2432     path.close();
2433     path.moveTo(0, 0);
2434     path.lineTo(0, 0);
2435     path.quadTo(1, 0, 0, 2);
2436     path.close();
2437     testSimplify(reporter, path, filename);
2438 }
2439 
testQuadratic4x(skiatest::Reporter * reporter,const char * filename)2440 static void testQuadratic4x(skiatest::Reporter* reporter, const char* filename) {
2441     SkPath path;
2442     path.setFillType(SkPathFillType::kEvenOdd);
2443     path.moveTo(0, 0);
2444     path.quadTo(0, 0, 1, 0);
2445     path.lineTo(0, 2);
2446     path.close();
2447     path.moveTo(0, 0);
2448     path.lineTo(0, 0);
2449     path.quadTo(1, 0, 0, 2);
2450     path.close();
2451     testSimplify(reporter, path, filename);
2452 }
2453 
testQuadratic5(skiatest::Reporter * reporter,const char * filename)2454 static void testQuadratic5(skiatest::Reporter* reporter, const char* filename) {
2455     SkPath path;
2456     path.moveTo(0, 0);
2457     path.quadTo(0, 0, 0, 0);
2458     path.lineTo(0, 1);
2459     path.close();
2460     path.moveTo(0, 0);
2461     path.lineTo(1, 0);
2462     path.quadTo(0, 1, 0, 2);
2463     path.close();
2464     testSimplify(reporter, path, filename);
2465 }
2466 
testQuadratic6(skiatest::Reporter * reporter,const char * filename)2467 static void testQuadratic6(skiatest::Reporter* reporter, const char* filename) {
2468     SkPath path;
2469     path.moveTo(0, 0);
2470     path.quadTo(0, 0, 1, 0);
2471     path.lineTo(2, 1);
2472     path.close();
2473     path.moveTo(0, 0);
2474     path.lineTo(0, 0);
2475     path.quadTo(2, 0, 0, 1);
2476     path.close();
2477     testSimplify(reporter, path, filename);
2478 }
2479 
testQuadratic7(skiatest::Reporter * reporter,const char * filename)2480 static void testQuadratic7(skiatest::Reporter* reporter, const char* filename) {
2481     SkPath path;
2482     path.moveTo(0, 0);
2483     path.quadTo(0, 0, 1, 0);
2484     path.lineTo(3, 1);
2485     path.close();
2486     path.moveTo(0, 0);
2487     path.lineTo(0, 0);
2488     path.quadTo(3, 0, 1, 2);
2489     path.close();
2490     markTestFlakyForPathKit();
2491     testSimplify(reporter, path, filename);
2492 }
2493 
testQuadratic8(skiatest::Reporter * reporter,const char * filename)2494 static void testQuadratic8(skiatest::Reporter* reporter, const char* filename) {
2495     SkPath path;
2496     path.moveTo(0, 0);
2497     path.quadTo(0, 0, 1, 0);
2498     path.lineTo(0, 2);
2499     path.close();
2500     path.moveTo(0, 0);
2501     path.lineTo(1, 0);
2502     path.quadTo(0, 1, 1, 2);
2503     path.close();
2504     testSimplify(reporter, path, filename);
2505 }
2506 
testQuadratic9(skiatest::Reporter * reporter,const char * filename)2507 static void testQuadratic9(skiatest::Reporter* reporter, const char* filename) {
2508     SkPath path;
2509     path.moveTo(0, 0);
2510     path.quadTo(0, 0, 1, 0);
2511     path.lineTo(3, 1);
2512     path.close();
2513     path.moveTo(0, 0);
2514     path.lineTo(1, 0);
2515     path.quadTo(1, 2, 3, 2);
2516     path.close();
2517     testSimplify(reporter, path, filename);
2518 }
2519 
testQuadratic14(skiatest::Reporter * reporter,const char * filename)2520 static void testQuadratic14(skiatest::Reporter* reporter, const char* filename) {
2521     SkPath path;
2522     path.moveTo(0, 0);
2523     path.quadTo(0, 0, 1, 0);
2524     path.lineTo(3, 2);
2525     path.close();
2526     path.moveTo(0, 0);
2527     path.lineTo(1, 0);
2528     path.quadTo(3, 2, 3, 3);
2529     path.close();
2530     testSimplify(reporter, path, filename);
2531 }
2532 
testQuadratic15(skiatest::Reporter * reporter,const char * filename)2533 static void testQuadratic15(skiatest::Reporter* reporter, const char* filename) {
2534     SkPath path;
2535     path.moveTo(0, 0);
2536     path.quadTo(0, 0, 1, 0);
2537     path.lineTo(1, 3);
2538     path.close();
2539     path.moveTo(1, 0);
2540     path.lineTo(0, 1);
2541     path.quadTo(1, 1, 0, 3);
2542     path.close();
2543     testSimplify(reporter, path, filename);
2544 }
2545 
testQuadratic17x(skiatest::Reporter * reporter,const char * filename)2546 static void testQuadratic17x(skiatest::Reporter* reporter, const char* filename) {
2547     SkPath path;
2548     path.setFillType(SkPathFillType::kEvenOdd);
2549     path.moveTo(0, 0);
2550     path.quadTo(0, 0, 3, 1);
2551     path.lineTo(0, 2);
2552     path.close();
2553     path.moveTo(0, 0);
2554     path.lineTo(1, 0);
2555     path.quadTo(3, 1, 0, 2);
2556     path.close();
2557     testSimplify(reporter, path, filename);
2558 }
2559 
testQuadratic18(skiatest::Reporter * reporter,const char * filename)2560 static void testQuadratic18(skiatest::Reporter* reporter, const char* filename) {
2561     SkPath path;
2562     path.moveTo(0, 0);
2563     path.quadTo(1, 0, 0, 1);
2564     path.lineTo(0, 1);
2565     path.close();
2566     path.moveTo(0, 0);
2567     path.lineTo(0, 0);
2568     path.quadTo(1, 0, 1, 1);
2569     path.close();
2570     testSimplify(reporter, path, filename);
2571 }
2572 
testQuadratic19(skiatest::Reporter * reporter,const char * filename)2573 static void testQuadratic19(skiatest::Reporter* reporter, const char* filename) {
2574     SkPath path;
2575     path.moveTo(0, 0);
2576     path.quadTo(1, 0, 0, 1);
2577     path.lineTo(0, 1);
2578     path.close();
2579     path.moveTo(0, 0);
2580     path.lineTo(0, 0);
2581     path.quadTo(2, 0, 0, 1);
2582     path.close();
2583     testSimplify(reporter, path, filename);
2584 }
2585 
testQuadratic20(skiatest::Reporter * reporter,const char * filename)2586 static void testQuadratic20(skiatest::Reporter* reporter, const char* filename) {
2587     SkPath path;
2588     path.moveTo(0, 0);
2589     path.quadTo(1, 0, 0, 1);
2590     path.lineTo(0, 1);
2591     path.close();
2592     path.moveTo(0, 0);
2593     path.lineTo(0, 0);
2594     path.quadTo(1, 0, 0, 1);
2595     path.close();
2596     testSimplify(reporter, path, filename);
2597 }
2598 
testQuadratic21(skiatest::Reporter * reporter,const char * filename)2599 static void testQuadratic21(skiatest::Reporter* reporter, const char* filename) {
2600     SkPath path;
2601     path.moveTo(0, 0);
2602     path.quadTo(1, 0, 0, 1);
2603     path.lineTo(0, 1);
2604     path.close();
2605     path.moveTo(0, 0);
2606     path.lineTo(0, 0);
2607     path.quadTo(1, 0, 0, 2);
2608     path.close();
2609     testSimplify(reporter, path, filename);
2610 }
2611 
testQuadratic22(skiatest::Reporter * reporter,const char * filename)2612 static void testQuadratic22(skiatest::Reporter* reporter, const char* filename) {
2613     SkPath path;
2614     path.moveTo(0, 0);
2615     path.quadTo(1, 0, 0, 1);
2616     path.lineTo(0, 1);
2617     path.close();
2618     path.moveTo(0, 0);
2619     path.lineTo(0, 0);
2620     path.quadTo(0, 1, 2, 1);
2621     path.close();
2622     testSimplify(reporter, path, filename);
2623 }
2624 
testQuadratic23(skiatest::Reporter * reporter,const char * filename)2625 static void testQuadratic23(skiatest::Reporter* reporter, const char* filename) {
2626     SkPath path;
2627     path.moveTo(0, 0);
2628     path.quadTo(1, 0, 0, 1);
2629     path.lineTo(0, 1);
2630     path.close();
2631     path.moveTo(0, 0);
2632     path.lineTo(0, 0);
2633     path.quadTo(0, 2, 1, 2);
2634     path.close();
2635     testSimplify(reporter, path, filename);
2636 }
2637 
testQuadratic24(skiatest::Reporter * reporter,const char * filename)2638 static void testQuadratic24(skiatest::Reporter* reporter, const char* filename) {
2639     SkPath path;
2640     path.moveTo(0, 0);
2641     path.quadTo(1, 0, 0, 1);
2642     path.lineTo(0, 1);
2643     path.close();
2644     path.moveTo(0, 0);
2645     path.lineTo(1, 0);
2646     path.quadTo(2, 0, 0, 1);
2647     path.close();
2648     testSimplify(reporter, path, filename);
2649 }
2650 
testQuadratic25(skiatest::Reporter * reporter,const char * filename)2651 static void testQuadratic25(skiatest::Reporter* reporter, const char* filename) {
2652     SkPath path;
2653     path.moveTo(0, 0);
2654     path.quadTo(1, 0, 1, 1);
2655     path.lineTo(1, 1);
2656     path.close();
2657     path.moveTo(0, 0);
2658     path.lineTo(0, 0);
2659     path.quadTo(2, 1, 0, 2);
2660     path.close();
2661     testSimplify(reporter, path, filename);
2662 }
2663 
testQuadratic26(skiatest::Reporter * reporter,const char * filename)2664 static void testQuadratic26(skiatest::Reporter* reporter, const char* filename) {
2665     SkPath path;
2666     path.moveTo(0, 0);
2667     path.quadTo(1, 0, 1, 1);
2668     path.lineTo(0, 2);
2669     path.close();
2670     path.moveTo(0, 0);
2671     path.lineTo(0, 0);
2672     path.quadTo(1, 0, 0, 1);
2673     path.close();
2674     testSimplify(reporter, path, filename);
2675 }
2676 
testQuadratic27(skiatest::Reporter * reporter,const char * filename)2677 static void testQuadratic27(skiatest::Reporter* reporter, const char* filename) {
2678     SkPath path;
2679     path.moveTo(0, 0);
2680     path.quadTo(1, 0, 1, 1);
2681     path.lineTo(2, 1);
2682     path.close();
2683     path.moveTo(0, 0);
2684     path.lineTo(0, 0);
2685     path.quadTo(2, 1, 0, 2);
2686     path.close();
2687     testSimplify(reporter, path, filename);
2688 }
2689 
testQuadratic28(skiatest::Reporter * reporter,const char * filename)2690 static void testQuadratic28(skiatest::Reporter* reporter, const char* filename) {
2691     SkPath path;
2692     path.moveTo(0, 0);
2693     path.quadTo(1, 0, 0, 1);
2694     path.lineTo(0, 1);
2695     path.close();
2696     path.moveTo(0, 0);
2697     path.lineTo(0, 2);
2698     path.quadTo(1, 2, 0, 3);
2699     path.close();
2700     testSimplify(reporter, path, filename);
2701 }
2702 
testQuadratic29(skiatest::Reporter * reporter,const char * filename)2703 static void testQuadratic29(skiatest::Reporter* reporter, const char* filename) {
2704     SkPath path;
2705     path.moveTo(0, 0);
2706     path.quadTo(1, 0, 2, 1);
2707     path.lineTo(0, 2);
2708     path.close();
2709     path.moveTo(0, 0);
2710     path.lineTo(0, 0);
2711     path.quadTo(1, 0, 0, 1);
2712     path.close();
2713     testSimplify(reporter, path, filename);
2714 }
2715 
testQuadratic30(skiatest::Reporter * reporter,const char * filename)2716 static void testQuadratic30(skiatest::Reporter* reporter, const char* filename) {
2717     SkPath path;
2718     path.moveTo(0, 0);
2719     path.quadTo(1, 0, 1, 2);
2720     path.lineTo(1, 2);
2721     path.close();
2722     path.moveTo(0, 0);
2723     path.lineTo(1, 0);
2724     path.quadTo(0, 1, 1, 2);
2725     path.close();
2726     testSimplify(reporter, path, filename);
2727 }
2728 
testQuadratic31(skiatest::Reporter * reporter,const char * filename)2729 static void testQuadratic31(skiatest::Reporter* reporter, const char* filename) {
2730     SkPath path;
2731     path.moveTo(0, 0);
2732     path.quadTo(1, 0, 1, 2);
2733     path.lineTo(1, 2);
2734     path.close();
2735     path.moveTo(0, 0);
2736     path.lineTo(1, 0);
2737     path.quadTo(0, 1, 1, 3);
2738     path.close();
2739     testSimplify(reporter, path, filename);
2740 }
2741 
testQuadratic32(skiatest::Reporter * reporter,const char * filename)2742 static void testQuadratic32(skiatest::Reporter* reporter, const char* filename) {
2743     SkPath path;
2744     path.moveTo(0, 0);
2745     path.quadTo(1, 0, 2, 3);
2746     path.lineTo(2, 3);
2747     path.close();
2748     path.moveTo(0, 0);
2749     path.lineTo(0, 0);
2750     path.quadTo(3, 1, 0, 2);
2751     path.close();
2752     testSimplify(reporter, path, filename);
2753 }
2754 
testQuadratic33(skiatest::Reporter * reporter,const char * filename)2755 static void testQuadratic33(skiatest::Reporter* reporter, const char* filename) {
2756     SkPath path;
2757     path.moveTo(0, 0);
2758     path.quadTo(2, 0, 0, 1);
2759     path.lineTo(0, 1);
2760     path.close();
2761     path.moveTo(0, 0);
2762     path.lineTo(1, 1);
2763     path.quadTo(2, 1, 2, 2);
2764     path.close();
2765     testSimplify(reporter, path, filename);
2766 }
2767 
testQuadratic34(skiatest::Reporter * reporter,const char * filename)2768 static void testQuadratic34(skiatest::Reporter* reporter, const char* filename) {
2769     SkPath path;
2770     path.moveTo(0, 0);
2771     path.quadTo(2, 0, 0, 1);
2772     path.lineTo(0, 1);
2773     path.close();
2774     path.moveTo(1, 0);
2775     path.lineTo(1, 1);
2776     path.quadTo(2, 1, 1, 2);
2777     path.close();
2778     markTestFlakyForPathKit();
2779     testSimplify(reporter, path, filename);
2780 }
2781 
testQuadratic35(skiatest::Reporter * reporter,const char * filename)2782 static void testQuadratic35(skiatest::Reporter* reporter, const char* filename) {
2783     SkPath path;
2784     path.moveTo(0, 0);
2785     path.quadTo(0, 1, 1, 1);
2786     path.lineTo(1, 3);
2787     path.close();
2788     path.moveTo(2, 0);
2789     path.lineTo(3, 0);
2790     path.quadTo(0, 1, 1, 1);
2791     path.close();
2792     testSimplify(reporter, path, filename);
2793 }
2794 
testQuadratic36(skiatest::Reporter * reporter,const char * filename)2795 static void testQuadratic36(skiatest::Reporter* reporter, const char* filename) {
2796     SkPath path;
2797     path.moveTo(0, 0);
2798     path.quadTo(2, 1, 2, 3);
2799     path.lineTo(2, 3);
2800     path.close();
2801     path.moveTo(3, 1);
2802     path.lineTo(1, 2);
2803     path.quadTo(3, 2, 1, 3);
2804     path.close();
2805     testSimplify(reporter, path, filename);
2806 }
2807 
testQuadratic37(skiatest::Reporter * reporter,const char * filename)2808 static void testQuadratic37(skiatest::Reporter* reporter, const char* filename) {
2809     SkPath path;
2810     path.moveTo(0, 0);
2811     path.quadTo(0, 2, 1, 2);
2812     path.lineTo(1, 2);
2813     path.close();
2814     path.moveTo(0, 0);
2815     path.lineTo(3, 1);
2816     path.quadTo(0, 2, 1, 2);
2817     path.close();
2818     testSimplify(reporter, path, filename);
2819 }
2820 
testQuadratic38(skiatest::Reporter * reporter,const char * filename)2821 static void testQuadratic38(skiatest::Reporter* reporter, const char* filename) {
2822     SkPath path;
2823     path.moveTo(1, 0);
2824     path.quadTo(0, 1, 1, 1);
2825     path.lineTo(1, 1);
2826     path.close();
2827     path.moveTo(1, 0);
2828     path.lineTo(1, 2);
2829     path.quadTo(2, 2, 1, 3);
2830     path.close();
2831     testSimplify(reporter, path, filename);
2832 }
2833 
testQuadratic51(skiatest::Reporter * reporter,const char * filename)2834 static void testQuadratic51(skiatest::Reporter* reporter, const char* filename) {
2835     SkPath path;
2836     path.moveTo(369.863983f, 145.645813f);
2837     path.quadTo(382.380371f, 121.254936f, 406.236359f, 121.254936f);
2838     path.lineTo(369.863983f, 145.645813f);
2839     path.close();
2840     path.moveTo(369.970581f, 137.94342f);
2841     path.quadTo(383.98465f, 121.254936f, 406.235992f, 121.254936f);
2842     path.lineTo(369.970581f, 137.94342f);
2843     path.close();
2844     testSimplify(reporter, path, filename);
2845 }
2846 
testQuadratic53(skiatest::Reporter * reporter,const char * filename)2847 static void testQuadratic53(skiatest::Reporter* reporter, const char* filename) {
2848     SkPath path;
2849     path.moveTo(303.12088f, 141.299606f);
2850     path.lineTo(330.463562f, 217.659027f);
2851     path.lineTo(303.12088f, 141.299606f);
2852     path.close();
2853     path.moveTo(371.919067f, 205.854996f);
2854     path.lineTo(326.236786f, 205.854996f);
2855     path.quadTo(329.104431f, 231.663818f, 351.512085f, 231.663818f);
2856     path.lineTo(371.919067f, 205.854996f);
2857     path.close();
2858     testSimplify(reporter, path, filename);
2859 }
2860 
testQuadratic55(skiatest::Reporter * reporter,const char * filename)2861 static void testQuadratic55(skiatest::Reporter* reporter, const char* filename) {
2862     SkPath path;
2863 path.moveTo(303.12088f, 141.299606f);
2864 path.lineTo(330.463562f, 217.659027f);
2865 path.lineTo(358.606506f, 141.299606f);
2866 path.lineTo(303.12088f, 141.299606f);
2867 path.close();
2868 path.moveTo(326.236786f, 205.854996f);
2869 path.quadTo(329.104431f, 231.663818f, 351.512085f, 231.663818f);
2870 path.lineTo(326.236786f, 205.854996f);
2871 path.close();
2872     testSimplify(reporter, path, filename);
2873 }
2874 
testQuadratic56(skiatest::Reporter * reporter,const char * filename)2875 static void testQuadratic56(skiatest::Reporter* reporter, const char* filename) {
2876     SkPath path;
2877 path.moveTo(366.608826f, 151.196014f);
2878 path.quadTo(378.803101f, 136.674606f, 398.164948f, 136.674606f);
2879 path.lineTo(354.009216f, 208.816208f);
2880 path.lineTo(393.291473f, 102.232819f);
2881 path.lineTo(359.978058f, 136.581512f);
2882 path.quadTo(378.315979f, 136.581512f, 388.322723f, 149.613556f);
2883 path.lineTo(364.390686f, 157.898193f);
2884 path.quadTo(375.281769f, 136.674606f, 396.039917f, 136.674606f);
2885 path.lineTo(350, 120);
2886 path.lineTo(366.608826f, 151.196014f);
2887 path.close();
2888     testSimplify(reporter, path, filename);
2889 }
2890 
testLine80(skiatest::Reporter * reporter,const char * filename)2891 static void testLine80(skiatest::Reporter* reporter, const char* filename) {
2892     SkPath path;
2893 path.moveTo(4, 0);
2894 path.lineTo(3, 7);
2895 path.lineTo(7, 5);
2896 path.lineTo(2, 2);
2897 path.close();
2898 path.moveTo(0, 6);
2899 path.lineTo(6, 12);
2900 path.lineTo(8, 3);
2901 path.close();
2902     testSimplify(reporter, path, filename);
2903 }
2904 
testQuadratic58(skiatest::Reporter * reporter,const char * filename)2905 static void testQuadratic58(skiatest::Reporter* reporter, const char* filename) {
2906     SkPath path;
2907     path.moveTo(283.714233f, 240);
2908     path.lineTo(283.714233f, 141.299606f);
2909     path.lineTo(303.12088f, 141.299606f);
2910     path.lineTo(330.463562f, 217.659027f);
2911     path.lineTo(358.606506f, 141.299606f);
2912     path.lineTo(362.874634f, 159.705902f);
2913     path.lineTo(335.665344f, 233.397751f);
2914     path.lineTo(322.12738f, 233.397751f);
2915     path.lineTo(295.718353f, 159.505829f);
2916     path.lineTo(295.718353f, 240);
2917     path.lineTo(283.714233f, 240);
2918     path.close();
2919     path.moveTo(322.935669f, 231.030273f);
2920     path.quadTo(312.832214f, 220.393295f, 312.832214f, 203.454178f);
2921     path.quadTo(312.832214f, 186.981888f, 321.73526f, 176.444946f);
2922     path.quadTo(330.638306f, 165.90802f, 344.509705f, 165.90802f);
2923     path.quadTo(357.647522f, 165.90802f, 364.81665f, 175.244537f);
2924     path.lineTo(371.919067f, 205.854996f);
2925     path.lineTo(326.236786f, 205.854996f);
2926     path.quadTo(329.104431f, 231.663818f, 351.512085f, 231.663818f);
2927     path.lineTo(322.935669f, 231.030273f);
2928     path.close();
2929     path.moveTo(326.837006f, 195.984955f);
2930     path.lineTo(358.78125f, 195.984955f);
2931     path.quadTo(358.78125f, 175.778046f, 343.709442f, 175.778046f);
2932     path.quadTo(328.570923f, 175.778046f, 326.837006f, 195.984955f);
2933     path.close();
2934     testSimplify(reporter, path, filename);
2935 }
2936 
testQuadratic59x(skiatest::Reporter * reporter,const char * filename)2937 static void testQuadratic59x(skiatest::Reporter* reporter, const char* filename) {
2938     SkPath path;
2939     path.setFillType(SkPathFillType::kEvenOdd);
2940     path.moveTo(0, 0);
2941     path.quadTo(0, 0, 0, 0);
2942     path.lineTo(2, 2);
2943     path.close();
2944     path.moveTo(0, 0);
2945     path.lineTo(2, 0);
2946     path.quadTo(3, 1, 1, 2);
2947     path.close();
2948     testSimplify(reporter, path, filename);
2949 }
2950 
testQuadratic59(skiatest::Reporter * reporter,const char * filename)2951 static void testQuadratic59(skiatest::Reporter* reporter, const char* filename) {
2952     SkPath path;
2953     path.setFillType(SkPathFillType::kWinding);
2954     path.moveTo(0, 0);
2955     path.quadTo(0, 0, 0, 0);
2956     path.lineTo(2, 2);
2957     path.close();
2958     path.moveTo(0, 0);
2959     path.lineTo(2, 0);
2960     path.quadTo(3, 1, 1, 2);
2961     path.close();
2962     testSimplify(reporter, path, filename);
2963 }
2964 
testQuadratic63(skiatest::Reporter * reporter,const char * filename)2965 static void testQuadratic63(skiatest::Reporter* reporter, const char* filename) {
2966     SkPath path;
2967     path.moveTo(0, 0);
2968     path.quadTo(0, 0, 0, 0);
2969     path.lineTo(3, 2);
2970     path.close();
2971     path.moveTo(1, 0);
2972     path.lineTo(2, 1);
2973     path.quadTo(2, 1, 2, 2);
2974     path.close();
2975     testSimplify(reporter, path, filename);
2976 }
2977 
testQuadratic64(skiatest::Reporter * reporter,const char * filename)2978 static void testQuadratic64(skiatest::Reporter* reporter, const char* filename) {
2979     SkPath path;
2980     path.moveTo(0, 0);
2981     path.quadTo(0, 0, 0, 0);
2982     path.lineTo(2, 3);
2983     path.close();
2984     path.moveTo(1, 2);
2985     path.lineTo(2, 2);
2986     path.quadTo(0, 3, 3, 3);
2987     path.close();
2988     testSimplify(reporter, path, filename);
2989 }
2990 
testQuadratic65(skiatest::Reporter * reporter,const char * filename)2991 static void testQuadratic65(skiatest::Reporter* reporter, const char* filename) {
2992     SkPath path;
2993     path.moveTo(0, 0);
2994     path.quadTo(0, 0, 0, 0);
2995     path.lineTo(3, 2);
2996     path.close();
2997     path.moveTo(2, 1);
2998     path.lineTo(2, 2);
2999     path.quadTo(0, 3, 1, 3);
3000     path.close();
3001     testSimplify(reporter, path, filename);
3002 }
3003 
testQuadratic67x(skiatest::Reporter * reporter,const char * filename)3004 static void testQuadratic67x(skiatest::Reporter* reporter, const char* filename) {
3005     SkPath path;
3006     path.setFillType(SkPathFillType::kEvenOdd);
3007     path.moveTo(0, 0);
3008     path.quadTo(0, 0, 2, 1);
3009     path.lineTo(2, 2);
3010     path.close();
3011     path.moveTo(0, 0);
3012     path.lineTo(2, 0);
3013     path.quadTo(1, 1, 3, 2);
3014     path.close();
3015     testSimplify(reporter, path, filename);
3016 }
3017 
testQuadratic68(skiatest::Reporter * reporter,const char * filename)3018 static void testQuadratic68(skiatest::Reporter* reporter, const char* filename) {
3019     SkPath path;
3020     path.moveTo(0, 0);
3021     path.quadTo(1, 0, 0, 1);
3022     path.lineTo(1, 2);
3023     path.close();
3024     path.moveTo(0, 0);
3025     path.lineTo(0, 0);
3026     path.quadTo(0, 1, 2, 1);
3027     path.close();
3028     testSimplify(reporter, path, filename);
3029 }
3030 
testQuadratic69(skiatest::Reporter * reporter,const char * filename)3031 static void testQuadratic69(skiatest::Reporter* reporter, const char* filename) {
3032     SkPath path;
3033     path.moveTo(0, 0);
3034     path.quadTo(0, 0, 0, 1);
3035     path.lineTo(3, 2);
3036     path.close();
3037     path.moveTo(2, 0);
3038     path.lineTo(1, 1);
3039     path.quadTo(3, 2, 2, 3);
3040     path.close();
3041     markTestFlakyForPathKit();
3042     testSimplify(reporter, path, filename);
3043 }
3044 
testQuadratic70x(skiatest::Reporter * reporter,const char * filename)3045 static void testQuadratic70x(skiatest::Reporter* reporter, const char* filename) {
3046     SkPath path;
3047     path.setFillType(SkPathFillType::kEvenOdd);
3048     path.moveTo(0, 0);
3049     path.quadTo(1, 0, 0, 1);
3050     path.lineTo(1, 2);
3051     path.close();
3052     path.moveTo(0, 0);
3053     path.lineTo(0, 0);
3054     path.quadTo(0, 1, 2, 1);
3055     path.close();
3056     testSimplify(reporter, path, filename);
3057 }
3058 
testQuadratic71(skiatest::Reporter * reporter,const char * filename)3059 static void testQuadratic71(skiatest::Reporter* reporter, const char* filename) {
3060     SkPath path;
3061     path.moveTo(0, 0);
3062     path.quadTo(1, 0, 1, 1);
3063     path.lineTo(3, 2);
3064     path.close();
3065     path.moveTo(0, 0);
3066     path.lineTo(0, 0);
3067     path.quadTo(1, 1, 3, 1);
3068     path.close();
3069     testSimplify(reporter, path, filename);
3070 }
3071 
testQuadratic72(skiatest::Reporter * reporter,const char * filename)3072 static void testQuadratic72(skiatest::Reporter* reporter, const char* filename) {
3073     SkPath path;
3074     path.moveTo(0, 0);
3075     path.quadTo(1, 0, 1, 2);
3076     path.lineTo(1, 2);
3077     path.close();
3078     path.moveTo(0, 0);
3079     path.lineTo(1, 0);
3080     path.quadTo(0, 1, 3, 2);
3081     path.close();
3082     testSimplify(reporter, path, filename);
3083 }
3084 
testQuadratic73(skiatest::Reporter * reporter,const char * filename)3085 static void testQuadratic73(skiatest::Reporter* reporter, const char* filename) {
3086     SkPath path;
3087     path.moveTo(0, 0);
3088     path.quadTo(1, 0, 0, 3);
3089     path.lineTo(0, 3);
3090     path.close();
3091     path.moveTo(0, 0);
3092     path.lineTo(1, 0);
3093     path.quadTo(0, 1, 1, 1);
3094     path.close();
3095     testSimplify(reporter, path, filename);
3096 }
3097 
testQuadratic74(skiatest::Reporter * reporter,const char * filename)3098 static void testQuadratic74(skiatest::Reporter* reporter, const char* filename) {
3099     SkPath path;
3100     path.moveTo(0, 0);
3101     path.quadTo(1, 0, 1, 3);
3102     path.lineTo(1, 3);
3103     path.close();
3104     path.moveTo(0, 0);
3105     path.lineTo(0, 1);
3106     path.quadTo(3, 2, 2, 3);
3107     path.close();
3108     testSimplify(reporter, path, filename);
3109 }
3110 
testQuadratic75(skiatest::Reporter * reporter,const char * filename)3111 static void testQuadratic75(skiatest::Reporter* reporter, const char* filename) {
3112     SkPath path;
3113     path.moveTo(0, 0);
3114     path.quadTo(1, 0, 1, 3);
3115     path.lineTo(2, 3);
3116     path.close();
3117     path.moveTo(0, 0);
3118     path.lineTo(0, 1);
3119     path.quadTo(3, 2, 2, 3);
3120     path.close();
3121     testSimplify(reporter, path, filename);
3122 }
3123 
testQuadratic76(skiatest::Reporter * reporter,const char * filename)3124 static void testQuadratic76(skiatest::Reporter* reporter, const char* filename) {
3125     SkPath path;
3126     path.moveTo(0, 0);
3127     path.quadTo(0, 0, 0, 0);
3128     path.lineTo(2, 3);
3129     path.close();
3130     path.moveTo(1, 0);
3131     path.lineTo(1, 2);
3132     path.quadTo(1, 2, 2, 2);
3133     path.close();
3134     testSimplify(reporter, path, filename);
3135 }
3136 
testQuadratic77(skiatest::Reporter * reporter,const char * filename)3137 static void testQuadratic77(skiatest::Reporter* reporter, const char* filename) {
3138     SkPath path;
3139     path.moveTo(0, 0);
3140     path.quadTo(1, 0, 1, 1);
3141     path.lineTo(3, 1);
3142     path.close();
3143     path.moveTo(0, 0);
3144     path.lineTo(1, 0);
3145     path.quadTo(0, 1, 3, 2);
3146     path.close();
3147     testSimplify(reporter, path, filename);
3148 }
3149 
testQuadratic78(skiatest::Reporter * reporter,const char * filename)3150 static void testQuadratic78(skiatest::Reporter* reporter, const char* filename) {
3151     SkPath path;
3152     path.moveTo(0, 0);
3153     path.quadTo(1, 0, 1, 2);
3154     path.lineTo(3, 2);
3155     path.close();
3156     path.moveTo(0, 0);
3157     path.lineTo(0, 0);
3158     path.quadTo(2, 1, 0, 2);
3159     path.close();
3160     testSimplify(reporter, path, filename);
3161 }
3162 
testQuadratic79(skiatest::Reporter * reporter,const char * filename)3163 static void testQuadratic79(skiatest::Reporter* reporter, const char* filename) {
3164     SkPath path;
3165     path.moveTo(0, 0);
3166     path.quadTo(1, 0, 1, 2);
3167     path.lineTo(3, 2);
3168     path.close();
3169     path.moveTo(0, 0);
3170     path.lineTo(1, 0);
3171     path.quadTo(0, 1, 3, 2);
3172     path.close();
3173     testSimplify(reporter, path, filename);
3174 }
3175 
testEight1(skiatest::Reporter * reporter,const char * filename)3176 static void testEight1(skiatest::Reporter* reporter, const char* filename) {
3177     SkPath path;
3178     path.moveTo(0, 0);
3179     path.lineTo(2, 2);
3180     path.lineTo(0, 2);
3181     path.lineTo(2, 0);
3182     path.close();
3183     testSimplify(reporter, path, filename);
3184 }
3185 
testEight2(skiatest::Reporter * reporter,const char * filename)3186 static void testEight2(skiatest::Reporter* reporter, const char* filename) {
3187     SkPath path;
3188     path.moveTo(0, 0);
3189     path.lineTo(2, 0);
3190     path.lineTo(0, 2);
3191     path.lineTo(2, 2);
3192     path.close();
3193     testSimplify(reporter, path, filename);
3194 }
3195 
testEight3(skiatest::Reporter * reporter,const char * filename)3196 static void testEight3(skiatest::Reporter* reporter, const char* filename) {
3197     SkPath path;
3198     path.moveTo(0, 0);
3199     path.lineTo(0, 2);
3200     path.lineTo(2, 0);
3201     path.lineTo(2, 2);
3202     path.close();
3203     testSimplify(reporter, path, filename);
3204 }
3205 
testEight4(skiatest::Reporter * reporter,const char * filename)3206 static void testEight4(skiatest::Reporter* reporter, const char* filename) {
3207     SkPath path;
3208     path.moveTo(0, 0);
3209     path.lineTo(2, 2);
3210     path.lineTo(2, 0);
3211     path.lineTo(0, 2);
3212     path.close();
3213     testSimplify(reporter, path, filename);
3214 }
3215 
testEight5(skiatest::Reporter * reporter,const char * filename)3216 static void testEight5(skiatest::Reporter* reporter, const char* filename) {
3217     SkPath path;
3218     path.moveTo(1, 0);
3219     path.lineTo(1, 2);
3220     path.lineTo(0, 2);
3221     path.lineTo(2, 0);
3222     path.close();
3223     testSimplify(reporter, path, filename);
3224 }
3225 
testEight6(skiatest::Reporter * reporter,const char * filename)3226 static void testEight6(skiatest::Reporter* reporter, const char* filename) {
3227     SkPath path;
3228     path.moveTo(1, 0);
3229     path.lineTo(2, 0);
3230     path.lineTo(0, 2);
3231     path.lineTo(1, 2);
3232     path.close();
3233     testSimplify(reporter, path, filename);
3234 }
3235 
testEight7(skiatest::Reporter * reporter,const char * filename)3236 static void testEight7(skiatest::Reporter* reporter, const char* filename) {
3237     SkPath path;
3238     path.moveTo(0, 0);
3239     path.lineTo(0, 1);
3240     path.lineTo(2, 1);
3241     path.lineTo(2, 2);
3242     path.close();
3243     testSimplify(reporter, path, filename);
3244 }
3245 
testEight8(skiatest::Reporter * reporter,const char * filename)3246 static void testEight8(skiatest::Reporter* reporter, const char* filename) {
3247     SkPath path;
3248     path.moveTo(0, 0);
3249     path.lineTo(2, 2);
3250     path.lineTo(2, 1);
3251     path.lineTo(0, 1);
3252     path.close();
3253     testSimplify(reporter, path, filename);
3254 }
3255 
testEight9(skiatest::Reporter * reporter,const char * filename)3256 static void testEight9(skiatest::Reporter* reporter, const char* filename) {
3257     SkPath path;
3258     path.moveTo(1, 0);
3259     path.lineTo(1, 2);
3260     path.lineTo(2, 1);
3261     path.lineTo(0, 1);
3262     path.close();
3263     testSimplify(reporter, path, filename);
3264 }
3265 
testEight10(skiatest::Reporter * reporter,const char * filename)3266 static void testEight10(skiatest::Reporter* reporter, const char* filename) {
3267     SkPath path;
3268     path.moveTo(1, 0);
3269     path.lineTo(0, 1);
3270     path.lineTo(2, 1);
3271     path.lineTo(1, 2);
3272     path.close();
3273     testSimplify(reporter, path, filename);
3274 }
3275 
testQuadratic80(skiatest::Reporter * reporter,const char * filename)3276 static void testQuadratic80(skiatest::Reporter* reporter, const char* filename) {
3277     SkPath path;
3278     path.moveTo(0, 0);
3279     path.quadTo(1, 0, 2, 3);
3280     path.lineTo(2, 3);
3281     path.close();
3282     path.moveTo(1, 0);
3283     path.lineTo(3, 0);
3284     path.quadTo(0, 1, 1, 1);
3285     path.close();
3286     testSimplify(reporter, path, filename);
3287 }
3288 
testQuadratic81(skiatest::Reporter * reporter,const char * filename)3289 static void testQuadratic81(skiatest::Reporter* reporter, const char* filename) {
3290     SkPath path;
3291     path.moveTo(0, 0);
3292     path.quadTo(2, 0, 1, 1);
3293     path.lineTo(1, 1);
3294     path.close();
3295     path.moveTo(0, 0);
3296     path.lineTo(0, 0);
3297     path.quadTo(2, 1, 0, 2);
3298     path.close();
3299     testSimplify(reporter, path, filename);
3300 }
3301 
testQuadratic82(skiatest::Reporter * reporter,const char * filename)3302 static void testQuadratic82(skiatest::Reporter* reporter, const char* filename) {
3303     SkPath path;
3304     path.moveTo(0, 0);
3305     path.quadTo(2, 0, 1, 1);
3306     path.lineTo(0, 3);
3307     path.close();
3308     path.moveTo(0, 0);
3309     path.lineTo(0, 0);
3310     path.quadTo(2, 1, 0, 2);
3311     path.close();
3312     testSimplify(reporter, path, filename);
3313 }
3314 
testQuadratic83(skiatest::Reporter * reporter,const char * filename)3315 static void testQuadratic83(skiatest::Reporter* reporter, const char* filename) {
3316     SkPath path;
3317     path.moveTo(0, 0);
3318     path.quadTo(0, 0, 2, 0);
3319     path.lineTo(2, 2);
3320     path.close();
3321     path.moveTo(0, 1);
3322     path.lineTo(0, 2);
3323     path.quadTo(2, 2, 1, 3);
3324     path.close();
3325     testSimplify(reporter, path, filename);
3326 }
3327 
testQuadratic84(skiatest::Reporter * reporter,const char * filename)3328 static void testQuadratic84(skiatest::Reporter* reporter, const char* filename) {
3329     SkPath path;
3330     path.moveTo(0, 0);
3331     path.quadTo(2, 0, 1, 1);
3332     path.lineTo(2, 1);
3333     path.close();
3334     path.moveTo(1, 0);
3335     path.lineTo(2, 0);
3336     path.quadTo(0, 1, 2, 2);
3337     path.close();
3338     testSimplify(reporter, path, filename);
3339 }
3340 
testQuadratic85(skiatest::Reporter * reporter,const char * filename)3341 static void testQuadratic85(skiatest::Reporter* reporter, const char* filename) {
3342     SkPath path;
3343     path.moveTo(0, 0);
3344     path.quadTo(3, 0, 1, 1);
3345     path.lineTo(1, 1);
3346     path.close();
3347     path.moveTo(1, 0);
3348     path.lineTo(3, 0);
3349     path.quadTo(0, 1, 1, 2);
3350     path.close();
3351     testSimplify(reporter, path, filename);
3352 }
3353 
testQuadratic86(skiatest::Reporter * reporter,const char * filename)3354 static void testQuadratic86(skiatest::Reporter* reporter, const char* filename) {
3355     SkPath path;
3356     path.moveTo(0, 0);
3357     path.quadTo(0, 1, 1, 1);
3358     path.lineTo(2, 3);
3359     path.close();
3360     path.moveTo(0, 0);
3361     path.lineTo(0, 0);
3362     path.quadTo(1, 1, 1, 3);
3363     path.close();
3364     testSimplify(reporter, path, filename);
3365 }
3366 
testQuadratic87(skiatest::Reporter * reporter,const char * filename)3367 static void testQuadratic87(skiatest::Reporter* reporter, const char* filename) {
3368     SkPath path;
3369     path.moveTo(0, 0);
3370     path.quadTo(2, 1, 0, 2);
3371     path.lineTo(2, 3);
3372     path.close();
3373     path.moveTo(0, 0);
3374     path.lineTo(1, 1);
3375     path.quadTo(0, 2, 3, 2);
3376     path.close();
3377     testSimplify(reporter, path, filename);
3378 }
3379 
testQuadratic88(skiatest::Reporter * reporter,const char * filename)3380 static void testQuadratic88(skiatest::Reporter* reporter, const char* filename) {
3381     SkPath path;
3382     path.moveTo(0, 0);
3383     path.quadTo(2, 1, 0, 2);
3384     path.lineTo(2, 2);
3385     path.close();
3386     path.moveTo(1, 0);
3387     path.lineTo(1, 1);
3388     path.quadTo(0, 2, 2, 2);
3389     path.close();
3390     testSimplify(reporter, path, filename);
3391 }
3392 
testQuadratic89x(skiatest::Reporter * reporter,const char * filename)3393 static void testQuadratic89x(skiatest::Reporter* reporter, const char* filename) {
3394     SkPath path;
3395     path.setFillType(SkPathFillType::kEvenOdd);
3396     path.moveTo(0, 0);
3397     path.quadTo(3, 1, 2, 2);
3398     path.lineTo(0, 3);
3399     path.close();
3400     path.moveTo(0, 0);
3401     path.lineTo(2, 1);
3402     path.quadTo(3, 1, 3, 3);
3403     path.close();
3404     testSimplify(reporter, path, filename);
3405 }
3406 
testQuadratic90x(skiatest::Reporter * reporter,const char * filename)3407 static void testQuadratic90x(skiatest::Reporter* reporter, const char* filename) {
3408     SkPath path;
3409     path.setFillType(SkPathFillType::kEvenOdd);
3410     path.moveTo(0, 0);
3411     path.quadTo(3, 0, 2, 2);
3412     path.lineTo(1, 3);
3413     path.close();
3414     path.moveTo(0, 0);
3415     path.lineTo(0, 1);
3416     path.quadTo(3, 2, 2, 3);
3417     path.close();
3418     testSimplify(reporter, path, filename);
3419 }
3420 
testQuadratic91(skiatest::Reporter * reporter,const char * filename)3421 static void testQuadratic91(skiatest::Reporter* reporter, const char* filename) {
3422     SkPath path;
3423     path.moveTo(0, 0);
3424     path.quadTo(3, 2, 2, 3);
3425     path.lineTo(2, 3);
3426     path.close();
3427     path.moveTo(0, 0);
3428     path.lineTo(1, 1);
3429     path.quadTo(2, 1, 2, 3);
3430     path.close();
3431     testSimplify(reporter, path, filename);
3432 }
3433 
testQuadratic92x(skiatest::Reporter * reporter,const char * filename)3434 static void testQuadratic92x(skiatest::Reporter* reporter, const char* filename) {
3435     SkPath path;
3436     path.setFillType(SkPathFillType::kEvenOdd);
3437     path.moveTo(1, 0);
3438     path.quadTo(3, 0, 2, 2);
3439     path.lineTo(2, 2);
3440     path.close();
3441     path.moveTo(2, 0);
3442     path.lineTo(0, 1);
3443     path.quadTo(3, 2, 2, 3);
3444     path.close();
3445     testSimplify(reporter, path, filename);
3446 }
3447 
testLine82(skiatest::Reporter * reporter,const char * filename)3448 static void testLine82(skiatest::Reporter* reporter, const char* filename) {
3449     SkPath path;
3450     path.addRect(20, 0, 40, 40, SkPathDirection::kCCW);
3451     path.addRect(24, 20, 36, 30, SkPathDirection::kCCW);
3452     path.addRect(24, 32, 33, 36, SkPathDirection::kCCW);
3453     testSimplify(reporter, path, filename);
3454 }
3455 
testLine82a(skiatest::Reporter * reporter,const char * filename)3456 static void testLine82a(skiatest::Reporter* reporter, const char* filename) {
3457     SkPath path;
3458     path.addRect(0, 0, 6, 10, SkPathDirection::kCW);
3459     path.addRect(2, 2, 4, 4, SkPathDirection::kCW);
3460     path.addRect(2, 6, 4, 8, SkPathDirection::kCW);
3461     testSimplify(reporter, path, filename);
3462 }
3463 
testLine82b(skiatest::Reporter * reporter,const char * filename)3464 static void testLine82b(skiatest::Reporter* reporter, const char* filename) {
3465     SkPath path;
3466     path.addRect(0, 0, 6, 10, SkPathDirection::kCW);
3467     path.addRect(2, 2, 4, 4, SkPathDirection::kCW);
3468     path.addRect(2, 6, 4, 8, SkPathDirection::kCCW);
3469     testSimplify(reporter, path, filename);
3470 }
3471 
testLine82c(skiatest::Reporter * reporter,const char * filename)3472 static void testLine82c(skiatest::Reporter* reporter, const char* filename) {
3473     SkPath path;
3474     path.addRect(0, 0, 6, 10, SkPathDirection::kCW);
3475     path.addRect(2, 2, 4, 4, SkPathDirection::kCCW);
3476     path.addRect(2, 6, 4, 8, SkPathDirection::kCW);
3477     testSimplify(reporter, path, filename);
3478 }
3479 
testLine82d(skiatest::Reporter * reporter,const char * filename)3480 static void testLine82d(skiatest::Reporter* reporter, const char* filename) {
3481     SkPath path;
3482     path.addRect(0, 0, 6, 10, SkPathDirection::kCW);
3483     path.addRect(2, 2, 4, 4, SkPathDirection::kCCW);
3484     path.addRect(2, 6, 4, 8, SkPathDirection::kCCW);
3485     testSimplify(reporter, path, filename);
3486 }
3487 
testLine82e(skiatest::Reporter * reporter,const char * filename)3488 static void testLine82e(skiatest::Reporter* reporter, const char* filename) {
3489     SkPath path;
3490     path.addRect(0, 0, 6, 10, SkPathDirection::kCCW);
3491     path.addRect(2, 2, 4, 4, SkPathDirection::kCW);
3492     path.addRect(2, 6, 4, 8, SkPathDirection::kCW);
3493     testSimplify(reporter, path, filename);
3494 }
3495 
testLine82f(skiatest::Reporter * reporter,const char * filename)3496 static void testLine82f(skiatest::Reporter* reporter, const char* filename) {
3497     SkPath path;
3498     path.addRect(0, 0, 6, 10, SkPathDirection::kCCW);
3499     path.addRect(2, 2, 4, 4, SkPathDirection::kCW);
3500     path.addRect(2, 6, 4, 8, SkPathDirection::kCCW);
3501     testSimplify(reporter, path, filename);
3502 }
3503 
testLine82g(skiatest::Reporter * reporter,const char * filename)3504 static void testLine82g(skiatest::Reporter* reporter, const char* filename) {
3505     SkPath path;
3506     path.addRect(0, 0, 6, 10, SkPathDirection::kCCW);
3507     path.addRect(2, 2, 4, 4, SkPathDirection::kCCW);
3508     path.addRect(2, 6, 4, 8, SkPathDirection::kCW);
3509     testSimplify(reporter, path, filename);
3510 }
3511 
testLine82h(skiatest::Reporter * reporter,const char * filename)3512 static void testLine82h(skiatest::Reporter* reporter, const char* filename) {
3513     SkPath path;
3514     path.addRect(0, 0, 6, 10, SkPathDirection::kCCW);
3515     path.addRect(2, 2, 4, 4, SkPathDirection::kCCW);
3516     path.addRect(2, 6, 4, 8, SkPathDirection::kCCW);
3517     testSimplify(reporter, path, filename);
3518 }
3519 
testLine83(skiatest::Reporter * reporter,const char * filename)3520 static void testLine83(skiatest::Reporter* reporter, const char* filename) {
3521     SkPath path;
3522 path.addRect(10, 30, 30, 40, SkPathDirection::kCCW);
3523 path.addRect(0, 12, 12, 18, SkPathDirection::kCCW);
3524 path.addRect(4, 13, 13, 16, SkPathDirection::kCCW);
3525     testSimplify(reporter, path, filename);
3526 }
3527 
testLine84(skiatest::Reporter * reporter,const char * filename)3528 static void testLine84(skiatest::Reporter* reporter, const char* filename) {
3529     SkPath path;
3530     path.addRect(0, 12, 60, 30, SkPathDirection::kCCW);
3531     path.addRect(10, 20, 40, 30, SkPathDirection::kCW);
3532     path.addRect(0, 12, 12, 12, SkPathDirection::kCW);
3533     path.addRect(4, 12, 13, 13, SkPathDirection::kCW);
3534     testSimplify(reporter, path, filename);
3535 }
3536 
testLine84x(skiatest::Reporter * reporter,const char * filename)3537 static void testLine84x(skiatest::Reporter* reporter, const char* filename) {
3538     SkPath path;
3539     path.setFillType(SkPathFillType::kEvenOdd);
3540     path.addRect(0, 12, 60, 30, SkPathDirection::kCCW);
3541     path.addRect(10, 20, 40, 30, SkPathDirection::kCCW);
3542     path.addRect(0, 12, 12, 12, SkPathDirection::kCCW);
3543     path.addRect(4, 12, 13, 13, SkPathDirection::kCCW);
3544     testSimplify(reporter, path, filename);
3545 }
3546 
testLine85(skiatest::Reporter * reporter,const char * filename)3547 static void testLine85(skiatest::Reporter* reporter, const char* filename) {
3548     SkPath path;
3549     path.addRect(36, 0, 66, 60, SkPathDirection::kCCW);
3550     path.addRect(20, 0, 40, 40, SkPathDirection::kCCW);
3551     path.addRect(12, 0, 24, 24, SkPathDirection::kCCW);
3552     path.addRect(32, 0, 36, 41, SkPathDirection::kCCW);
3553     testSimplify(reporter, path, filename);
3554 }
3555 
testQuadralateral1(skiatest::Reporter * reporter,const char * filename)3556 static void testQuadralateral1(skiatest::Reporter* reporter, const char* filename) {
3557     SkPath path;
3558     path.moveTo(0, 0);
3559     path.lineTo(0, 0);
3560     path.lineTo(0, 0);
3561     path.lineTo(3, 2);
3562     path.close();
3563     path.moveTo(0, 0);
3564     path.lineTo(2, 1);
3565     path.lineTo(2, 2);
3566     path.lineTo(2, 3);
3567     path.close();
3568     testSimplify(reporter, path, filename);
3569 }
3570 
testCubic1(skiatest::Reporter * reporter,const char * filename)3571 static void testCubic1(skiatest::Reporter* reporter, const char* filename) {
3572     SkPath path;
3573     path.moveTo(0, 0);
3574     path.cubicTo(0, 1, 1, 1, 1, 0);
3575     path.close();
3576     path.moveTo(1, 0);
3577     path.cubicTo(0, 0, 0, 1, 1, 1);
3578     path.close();
3579     testSimplify(reporter, path, filename);
3580 }
3581 
testQuadratic93(skiatest::Reporter * reporter,const char * filename)3582 static void testQuadratic93(skiatest::Reporter* reporter, const char* filename) {
3583     SkPath path;
3584     path.moveTo(3, 0);
3585     path.quadTo(0, 1, 3, 2);
3586     path.lineTo(0, 3);
3587     path.close();
3588     path.moveTo(1, 0);
3589     path.lineTo(2, 0);
3590     path.quadTo(1, 1, 2, 2);
3591     path.close();
3592     testSimplify(reporter, path, filename);
3593 }
3594 
testCubic2(skiatest::Reporter * reporter,const char * filename)3595 static void testCubic2(skiatest::Reporter* reporter, const char* filename) {
3596     SkPath path;
3597     path.moveTo(0,2);
3598     path.cubicTo(0,3, 2,1, 4,0);
3599     path.close();
3600     path.moveTo(1,2);
3601     path.cubicTo(0,4, 2,0, 3,0);
3602     path.close();
3603     testSimplify(reporter, path, filename);
3604 }
3605 
testQuad1(skiatest::Reporter * reporter,const char * filename)3606 static void testQuad1(skiatest::Reporter* reporter, const char* filename) {
3607     SkPath path;
3608     path.moveTo(0,0);
3609     path.quadTo(0,0, 0,1);
3610     path.lineTo(1,1);
3611     path.close();
3612     path.moveTo(0,0);
3613     path.quadTo(1,1, 0,2);
3614     path.close();
3615     testSimplify(reporter, path, filename);
3616 }
3617 
testQuadralateral2(skiatest::Reporter * reporter,const char * filename)3618 static void testQuadralateral2(skiatest::Reporter* reporter, const char* filename) {
3619     SkPath path;
3620     path.moveTo(0, 0);
3621     path.lineTo(2, 2);
3622     path.lineTo(0, 3);
3623     path.lineTo(3, 3);
3624     path.close();
3625     path.moveTo(2, 0);
3626     path.lineTo(3, 0);
3627     path.lineTo(0, 1);
3628     path.lineTo(1, 2);
3629     path.close();
3630     markTestFlakyForPathKit();
3631     testSimplify(reporter, path, filename);
3632 }
3633 
testQuadratic94(skiatest::Reporter * reporter,const char * filename)3634 static void testQuadratic94(skiatest::Reporter* reporter, const char* filename) {
3635     SkPath path;
3636     path.moveTo(0, 0);
3637     path.lineTo(8, 8);
3638     path.quadTo(8, 4, 4, 4);
3639     path.quadTo(4, 0, 0, 0);
3640     path.close();
3641     testSimplify(reporter, path, filename);
3642 }
3643 
testQuadratic95(skiatest::Reporter * reporter,const char * filename)3644 static void testQuadratic95(skiatest::Reporter* reporter, const char* filename) {
3645     SkPath path;
3646     path.moveTo(8, 8);
3647     path.lineTo(0, 0);
3648     path.quadTo(4, 0, 4, 4);
3649     path.quadTo(8, 4, 8, 8);
3650     path.close();
3651     testSimplify(reporter, path, filename);
3652 }
3653 
testQuadratic96(skiatest::Reporter * reporter,const char * filename)3654 static void testQuadratic96(skiatest::Reporter* reporter, const char* filename) {
3655     SkPath path;
3656     path.moveTo(8, 0);
3657     path.lineTo(0, 8);
3658     path.quadTo(0, 4, 4, 4);
3659     path.quadTo(4, 0, 8, 0);
3660     path.close();
3661     testSimplify(reporter, path, filename);
3662 }
3663 
testQuadratic97(skiatest::Reporter * reporter,const char * filename)3664 static void testQuadratic97(skiatest::Reporter* reporter, const char* filename) {
3665     SkPath path;
3666     path.moveTo(0, 8);
3667     path.lineTo(8, 0);
3668     path.quadTo(4, 0, 4, 4);
3669     path.quadTo(0, 4, 0, 8);
3670     path.close();
3671     testSimplify(reporter, path, filename);
3672 }
3673 
testTriangles1(skiatest::Reporter * reporter,const char * filename)3674 static void testTriangles1(skiatest::Reporter* reporter, const char* filename) {
3675     SkPath path;
3676     path.moveTo(0, 0);
3677     path.lineTo(1, 0);
3678     path.lineTo(3, 3);
3679     path.close();
3680     path.moveTo(0, 0);
3681     path.lineTo(1, 2);
3682     path.lineTo(1, 1);
3683     path.close();
3684     testSimplify(reporter, path, filename);
3685 }
3686 
testTriangles2(skiatest::Reporter * reporter,const char * filename)3687 static void testTriangles2(skiatest::Reporter* reporter, const char* filename) {
3688     SkPath path;
3689     path.moveTo(0, 0);
3690     path.lineTo(1, 0);
3691     path.lineTo(3, 3);
3692     path.close();
3693     path.moveTo(1, 1);
3694     path.lineTo(2, 3);
3695     path.lineTo(1, 2);
3696     path.close();
3697     testSimplify(reporter, path, filename);
3698 }
3699 
3700 // A test for this case:
3701 // contourA has two segments that are coincident
3702 // contourB has two segments that are coincident in the same place
3703 // each ends up with +2/0 pairs for winding count
3704 // since logic in OpSegment::addTCoincident doesn't transfer count (only increments/decrements)
3705 // can this be resolved to +4/0 ?
testAddTCoincident1(skiatest::Reporter * reporter,const char * filename)3706 static void testAddTCoincident1(skiatest::Reporter* reporter, const char* filename) {
3707     SkPath path;
3708     path.moveTo(2, 0);
3709     path.lineTo(2, 2);
3710     path.lineTo(1, 1);
3711     path.lineTo(2, 0);
3712     path.lineTo(2, 2);
3713     path.lineTo(1, 1);
3714     path.close();
3715     path.moveTo(2, 0);
3716     path.lineTo(2, 2);
3717     path.lineTo(3, 1);
3718     path.lineTo(2, 0);
3719     path.lineTo(2, 2);
3720     path.lineTo(3, 1);
3721     path.close();
3722     testSimplify(reporter, path, filename);
3723 }
3724 
3725 // test with implicit close
testAddTCoincident2(skiatest::Reporter * reporter,const char * filename)3726 static void testAddTCoincident2(skiatest::Reporter* reporter, const char* filename) {
3727     SkPath path;
3728     path.moveTo(2, 0);
3729     path.lineTo(2, 2);
3730     path.lineTo(1, 1);
3731     path.lineTo(2, 0);
3732     path.lineTo(2, 2);
3733     path.lineTo(1, 1);
3734     path.moveTo(2, 0);
3735     path.lineTo(2, 2);
3736     path.lineTo(3, 1);
3737     path.lineTo(2, 0);
3738     path.lineTo(2, 2);
3739     path.lineTo(3, 1);
3740     testSimplify(reporter, path, filename);
3741 }
3742 
testQuad2(skiatest::Reporter * reporter,const char * filename)3743 static void testQuad2(skiatest::Reporter* reporter, const char* filename) {
3744     SkPath path;
3745     path.moveTo(1, 0);
3746     path.quadTo(0, 1, 3, 2);
3747     path.lineTo(2, 3);
3748     path.close();
3749     path.moveTo(0, 0);
3750     path.lineTo(1, 0);
3751     path.quadTo(0, 1, 1, 1);
3752     path.close();
3753 }
3754 
testQuad3(skiatest::Reporter * reporter,const char * filename)3755 static void testQuad3(skiatest::Reporter* reporter, const char* filename) {
3756     SkPath path;
3757     path.moveTo(1, 0);
3758     path.quadTo(0, 1, 3, 2);
3759     path.lineTo(3, 3);
3760     path.close();
3761     path.moveTo(0, 0);
3762     path.lineTo(1, 0);
3763     path.quadTo(0, 1, 1, 1);
3764     path.close();
3765     testSimplify(reporter, path, filename);
3766 }
3767 
testQuad4(skiatest::Reporter * reporter,const char * filename)3768 static void testQuad4(skiatest::Reporter* reporter, const char* filename) {
3769     SkPath path;
3770     path.moveTo(2, 0);
3771     path.quadTo(0, 1, 1, 1);
3772     path.lineTo(3, 3);
3773     path.close();
3774     path.moveTo(0, 0);
3775     path.lineTo(2, 0);
3776     path.quadTo(0, 1, 2, 2);
3777     path.close();
3778     testSimplify(reporter, path, filename);
3779 }
3780 
testQuad5(skiatest::Reporter * reporter,const char * filename)3781 static void testQuad5(skiatest::Reporter* reporter, const char* filename) {
3782     SkPath path;
3783     path.moveTo(2, 0);
3784     path.quadTo(0, 1, 2, 2);
3785     path.lineTo(1, 3);
3786     path.close();
3787     path.moveTo(0, 0);
3788     path.lineTo(2, 0);
3789     path.quadTo(0, 1, 1, 1);
3790     path.close();
3791     testSimplify(reporter, path, filename);
3792 }
3793 
testQuad6(skiatest::Reporter * reporter,const char * filename)3794 static void testQuad6(skiatest::Reporter* reporter, const char* filename) {
3795     SkPath path;
3796     path.moveTo(2, 0);
3797     path.quadTo(0, 1, 2, 2);
3798     path.lineTo(1, 3);
3799     path.close();
3800     path.moveTo(1, 0);
3801     path.lineTo(2, 0);
3802     path.quadTo(0, 1, 1, 1);
3803     path.close();
3804     testSimplify(reporter, path, filename);
3805 }
3806 
testQuad7(skiatest::Reporter * reporter,const char * filename)3807 static void testQuad7(skiatest::Reporter* reporter, const char* filename) {
3808     SkPath path;
3809     path.moveTo(3, 0);
3810     path.quadTo(0, 1, 1, 1);
3811     path.lineTo(1, 3);
3812     path.close();
3813     path.moveTo(1, 0);
3814     path.lineTo(3, 0);
3815     path.quadTo(0, 1, 1, 2);
3816     path.close();
3817     testSimplify(reporter, path, filename);
3818 }
3819 
testQuadLineIntersect1(skiatest::Reporter * reporter,const char * filename)3820 static void testQuadLineIntersect1(skiatest::Reporter* reporter, const char* filename) {
3821     SkPath path;
3822     path.moveTo(0, 0);
3823     path.quadTo(3, 1, 0, 3);
3824     path.lineTo(2, 3);
3825     path.close();
3826     path.moveTo(2, 0);
3827     path.lineTo(0, 1);
3828     path.quadTo(3, 1, 0, 2);
3829     path.close();
3830     testSimplify(reporter, path, filename);
3831 }
3832 
testQuadLineIntersect2(skiatest::Reporter * reporter,const char * filename)3833 static void testQuadLineIntersect2(skiatest::Reporter* reporter, const char* filename) {
3834     SkPath path;
3835     path.moveTo(0, 0);
3836     path.quadTo(3, 1, 0, 3);
3837     path.lineTo(0, 3);
3838     path.close();
3839     path.moveTo(2, 0);
3840     path.lineTo(0, 1);
3841     path.quadTo(3, 1, 0, 2);
3842     path.close();
3843     testSimplify(reporter, path, filename);
3844 }
3845 
testQuadLineIntersect3(skiatest::Reporter * reporter,const char * filename)3846 static void testQuadLineIntersect3(skiatest::Reporter* reporter, const char* filename) {
3847     SkPath path;
3848     path.moveTo(0, 0);
3849     path.quadTo(3, 1, 0, 3);
3850     path.lineTo(1, 3);
3851     path.close();
3852     path.moveTo(2, 0);
3853     path.lineTo(0, 1);
3854     path.quadTo(3, 1, 0, 2);
3855     path.close();
3856     testSimplify(reporter, path, filename);
3857 }
3858 
skphealth_com76s(skiatest::Reporter * reporter,const char * filename)3859 static void skphealth_com76s(skiatest::Reporter* reporter, const char* filename) {
3860     SkPath path;
3861     path.setFillType(SkPathFillType::kWinding);
3862     path.moveTo(708.099182f, 7.09919119f);
3863     path.lineTo(708.099182f, 7.09920025f);
3864     path.quadTo(704.000000f, 11.2010098f, 704.000000f, 17.0000000f);
3865     path.lineTo(704.000000f, 33.0000000f);
3866     path.lineTo(705.000000f, 33.0000000f);
3867     path.lineTo(705.000000f, 17.0000000f);
3868     path.cubicTo(705.000000f, 13.4101496f, 706.455078f, 10.1601505f, 708.807617f, 7.80761385f);
3869     path.lineTo(708.099182f, 7.09919119f);
3870     path.close();
3871     path.moveTo(704.000000f, 3.00000000f);
3872     path.lineTo(704.000000f, 33.0000000f);
3873     path.lineTo(705.000000f, 33.0000000f);
3874     path.lineTo(719.500000f, 3.00000000f);
3875     testSimplify(reporter, path, filename);
3876 }
3877 
tooCloseTest(skiatest::Reporter * reporter,const char * filename)3878 static void tooCloseTest(skiatest::Reporter* reporter, const char* filename) {
3879     SkPath path;
3880     path.moveTo(0, 0);
3881     path.lineTo(1, 1);
3882     path.lineTo(1,-1);
3883     path.close();
3884     path.moveTo(0, 0);
3885     path.lineTo(1,-2);
3886     path.lineTo(1, 2);
3887     path.lineTo(2, 0);
3888     path.close();
3889     testSimplify(reporter, path, filename);
3890 }
3891 
testRect1s(skiatest::Reporter * reporter,const char * filename)3892 static void testRect1s(skiatest::Reporter* reporter, const char* filename) {
3893     SkPath path;
3894     path.addRect(0, 0, 60, 60, SkPathDirection::kCCW);
3895     path.addRect(30, 20, 50, 50, SkPathDirection::kCCW);
3896     path.addRect(24, 20, 36, 30, SkPathDirection::kCCW);
3897     path.addRect(32, 24, 36, 41, SkPathDirection::kCCW);
3898     testSimplify(reporter, path, filename);
3899 }
3900 
testRect2s(skiatest::Reporter * reporter,const char * filename)3901 static void testRect2s(skiatest::Reporter* reporter, const char* filename) {
3902     SkPath path;
3903     path.setFillType(SkPathFillType::kWinding);
3904     path.moveTo(0, 0);
3905     path.lineTo(60, 0);
3906     path.lineTo(60, 60);
3907     path.lineTo(0, 60);
3908     path.close();
3909     path.moveTo(30, 20);
3910     path.lineTo(30, 50);
3911     path.lineTo(50, 50);
3912     path.lineTo(50, 20);
3913     path.close();
3914     path.moveTo(24, 20);
3915     path.lineTo(24, 30);
3916     path.lineTo(36, 30);
3917     path.lineTo(36, 20);
3918     path.close();
3919     path.moveTo(32, 24);
3920     path.lineTo(32, 41);
3921     path.lineTo(36, 41);
3922     path.lineTo(36, 24);
3923     path.close();
3924     testSimplify(reporter, path, filename);
3925 }
3926 
testTriangles3x(skiatest::Reporter * reporter,const char * filename)3927 static void testTriangles3x(skiatest::Reporter* reporter, const char* filename) {
3928     SkPath path;
3929     path.setFillType(SkPathFillType::kEvenOdd);
3930     path.moveTo(1, 0);
3931     path.quadTo(0, 1, 3, 2);
3932     path.lineTo(1, 3);
3933     path.close();
3934     path.moveTo(0, 0);
3935     path.lineTo(1, 1);
3936     path.quadTo(2, 1, 0, 2);
3937     path.close();
3938     testSimplify(reporter, path, filename);
3939 }
3940 
testQuad8(skiatest::Reporter * reporter,const char * filename)3941 static void testQuad8(skiatest::Reporter* reporter, const char* filename) {
3942     SkPath path;
3943     path.moveTo(3, 0);
3944     path.quadTo(0, 1, 3, 2);
3945     path.lineTo(0, 3);
3946     path.close();
3947     path.moveTo(1, 0);
3948     path.lineTo(3, 0);
3949     path.quadTo(1, 1, 2, 2);
3950     path.close();
3951     testSimplify(reporter, path, filename);
3952 }
3953 
testTriangles4x(skiatest::Reporter * reporter,const char * filename)3954 static void testTriangles4x(skiatest::Reporter* reporter, const char* filename) {
3955     SkPath path;
3956     path.setFillType(SkPathFillType::kEvenOdd);
3957     path.moveTo(0, 0);
3958     path.quadTo(2, 0, 0, 3);
3959     path.lineTo(2, 3);
3960     path.close();
3961     path.moveTo(0, 0);
3962     path.lineTo(0, 1);
3963     path.quadTo(3, 2, 2, 3);
3964     path.close();
3965     testSimplify(reporter, path, filename);
3966 }
3967 
testQuad9(skiatest::Reporter * reporter,const char * filename)3968 static void testQuad9(skiatest::Reporter* reporter, const char* filename) {
3969     SkPath path;
3970     path.setFillType(SkPathFillType::kEvenOdd);
3971     path.moveTo(1, 0);
3972     path.quadTo(0, 1, 3, 2);
3973     path.lineTo(1, 3);
3974     path.close();
3975     path.moveTo(1, 0);
3976     path.lineTo(1, 1);
3977     path.quadTo(2, 1, 1, 3);
3978     path.close();
3979     testSimplify(reporter, path, filename);
3980 }
3981 
testQuad10(skiatest::Reporter * reporter,const char * filename)3982 static void testQuad10(skiatest::Reporter* reporter, const char* filename) {
3983     SkPath path;
3984     path.moveTo(1, 0);
3985     path.quadTo(0, 1, 3, 2);
3986     path.lineTo(3, 3);
3987     path.close();
3988     path.moveTo(1, 0);
3989     path.lineTo(2, 0);
3990     path.quadTo(2, 3, 3, 3);
3991     path.close();
3992     testSimplify(reporter, path, filename);
3993 }
3994 
testQuad11(skiatest::Reporter * reporter,const char * filename)3995 static void testQuad11(skiatest::Reporter* reporter, const char* filename) {
3996     SkPath path;
3997     path.moveTo(2, 0);
3998     path.quadTo(0, 1, 1, 2);
3999     path.lineTo(1, 2);
4000     path.close();
4001     path.moveTo(0, 0);
4002     path.lineTo(1, 1);
4003     path.quadTo(1, 3, 3, 3);
4004     path.close();
4005     testSimplify(reporter, path, filename);
4006 }
4007 
testQuad12(skiatest::Reporter * reporter,const char * filename)4008 static void testQuad12(skiatest::Reporter* reporter, const char* filename) {
4009     SkPath path;
4010     path.moveTo(0, 0);
4011     path.quadTo(0, 0, 0, 0);
4012     path.lineTo(0, 1);
4013     path.close();
4014     path.moveTo(0, 0);
4015     path.lineTo(0, 0);
4016     path.quadTo(1, 0, 0, 1);
4017     path.close();
4018     testSimplify(reporter, path, filename);
4019 }
4020 
testQuadralateral3(skiatest::Reporter * reporter,const char * filename)4021 static void testQuadralateral3(skiatest::Reporter* reporter, const char* filename) {
4022     SkPath path;
4023     path.setFillType(SkPathFillType::kEvenOdd);
4024     path.moveTo(0, 0);
4025     path.lineTo(0, 0);
4026     path.lineTo(0, 0);
4027     path.lineTo(1, 0);
4028     path.close();
4029     path.moveTo(0, 0);
4030     path.lineTo(0, 0);
4031     path.lineTo(1, 0);
4032     path.lineTo(0, 1);
4033     path.close();
4034     testSimplify(reporter, path, filename);
4035 }
4036 
4037 
testDegenerate5(skiatest::Reporter * reporter,const char * filename)4038 static void testDegenerate5(skiatest::Reporter* reporter, const char* filename) {
4039     SkPath path;
4040     path.moveTo(0, 0);
4041     path.lineTo(0, 0);
4042     path.lineTo(1, 0);
4043     path.close();
4044     path.moveTo(0, 0);
4045     path.lineTo(1, 0);
4046     path.lineTo(0, 1);
4047     path.close();
4048     testSimplify(reporter, path, filename);
4049 }
4050 
testQuadralateral4(skiatest::Reporter * reporter,const char * filename)4051 static void testQuadralateral4(skiatest::Reporter* reporter, const char* filename) {
4052     SkPath path;
4053     path.moveTo(0, 0);
4054     path.lineTo(0, 0);
4055     path.lineTo(0, 0);
4056     path.lineTo(3, 1);
4057     path.close();
4058     path.moveTo(0, 0);
4059     path.lineTo(0, 0);
4060     path.lineTo(0, 1);
4061     path.lineTo(3, 1);
4062     path.close();
4063     testSimplify(reporter, path, filename);
4064 }
4065 
testDegenerates1(skiatest::Reporter * reporter,const char * filename)4066 static void testDegenerates1(skiatest::Reporter* reporter, const char* filename) {
4067     SkPath path;
4068     path.moveTo(0, 0);
4069     path.quadTo(0, 0, 1, 1);
4070     path.lineTo(2, 3);
4071     path.close();
4072     path.moveTo(0, 0);
4073     path.lineTo(0, 0);
4074     path.quadTo(3, 2, 2, 3);
4075     path.close();
4076     testSimplify(reporter, path, filename);
4077 }
4078 
testQuad13(skiatest::Reporter * reporter,const char * filename)4079 static void testQuad13(skiatest::Reporter* reporter, const char* filename) {
4080     SkPath path;
4081     path.moveTo(0, 0);
4082     path.quadTo(0, 0, 1, 1);
4083     path.lineTo(2, 3);
4084     path.close();
4085     path.moveTo(0, 0);
4086     path.lineTo(0, 0);
4087     path.quadTo(3, 2, 2, 3);
4088     path.close();
4089     testSimplify(reporter, path, filename);
4090 }
4091 
testQuad14(skiatest::Reporter * reporter,const char * filename)4092 static void testQuad14(skiatest::Reporter* reporter, const char* filename) {
4093     SkPath path;
4094     path.setFillType(SkPathFillType::kWinding);
4095     path.moveTo(0, 0);
4096     path.quadTo(0, 0, 1, 1);
4097     path.lineTo(1, 2);
4098     path.close();
4099     path.moveTo(0, 0);
4100     path.lineTo(0, 0);
4101     path.quadTo(3, 1, 1, 3);
4102     path.close();
4103     testSimplify(reporter, path, filename);
4104 }
4105 
testQuad15(skiatest::Reporter * reporter,const char * filename)4106 static void testQuad15(skiatest::Reporter* reporter, const char* filename) {
4107     SkPath path;
4108     path.moveTo(0, 0);
4109     path.quadTo(0, 0, 1, 1);
4110     path.lineTo(1, 3);
4111     path.close();
4112     path.moveTo(0, 0);
4113     path.lineTo(0, 0);
4114     path.quadTo(2, 0, 1, 3);
4115     path.close();
4116     testSimplify(reporter, path, filename);
4117 }
4118 
testQuads16(skiatest::Reporter * reporter,const char * filename)4119 static void testQuads16(skiatest::Reporter* reporter, const char* filename) {
4120     SkPath path;
4121     path.moveTo(0, 0);
4122     path.quadTo(0, 0, 1, 1);
4123     path.lineTo(3, 2);
4124     path.close();
4125     path.moveTo(0, 0);
4126     path.lineTo(0, 0);
4127     path.quadTo(0, 1, 3, 2);
4128     path.close();
4129     testSimplify(reporter, path, filename);
4130 }
4131 
testQuads17(skiatest::Reporter * reporter,const char * filename)4132 static void testQuads17(skiatest::Reporter* reporter, const char* filename) {
4133     SkPath path;
4134     path.moveTo(0, 0);
4135     path.quadTo(0, 0, 1, 1);
4136     path.lineTo(3, 2);
4137     path.close();
4138     path.moveTo(0, 0);
4139     path.lineTo(0, 0);
4140     path.quadTo(0, 2, 3, 2);
4141     path.close();
4142     testSimplify(reporter, path, filename);
4143 }
4144 
testQuads18(skiatest::Reporter * reporter,const char * filename)4145 static void testQuads18(skiatest::Reporter* reporter, const char* filename) {
4146     SkPath path;
4147     path.moveTo(0, 0);
4148     path.quadTo(0, 0, 1, 1);
4149     path.lineTo(3, 2);
4150     path.close();
4151     path.moveTo(0, 0);
4152     path.lineTo(0, 0);
4153     path.quadTo(1, 2, 3, 2);
4154     path.close();
4155     testSimplify(reporter, path, filename);
4156 }
4157 
testQuads19(skiatest::Reporter * reporter,const char * filename)4158 static void testQuads19(skiatest::Reporter* reporter, const char* filename) {
4159     SkPath path;
4160     path.moveTo(0, 0);
4161     path.quadTo(0, 0, 2, 1);
4162     path.lineTo(1, 2);
4163     path.close();
4164     path.moveTo(0, 0);
4165     path.lineTo(0, 0);
4166     path.quadTo(2, 1, 1, 2);
4167     path.close();
4168     testSimplify(reporter, path, filename);
4169 }
4170 
testQuads20(skiatest::Reporter * reporter,const char * filename)4171 static void testQuads20(skiatest::Reporter* reporter, const char* filename) {
4172     SkPath path;
4173     path.moveTo(0, 0);
4174     path.quadTo(0, 0, 2, 1);
4175     path.lineTo(1, 3);
4176     path.close();
4177     path.moveTo(0, 0);
4178     path.lineTo(0, 0);
4179     path.quadTo(2, 1, 1, 3);
4180     path.close();
4181     testSimplify(reporter, path, filename);
4182 }
4183 
testQuads21(skiatest::Reporter * reporter,const char * filename)4184 static void testQuads21(skiatest::Reporter* reporter, const char* filename) {
4185     SkPath path;
4186     path.moveTo(0, 0);
4187     path.quadTo(0, 0, 1, 1);
4188     path.lineTo(2, 1);
4189     path.close();
4190     path.moveTo(0, 0);
4191     path.lineTo(0, 0);
4192     path.quadTo(3, 0, 2, 3);
4193     path.close();
4194     testSimplify(reporter, path, filename);
4195 }
4196 
testQuads22(skiatest::Reporter * reporter,const char * filename)4197 static void testQuads22(skiatest::Reporter* reporter, const char* filename) {
4198     SkPath path;
4199     path.moveTo(0, 0);
4200     path.quadTo(0, 0, 2, 0);
4201     path.lineTo(1, 1);
4202     path.close();
4203     path.moveTo(0, 0);
4204     path.lineTo(0, 0);
4205     path.quadTo(0, 1, 3, 2);
4206     path.close();
4207     testSimplify(reporter, path, filename);
4208 }
4209 
testQuads23(skiatest::Reporter * reporter,const char * filename)4210 static void testQuads23(skiatest::Reporter* reporter, const char* filename) {
4211     SkPath path;
4212     path.moveTo(0, 0);
4213     path.quadTo(0, 0, 1, 0);
4214     path.lineTo(1, 1);
4215     path.close();
4216     path.moveTo(0, 0);
4217     path.lineTo(0, 0);
4218     path.quadTo(0, 1, 3, 2);
4219     path.close();
4220     testSimplify(reporter, path, filename);
4221 }
4222 
testQuads24(skiatest::Reporter * reporter,const char * filename)4223 static void testQuads24(skiatest::Reporter* reporter, const char* filename) {
4224     SkPath path;
4225     path.moveTo(0, 0);
4226     path.quadTo(0, 0, 0, 1);
4227     path.lineTo(1, 2);
4228     path.close();
4229     path.moveTo(0, 1);
4230     path.lineTo(0, 1);
4231     path.quadTo(0, 2, 3, 3);
4232     path.close();
4233     testSimplify(reporter, path, filename);
4234 }
4235 
testQuads25(skiatest::Reporter * reporter,const char * filename)4236 static void testQuads25(skiatest::Reporter* reporter, const char* filename) {
4237     SkPath path;
4238     path.moveTo(0, 0);
4239     path.quadTo(0, 0, 0, 1);
4240     path.lineTo(2, 1);
4241     path.close();
4242     path.moveTo(0, 0);
4243     path.lineTo(0, 0);
4244     path.quadTo(3, 0, 2, 3);
4245     path.close();
4246     testSimplify(reporter, path, filename);
4247 }
4248 
testQuads26(skiatest::Reporter * reporter,const char * filename)4249 static void testQuads26(skiatest::Reporter* reporter, const char* filename) {
4250     SkPath path;
4251     path.moveTo(0, 0);
4252     path.quadTo(0, 0, 3, 0);
4253     path.lineTo(1, 1);
4254     path.close();
4255     path.moveTo(0, 0);
4256     path.lineTo(0, 0);
4257     path.quadTo(0, 1, 3, 2);
4258     path.close();
4259     testSimplify(reporter, path, filename);
4260 }
4261 
testQuads27(skiatest::Reporter * reporter,const char * filename)4262 static void testQuads27(skiatest::Reporter* reporter, const char* filename) {
4263     SkPath path;
4264     path.moveTo(0, 0);
4265     path.quadTo(0, 0, 2, 0);
4266     path.lineTo(2, 1);
4267     path.close();
4268     path.moveTo(2, 0);
4269     path.lineTo(2, 0);
4270     path.quadTo(3, 0, 1, 3);
4271     path.close();
4272     testSimplify(reporter, path, filename);
4273 }
4274 
testQuads28(skiatest::Reporter * reporter,const char * filename)4275 static void testQuads28(skiatest::Reporter* reporter, const char* filename) {
4276     SkPath path;
4277     path.moveTo(0, 0);
4278     path.quadTo(0, 0, 0, 1);
4279     path.lineTo(2, 2);
4280     path.close();
4281     path.moveTo(0, 0);
4282     path.lineTo(0, 0);
4283     path.quadTo(3, 0, 2, 3);
4284     path.close();
4285     testSimplify(reporter, path, filename);
4286 }
4287 
testQuads29(skiatest::Reporter * reporter,const char * filename)4288 static void testQuads29(skiatest::Reporter* reporter, const char* filename) {
4289     SkPath path;
4290     path.moveTo(0, 0);
4291     path.quadTo(0, 0, 3, 0);
4292     path.lineTo(2, 1);
4293     path.close();
4294     path.moveTo(3, 0);
4295     path.lineTo(3, 0);
4296     path.quadTo(3, 1, 0, 2);
4297     path.close();
4298     testSimplify(reporter, path, filename);
4299 }
4300 
testQuads30(skiatest::Reporter * reporter,const char * filename)4301 static void testQuads30(skiatest::Reporter* reporter, const char* filename) {
4302     SkPath path;
4303     path.moveTo(0, 0);
4304 
4305     path.quadTo(0, 0, 2, 0);
4306     path.lineTo(2, 2);
4307     path.close();
4308     path.moveTo(2, 0);
4309     path.lineTo(2, 0);
4310     path.quadTo(3, 2, 1, 3);
4311     path.close();
4312     testSimplify(reporter, path, filename);
4313 }
4314 
testQuads31(skiatest::Reporter * reporter,const char * filename)4315 static void testQuads31(skiatest::Reporter* reporter, const char* filename) {
4316     SkPath path;
4317     path.moveTo(0, 0);
4318     path.quadTo(0, 0, 2, 1);
4319     path.lineTo(1, 3);
4320     path.close();
4321     path.moveTo(3, 0);
4322     path.lineTo(0, 1);
4323 
4324     path.quadTo(2, 1, 1, 3);
4325     path.close();
4326     testSimplify(reporter, path, filename);
4327 }
4328 
testQuads32(skiatest::Reporter * reporter,const char * filename)4329 static void testQuads32(skiatest::Reporter* reporter, const char* filename) {
4330     SkPath path;
4331     path.moveTo(0, 0);
4332     path.quadTo(0, 0, 1, 1);
4333     path.lineTo(1, 2);
4334     path.close();
4335     path.moveTo(1, 1);
4336     path.lineTo(1, 1);
4337     path.quadTo(3, 1, 0, 3);
4338     path.close();
4339     testSimplify(reporter, path, filename);
4340 }
4341 
testQuads33(skiatest::Reporter * reporter,const char * filename)4342 static void testQuads33(skiatest::Reporter* reporter, const char* filename) {
4343     SkPath path;
4344     path.moveTo(0, 0);
4345     path.quadTo(0, 0, 1, 1);
4346     path.lineTo(2, 1);
4347     path.close();
4348     path.moveTo(0, 0);
4349     path.lineTo(0, 0);
4350     path.quadTo(3, 0, 2, 3);
4351     path.close();
4352     testSimplify(reporter, path, filename);
4353 }
4354 
testQuads34(skiatest::Reporter * reporter,const char * filename)4355 static void testQuads34(skiatest::Reporter* reporter, const char* filename) {
4356     SkPath path;
4357     path.moveTo(0, 0);
4358     path.quadTo(0, 0, 1, 0);
4359     path.lineTo(2, 1);
4360     path.close();
4361     path.moveTo(1, 0);
4362     path.lineTo(1, 0);
4363     path.quadTo(2, 0, 3, 3);
4364     path.close();
4365     testSimplify(reporter, path, filename);
4366 }
4367 
testQuads35(skiatest::Reporter * reporter,const char * filename)4368 static void testQuads35(skiatest::Reporter* reporter, const char* filename) {
4369     SkPath path;
4370     path.moveTo(0, 0);
4371     path.quadTo(0, 0, 1, 0);
4372     path.lineTo(1, 2);
4373     path.close();
4374     path.moveTo(1, 0);
4375     path.lineTo(1, 0);
4376     path.quadTo(3, 1, 0, 3);
4377     path.close();
4378     testSimplify(reporter, path, filename);
4379 }
4380 
testQuads36(skiatest::Reporter * reporter,const char * filename)4381 static void testQuads36(skiatest::Reporter* reporter, const char* filename) {
4382     SkPath path;
4383     path.moveTo(1, 0);
4384     path.quadTo(2, 0, 1, 2);
4385     path.lineTo(2, 2);
4386     path.close();
4387     path.moveTo(1, 0);
4388     path.lineTo(1, 0);
4389     path.quadTo(3, 0, 2, 3);
4390     path.close();
4391     testSimplify(reporter, path, filename);
4392 }
4393 
testQuads37(skiatest::Reporter * reporter,const char * filename)4394 static void testQuads37(skiatest::Reporter* reporter, const char* filename) {
4395     SkPath path;
4396     path.setFillType(SkPathFillType::kEvenOdd);
4397     path.moveTo(1, 0);
4398     path.quadTo(2, 0, 1, 2);
4399     path.lineTo(2, 2);
4400     path.close();
4401     path.moveTo(1, 0);
4402     path.lineTo(1, 0);
4403     path.quadTo(3, 0, 2, 3);
4404     path.close();
4405     testSimplify(reporter, path, filename);
4406 }
4407 
testQuads38(skiatest::Reporter * reporter,const char * filename)4408 static void testQuads38(skiatest::Reporter* reporter, const char* filename) {
4409     SkPath path;
4410     path.moveTo(1, 0);
4411     path.quadTo(3, 0, 0, 2);
4412     path.lineTo(3, 2);
4413     path.close();
4414     path.moveTo(1, 0);
4415     path.lineTo(1, 0);
4416     path.quadTo(2, 1, 3, 1);
4417     path.close();
4418     testSimplify(reporter, path, filename);
4419 }
4420 
testQuads39(skiatest::Reporter * reporter,const char * filename)4421 static void testQuads39(skiatest::Reporter* reporter, const char* filename) {
4422     SkPath path;
4423     path.moveTo(1, 0);
4424     path.quadTo(3, 0, 0, 3);
4425     path.lineTo(0, 3);
4426     path.close();
4427     path.moveTo(1, 1);
4428     path.lineTo(0, 2);
4429     path.quadTo(1, 2, 0, 3);
4430     path.close();
4431     testSimplify(reporter, path, filename);
4432 }
testQuads40(skiatest::Reporter * reporter,const char * filename)4433 static void testQuads40(skiatest::Reporter* reporter, const char* filename) {
4434     SkPath path;
4435     path.moveTo(1, 0);
4436     path.quadTo(3, 0, 3, 3);
4437     path.lineTo(3, 3);
4438     path.close();
4439     path.moveTo(2, 1);
4440     path.lineTo(2, 2);
4441     path.quadTo(3, 2, 3, 3);
4442     path.close();
4443     testSimplify(reporter, path, filename);
4444 }
4445 
testQuads41(skiatest::Reporter * reporter,const char * filename)4446 static void testQuads41(skiatest::Reporter* reporter, const char* filename) {
4447     SkPath path;
4448     path.moveTo(0, 0);
4449     path.quadTo(0, 0, 1, 0);
4450     path.lineTo(2, 1);
4451     path.close();
4452     path.moveTo(0, 0);
4453     path.lineTo(0, 0);
4454     path.quadTo(0, 1, 1, 2);
4455     path.close();
4456     testSimplify(reporter, path, filename);
4457 }
4458 
4459 
testQuads54(skiatest::Reporter * reporter,const char * filename)4460 static void testQuads54(skiatest::Reporter* reporter, const char* filename) {
4461     SkPath path;
4462     path.moveTo(1, 0);
4463     path.quadTo(2, 0, 1, 1);
4464     path.lineTo(3, 1);
4465     path.close();
4466     path.moveTo(2, 0);
4467     path.lineTo(1, 1);
4468     path.quadTo(1, 1, 2, 3);
4469     path.close();
4470     testSimplify(reporter, path, filename);
4471 }
testQuads53(skiatest::Reporter * reporter,const char * filename)4472 static void testQuads53(skiatest::Reporter* reporter, const char* filename) {
4473     SkPath path;
4474     path.moveTo(1, 0);
4475     path.quadTo(2, 0, 1, 1);
4476     path.lineTo(3, 1);
4477     path.close();
4478     path.moveTo(2, 0);
4479     path.lineTo(1, 1);
4480     path.quadTo(2, 3, 2, 3);
4481     path.close();
4482     testSimplify(reporter, path, filename);
4483 }
testQuads52(skiatest::Reporter * reporter,const char * filename)4484 static void testQuads52(skiatest::Reporter* reporter, const char* filename) {
4485     SkPath path;
4486     path.moveTo(1, 0);
4487     path.quadTo(2, 0, 1, 1);
4488     path.lineTo(3, 1);
4489     path.close();
4490     path.moveTo(2, 0);
4491     path.lineTo(1, 1);
4492     path.quadTo(2, 3, 3, 3);
4493     path.close();
4494     testSimplify(reporter, path, filename);
4495 }
testQuads51(skiatest::Reporter * reporter,const char * filename)4496 static void testQuads51(skiatest::Reporter* reporter, const char* filename) {
4497     SkPath path;
4498     path.moveTo(2, 0);
4499     path.quadTo(3, 0, 2, 1);
4500     path.lineTo(3, 2);
4501     path.close();
4502     path.moveTo(3, 0);
4503     path.lineTo(3, 1);
4504     path.quadTo(3, 1, 1, 2);
4505     path.close();
4506     testSimplify(reporter, path, filename);
4507 }
testQuads50(skiatest::Reporter * reporter,const char * filename)4508 static void testQuads50(skiatest::Reporter* reporter, const char* filename) {
4509     SkPath path;
4510     path.moveTo(2, 0);
4511     path.quadTo(3, 0, 2, 1);
4512     path.lineTo(3, 2);
4513     path.close();
4514     path.moveTo(3, 0);
4515     path.lineTo(3, 1);
4516     path.quadTo(1, 2, 1, 2);
4517     path.close();
4518     testSimplify(reporter, path, filename);
4519 }
testQuads49(skiatest::Reporter * reporter,const char * filename)4520 static void testQuads49(skiatest::Reporter* reporter, const char* filename) {
4521     SkPath path;
4522     path.moveTo(2, 0);
4523     path.quadTo(3, 0, 2, 1);
4524     path.lineTo(3, 2);
4525     path.close();
4526     path.moveTo(3, 0);
4527     path.lineTo(2, 2);
4528     path.quadTo(2, 2, 0, 3);
4529     path.close();
4530     testSimplify(reporter, path, filename);
4531 }
testQuads48(skiatest::Reporter * reporter,const char * filename)4532 static void testQuads48(skiatest::Reporter* reporter, const char* filename) {
4533     SkPath path;
4534     path.moveTo(2, 0);
4535     path.quadTo(3, 0, 2, 1);
4536     path.lineTo(3, 2);
4537     path.close();
4538     path.moveTo(3, 0);
4539     path.lineTo(2, 2);
4540     path.quadTo(3, 2, 0, 3);
4541     path.close();
4542     testSimplify(reporter, path, filename);
4543 }
testQuads47(skiatest::Reporter * reporter,const char * filename)4544 static void testQuads47(skiatest::Reporter* reporter, const char* filename) {
4545     SkPath path;
4546     path.moveTo(2, 0);
4547     path.quadTo(3, 0, 2, 1);
4548     path.lineTo(3, 2);
4549     path.close();
4550     path.moveTo(3, 0);
4551     path.lineTo(2, 2);
4552     path.quadTo(0, 3, 0, 3);
4553     path.close();
4554     testSimplify(reporter, path, filename);
4555 }
4556 
testQuads46x(skiatest::Reporter * reporter,const char * filename)4557 static void testQuads46x(skiatest::Reporter* reporter, const char* filename) {
4558     SkPath path;
4559     path.setFillType(SkPathFillType::kEvenOdd);
4560     path.moveTo(2, 0);
4561     path.quadTo(0, 1, 3, 2);
4562     path.lineTo(1, 3);
4563     path.close();
4564     path.moveTo(0, 0);
4565     path.lineTo(1, 1);
4566     path.quadTo(3, 2, 1, 3);
4567     path.close();
4568     testSimplify(reporter, path, filename);
4569 }
4570 
testQuads45(skiatest::Reporter * reporter,const char * filename)4571 static void testQuads45(skiatest::Reporter* reporter, const char* filename) {
4572     SkPath path;
4573     path.moveTo(2, 0);
4574     path.quadTo(3, 2, 3, 3);
4575     path.lineTo(3, 3);
4576     path.close();
4577     path.moveTo(0, 0);
4578     path.lineTo(0, 2);
4579     path.quadTo(3, 2, 3, 3);
4580     path.close();
4581     testSimplify(reporter, path, filename);
4582 }
4583 
testQuads44(skiatest::Reporter * reporter,const char * filename)4584 static void testQuads44(skiatest::Reporter* reporter, const char* filename) {
4585     SkPath path;
4586     path.moveTo(2, 0);
4587     path.quadTo(3, 2, 3, 3);
4588     path.lineTo(3, 3);
4589     path.close();
4590     path.moveTo(1, 0);
4591     path.lineTo(0, 2);
4592     path.quadTo(3, 2, 3, 3);
4593     path.close();
4594     testSimplify(reporter, path, filename);
4595 }
4596 
testQuads43(skiatest::Reporter * reporter,const char * filename)4597 static void testQuads43(skiatest::Reporter* reporter, const char* filename) {
4598     SkPath path;
4599     path.moveTo(2, 0);
4600     path.quadTo(2, 3, 3, 3);
4601     path.lineTo(3, 3);
4602     path.close();
4603     path.moveTo(0, 2);
4604     path.lineTo(0, 2);
4605     path.quadTo(2, 3, 3, 3);
4606     path.close();
4607     testSimplify(reporter, path, filename);
4608 }
4609 
testQuads42(skiatest::Reporter * reporter,const char * filename)4610 static void testQuads42(skiatest::Reporter* reporter, const char* filename) {
4611     SkPath path;
4612     path.moveTo(2, 0);
4613     path.quadTo(3, 2, 3, 3);
4614     path.lineTo(3, 3);
4615     path.close();
4616     path.moveTo(2, 0);
4617     path.lineTo(0, 2);
4618     path.quadTo(3, 2, 3, 3);
4619     path.close();
4620     testSimplify(reporter, path, filename);
4621 }
4622 
testQuads56(skiatest::Reporter * reporter,const char * filename)4623 static void testQuads56(skiatest::Reporter* reporter, const char* filename) {
4624     SkPath path;
4625     path.moveTo(2, 0);
4626     path.quadTo(3, 1, 0, 2);
4627     path.lineTo(3, 2);
4628     path.close();
4629     path.moveTo(3, 0);
4630     path.lineTo(2, 1);
4631     path.quadTo(2, 1, 3, 3);
4632     path.close();
4633     testSimplify(reporter, path, filename);
4634 }
4635 
testQuads57(skiatest::Reporter * reporter,const char * filename)4636 static void testQuads57(skiatest::Reporter* reporter, const char* filename) {
4637     SkPath path;
4638     path.moveTo(1, 0);
4639     path.quadTo(3, 0, 3, 1);
4640     path.lineTo(2, 2);
4641     path.close();
4642     path.moveTo(2, 0);
4643     path.lineTo(3, 1);
4644     path.quadTo(2, 2, 3, 2);
4645     path.close();
4646     testSimplify(reporter, path, filename);
4647 }
4648 
testQuads58(skiatest::Reporter * reporter,const char * filename)4649 static void testQuads58(skiatest::Reporter* reporter, const char* filename) {
4650     SkPath path;
4651     path.moveTo(1, 0);
4652     path.quadTo(3, 0, 3, 1);
4653     path.lineTo(1, 3);
4654     path.close();
4655     path.moveTo(2, 0);
4656     path.lineTo(3, 1);
4657     path.quadTo(2, 2, 3, 2);
4658     path.close();
4659     testSimplify(reporter, path, filename);
4660 }
4661 
testQuads59(skiatest::Reporter * reporter,const char * filename)4662 static void testQuads59(skiatest::Reporter* reporter, const char* filename) {
4663     SkPath path;
4664     path.moveTo(3, 0);
4665     path.quadTo(3, 1, 3, 1);
4666     path.lineTo(2, 2);
4667     path.close();
4668     path.moveTo(2, 0);
4669     path.lineTo(3, 1);
4670     path.quadTo(2, 2, 3, 2);
4671     path.close();
4672     testSimplify(reporter, path, filename);
4673 }
4674 
testQuads60(skiatest::Reporter * reporter,const char * filename)4675 static void testQuads60(skiatest::Reporter* reporter, const char* filename) {
4676     SkPath path;
4677     path.moveTo(2, 1);
4678     path.quadTo(0, 2, 3, 2);
4679     path.lineTo(2, 3);
4680     path.close();
4681     path.moveTo(0, 0);
4682     path.lineTo(2, 0);
4683     path.quadTo(1, 1, 2, 2);
4684     path.close();
4685     testSimplify(reporter, path, filename);
4686 }
4687 
testQuads61(skiatest::Reporter * reporter,const char * filename)4688 static void testQuads61(skiatest::Reporter* reporter, const char* filename) {
4689     SkPath path;
4690     path.setFillType(SkPathFillType::kEvenOdd);
4691     path.moveTo(0, 0);
4692     path.quadTo(0, 0, 2, 0);
4693     path.lineTo(1, 1);
4694     path.close();
4695     path.moveTo(0, 0);
4696     path.lineTo(0, 0);
4697     path.quadTo(1, 0, 2, 2);
4698     path.close();
4699     testSimplify(reporter, path, filename);
4700 }
4701 
testQuadralateral10(skiatest::Reporter * reporter,const char * filename)4702 static void testQuadralateral10(skiatest::Reporter* reporter, const char* filename) {
4703     SkPath path;
4704     path.setFillType(SkPathFillType::kWinding);
4705     path.moveTo(0, 0);
4706     path.lineTo(0, 0);
4707     path.lineTo(0, 0);
4708     path.lineTo(2, 2);
4709     path.close();
4710     path.moveTo(1, 0);
4711     path.lineTo(1, 1);
4712     path.lineTo(2, 2);
4713     path.lineTo(1, 3);
4714     path.close();
4715     testSimplify(reporter, path, filename);
4716 }
4717 
testRect3(skiatest::Reporter * reporter,const char * filename)4718 static void testRect3(skiatest::Reporter* reporter, const char* filename) {
4719     SkPath path;
4720     path.setFillType(SkPathFillType::kEvenOdd);
4721     path.addRect(0, 0, 60, 60, SkPathDirection::kCCW);
4722     path.addRect(10, 30, 40, 30, SkPathDirection::kCCW);
4723     path.addRect(24, 6, 36, 36, SkPathDirection::kCCW);
4724     path.addRect(32, 6, 36, 41, SkPathDirection::kCCW);
4725     testSimplify(reporter, path, filename);
4726 }
4727 
testRect4(skiatest::Reporter * reporter,const char * filename)4728 static void testRect4(skiatest::Reporter* reporter, const char* filename) {
4729     SkPath path;
4730     path.setFillType(SkPathFillType::kEvenOdd);
4731     path.addRect(0, 0, 30, 60, SkPathDirection::kCCW);
4732     path.addRect(10, 0, 40, 30, SkPathDirection::kCCW);
4733     path.addRect(20, 0, 30, 40, SkPathDirection::kCCW);
4734     path.addRect(32, 0, 36, 41, SkPathDirection::kCCW);
4735     testSimplify(reporter, path, filename);
4736 }
4737 
testQuads62(skiatest::Reporter * reporter,const char * filename)4738 static void testQuads62(skiatest::Reporter* reporter, const char* filename) {
4739     SkPath path;
4740     path.moveTo(3, 2);
4741     path.quadTo(1, 3, 3, 3);
4742     path.lineTo(3, 3);
4743     path.close();
4744     path.moveTo(0, 0);
4745     path.lineTo(2, 0);
4746     path.quadTo(1, 3, 3, 3);
4747     path.close();
4748     testSimplify(reporter, path, filename);
4749 }
4750 
testQuads63(skiatest::Reporter * reporter,const char * filename)4751 static void testQuads63(skiatest::Reporter* reporter,const char* filename) {
4752     SkPath path;
4753     path.moveTo(3, 0);
4754     path.quadTo(0, 1, 1, 2);
4755     path.lineTo(3, 3);
4756     path.close();
4757     path.moveTo(0, 0);
4758     path.lineTo(1, 1);
4759     path.quadTo(0, 2, 3, 3);
4760     path.close();
4761     testSimplify(reporter, path, filename);
4762 }
4763 
testQuads64(skiatest::Reporter * reporter,const char * filename)4764 static void testQuads64(skiatest::Reporter* reporter,const char* filename) {
4765     SkPath path;
4766     path.moveTo(3, 0);
4767     path.quadTo(0, 1, 1, 2);
4768     path.lineTo(2, 2);
4769     path.close();
4770     path.moveTo(1, 0);
4771     path.lineTo(1, 1);
4772     path.quadTo(0, 2, 3, 3);
4773     path.close();
4774     testSimplify(reporter, path, filename);
4775 }
4776 
testTriangle1(skiatest::Reporter * reporter,const char * filename)4777 static void testTriangle1(skiatest::Reporter* reporter,const char* filename) {
4778     SkPath path;
4779     path.moveTo(0, 0);
4780     path.lineTo(1, 0);
4781     path.lineTo(2, 3);
4782     path.close();
4783     path.moveTo(0, 0);
4784     path.lineTo(1, 2);
4785     path.lineTo(1, 0);
4786     path.close();
4787     testSimplify(reporter, path, filename);
4788 }
4789 
testTriangle2(skiatest::Reporter * reporter,const char * filename)4790 static void testTriangle2(skiatest::Reporter* reporter,const char* filename) {
4791     SkPath path;
4792     path.moveTo(0, 0);
4793     path.lineTo(1, 0);
4794     path.lineTo(0, 1);
4795     path.close();
4796     path.moveTo(2, 0);
4797     path.lineTo(0, 2);
4798     path.lineTo(2, 2);
4799     path.close();
4800     testSimplify(reporter, path, filename);
4801 }
4802 
testArc(skiatest::Reporter * reporter,const char * filename)4803 static void testArc(skiatest::Reporter* reporter,const char* filename) {
4804     SkRect r = SkRect::MakeWH(150, 100);
4805     SkPath path;
4806     path.arcTo(r, 0, 0.0025f, false);
4807     testSimplify(reporter, path, filename);
4808 }
4809 
testIssue3838(skiatest::Reporter * reporter,const char * filename)4810 static void testIssue3838(skiatest::Reporter* reporter,const char* filename) {
4811     SkPath path;
4812     path.moveTo(220, 170);
4813     path.lineTo(200, 170);
4814     path.lineTo(200, 190);
4815     path.lineTo(180, 190);
4816     path.lineTo(180, 210);
4817     path.lineTo(200, 210);
4818     path.lineTo(200, 250);
4819     path.lineTo(260, 250);
4820     path.lineTo(260, 190);
4821     path.lineTo(220, 190);
4822     path.lineTo(220, 170);
4823     path.close();
4824     path.moveTo(220, 210);
4825     path.lineTo(220, 230);
4826     path.lineTo(240, 230);
4827     path.lineTo(240, 210);
4828     path.lineTo(220, 210);
4829     path.close();
4830     testSimplify(reporter, path, filename);
4831 }
4832 
testIssue3838_3(skiatest::Reporter * reporter,const char * filename)4833 static void testIssue3838_3(skiatest::Reporter* reporter,const char* filename) {
4834     SkPath path;
4835     path.moveTo(40, 10);
4836     path.lineTo(60, 10);
4837     path.lineTo(60, 30);
4838     path.lineTo(40, 30);
4839     path.lineTo(40, 10);
4840     path.moveTo(41, 11);
4841     path.lineTo(41, 29);
4842     path.lineTo(59, 29);
4843     path.lineTo(59, 11);
4844     path.lineTo(41, 11);
4845     testSimplify(reporter, path, filename);
4846 }
4847 
testQuads65(skiatest::Reporter * reporter,const char * filename)4848 static void testQuads65(skiatest::Reporter* reporter,const char* filename) {
4849     SkPath path;
4850     path.moveTo(1, 2);
4851     path.quadTo(3, 2, 0, 3);
4852     path.lineTo(1, 3);
4853     path.close();
4854     path.moveTo(1, 0);
4855     path.lineTo(1, 2);
4856     path.quadTo(3, 2, 1, 3);
4857     path.close();
4858     testSimplify(reporter, path, filename);
4859 }
4860 
fuzz864a(skiatest::Reporter * reporter,const char * filename)4861 static void fuzz864a(skiatest::Reporter* reporter,const char* filename) {
4862     SkPath path;
4863     path.moveTo(10, 90);
4864     path.lineTo(10, 90);
4865     path.lineTo(10, 30);
4866     path.lineTo(10, 30);
4867     path.lineTo(10, 90);
4868     path.close();
4869     path.moveTo(10, 90);
4870     path.lineTo(10, 90);
4871     path.lineTo(10, 30);
4872     path.lineTo(10, 30);
4873     path.lineTo(10, 90);
4874     path.close();
4875     path.moveTo(10, 90);
4876     path.lineTo(110, 90);
4877     path.lineTo(110, 30);
4878     path.lineTo(10, 30);
4879     path.lineTo(10, 90);
4880     path.close();
4881     path.moveTo(10, 30);
4882     path.lineTo(32678, 30);
4883     path.lineTo(32678, 30);
4884     path.lineTo(10, 30);
4885     path.close();
4886     path.moveTo(10, 3.35545e+07f);
4887     path.lineTo(110, 3.35545e+07f);
4888     path.lineTo(110, 30);
4889     path.lineTo(10, 30);
4890     path.lineTo(10, 3.35545e+07f);
4891     path.close();
4892     path.moveTo(10, 315);
4893     path.lineTo(110, 315);
4894     path.lineTo(110, 255);
4895     path.lineTo(10, 255);
4896     path.lineTo(10, 315);
4897     path.close();
4898     path.moveTo(0, 60);
4899     path.lineTo(100, 60);
4900     path.lineTo(100, 0);
4901     path.lineTo(0, 0);
4902     path.lineTo(0, 60);
4903     path.close();
4904     path.moveTo(10, 90);
4905     path.lineTo(110, 90);
4906     path.lineTo(110, 30);
4907     path.lineTo(10, 30);
4908     path.lineTo(10, 90);
4909     path.close();
4910     path.moveTo(10, 3.35545e+07f);
4911     path.lineTo(110, 3.35545e+07f);
4912     path.lineTo(110, 30);
4913     path.lineTo(10, 30);
4914     path.lineTo(10, 3.35545e+07f);
4915     path.close();
4916     path.moveTo(10, 90);
4917     path.lineTo(110, 90);
4918     path.lineTo(110, 30);
4919     path.lineTo(10, 30);
4920     path.lineTo(10, 90);
4921     path.close();
4922     testSimplify(reporter, path, filename);
4923 }
4924 
cr514118(skiatest::Reporter * reporter,const char * filename)4925 static void cr514118(skiatest::Reporter* reporter,const char* filename) {
4926     SkPath path;
4927 path.moveTo(SkBits2Float(0x42c80000), SkBits2Float(0x42480000));  // 100, 50
4928 path.conicTo(SkBits2Float(0x42c80000), SkBits2Float(0x00000000), SkBits2Float(0x42480000), SkBits2Float(0x00000000), SkBits2Float(0x3f3504f3));  // 100, 0, 50, 0, 0.707107f
4929 path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3));  // 0, 0, 0, 50, 0.707107f
4930 path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x42c80000), SkBits2Float(0x42480000), SkBits2Float(0x42c80000), SkBits2Float(0x3f3504f3));  // 0, 100, 50, 100, 0.707107f
4931 path.conicTo(SkBits2Float(0x42c80000), SkBits2Float(0x42c80000), SkBits2Float(0x42c80000), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3));  // 100, 100, 100, 50, 0.707107f
4932 path.close();
4933 path.moveTo(SkBits2Float(0x42c80133), SkBits2Float(0x42480000));  // 100.002f, 50
4934 path.conicTo(SkBits2Float(0x42c80133), SkBits2Float(0x00000000), SkBits2Float(0x42480267), SkBits2Float(0x00000000), SkBits2Float(0x3f3504f3));  // 100.002f, 0, 50.0023f, 0, 0.707107f
4935 path.conicTo(SkBits2Float(0x3b19b530), SkBits2Float(0x00000000), SkBits2Float(0x3b19b530), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3));  // 0.00234539f, 0, 0.00234539f, 50, 0.707107f
4936 path.conicTo(SkBits2Float(0x3b19b530), SkBits2Float(0x42c80000), SkBits2Float(0x42480267), SkBits2Float(0x42c80000), SkBits2Float(0x3f3504f3));  // 0.00234539f, 100, 50.0023f, 100, 0.707107f
4937 path.conicTo(SkBits2Float(0x42c80133), SkBits2Float(0x42c80000), SkBits2Float(0x42c80133), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3));  // 100.002f, 100, 100.002f, 50, 0.707107f
4938 path.close();
4939     testSimplify(reporter, path, filename);
4940 }
4941 
fuzz994s_11(skiatest::Reporter * reporter,const char * filename)4942 static void fuzz994s_11(skiatest::Reporter* reporter, const char* filename) {
4943     SkPath path;
4944     path.setFillType((SkPathFillType) 0);
4945 path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000));  // 10, 90
4946 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000));  // 10, 90
4947 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000));  // 10, 30
4948 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000));  // 10, 30
4949 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000));  // 10, 90
4950 path.close();
4951 path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000));  // 10, 90
4952 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000));  // 10, 90
4953 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000));  // 10, 30
4954 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000));  // 10, 30
4955 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000));  // 10, 90
4956 path.close();
4957 path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000));  // 10, 90
4958 path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x42b40000));  // 110, 90
4959 path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x41f00000));  // 110, 30
4960 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000));  // 10, 30
4961 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000));  // 10, 90
4962 path.close();
4963 path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000));  // 10, 30
4964 path.lineTo(SkBits2Float(0x46ff4c00), SkBits2Float(0x41f00000));  // 32678, 30
4965 path.lineTo(SkBits2Float(0x46ff4c00), SkBits2Float(0x41f00000));  // 32678, 30
4966 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000));  // 10, 30
4967 path.close();
4968 path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x4c000006));  // 10, 3.35545e+07f
4969 path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x4c000006));  // 110, 3.35545e+07f
4970 path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x41f00000));  // 110, 30
4971 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000));  // 10, 30
4972 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x4c000006));  // 10, 3.35545e+07f
4973 path.close();
4974 path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x439d8000));  // 10, 315
4975 path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x439d8000));  // 110, 315
4976 path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x437f0000));  // 110, 255
4977 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x437f0000));  // 10, 255
4978 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x439d8000));  // 10, 315
4979 path.close();
4980 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x42700000));  // 0, 60
4981 path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x42700000));  // 100, 60
4982 path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x00000000));  // 100, 0
4983 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000));  // 0, 0
4984 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x42700000));  // 0, 60
4985 path.close();
4986 path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000));  // 10, 90
4987 path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x42b40000));  // 110, 90
4988 path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x41f00000));  // 110, 30
4989 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000));  // 10, 30
4990 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000));  // 10, 90
4991 path.close();
4992 path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x4c000006));  // 10, 3.35545e+07f
4993 path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x4c000006));  // 110, 3.35545e+07f
4994 path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x41f00000));  // 110, 30
4995 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000));  // 10, 30
4996 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x4c000006));  // 10, 3.35545e+07f
4997 path.close();
4998 path.moveTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000));  // 10, 90
4999 path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x42b40000));  // 110, 90
5000 path.lineTo(SkBits2Float(0x42dc0000), SkBits2Float(0x41f00000));  // 110, 30
5001 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x41f00000));  // 10, 30
5002 path.lineTo(SkBits2Float(0x41200000), SkBits2Float(0x42b40000));  // 10, 90
5003 path.close();
5004 
5005     testSimplify(reporter, path, filename);
5006 }
5007 
fuzz994s_3414(skiatest::Reporter * reporter,const char * filename)5008 static void fuzz994s_3414(skiatest::Reporter* reporter, const char* filename) {
5009     SkPath path;
5010     path.setFillType((SkPathFillType) 0);
5011 path.moveTo(SkBits2Float(0x42c80000), SkBits2Float(0x42480000));  // 100, 50
5012 path.conicTo(SkBits2Float(0x42c80000), SkBits2Float(0x00000000), SkBits2Float(0x42480000), SkBits2Float(0x00000000), SkBits2Float(0x3f3504f3));  // 100, 0, 50, 0, 0.707107f
5013 path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3));  // 0, 0, 0, 50, 0.707107f
5014 path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x42c80000), SkBits2Float(0x42480000), SkBits2Float(0x42c80000), SkBits2Float(0x3f3504f3));  // 0, 100, 50, 100, 0.707107f
5015 path.conicTo(SkBits2Float(0x42c80000), SkBits2Float(0x42c80000), SkBits2Float(0x42c80000), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3));  // 100, 100, 100, 50, 0.707107f
5016 path.close();
5017 path.moveTo(SkBits2Float(0x42c84964), SkBits2Float(0x42480000));  // 100.143f, 50
5018 path.conicTo(SkBits2Float(0x42c84964), SkBits2Float(0x00000000), SkBits2Float(0x424892c8), SkBits2Float(0x00000000), SkBits2Float(0x3f3504f3));  // 100.143f, 0, 50.1433f, 0, 0.707107f
5019 path.conicTo(SkBits2Float(0x3e12c788), SkBits2Float(0x00000000), SkBits2Float(0x3e12c788), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3));  // 0.143339f, 0, 0.143339f, 50, 0.707107f
5020 path.conicTo(SkBits2Float(0x3e12c788), SkBits2Float(0x42c80000), SkBits2Float(0x424892c8), SkBits2Float(0x42c80000), SkBits2Float(0x3f3504f3));  // 0.143339f, 100, 50.1433f, 100, 0.707107f
5021 path.conicTo(SkBits2Float(0x42c84964), SkBits2Float(0x42c80000), SkBits2Float(0x42c84964), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3));  // 100.143f, 100, 100.143f, 50, 0.707107f
5022 path.close();
5023 path.moveTo(SkBits2Float(0x42c80000), SkBits2Float(0x42480000));  // 100, 50
5024 path.conicTo(SkBits2Float(0x42c80000), SkBits2Float(0x00000000), SkBits2Float(0x42480000), SkBits2Float(0x00000000), SkBits2Float(0x3f3504f3));  // 100, 0, 50, 0, 0.707107f
5025 path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3));  // 0, 0, 0, 50, 0.707107f
5026 path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x42c80000), SkBits2Float(0x42480000), SkBits2Float(0x42c80000), SkBits2Float(0x3f3504f3));  // 0, 100, 50, 100, 0.707107f
5027 path.conicTo(SkBits2Float(0x42c80000), SkBits2Float(0x42c80000), SkBits2Float(0x42c80000), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3));  // 100, 100, 100, 50, 0.707107f
5028 path.close();
5029 path.moveTo(SkBits2Float(0x4c00006b), SkBits2Float(0x424c0000));  // 3.35549e+07f, 51
5030 path.conicTo(SkBits2Float(0x4c00006b), SkBits2Float(0xcbffffe5), SkBits2Float(0x43d6e720), SkBits2Float(0xcbffffe5), SkBits2Float(0x3f3504f3));  // 3.35549e+07f, -3.35544e+07f, 429.806f, -3.35544e+07f, 0.707107f
5031 path.conicTo(SkBits2Float(0xcbffff28), SkBits2Float(0xcbffffe5), SkBits2Float(0xcbffff28), SkBits2Float(0x424c0000), SkBits2Float(0x3f3504f3));  // -3.3554e+07f, -3.35544e+07f, -3.3554e+07f, 51, 0.707107f
5032 path.conicTo(SkBits2Float(0xcbffff28), SkBits2Float(0x4c00000c), SkBits2Float(0x43d6e720), SkBits2Float(0x4c00000c), SkBits2Float(0x3f3504f3));  // -3.3554e+07f, 3.35545e+07f, 429.806f, 3.35545e+07f, 0.707107f
5033 path.conicTo(SkBits2Float(0x4c00006b), SkBits2Float(0x4c00000c), SkBits2Float(0x4c00006b), SkBits2Float(0x424c0000), SkBits2Float(0x3f3504f3));  // 3.35549e+07f, 3.35545e+07f, 3.35549e+07f, 51, 0.707107f
5034 path.close();
5035 path.moveTo(SkBits2Float(0x43ef6720), SkBits2Float(0x42480000));  // 478.806f, 50
5036 path.conicTo(SkBits2Float(0x43ef6720), SkBits2Float(0x00000000), SkBits2Float(0x43d66720), SkBits2Float(0x00000000), SkBits2Float(0x3f3504f3));  // 478.806f, 0, 428.806f, 0, 0.707107f
5037 path.conicTo(SkBits2Float(0x43bd6720), SkBits2Float(0x00000000), SkBits2Float(0x43bd6720), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3));  // 378.806f, 0, 378.806f, 50, 0.707107f
5038 path.conicTo(SkBits2Float(0x43bd6720), SkBits2Float(0x42c80000), SkBits2Float(0x43d66720), SkBits2Float(0x42c80000), SkBits2Float(0x3f3504f3));  // 378.806f, 100, 428.806f, 100, 0.707107f
5039 path.conicTo(SkBits2Float(0x43ef6720), SkBits2Float(0x42c80000), SkBits2Float(0x43ef6720), SkBits2Float(0x42480000), SkBits2Float(0x3f3504f3));  // 478.806f, 100, 478.806f, 50, 0.707107f
5040 path.close();
5041 
5042     testSimplify(reporter, path, filename);
5043 }
5044 
fuzz_twister(skiatest::Reporter * reporter,const char * filename)5045 static void fuzz_twister(skiatest::Reporter* reporter, const char* filename) {
5046     SkPath path;
5047     path.setFillType((SkPathFillType) 0);
5048 path.moveTo(0, 600);
5049 path.lineTo(3.35544e+07f, 600);
5050 path.lineTo(3.35544e+07f, 0);
5051 path.lineTo(0, 0);
5052 path.lineTo(0, 600);
5053 path.close();
5054 path.moveTo(63, 600);
5055 path.lineTo(3.35545e+07f, 600);
5056 path.lineTo(3.35545e+07f, 0);
5057 path.lineTo(63, 0);
5058 path.lineTo(63, 600);
5059 path.close();
5060 path.moveTo(93, 600);
5061 path.lineTo(3.35545e+07f, 600);
5062 path.lineTo(3.35545e+07f, 0);
5063 path.lineTo(93, 0);
5064 path.lineTo(93, 600);
5065 path.close();
5066 path.moveTo(123, 600);
5067 path.lineTo(3.35546e+07f, 600);
5068 path.lineTo(3.35546e+07f, 0);
5069 path.lineTo(123, 0);
5070 path.lineTo(123, 600);
5071 path.close();
5072     testSimplify(reporter, path, filename);
5073 }
5074 
fuzz_twister2(skiatest::Reporter * reporter,const char * filename)5075 static void fuzz_twister2(skiatest::Reporter* reporter, const char* filename) {
5076     SkPath path;
5077 
5078 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x44160000));  // 0, 600
5079 path.lineTo(SkBits2Float(0x4bfffffe), SkBits2Float(0x44160000));  // 3.35544e+07f, 600
5080 path.lineTo(SkBits2Float(0x4bfffffe), SkBits2Float(0x00000000));  // 3.35544e+07f, 0
5081 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000));  // 0, 0
5082 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x44160000));  // 0, 600
5083 path.close();
5084 
5085 path.moveTo(SkBits2Float(0x427c0000), SkBits2Float(0x00000000));  // 63, 0
5086 path.lineTo(SkBits2Float(0x4c00000f), SkBits2Float(0x00000000));  // 3.35545e+07f, 0
5087 path.lineTo(SkBits2Float(0x4c00000f), SkBits2Float(0x00000000));  // 3.35545e+07f, 0
5088 path.lineTo(SkBits2Float(0x427c0000), SkBits2Float(0x00000000));  // 63, 0
5089 path.close();
5090 
5091 path.moveTo(SkBits2Float(0x42ba0000), SkBits2Float(0x00000000));  // 93, 0
5092 path.lineTo(SkBits2Float(0x4c000016), SkBits2Float(0x00000000));  // 3.35545e+07f, 0
5093 path.lineTo(SkBits2Float(0x4c000016), SkBits2Float(0x00000000));  // 3.35545e+07f, 0
5094 path.lineTo(SkBits2Float(0x42ba0000), SkBits2Float(0x00000000));  // 93, 0
5095 path.close();
5096 
5097 path.moveTo(SkBits2Float(0x42f60000), SkBits2Float(0x00000000));  // 123, 0
5098 path.lineTo(SkBits2Float(0x4c00001e), SkBits2Float(0x00000000));  // 3.35546e+07f, 0
5099 path.lineTo(SkBits2Float(0x4c00001e), SkBits2Float(0x00000000));  // 3.35546e+07f, 0
5100 path.lineTo(SkBits2Float(0x42f60000), SkBits2Float(0x00000000));  // 123, 0
5101 path.close();
5102 
5103     testSimplify(reporter, path, filename);
5104 }
5105 
fuzz763_4713_b(skiatest::Reporter * reporter,const char * filename)5106 static void fuzz763_4713_b(skiatest::Reporter* reporter, const char* filename) {
5107     SkPath path;
5108     path.setFillType((SkPathFillType) 0);
5109 path.moveTo(SkBits2Float(0x42240000), SkBits2Float(0x42040000));
5110 path.quadTo(SkBits2Float(0x42240000), SkBits2Float(0x4211413d), SkBits2Float(0x421aa09e), SkBits2Float(0x421aa09e));
5111 path.quadTo(SkBits2Float(0x4211413d), SkBits2Float(0x42240000), SkBits2Float(0x42040000), SkBits2Float(0x42240000));
5112 path.quadTo(SkBits2Float(0x41ed7d86), SkBits2Float(0x42240000), SkBits2Float(0x41dabec3), SkBits2Float(0x421aa09e));
5113 path.quadTo(SkBits2Float(0x41c80000), SkBits2Float(0x4211413d), SkBits2Float(0x41c80000), SkBits2Float(0x42040000));
5114 path.quadTo(SkBits2Float(0x41c80000), SkBits2Float(0x41ed7d86), SkBits2Float(0x41dabec3), SkBits2Float(0x41dabec3));
5115 path.quadTo(SkBits2Float(0x41ed7d86), SkBits2Float(0x41c80000), SkBits2Float(0x42040000), SkBits2Float(0x41c80000));
5116 path.quadTo(SkBits2Float(0x4211413d), SkBits2Float(0x41c80000), SkBits2Float(0x421aa09e), SkBits2Float(0x41dabec3));
5117 path.quadTo(SkBits2Float(0x42240000), SkBits2Float(0x41ed7d86), SkBits2Float(0x42240000), SkBits2Float(0x42040000));
5118 path.close();
5119 
5120 path.moveTo(SkBits2Float(0x4204f72e), SkBits2Float(0x41c56cd2));
5121 path.quadTo(SkBits2Float(0x42123842), SkBits2Float(0x41c52adf), SkBits2Float(0x421baed7), SkBits2Float(0x41d7bac6));
5122 path.quadTo(SkBits2Float(0x4225256d), SkBits2Float(0x41ea4aad), SkBits2Float(0x42254667), SkBits2Float(0x4202666b));
5123 path.quadTo(SkBits2Float(0x42256760), SkBits2Float(0x420fa77f), SkBits2Float(0x421c1f6c), SkBits2Float(0x42191e14));
5124 path.quadTo(SkBits2Float(0x421bff97), SkBits2Float(0x42193e89), SkBits2Float(0x421bdf6b), SkBits2Float(0x42195eb8));
5125 path.quadTo(SkBits2Float(0x421bbff6), SkBits2Float(0x42197f32), SkBits2Float(0x421ba03b), SkBits2Float(0x42199f57));
5126 path.quadTo(SkBits2Float(0x421b605e), SkBits2Float(0x4219e00a), SkBits2Float(0x421b1fa8), SkBits2Float(0x421a1f22));
5127 path.quadTo(SkBits2Float(0x421ae0f1), SkBits2Float(0x421a604b), SkBits2Float(0x421aa09e), SkBits2Float(0x421aa09e));
5128 path.quadTo(SkBits2Float(0x4211413d), SkBits2Float(0x42240000), SkBits2Float(0x42040000), SkBits2Float(0x42240000));
5129 path.quadTo(SkBits2Float(0x41ed7d86), SkBits2Float(0x42240000), SkBits2Float(0x41dabec3), SkBits2Float(0x421aa09e));
5130 path.quadTo(SkBits2Float(0x41c80000), SkBits2Float(0x4211413d), SkBits2Float(0x41c80000), SkBits2Float(0x42040000));
5131 path.quadTo(SkBits2Float(0x41c80000), SkBits2Float(0x41ed7d86), SkBits2Float(0x41dabec3), SkBits2Float(0x41dabec3));
5132 path.quadTo(SkBits2Float(0x41db19b1), SkBits2Float(0x41da63d5), SkBits2Float(0x41db755b), SkBits2Float(0x41da0a9b));
5133 path.quadTo(SkBits2Float(0x41dbce01), SkBits2Float(0x41d9ae59), SkBits2Float(0x41dc285e), SkBits2Float(0x41d952ce));
5134 path.quadTo(SkBits2Float(0x41dc55b6), SkBits2Float(0x41d924df), SkBits2Float(0x41dc82cd), SkBits2Float(0x41d8f7cd));
5135 path.quadTo(SkBits2Float(0x41dcaf1e), SkBits2Float(0x41d8ca01), SkBits2Float(0x41dcdc4c), SkBits2Float(0x41d89bf0));
5136 path.quadTo(SkBits2Float(0x41ef6c33), SkBits2Float(0x41c5aec5), SkBits2Float(0x4204f72e), SkBits2Float(0x41c56cd2));
5137 path.close();
5138 testSimplify(reporter, path, filename);
5139 }
5140 
dean4(skiatest::Reporter * reporter,const char * filename)5141 static void dean4(skiatest::Reporter* reporter, const char* filename) {
5142   SkPath path;
5143 
5144   // start region
5145   // start loop, contour: 1
5146   // Segment 1145.3381097316742 2017.6783947944641 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2017.0033947825432
5147   path.moveTo(1145.3381347656250, 2017.6783447265625);
5148   path.lineTo(1145.3381347656250, 2017.0034179687500);
5149   // Segment 1145.3381097316742 2017.0033947825432 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.6927231521568 2017.0033947825432
5150   path.lineTo(1143.6927490234375, 2017.0034179687500);
5151   // Segment 1143.6927231521568 2017.0033947825432 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1144.8640675112890 2018.1589246992417
5152   path.lineTo(1144.8640136718750, 2018.1589355468750);
5153   // Segment 1144.8640675112890 2018.1589246992417 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2017.6783947944641
5154   path.lineTo(1145.3381347656250, 2017.6783447265625);
5155   path.close();
5156   // start loop, contour: 2
5157   // Segment 1145.3381097316742 2016.3216052055359 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1144.8640675258462 2015.8410752863977
5158   path.moveTo(1145.3381347656250, 2016.3216552734375);
5159   path.lineTo(1144.8640136718750, 2015.8410644531250);
5160   // Segment 1144.8640675258462 2015.8410752863977 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.6927230811802 2016.9966052174568
5161   path.lineTo(1143.6927490234375, 2016.9965820312500);
5162   // Segment 1143.6927230811802 2016.9966052174568 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2016.9966052174568
5163   path.lineTo(1145.3381347656250, 2016.9965820312500);
5164   // Segment 1145.3381097316742 2016.9966052174568 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2016.3216052055359
5165   path.lineTo(1145.3381347656250, 2016.3216552734375);
5166   path.close();
5167   // start loop, contour: 3
5168   // Segment 1147.3323798179626 2014.3542600870132 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220239557 2014.8347900059885
5169   path.moveTo(1147.3323974609375, 2014.3542480468750);
5170   path.lineTo(1147.8063964843750, 2014.8348388671875);
5171   // Segment 1147.8064220239557 2014.8347900059885 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220516883 2014.8347899786306
5172   path.lineTo(1147.8063964843750, 2014.8348388671875);
5173   // Segment 1147.8064220516883 2014.8347899786306 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.3323798179626 2014.3542600870132
5174   path.lineTo(1147.3323974609375, 2014.3542480468750);
5175   path.close();
5176   // start loop, contour: 4
5177   // Segment 1146.3696286678314 2013.4045072346926 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436708778083 2013.8850371497379
5178   path.moveTo(1146.3696289062500, 2013.4045410156250);
5179   path.lineTo(1146.8436279296875, 2013.8850097656250);
5180   // Segment 1146.8436708778083 2013.8850371497379 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436709015571 2013.8850371263100
5181   path.lineTo(1146.8436279296875, 2013.8850097656250);
5182   // Segment 1146.8436709015571 2013.8850371263100 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.3696286678314 2013.4045072346926
5183   path.lineTo(1146.3696289062500, 2013.4045410156250);
5184   path.close();
5185   // start loop, contour: 5
5186   // Segment 1143.2063037902117 2016.5251235961914 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615802348 2016.0445936811461
5187   path.moveTo(1143.2062988281250, 2016.5251464843750);
5188   path.lineTo(1142.7322998046875, 2016.0445556640625);
5189   // Segment 1142.7322615802348 2016.0445936811461 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615564860 2016.0445937045740
5190   path.lineTo(1142.7322998046875, 2016.0445556640625);
5191   // Segment 1142.7322615564860 2016.0445937045740 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.2063037902117 2016.5251235961914
5192   path.lineTo(1143.2062988281250, 2016.5251464843750);
5193   path.close();
5194   // start loop, contour: 6
5195   // Segment 1143.0687679275870 2016.7286419868469 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.5428101613127 2017.2091718784643
5196   path.moveTo(1143.0687255859375, 2016.7286376953125);
5197   path.lineTo(1143.5428466796875, 2017.2092285156250);
5198   // Segment 1143.5428101613127 2017.2091718784643 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.7437679395080 2017.0109272411960
5199   path.lineTo(1143.7437744140625, 2017.0109863281250);
5200   // Segment 1143.7437679395080 2017.0109272411960 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.7437679395080 2016.7286419868469
5201   path.lineTo(1143.7437744140625, 2016.7286376953125);
5202   // Segment 1143.7437679395080 2016.7286419868469 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.0687679275870 2016.7286419868469
5203   path.lineTo(1143.0687255859375, 2016.7286376953125);
5204   path.close();
5205   // start loop, contour: 7
5206   // Segment 1143.2063037902117 2017.4748764038086 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615603032 2017.9554062991915
5207   path.moveTo(1143.2062988281250, 2017.4748535156250);
5208   path.lineTo(1142.7322998046875, 2017.9554443359375);
5209   // Segment 1142.7322615603032 2017.9554062991915 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615746241 2017.9554063133189
5210   path.lineTo(1142.7322998046875, 2017.9554443359375);
5211   // Segment 1142.7322615746241 2017.9554063133189 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.2063037902117 2017.4748764038086
5212   path.lineTo(1143.2062988281250, 2017.4748535156250);
5213   path.close();
5214   // start loop, contour: 8
5215   // Segment 1146.3696286678314 2020.5954928398132 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436708977399 2020.1149629444303
5216   path.moveTo(1146.3696289062500, 2020.5954589843750);
5217   path.lineTo(1146.8436279296875, 2020.1149902343750);
5218   // Segment 1146.8436708977399 2020.1149629444303 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436708834190 2020.1149629303029
5219   path.lineTo(1146.8436279296875, 2020.1149902343750);
5220   // Segment 1146.8436708834190 2020.1149629303029 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.3696286678314 2020.5954928398132
5221   path.lineTo(1146.3696289062500, 2020.5954589843750);
5222   path.close();
5223   // start loop, contour: 9
5224   // Segment 1147.3323798179626 2019.6457400321960 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220484741 2019.1652101374082
5225   path.moveTo(1147.3323974609375, 2019.6457519531250);
5226   path.lineTo(1147.8063964843750, 2019.1651611328125);
5227   // Segment 1147.8064220484741 2019.1652101374082 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220383478 2019.1652101274185
5228   path.lineTo(1147.8063964843750, 2019.1651611328125);
5229   // Segment 1147.8064220383478 2019.1652101274185 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.3323798179626 2019.6457400321960
5230   path.lineTo(1147.3323974609375, 2019.6457519531250);
5231   path.close();
5232   // start loop, contour: 10
5233   // Segment 1145.3381097316742 2018.3533948063850 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6848182678223 2018.3533948063850
5234   path.moveTo(1145.3381347656250, 2018.3533935546875);
5235   path.lineTo(1156.6848144531250, 2018.3533935546875);
5236   // Segment 1156.6848182678223 2018.3533948063850 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6848182678223 2017.0033947825432
5237   path.lineTo(1156.6848144531250, 2017.0034179687500);
5238   // Segment 1156.6848182678223 2017.0033947825432 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2017.0033947825432
5239   path.lineTo(1145.3381347656250, 2017.0034179687500);
5240   // Segment 1145.3381097316742 2017.0033947825432 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2018.3533948063850
5241   path.lineTo(1145.3381347656250, 2018.3533935546875);
5242   path.close();
5243   // start loop, contour: 11
5244   // Segment 1156.6848182678223 2018.3533948063850 0.3569631313191 0.0000000000000 -0.2645167304388 0.2609454237780 1157.6574279406423 2017.9723661860094
5245   path.moveTo(1156.6848144531250, 2018.3533935546875);
5246   path.cubicTo(1157.0417480468750, 2018.3533935546875, 1157.3929443359375, 2018.2332763671875, 1157.6574707031250, 2017.9724121093750);
5247   // Segment 1157.6574279406423 2017.9723661860094 0.2653344079822 -0.2617520616521 0.0000000000000 0.3596905289350 1158.0474975705147 2017.0000000000000
5248   path.cubicTo(1157.9227294921875, 2017.7105712890625, 1158.0474853515625, 2017.3597412109375, 1158.0474853515625, 2017.0000000000000);
5249   // Segment 1158.0474975705147 2017.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6974975466728 2017.0000000000000
5250   path.lineTo(1156.6975097656250, 2017.0000000000000);
5251   // Segment 1156.6974975466728 2017.0000000000000 0.0028009248351 0.0403311981485 0.0118595244351 -0.0220843520393 1156.6941780622435 2017.0325257649940
5252   path.cubicTo(1156.7003173828125, 2017.0402832031250, 1156.7060546875000, 2017.0104980468750, 1156.6942138671875, 2017.0324707031250);
5253   // Segment 1156.6941780622435 2017.0325257649940 -0.0032637855860 0.0184860248562 0.0120617528380 -0.0065934603083 1156.7093435710913 2017.0113063061967
5254   path.cubicTo(1156.6909179687500, 2017.0510253906250, 1156.7214355468750, 2017.0047607421875, 1156.7093505859375, 2017.0113525390625);
5255   // split at 0.4496445953846
5256   // path.cubicTo(1156.6927490234375, 2017.0407714843750, 1156.6981201171875, 2017.0360107421875, 1156.7033691406250, 2017.0289306640625);
5257   // path.cubicTo(1156.7097167968750, 2017.0201416015625, 1156.7159423828125, 2017.0076904296875, 1156.7093505859375, 2017.0113525390625);
5258   // Segment 1156.7093435710913 2017.0113063061967 -0.0070717276929 0.0122220954353 0.0203483811973 -0.0039136894418 1156.7268834554304 2016.9985353221975
5259   path.cubicTo(1156.7022705078125, 2017.0235595703125, 1156.7471923828125, 2016.9946289062500, 1156.7269287109375, 2016.9985351562500);
5260   // Segment 1156.7268834554304 2016.9985353221975 -0.0244396787691 0.0123649140586 0.0433322464027 0.0026558844666 1156.6848182678223 2017.0033947825432
5261   path.cubicTo(1156.7023925781250, 2017.0108642578125, 1156.7281494140625, 2017.0061035156250, 1156.6848144531250, 2017.0034179687500);
5262   // split at 0.4418420493603
5263   // path.cubicTo(1156.7160644531250, 2017.0040283203125, 1156.7150878906250, 2017.0061035156250, 1156.7136230468750, 2017.0065917968750);
5264   // path.cubicTo(1156.7116699218750, 2017.0070800781250, 1156.7089843750000, 2017.0048828125000, 1156.6848144531250, 2017.0034179687500);
5265   // Segment 1156.6848182678223 2017.0033947825432 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6848182678223 2018.3533948063850
5266   path.lineTo(1156.6848144531250, 2018.3533935546875);
5267   path.close();
5268   // start loop, contour: 12
5269   // Segment 1158.0474975705147 2017.0000000000000 0.0000000000000 -0.3596905289350 0.2653344079822 0.2617520616521 1157.6574279406423 2016.0276338139906
5270   path.moveTo(1158.0474853515625, 2017.0000000000000);
5271   path.cubicTo(1158.0474853515625, 2016.6402587890625, 1157.9227294921875, 2016.2894287109375, 1157.6574707031250, 2016.0275878906250);
5272   // Segment 1157.6574279406423 2016.0276338139906 -0.2645167304388 -0.2609454237780 0.3569631313191 0.0000000000000 1156.6848182678223 2015.6466051936150
5273   path.cubicTo(1157.3929443359375, 2015.7667236328125, 1157.0417480468750, 2015.6466064453125, 1156.6848144531250, 2015.6466064453125);
5274   // split at 0.5481675863266
5275   // path.cubicTo(1157.5124511718750, 2015.8846435546875, 1157.3414306640625, 2015.7839355468750, 1157.1577148437500, 2015.7220458984375);
5276   // path.cubicTo(1157.0062255859375, 2015.6711425781250, 1156.8460693359375, 2015.6466064453125, 1156.6848144531250, 2015.6466064453125);
5277   // Segment 1156.6848182678223 2015.6466051936150 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6848182678223 2016.9966052174568
5278   path.lineTo(1156.6848144531250, 2016.9965820312500);
5279   // Segment 1156.6848182678223 2016.9966052174568 0.0433322464027 -0.0026558844666 -0.0244396787691 -0.0123649140586 1156.7268834554304 2017.0014646778025
5280   path.cubicTo(1156.7281494140625, 2016.9938964843750, 1156.7023925781250, 2016.9891357421875, 1156.7269287109375, 2017.0014648437500);
5281   // split at 0.5581579208374
5282   // path.cubicTo(1156.7089843750000, 2016.9951171875000, 1156.7116699218750, 2016.9929199218750, 1156.7136230468750, 2016.9934082031250);
5283   // path.cubicTo(1156.7150878906250, 2016.9938964843750, 1156.7160644531250, 2016.9959716796875, 1156.7269287109375, 2017.0014648437500);
5284   // Segment 1156.7268834554304 2017.0014646778025 0.0203483811973 0.0039136894418 -0.0070717276929 -0.0122220954353 1156.7093435710913 2016.9886936938033
5285   path.cubicTo(1156.7471923828125, 2017.0053710937500, 1156.7022705078125, 2016.9764404296875, 1156.7093505859375, 2016.9886474609375);
5286   // Segment 1156.7093435710913 2016.9886936938033 0.0120617528380 0.0065934603083 -0.0032637855860 -0.0184860248562 1156.6941780622435 2016.9674742350060
5287   path.cubicTo(1156.7214355468750, 2016.9952392578125, 1156.6909179687500, 2016.9489746093750, 1156.6942138671875, 2016.9675292968750);
5288   // Segment 1156.6941780622435 2016.9674742350060 0.0118595244351 0.0220843520393 0.0028009248351 -0.0403311981485 1156.6974975466728 2017.0000000000000
5289   path.cubicTo(1156.7060546875000, 2016.9895019531250, 1156.7003173828125, 2016.9597167968750, 1156.6975097656250, 2017.0000000000000);
5290   // split at 0.4572408795357
5291   // path.cubicTo(1156.6995849609375, 2016.9775390625000, 1156.7014160156250, 2016.9768066406250, 1156.7014160156250, 2016.9768066406250);
5292   // path.cubicTo(1156.7014160156250, 2016.9769287109375, 1156.6989746093750, 2016.9781494140625, 1156.6975097656250, 2017.0000000000000);
5293   // Segment 1156.6974975466728 2017.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1158.0474975705147 2017.0000000000000
5294   path.lineTo(1158.0474853515625, 2017.0000000000000);
5295   path.close();
5296   // start loop, contour: 13
5297   // Segment 1156.6848182678223 2015.6466051936150 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2015.6466051936150
5298   path.moveTo(1156.6848144531250, 2015.6466064453125);
5299   path.lineTo(1145.3381347656250, 2015.6466064453125);
5300   // Segment 1145.3381097316742 2015.6466051936150 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.3381097316742 2016.9966052174568
5301   path.lineTo(1145.3381347656250, 2016.9965820312500);
5302   // Segment 1145.3381097316742 2016.9966052174568 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6848182678223 2016.9966052174568
5303   path.lineTo(1156.6848144531250, 2016.9965820312500);
5304   // Segment 1156.6848182678223 2016.9966052174568 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1156.6848182678223 2015.6466051936150
5305   path.lineTo(1156.6848144531250, 2015.6466064453125);
5306   path.close();
5307   // start loop, contour: 14
5308   // Segment 1145.8121519375022 2016.8021351246741 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220237907 2014.8347900061515
5309   path.moveTo(1145.8121337890625, 2016.8021240234375);
5310   path.lineTo(1147.8063964843750, 2014.8348388671875);
5311   // Segment 1147.8064220237907 2014.8347900061515 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8583376121346 2013.8737301678750
5312   path.lineTo(1146.8583984375000, 2013.8737792968750);
5313   // Segment 1146.8583376121346 2013.8737301678750 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1144.8640675258462 2015.8410752863977
5314   path.lineTo(1144.8640136718750, 2015.8410644531250);
5315   // Segment 1144.8640675258462 2015.8410752863977 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.8121519375022 2016.8021351246741
5316   path.lineTo(1145.8121337890625, 2016.8021240234375);
5317   path.close();
5318   // start loop, contour: 15
5319   // Segment 1147.8064220516883 2014.8347899786306 0.5430154146087 -0.5356841365729 0.5430154146087 0.5356841365729 1147.8064220516883 2012.9239773430752
5320   path.moveTo(1147.8063964843750, 2014.8348388671875);
5321   path.cubicTo(1148.3494873046875, 2014.2990722656250, 1148.3494873046875, 2013.4597167968750, 1147.8063964843750, 2012.9239501953125);
5322   // Segment 1147.8064220516883 2012.9239773430752 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8583375842370 2013.8850371263100
5323   path.lineTo(1146.8583984375000, 2013.8850097656250);
5324   // Segment 1146.8583375842370 2013.8850371263100 0.0071280060876 0.0070317705240 0.0071280060876 -0.0070317705240 1146.8583375842370 2013.8737301953959
5325   path.cubicTo(1146.8654785156250, 2013.8920898437500, 1146.8654785156250, 2013.8666992187500, 1146.8583984375000, 2013.8737792968750);
5326   // Segment 1146.8583375842370 2013.8737301953959 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220516883 2014.8347899786306
5327   path.lineTo(1147.8063964843750, 2014.8348388671875);
5328   path.close();
5329   // start loop, contour: 16
5330   // Segment 1147.8064220516883 2012.9239773430752 -0.5379138488298 -0.5306514472866 0.5379138488298 -0.5306514472866 1145.8955864341058 2012.9239773430752
5331   path.moveTo(1147.8063964843750, 2012.9239501953125);
5332   path.cubicTo(1147.2685546875000, 2012.3933105468750, 1146.4334716796875, 2012.3933105468750, 1145.8956298828125, 2012.9239501953125);
5333   // Segment 1145.8955864341058 2012.9239773430752 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436709015571 2013.8850371263100
5334   path.lineTo(1146.8436279296875, 2013.8850097656250);
5335   // Segment 1146.8436709015571 2013.8850371263100 0.0122295718664 -0.0120644598103 -0.0122295718664 -0.0120644598103 1146.8583375842370 2013.8850371263100
5336   path.cubicTo(1146.8559570312500, 2013.8729248046875, 1146.8460693359375, 2013.8729248046875, 1146.8583984375000, 2013.8850097656250);
5337   // Segment 1146.8583375842370 2013.8850371263100 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220516883 2012.9239773430752
5338   path.lineTo(1147.8063964843750, 2012.9239501953125);
5339   path.close();
5340   // start loop, contour: 17
5341   // Segment 1145.8955864579798 2012.9239773195236 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615803600 2016.0445936810224
5342   path.moveTo(1145.8956298828125, 2012.9239501953125);
5343   path.lineTo(1142.7322998046875, 2016.0445556640625);
5344   // Segment 1142.7322615803600 2016.0445936810224 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.6803460000633 2017.0056535113604
5345   path.lineTo(1143.6802978515625, 2017.0056152343750);
5346   // Segment 1143.6803460000633 2017.0056535113604 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436708776831 2013.8850371498615
5347   path.lineTo(1146.8436279296875, 2013.8850097656250);
5348   // Segment 1146.8436708776831 2013.8850371498615 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.8955864579798 2012.9239773195236
5349   path.lineTo(1145.8956298828125, 2012.9239501953125);
5350   path.close();
5351   // start loop, contour: 18
5352   // Segment 1142.7322615564860 2016.0445937045740 -0.0343838913237 0.0339196727021 0.0561572931720 -0.0710493024751 1142.5744069596683 2016.2183613784646
5353   path.moveTo(1142.7322998046875, 2016.0445556640625);
5354   path.cubicTo(1142.6978759765625, 2016.0784912109375, 1142.6306152343750, 2016.1473388671875, 1142.5744628906250, 2016.2183837890625);
5355   // Segment 1142.5744069596683 2016.2183613784646 -0.0547779032556 0.0720510806539 0.0000000000000 -0.2570904015602 1142.3937679156661 2016.7286419868469
5356   path.cubicTo(1142.5196533203125, 2016.2904052734375, 1142.3937988281250, 2016.4715576171875, 1142.3937988281250, 2016.7286376953125);
5357   // Segment 1142.3937679156661 2016.7286419868469 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.7437679395080 2016.7286419868469
5358   path.lineTo(1143.7437744140625, 2016.7286376953125);
5359   // Segment 1143.7437679395080 2016.7286419868469 -0.0051909534315 0.0665915567290 0.0133980913650 -0.0361675066532 1143.6976291086639 2016.9514128270803
5360   path.cubicTo(1143.7385253906250, 2016.7952880859375, 1143.7110595703125, 2016.9152832031250, 1143.6976318359375, 2016.9514160156250);
5361   // Segment 1143.6976291086639 2016.9514128270803 -0.0142876819622 0.0277028472317 0.0040377216094 -0.0063254385208 1143.6490888124401 2017.0354042045738
5362   path.cubicTo(1143.6833496093750, 2016.9791259765625, 1143.6530761718750, 2017.0290527343750, 1143.6490478515625, 2017.0354003906250);
5363   // Segment 1143.6490888124401 2017.0354042045738 -0.0045813437564 0.0032098513409 -0.0343840362634 0.0339198156850 1143.6803460239373 2017.0056534878088
5364   path.cubicTo(1143.6445312500000, 2017.0385742187500, 1143.6459960937500, 2017.0395507812500, 1143.6802978515625, 2017.0056152343750);
5365   // Segment 1143.6803460239373 2017.0056534878088 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615564860 2016.0445937045740
5366   path.lineTo(1142.7322998046875, 2016.0445556640625);
5367   path.close();
5368   // start loop, contour: 19
5369   // Segment 1142.5947256938614 2016.2481120952295 -0.1857487117715 0.1832409092043 0.0167379373694 -0.0990717748979 1142.3430278987244 2016.7518748698508
5370   path.moveTo(1142.5947265625000, 2016.2481689453125);
5371   path.cubicTo(1142.4089355468750, 2016.4313964843750, 1142.3597412109375, 2016.6528320312500, 1142.3430175781250, 2016.7518310546875);
5372   // Segment 1142.3430278987244 2016.7518748698508 -0.0156657977007 0.1069052535795 0.0000000000000 -0.0339197441936 1142.3249999880791 2017.0000000000000
5373   path.cubicTo(1142.3273925781250, 2016.8587646484375, 1142.3249511718750, 2016.9660644531250, 1142.3249511718750, 2017.0000000000000);
5374   // Segment 1142.3249999880791 2017.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.6750000119209 2017.0000000000000
5375   path.lineTo(1143.6750488281250, 2017.0000000000000);
5376   // Segment 1143.6750000119209 2017.0000000000000 0.0000000000000 -0.0339197441936 -0.0015261841961 -0.0051459911965 1143.6741640831724 2016.9767671169961
5377   path.cubicTo(1143.6750488281250, 2016.9660644531250, 1143.6726074218750, 2016.9716796875000, 1143.6741943359375, 2016.9768066406250);
5378   // Segment 1143.6741640831724 2016.9767671169961 -0.0007886982052 0.0013596649622 0.0074114058388 -0.0224954551713 1143.6525251830094 2017.0486861571169
5379   path.cubicTo(1143.6733398437500, 2016.9781494140625, 1143.6599121093750, 2017.0262451171875, 1143.6524658203125, 2017.0487060546875);
5380   // split at 0.4203657805920
5381   // path.cubicTo(1143.6738281250000, 2016.9774169921875, 1143.6712646484375, 2016.9862060546875, 1143.6678466796875, 2016.9979248046875);
5382   // path.cubicTo(1143.6630859375000, 2017.0140380859375, 1143.6567382812500, 2017.0356445312500, 1143.6524658203125, 2017.0487060546875);
5383   // Segment 1143.6525251830094 2017.0486861571169 -0.0119644334077 0.0236755853369 0.0381324473830 -0.0447670202574 1143.5428101613127 2017.2091718784643
5384   path.cubicTo(1143.6405029296875, 2017.0723876953125, 1143.5809326171875, 2017.1644287109375, 1143.5428466796875, 2017.2092285156250);
5385   // Segment 1143.5428101613127 2017.2091718784643 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.5947256938614 2016.2481120952295
5386   path.lineTo(1142.5947265625000, 2016.2481689453125);
5387   path.close();
5388   // start loop, contour: 20
5389   // Segment 1142.3249999880791 2017.0000000000000 0.0000000000000 0.0339197441936 -0.0156657977007 -0.1069052535795 1142.3430278987244 2017.2481251301492
5390   path.moveTo(1142.3249511718750, 2017.0000000000000);
5391   path.cubicTo(1142.3249511718750, 2017.0339355468750, 1142.3273925781250, 2017.1412353515625, 1142.3430175781250, 2017.2481689453125);
5392   // Segment 1142.3430278987244 2017.2481251301492 0.0167379373694 0.0990717748979 -0.1857487117715 -0.1832409092043 1142.5947256938614 2017.7518879047705
5393   path.cubicTo(1142.3597412109375, 2017.3471679687500, 1142.4089355468750, 2017.5686035156250, 1142.5947265625000, 2017.7518310546875);
5394   // split at 0.4008532166481
5395   // path.cubicTo(1142.3497314453125, 2017.2878417968750, 1142.3616943359375, 2017.3471679687500, 1142.3854980468750, 2017.4158935546875);
5396   // path.cubicTo(1142.4211425781250, 2017.5185546875000, 1142.4833984375000, 2017.6420898437500, 1142.5947265625000, 2017.7518310546875);
5397   // Segment 1142.5947256938614 2017.7518879047705 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.5428101613127 2016.7908281215357
5398   path.lineTo(1143.5428466796875, 2016.7907714843750);
5399   // Segment 1143.5428101613127 2016.7908281215357 0.0381324473830 0.0447670202574 -0.0119644334077 -0.0236755853369 1143.6525251830094 2016.9513138428831
5400   path.cubicTo(1143.5809326171875, 2016.8355712890625, 1143.6405029296875, 2016.9276123046875, 1143.6524658203125, 2016.9512939453125);
5401   // Segment 1143.6525251830094 2016.9513138428831 0.0074114058388 0.0224954551713 -0.0007886982052 -0.0013596649622 1143.6741640831724 2017.0232328830039
5402   path.cubicTo(1143.6599121093750, 2016.9737548828125, 1143.6733398437500, 2017.0218505859375, 1143.6741943359375, 2017.0231933593750);
5403   // Segment 1143.6741640831724 2017.0232328830039 -0.0015261841961 0.0051459911965 0.0000000000000 0.0339197441936 1143.6750000119209 2017.0000000000000
5404   path.cubicTo(1143.6726074218750, 2017.0283203125000, 1143.6750488281250, 2017.0339355468750, 1143.6750488281250, 2017.0000000000000);
5405   // Segment 1143.6750000119209 2017.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.3249999880791 2017.0000000000000
5406   path.lineTo(1142.3249511718750, 2017.0000000000000);
5407   path.close();
5408   // start loop, contour: 21
5409   // Segment 1142.5947256938614 2017.7518879047705 -0.0799271403989 -0.1522613934208 -0.2174629955730 -0.2879403701950 1142.7322615564860 2017.9554062954260
5410   path.moveTo(1142.5947265625000, 2017.7518310546875);
5411   path.cubicTo(1142.5147705078125, 2017.5996093750000, 1142.5147705078125, 2017.6674804687500, 1142.7322998046875, 2017.9554443359375);
5412   // Segment 1142.7322615564860 2017.9554062954260 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.6803460239373 2016.9943465121912
5413   path.lineTo(1143.6802978515625, 2016.9943847656250);
5414   // Segment 1143.6803460239373 2016.9943465121912 0.0799271403989 0.1522613934208 0.2174629955730 0.2879403701950 1143.5428101613127 2016.7908281215357
5415   path.cubicTo(1143.7602539062500, 2017.1466064453125, 1143.7602539062500, 2017.0787353515625, 1143.5428466796875, 2016.7907714843750);
5416   // Segment 1143.5428101613127 2016.7908281215357 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.5947256938614 2017.7518879047705
5417   path.lineTo(1142.5947265625000, 2017.7518310546875);
5418   path.close();
5419   // start loop, contour: 22
5420   // Segment 1142.7322615746241 2017.9554063133189 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.8955864522438 2021.0760227493236
5421   path.moveTo(1142.7322998046875, 2017.9554443359375);
5422   path.lineTo(1145.8956298828125, 2021.0760498046875);
5423   // Segment 1145.8955864522438 2021.0760227493236 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8436708834190 2020.1149629303029
5424   path.lineTo(1146.8436279296875, 2020.1149902343750);
5425   // Segment 1146.8436708834190 2020.1149629303029 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1143.6803460057993 2016.9943464942983
5426   path.lineTo(1143.6802978515625, 2016.9943847656250);
5427   // Segment 1143.6803460057993 2016.9943464942983 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1142.7322615746241 2017.9554063133189
5428   path.lineTo(1142.7322998046875, 2017.9554443359375);
5429   path.close();
5430   // start loop, contour: 23
5431   // Segment 1145.8955864341058 2021.0760227314306 0.2730164534637 0.2693304447891 -0.3016608168437 0.0000000000000 1146.8510041236877 2021.4740112423897
5432   path.moveTo(1145.8956298828125, 2021.0760498046875);
5433   path.cubicTo(1146.1685791015625, 2021.3453369140625, 1146.5493164062500, 2021.4739990234375, 1146.8509521484375, 2021.4739990234375);
5434   // Segment 1146.8510041236877 2021.4740112423897 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8510041236877 2020.1240112185478
5435   path.lineTo(1146.8509521484375, 2020.1240234375000);
5436   // Segment 1146.8510041236877 2020.1240112185478 -0.0031276099109 0.0031991747760 0.0281856144058 0.0140930868099 1146.8580791488898 2020.1202473991566
5437   path.cubicTo(1146.8479003906250, 2020.1271972656250, 1146.8862304687500, 2020.1343994140625, 1146.8580322265625, 2020.1202392578125);
5438   // split at 0.3845077157021
5439   // path.cubicTo(1146.8497314453125, 2020.1252441406250, 1146.8547363281250, 2020.1270751953125, 1146.8596191406250, 2020.1280517578125);
5440   // path.cubicTo(1146.8675537109375, 2020.1296386718750, 1146.8753662109375, 2020.1289062500000, 1146.8580322265625, 2020.1202392578125);
5441   // Segment 1146.8580791488898 2020.1202473991566 -0.0369995545027 -0.0123195805663 0.0067223483810 0.0136883790721 1146.8436709015571 2020.1149629481959
5442   path.cubicTo(1146.8210449218750, 2020.1079101562500, 1146.8503417968750, 2020.1286621093750, 1146.8436279296875, 2020.1149902343750);
5443   // Segment 1146.8436709015571 2020.1149629481959 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.8955864341058 2021.0760227314306
5444   path.lineTo(1145.8956298828125, 2021.0760498046875);
5445   path.close();
5446   // start loop, contour: 24
5447   // Segment 1146.8510041236877 2021.4740112423897 0.3016605789999 0.0000000000000 -0.2730166120260 0.2693306012106 1147.8064220516883 2021.0760227314306
5448   path.moveTo(1146.8509521484375, 2021.4739990234375);
5449   path.cubicTo(1147.1527099609375, 2021.4739990234375, 1147.5334472656250, 2021.3453369140625, 1147.8063964843750, 2021.0760498046875);
5450   // Segment 1147.8064220516883 2021.0760227314306 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8583375842370 2020.1149629481959
5451   path.lineTo(1146.8583984375000, 2020.1149902343750);
5452   // Segment 1146.8583375842370 2020.1149629481959 -0.0067222671256 0.0136883164611 0.0369996293611 -0.0123196021258 1146.8439293663473 2020.1202473404985
5453   path.cubicTo(1146.8515625000000, 2020.1286621093750, 1146.8809814453125, 2020.1079101562500, 1146.8438720703125, 2020.1202392578125);
5454   // Segment 1146.8439293663473 2020.1202473404985 -0.0281857033438 0.0140931104690 0.0031276541428 0.0031991704542 1146.8510041236877 2020.1240112185478
5455   path.cubicTo(1146.8157958984375, 2020.1343994140625, 1146.8541259765625, 2020.1271972656250, 1146.8509521484375, 2020.1240234375000);
5456   // Segment 1146.8510041236877 2020.1240112185478 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8510041236877 2021.4740112423897
5457   path.lineTo(1146.8509521484375, 2021.4739990234375);
5458   path.close();
5459   // start loop, contour: 25
5460   // Segment 1147.8064220516883 2021.0760227314306 0.5430154146087 -0.5356841365729 0.5430154146087 0.5356841365729 1147.8064220516883 2019.1652101405787
5461   path.moveTo(1147.8063964843750, 2021.0760498046875);
5462   path.cubicTo(1148.3494873046875, 2020.5402832031250, 1148.3494873046875, 2019.7009277343750, 1147.8063964843750, 2019.1651611328125);
5463   // Segment 1147.8064220516883 2019.1652101405787 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8583375842370 2020.1262699238134
5464   path.lineTo(1146.8583984375000, 2020.1262207031250);
5465   // Segment 1146.8583375842370 2020.1262699238134 0.0071280060876 0.0070317705240 0.0071280060876 -0.0070317705240 1146.8583375842370 2020.1149629481959
5466   path.cubicTo(1146.8654785156250, 2020.1333007812500, 1146.8654785156250, 2020.1079101562500, 1146.8583984375000, 2020.1149902343750);
5467   // Segment 1146.8583375842370 2020.1149629481959 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220516883 2021.0760227314306
5468   path.lineTo(1147.8063964843750, 2021.0760498046875);
5469   path.close();
5470   // start loop, contour: 26
5471   // Segment 1147.8064220383478 2019.1652101274185 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1145.8121519520594 2017.1978648896866
5472   path.moveTo(1147.8063964843750, 2019.1651611328125);
5473   path.lineTo(1145.8121337890625, 2017.1978759765625);
5474   // Segment 1145.8121519520594 2017.1978648896866 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1144.8640675112890 2018.1589246992417
5475   path.lineTo(1144.8640136718750, 2018.1589355468750);
5476   // Segment 1144.8640675112890 2018.1589246992417 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1146.8583375975775 2020.1262699369736
5477   path.lineTo(1146.8583984375000, 2020.1262207031250);
5478   // Segment 1146.8583375975775 2020.1262699369736 0.0000000000000 0.0000000000000 0.0000000000000 0.0000000000000 1147.8064220383478 2019.1652101274185
5479   path.lineTo(1147.8063964843750, 2019.1651611328125);
5480   path.close();
5481 
5482 testSimplify(reporter, path, filename);
5483 }
5484 
testQuads66(skiatest::Reporter * reporter,const char * filename)5485 static void testQuads66(skiatest::Reporter* reporter,const char* filename) {
5486     SkPath path;
5487     path.moveTo(2, 0);
5488     path.quadTo(3, 1, 2, 2);
5489     path.lineTo(2, 3);
5490     path.close();
5491     path.moveTo(2, 1);
5492     path.lineTo(2, 1);
5493     path.quadTo(1, 2, 2, 2);
5494     path.close();
5495     testSimplify(reporter, path, filename);
5496 }
5497 
testQuads67(skiatest::Reporter * reporter,const char * filename)5498 static void testQuads67(skiatest::Reporter* reporter,const char* filename) {
5499     SkPath path;
5500     path.moveTo(3, 2);
5501     path.quadTo(1, 3, 3, 3);
5502     path.lineTo(3, 3);
5503     path.close();
5504     path.moveTo(0, 0);
5505     path.lineTo(1, 0);
5506     path.quadTo(2, 3, 3, 3);
5507     path.close();
5508     testSimplify(reporter, path, filename);
5509 }
5510 
testQuads68(skiatest::Reporter * reporter,const char * filename)5511 static void testQuads68(skiatest::Reporter* reporter,const char* filename) {
5512     SkPath path;
5513     path.moveTo(1, 2);
5514     path.quadTo(0, 3, 2, 3);
5515     path.lineTo(2, 3);
5516     path.close();
5517     path.moveTo(1, 0);
5518     path.lineTo(0, 1);
5519     path.quadTo(1, 3, 2, 3);
5520     path.close();
5521     testSimplify(reporter, path, filename);
5522 }
5523 
testQuads69(skiatest::Reporter * reporter,const char * filename)5524 static void testQuads69(skiatest::Reporter* reporter,const char* filename) {
5525     SkPath path;
5526     path.moveTo(1, 0);
5527     path.quadTo(2, 2, 2, 3);
5528     path.lineTo(2, 3);
5529     path.close();
5530     path.moveTo(1, 0);
5531     path.lineTo(1, 0);
5532     path.quadTo(3, 0, 1, 3);
5533     path.close();
5534     testSimplify(reporter, path, filename);
5535 }
5536 
testQuads70(skiatest::Reporter * reporter,const char * filename)5537 static void testQuads70(skiatest::Reporter* reporter, const char* filename) {
5538     SkPath path;
5539     path.moveTo(1, 1);
5540     path.quadTo(2, 3, 3, 3);
5541     path.lineTo(3, 3);
5542     path.close();
5543     path.moveTo(2, 0);
5544     path.lineTo(2, 2);
5545     path.quadTo(1, 3, 3, 3);
5546     path.close();
5547     testSimplify(reporter, path, filename);
5548 }
5549 
testQuads71(skiatest::Reporter * reporter,const char * filename)5550 static void testQuads71(skiatest::Reporter* reporter, const char* filename) {
5551     SkPath path;
5552     path.moveTo(1, 1);
5553     path.quadTo(2, 3, 3, 3);
5554     path.lineTo(3, 3);
5555     path.close();
5556     path.moveTo(3, 0);
5557     path.lineTo(2, 2);
5558     path.quadTo(1, 3, 3, 3);
5559     path.close();
5560     testSimplify(reporter, path, filename);
5561 }
5562 
testQuads72(skiatest::Reporter * reporter,const char * filename)5563 static void testQuads72(skiatest::Reporter* reporter, const char* filename) {
5564     SkPath path;
5565     path.moveTo(1, 1);
5566     path.quadTo(2, 3, 3, 3);
5567     path.lineTo(3, 3);
5568     path.close();
5569     path.moveTo(0, 1);
5570     path.lineTo(2, 2);
5571     path.quadTo(1, 3, 3, 3);
5572     path.close();
5573     testSimplify(reporter, path, filename);
5574 }
5575 
testQuads73(skiatest::Reporter * reporter,const char * filename)5576 static void testQuads73(skiatest::Reporter* reporter, const char* filename) {
5577     SkPath path;
5578     path.moveTo(0, 0);
5579     path.quadTo(0, 1, 1, 2);
5580     path.lineTo(0, 3);
5581     path.close();
5582     path.moveTo(0, 0);
5583     path.lineTo(0, 0);
5584     path.quadTo(0, 1, 1, 1);
5585     path.close();
5586     testSimplify(reporter, path, filename);
5587 }
5588 
bug5169(skiatest::Reporter * reporter,const char * filename)5589 static void bug5169(skiatest::Reporter* reporter, const char* filename) {
5590     SkPath path;
5591 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x4281c71c));  // 0, 64.8889f
5592 path.cubicTo(SkBits2Float(0x434e0000), SkBits2Float(0x4281c71c), SkBits2Float(0x00000000), SkBits2Float(0xc2a238e4), SkBits2Float(0x00000000), SkBits2Float(0x4281c71c));  // 206, 64.8889f, 0, -81.1111f, 0, 64.8889f
5593 path.moveTo(SkBits2Float(0x43300000), SkBits2Float(0x41971c72));  // 176, 18.8889f
5594 path.cubicTo(SkBits2Float(0xc29e0000), SkBits2Float(0xc25c71c7), SkBits2Float(0x42b20000), SkBits2Float(0x42fbc71c), SkBits2Float(0x43300000), SkBits2Float(0x41971c72));  // -79, -55.1111f, 89, 125.889f, 176, 18.8889f
5595     testSimplify(reporter, path, filename);
5596 }
5597 
tiger8_393(skiatest::Reporter * reporter,const char * filename)5598 static void tiger8_393(skiatest::Reporter* reporter, const char* filename) {
5599     SkPath path;
5600     path.setFillType((SkPathFillType) 0);
5601 path.moveTo(SkBits2Float(0x42b93333), SkBits2Float(0x43d5a666));  // 92.6f, 427.3f
5602 path.cubicTo(SkBits2Float(0x42b93333), SkBits2Float(0x43d5a666), SkBits2Float(0x42b5cccd), SkBits2Float(0x43da1999), SkBits2Float(0x42b80000), SkBits2Float(0x43ddf333));  // 92.6f, 427.3f, 90.9f, 436.2f, 92, 443.9f
5603 path.cubicTo(SkBits2Float(0x42b80000), SkBits2Float(0x43ddf333), SkBits2Float(0x42b30000), SkBits2Float(0x43e17333), SkBits2Float(0x42cf999a), SkBits2Float(0x43e1b333));  // 92, 443.9f, 89.5f, 450.9f, 103.8f, 451.4f
5604 path.cubicTo(SkBits2Float(0x42ec3334), SkBits2Float(0x43e14ccd), SkBits2Float(0x42e73334), SkBits2Float(0x43ddf333), SkBits2Float(0x42e73334), SkBits2Float(0x43ddf333));  // 118.1f, 450.6f, 115.6f, 443.9f, 115.6f, 443.9f
5605 path.cubicTo(SkBits2Float(0x42e7999a), SkBits2Float(0x43de8000), SkBits2Float(0x42ea6667), SkBits2Float(0x43db4000), SkBits2Float(0x42e60001), SkBits2Float(0x43d5a666));  // 115.8f, 445, 117.2f, 438.5f, 115, 427.3f
5606     testSimplify(reporter, path, filename);
5607 }
5608 
5609 // triggers angle assert from distance field code
carsvg_1(skiatest::Reporter * reporter,const char * filename)5610 static void carsvg_1(skiatest::Reporter* reporter, const char* filename) {
5611     SkPath path;
5612     path.setFillType((SkPathFillType) 0);
5613 path.moveTo(SkBits2Float(0x4393d61e), SkBits2Float(0x43e768f9));  // 295.673f, 462.82f
5614 path.cubicTo(SkBits2Float(0x4396b50e), SkBits2Float(0x43e63c20), SkBits2Float(0x43998931), SkBits2Float(0x43e6c43e), SkBits2Float(0x439cb6a8), SkBits2Float(0x43e70ef9));  // 301.414f, 460.47f, 307.072f, 461.533f, 313.427f, 462.117f
5615 path.cubicTo(SkBits2Float(0x439dfc1e), SkBits2Float(0x43e72ce0), SkBits2Float(0x439a285c), SkBits2Float(0x43e717fb), SkBits2Float(0x4398e23c), SkBits2Float(0x43e7027c));  // 315.97f, 462.351f, 308.315f, 462.187f, 305.767f, 462.019f
5616 path.cubicTo(SkBits2Float(0x4398136f), SkBits2Float(0x43e6f4db), SkBits2Float(0x439a7e14), SkBits2Float(0x43e6d390), SkBits2Float(0x439b4ba9), SkBits2Float(0x43e6b956));  // 304.152f, 461.913f, 308.985f, 461.653f, 310.591f, 461.448f
5617 path.cubicTo(SkBits2Float(0x439c2b19), SkBits2Float(0x43e68603), SkBits2Float(0x43abf4df), SkBits2Float(0x43e9ca9e), SkBits2Float(0x43a1daea), SkBits2Float(0x43e912a5));  // 312.337f, 461.047f, 343.913f, 467.583f, 323.71f, 466.146f
5618 path.cubicTo(SkBits2Float(0x43a4f45a), SkBits2Float(0x43e78baf), SkBits2Float(0x43a2a391), SkBits2Float(0x43e86a82), SkBits2Float(0x43a946bd), SkBits2Float(0x43e90c56));  // 329.909f, 463.091f, 325.278f, 464.832f, 338.553f, 466.096f
5619 path.lineTo(SkBits2Float(0x43a4250b), SkBits2Float(0x43e998dc));  // 328.289f, 467.194f
5620 path.cubicTo(SkBits2Float(0x43a8a9c8), SkBits2Float(0x43e8f06c), SkBits2Float(0x43a95cb5), SkBits2Float(0x43e84ea6), SkBits2Float(0x43a6f7c1), SkBits2Float(0x43e9bdb5));  // 337.326f, 465.878f, 338.724f, 464.614f, 333.936f, 467.482f
5621 path.cubicTo(SkBits2Float(0x43a59ed0), SkBits2Float(0x43e9d2ca), SkBits2Float(0x4395ea4d), SkBits2Float(0x43e92afe), SkBits2Float(0x43a06569), SkBits2Float(0x43e7773d));  // 331.241f, 467.647f, 299.83f, 466.336f, 320.792f, 462.932f
5622 path.cubicTo(SkBits2Float(0x438bf0ff), SkBits2Float(0x43ea0fef), SkBits2Float(0x43a0e17a), SkBits2Float(0x43e5f41b), SkBits2Float(0x4398f3fb), SkBits2Float(0x43e804c8));  // 279.883f, 468.124f, 321.762f, 459.907f, 305.906f, 464.037f
5623 path.lineTo(SkBits2Float(0x4393d61e), SkBits2Float(0x43e768f9));  // 295.673f, 462.82f
5624 path.close();
5625 
5626     testSimplify(reporter, path, filename);
5627 }
5628 
simplifyTest_1(skiatest::Reporter * reporter,const char * filename)5629 static void simplifyTest_1(skiatest::Reporter* reporter, const char* filename) {
5630     SkPath path;
5631     path.setFillType((SkPathFillType) 0);
5632 path.moveTo(SkBits2Float(0x42bfefd4), SkBits2Float(0x42ef80ef));  // 95.9684f, 119.752f
5633 path.quadTo(SkBits2Float(0x42c26810), SkBits2Float(0x42e214b8), SkBits2Float(0x42cdcad5), SkBits2Float(0x42d82aa2));  // 97.2032f, 113.04f, 102.896f, 108.083f
5634 path.lineTo(SkBits2Float(0x42cdcb21), SkBits2Float(0x42d82a61));  // 102.897f, 108.083f
5635 path.quadTo(SkBits2Float(0x42d5e3c8), SkBits2Float(0x42d12140), SkBits2Float(0x42e20ee8), SkBits2Float(0x42cdc937));  // 106.945f, 104.565f, 113.029f, 102.893f
5636 path.lineTo(SkBits2Float(0x42e256e3), SkBits2Float(0x42cdbc92));  // 113.17f, 102.868f
5637 path.lineTo(SkBits2Float(0x42f5eadb), SkBits2Float(0x42cc2cb3));  // 122.959f, 102.087f
5638 path.lineTo(SkBits2Float(0x42f746a6), SkBits2Float(0x42cccf85));  // 123.638f, 102.405f
5639 path.quadTo(SkBits2Float(0x42fa586c), SkBits2Float(0x42d126c4), SkBits2Float(0x42f6c657), SkBits2Float(0x42d5d315));  // 125.173f, 104.576f, 123.387f, 106.912f
5640 path.lineTo(SkBits2Float(0x42f591eb), SkBits2Float(0x42d4e76d));  // 122.785f, 106.452f
5641 path.lineTo(SkBits2Float(0x42f6c6e0), SkBits2Float(0x42d5d261));  // 123.388f, 106.911f
5642 path.quadTo(SkBits2Float(0x42f6bb33), SkBits2Float(0x42d5e1bb), SkBits2Float(0x42f6a3d8), SkBits2Float(0x42d6007c));  // 123.366f, 106.941f, 123.32f, 107.001f
5643 path.quadTo(SkBits2Float(0x42ea3850), SkBits2Float(0x42e65af0), SkBits2Float(0x42d97a6e), SkBits2Float(0x42ed841c));  // 117.11f, 115.178f, 108.739f, 118.758f
5644 path.lineTo(SkBits2Float(0x42d91d92), SkBits2Float(0x42ed9ec0));  // 108.558f, 118.81f
5645 path.lineTo(SkBits2Float(0x42c1a959), SkBits2Float(0x42f146b0));  // 96.8308f, 120.638f
5646 path.lineTo(SkBits2Float(0x42bfefd4), SkBits2Float(0x42ef80f0));  // 95.9684f, 119.752f
5647 path.lineTo(SkBits2Float(0x42bfefd4), SkBits2Float(0x42ef80ef));  // 95.9684f, 119.752f
5648 path.close();
5649 path.moveTo(SkBits2Float(0x42c2eb4e), SkBits2Float(0x42f00d68));  // 97.4596f, 120.026f
5650 path.lineTo(SkBits2Float(0x42c16d91), SkBits2Float(0x42efc72c));  // 96.714f, 119.889f
5651 path.lineTo(SkBits2Float(0x42c131c9), SkBits2Float(0x42ee47a8));  // 96.5972f, 119.14f
5652 path.lineTo(SkBits2Float(0x42d8a602), SkBits2Float(0x42ea9fb8));  // 108.324f, 117.312f
5653 path.lineTo(SkBits2Float(0x42d8e1ca), SkBits2Float(0x42ec1f3c));  // 108.441f, 118.061f
5654 path.lineTo(SkBits2Float(0x42d84926), SkBits2Float(0x42eaba5c));  // 108.143f, 117.364f
5655 path.quadTo(SkBits2Float(0x42e84a40), SkBits2Float(0x42e3e1f0), SkBits2Float(0x42f439a2), SkBits2Float(0x42d42af8));  // 116.145f, 113.941f, 122.113f, 106.084f
5656 path.quadTo(SkBits2Float(0x42f45121), SkBits2Float(0x42d40c08), SkBits2Float(0x42f45cf6), SkBits2Float(0x42d3fc79));  // 122.158f, 106.023f, 122.182f, 105.993f
5657 path.lineTo(SkBits2Float(0x42f45d7f), SkBits2Float(0x42d3fbc5));  // 122.183f, 105.992f
5658 path.quadTo(SkBits2Float(0x42f69510), SkBits2Float(0x42d114f4), SkBits2Float(0x42f4ccce), SkBits2Float(0x42ce8fb7));  // 123.291f, 104.541f, 122.4f, 103.281f
5659 path.lineTo(SkBits2Float(0x42f609ba), SkBits2Float(0x42cdaf9e));  // 123.019f, 102.843f
5660 path.lineTo(SkBits2Float(0x42f62899), SkBits2Float(0x42cf3289));  // 123.079f, 103.599f
5661 path.lineTo(SkBits2Float(0x42e294a1), SkBits2Float(0x42d0c268));  // 113.29f, 104.38f
5662 path.lineTo(SkBits2Float(0x42e275c2), SkBits2Float(0x42cf3f7d));  // 113.23f, 103.624f
5663 path.lineTo(SkBits2Float(0x42e2dc9c), SkBits2Float(0x42d0b5c3));  // 113.431f, 104.355f
5664 path.quadTo(SkBits2Float(0x42d75bb8), SkBits2Float(0x42d3df08), SkBits2Float(0x42cfc853), SkBits2Float(0x42da7457));  // 107.679f, 105.936f, 103.891f, 109.227f
5665 path.lineTo(SkBits2Float(0x42cec9ba), SkBits2Float(0x42d94f5c));  // 103.394f, 108.655f
5666 path.lineTo(SkBits2Float(0x42cfc89f), SkBits2Float(0x42da7416));  // 103.892f, 109.227f
5667 path.quadTo(SkBits2Float(0x42c53268), SkBits2Float(0x42e3ac00), SkBits2Float(0x42c2eb4e), SkBits2Float(0x42f00d67));  // 98.5984f, 113.836f, 97.4596f, 120.026f
5668 path.lineTo(SkBits2Float(0x42c2eb4e), SkBits2Float(0x42f00d68));  // 97.4596f, 120.026f
5669 path.close();
5670 
5671     testSimplify(reporter, path, filename);
5672 }
5673 
joel_1(skiatest::Reporter * reporter,const char * filename)5674 static void joel_1(skiatest::Reporter* reporter, const char* filename) {
5675     SkPath path;
5676     path.setFillType((SkPathFillType) 0);
5677 path.moveTo(144.859f, 285.172f);
5678 path.lineTo(144.859f, 285.172f);
5679 path.lineTo(144.859f, 285.172f);
5680 path.lineTo(143.132f, 284.617f);
5681 path.lineTo(144.859f, 285.172f);
5682 path.close();
5683 path.moveTo(135.922f, 286.844f);
5684 path.lineTo(135.922f, 286.844f);
5685 path.lineTo(135.922f, 286.844f);
5686 path.lineTo(135.367f, 288.571f);
5687 path.lineTo(135.922f, 286.844f);
5688 path.close();
5689 path.moveTo(135.922f, 286.844f);
5690 path.cubicTo(137.07f, 287.219f, 138.242f, 287.086f, 139.242f, 286.578f);
5691 path.cubicTo(140.234f, 286.078f, 141.031f, 285.203f, 141.406f, 284.055f);
5692 path.lineTo(144.859f, 285.172f);
5693 path.cubicTo(143.492f, 289.375f, 138.992f, 291.656f, 134.797f, 290.297f);
5694 path.lineTo(135.922f, 286.844f);
5695 path.close();
5696 path.moveTo(129.68f, 280.242f);
5697 path.lineTo(129.68f, 280.242f);
5698 path.lineTo(129.68f, 280.242f);
5699 path.lineTo(131.407f, 280.804f);
5700 path.lineTo(129.68f, 280.242f);
5701 path.close();
5702 path.moveTo(133.133f, 281.367f);
5703 path.cubicTo(132.758f, 282.508f, 132.883f, 283.687f, 133.391f, 284.679f);
5704 path.cubicTo(133.907f, 285.679f, 134.774f, 286.468f, 135.922f, 286.843f);
5705 path.lineTo(134.797f, 290.296f);
5706 path.cubicTo(130.602f, 288.929f, 128.313f, 284.437f, 129.68f, 280.241f);
5707 path.lineTo(133.133f, 281.367f);
5708 path.close();
5709 path.moveTo(139.742f, 275.117f);
5710 path.lineTo(139.742f, 275.117f);
5711 path.lineTo(139.18f, 276.844f);
5712 path.lineTo(139.742f, 275.117f);
5713 path.close();
5714 path.moveTo(138.609f, 278.57f);
5715 path.cubicTo(137.461f, 278.203f, 136.297f, 278.328f, 135.297f, 278.836f);
5716 path.cubicTo(134.297f, 279.344f, 133.508f, 280.219f, 133.133f, 281.367f);
5717 path.lineTo(129.68f, 280.242f);
5718 path.cubicTo(131.047f, 276.039f, 135.539f, 273.758f, 139.742f, 275.117f);
5719 path.lineTo(138.609f, 278.57f);
5720 path.close();
5721 path.moveTo(141.406f, 284.055f);
5722 path.cubicTo(141.773f, 282.907f, 141.648f, 281.735f, 141.148f, 280.735f);
5723 path.cubicTo(140.625f, 279.735f, 139.757f, 278.946f, 138.609f, 278.571f);
5724 path.lineTo(139.742f, 275.118f);
5725 path.cubicTo(143.937f, 276.493f, 146.219f, 280.977f, 144.859f, 285.173f);
5726 path.lineTo(141.406f, 284.055f);
5727 path.close();
5728     testSimplify(reporter, path, filename);
5729 }
5730 
joel_2(skiatest::Reporter * reporter,const char * filename)5731 static void joel_2(skiatest::Reporter* reporter, const char* filename) {
5732     SkPath path;
5733     path.setFillType((SkPathFillType) 0);
5734 
5735 path.moveTo(403.283f, 497.197f);
5736 path.cubicTo(403.424f, 497.244f, 391.111f, 495.556f, 391.111f, 495.556f);
5737 path.lineTo(392.291f, 493.165f);
5738 path.cubicTo(392.291f, 493.165f, 388.994f, 492.056f, 386.65f, 491.821f);
5739 path.cubicTo(384.244f, 491.454f, 381.603f, 490.774f, 381.603f, 490.774f);
5740 path.lineTo(383.392f, 488.383f);
5741 path.cubicTo(383.392f, 488.383f, 379.119f, 487.453f, 378.939f, 485.695f);
5742 path.cubicTo(378.791f, 483.57f, 383.064f, 485.25f, 384.877f, 485.843f);
5743 path.lineTo(387.697f, 484.351f);
5744 path.cubicTo(382.752f, 483.835f, 376.595f, 482.124f, 374.478f, 480.312f);
5745 path.lineTo(356.22f, 496.304f);
5746 path.lineTo(368.095f, 510.499f);
5747 path.lineTo(373.884f, 510.202f);
5748 path.lineTo(374.478f, 509.007f);
5749 path.lineTo(370.916f, 506.913f);
5750 path.lineTo(371.807f, 506.022f);
5751 path.cubicTo(371.807f, 506.022f, 374.807f, 507.28f, 377.752f, 507.514f);
5752 path.cubicTo(380.752f, 507.881f, 387.4f, 508.108f, 387.4f, 508.108f);
5753 path.lineTo(388.884f, 506.764f);
5754 path.cubicTo(388.884f, 506.764f, 378.345f, 504.998f, 378.345f, 504.819f);
5755 path.lineTo(378.04f, 503.03f);
5756 path.cubicTo(378.04f, 503.03f, 391.415f, 505.796f, 391.399f, 505.866f);
5757 path.lineTo(386.063f, 502.132f);
5758 path.lineTo(387.547f, 500.335f);
5759 path.lineTo(398.375f, 501.976f);
5760 path.lineTo(403.283f, 497.197f);
5761 path.lineTo(403.283f, 497.197f);
5762 path.close();
5763     testSimplify(reporter, path, filename);
5764 }
5765 
joel_3(skiatest::Reporter * reporter,const char * filename)5766 static void joel_3(skiatest::Reporter* reporter, const char* filename) {
5767     SkPath path;
5768     path.setFillType((SkPathFillType) 0);
5769 path.moveTo(391.097f, 334.453f);
5770 path.lineTo(390.761f, 334.617f);
5771 path.lineTo(390.425f, 333.937f);
5772 path.lineTo(390.761f, 333.765f);
5773 path.lineTo(391.097f, 334.453f);
5774 path.close();
5775 path.moveTo(391.128f, 334.438f);
5776 path.lineTo(390.808f, 334.633f);
5777 path.lineTo(390.402f, 333.992f);
5778 path.lineTo(390.73f, 333.781f);
5779 path.lineTo(391.128f, 334.438f);
5780 path.lineTo(391.128f, 334.438f);
5781 path.close();
5782 path.moveTo(455.073f, 302.219f);
5783 path.lineTo(455.018f, 302.375f);
5784 path.lineTo(454.87f, 302.453f);
5785 path.lineTo(454.706f, 302.109f);
5786 path.lineTo(455.073f, 302.219f);
5787 path.close();
5788 path.moveTo(454.87f, 302.453f);
5789 path.lineTo(391.097f, 334.453f);
5790 path.lineTo(390.761f, 333.765f);
5791 path.lineTo(454.534f, 301.765f);
5792 path.lineTo(454.87f, 302.453f);
5793 path.close();
5794 path.moveTo(456.245f, 296.867f);
5795 path.lineTo(456.659f, 296.953f);
5796 path.lineTo(456.526f, 297.351f);
5797 path.lineTo(456.174f, 297.242f);
5798 path.lineTo(456.245f, 296.867f);
5799 path.lineTo(456.245f, 296.867f);
5800 path.close();
5801 path.moveTo(456.526f, 297.352f);
5802 path.lineTo(455.073f, 302.219f);
5803 path.lineTo(454.339f, 302);
5804 path.lineTo(455.808f, 297.133f);
5805 path.lineTo(456.526f, 297.352f);
5806 path.lineTo(456.526f, 297.352f);
5807 path.close();
5808 path.moveTo(450.979f, 295.891f);
5809 path.lineTo(451.112f, 295.813f);
5810 path.lineTo(451.26f, 295.836f);
5811 path.lineTo(451.19f, 296.211f);
5812 path.lineTo(450.979f, 295.891f);
5813 path.close();
5814 path.moveTo(451.261f, 295.836f);
5815 path.lineTo(456.245f, 296.867f);
5816 path.lineTo(456.089f, 297.617f);
5817 path.lineTo(451.105f, 296.586f);
5818 path.lineTo(451.261f, 295.836f);
5819 path.close();
5820 path.moveTo(390.729f, 333.781f);
5821 path.lineTo(450.979f, 295.89f);
5822 path.lineTo(451.385f, 296.531f);
5823 path.lineTo(391.127f, 334.437f);
5824 path.lineTo(390.729f, 333.781f);
5825 path.close();
5826     testSimplify(reporter, path, filename);
5827 }
5828 
joel_4(skiatest::Reporter * reporter,const char * filename)5829 static void joel_4(skiatest::Reporter* reporter, const char* filename) {
5830     SkPath path;
5831     path.setFillType((SkPathFillType) 0);
5832 path.moveTo(SkBits2Float(0x4199d4fe), SkBits2Float(0x4265ac08));  // 19.229f, 57.418f
5833 path.cubicTo(SkBits2Float(0x419be979), SkBits2Float(0x426574bc), SkBits2Float(0x419c2b02), SkBits2Float(0x42653c6a), SkBits2Float(0x419af5c3), SkBits2Float(0x42645f3b));  // 19.489f, 57.364f, 19.521f, 57.309f, 19.37f, 57.093f
5834 path.cubicTo(SkBits2Float(0x419a1894), SkBits2Float(0x4263a3d7), SkBits2Float(0x4198cccd), SkBits2Float(0x4262f2b0), SkBits2Float(0x4197c290), SkBits2Float(0x4262374b));  // 19.262f, 56.91f, 19.1f, 56.737f, 18.97f, 56.554f
5835 path.cubicTo(SkBits2Float(0x41960832), SkBits2Float(0x42610c49), SkBits2Float(0x41944dd4), SkBits2Float(0x425fd709), SkBits2Float(0x41927cee), SkBits2Float(0x425ea0c4));  // 18.754f, 56.262f, 18.538f, 55.96f, 18.311f, 55.657f
5836 path.cubicTo(SkBits2Float(0x4191b646), SkBits2Float(0x425e1cab), SkBits2Float(0x418edd30), SkBits2Float(0x425ca4dd), SkBits2Float(0x418f4bc7), SkBits2Float(0x425bdd2e));  // 18.214f, 55.528f, 17.858f, 55.161f, 17.912f, 54.966f
5837 path.lineTo(SkBits2Float(0x41903f7d), SkBits2Float(0x425b6e96));  // 18.031f, 54.858f
5838 path.cubicTo(SkBits2Float(0x41921062), SkBits2Float(0x425aa6e8), SkBits2Float(0x4193872b), SkBits2Float(0x425bd1ea), SkBits2Float(0x41947ae1), SkBits2Float(0x425c77cd));  // 18.258f, 54.663f, 18.441f, 54.955f, 18.56f, 55.117f
5839 path.cubicTo(SkBits2Float(0x4195dd2f), SkBits2Float(0x425d6b83), SkBits2Float(0x4197ae14), SkBits2Float(0x425e1caa), SkBits2Float(0x419924dd), SkBits2Float(0x425ef9d9));  // 18.733f, 55.355f, 18.96f, 55.528f, 19.143f, 55.744f
5840 path.cubicTo(SkBits2Float(0x419a1893), SkBits2Float(0x425f9479), SkBits2Float(0x419adf3b), SkBits2Float(0x42601997), SkBits2Float(0x419bd2f1), SkBits2Float(0x42609db0));  // 19.262f, 55.895f, 19.359f, 56.025f, 19.478f, 56.154f
5841 path.cubicTo(SkBits2Float(0x419c147a), SkBits2Float(0x4260c9b8), SkBits2Float(0x419c8312), SkBits2Float(0x4260e03f), SkBits2Float(0x419cb020), SkBits2Float(0x42610104));  // 19.51f, 56.197f, 19.564f, 56.219f, 19.586f, 56.251f
5842 path.cubicTo(SkBits2Float(0x419d0830), SkBits2Float(0x42613850), SkBits2Float(0x419da3d6), SkBits2Float(0x4261bd6e), SkBits2Float(0x419e126e), SkBits2Float(0x4261d2f0));  // 19.629f, 56.305f, 19.705f, 56.435f, 19.759f, 56.456f
5843 path.lineTo(SkBits2Float(0x419e28f5), SkBits2Float(0x4261d2f0));  // 19.77f, 56.456f
5844 path.lineTo(SkBits2Float(0x419e28f5), SkBits2Float(0x4261f4bb));  // 19.77f, 56.489f
5845 path.cubicTo(SkBits2Float(0x419e3d70), SkBits2Float(0x4261fef8), SkBits2Float(0x419e53f7), SkBits2Float(0x4261f4bb), SkBits2Float(0x419e8105), SkBits2Float(0x4261fef8));  // 19.78f, 56.499f, 19.791f, 56.489f, 19.813f, 56.499f
5846 path.cubicTo(SkBits2Float(0x419eac07), SkBits2Float(0x426220c3), SkBits2Float(0x419eac07), SkBits2Float(0x42624187), SkBits2Float(0x419eef9d), SkBits2Float(0x4262580f));  // 19.834f, 56.532f, 19.834f, 56.564f, 19.867f, 56.586f
5847 path.cubicTo(SkBits2Float(0x419fe353), SkBits2Float(0x4262f2af), SkBits2Float(0x41a0eb84), SkBits2Float(0x426377cd), SkBits2Float(0x41a1b22c), SkBits2Float(0x4263fbe6));  // 19.986f, 56.737f, 20.115f, 56.867f, 20.212f, 56.996f
5848 path.cubicTo(SkBits2Float(0x41a20a3c), SkBits2Float(0x42641db1), SkBits2Float(0x41a2e76b), SkBits2Float(0x4264a1c9), SkBits2Float(0x41a34188), SkBits2Float(0x4264ad0d));  // 20.255f, 57.029f, 20.363f, 57.158f, 20.407f, 57.169f
5849 path.cubicTo(SkBits2Float(0x41a36c8a), SkBits2Float(0x4264ad0d), SkBits2Float(0x41a3c6a7), SkBits2Float(0x4264a1c9), SkBits2Float(0x41a3f1a9), SkBits2Float(0x4264ad0d));  // 20.428f, 57.169f, 20.472f, 57.158f, 20.493f, 57.169f
5850 path.cubicTo(SkBits2Float(0x41a3f1a9), SkBits2Float(0x42648c48), SkBits2Float(0x41a41eb7), SkBits2Float(0x42648105), SkBits2Float(0x41a449b9), SkBits2Float(0x426475c1));  // 20.493f, 57.137f, 20.515f, 57.126f, 20.536f, 57.115f
5851 path.cubicTo(SkBits2Float(0x41a48d4f), SkBits2Float(0x4263f1a8), SkBits2Float(0x41a46040), SkBits2Float(0x42634082), SkBits2Float(0x41a48d4f), SkBits2Float(0x4262bb63));  // 20.569f, 56.986f, 20.547f, 56.813f, 20.569f, 56.683f
5852 path.cubicTo(SkBits2Float(0x41a51061), SkBits2Float(0x426122d0), SkBits2Float(0x41a63126), SkBits2Float(0x425f51ea), SkBits2Float(0x41a82d0d), SkBits2Float(0x425e0624));  // 20.633f, 56.284f, 20.774f, 55.83f, 21.022f, 55.506f
5853 path.cubicTo(SkBits2Float(0x41a90a3c), SkBits2Float(0x425d820b), SkBits2Float(0x41aab01f), SkBits2Float(0x425cba5d), SkBits2Float(0x41ab0830), SkBits2Float(0x425c147a));  // 21.13f, 55.377f, 21.336f, 55.182f, 21.379f, 55.02f
5854 path.cubicTo(SkBits2Float(0x41aa147a), SkBits2Float(0x425bf3b5), SkBits2Float(0x41a8df3a), SkBits2Float(0x425c0936), SkBits2Float(0x41a7d4fd), SkBits2Float(0x425c147a));  // 21.26f, 54.988f, 21.109f, 55.009f, 20.979f, 55.02f
5855 path.cubicTo(SkBits2Float(0x41a74fde), SkBits2Float(0x425c147a), SkBits2Float(0x41a65e34), SkBits2Float(0x425c4082), SkBits2Float(0x41a5c28e), SkBits2Float(0x425c4082));  // 20.914f, 55.02f, 20.796f, 55.063f, 20.72f, 55.063f
5856 path.cubicTo(SkBits2Float(0x41a56a7e), SkBits2Float(0x425c353e), SkBits2Float(0x41a4fbe6), SkBits2Float(0x425c147a), SkBits2Float(0x41a4ced8), SkBits2Float(0x425c0936));  // 20.677f, 55.052f, 20.623f, 55.02f, 20.601f, 55.009f
5857 path.cubicTo(SkBits2Float(0x41a53d70), SkBits2Float(0x425af4bb), SkBits2Float(0x41a5ed90), SkBits2Float(0x425abd6f), SkBits2Float(0x41a85a1c), SkBits2Float(0x425aa6e8));  // 20.655f, 54.739f, 20.741f, 54.685f, 21.044f, 54.663f
5858 path.cubicTo(SkBits2Float(0x41a920c4), SkBits2Float(0x425a9cab), SkBits2Float(0x41a9d0e5), SkBits2Float(0x425aa6e8), SkBits2Float(0x41aa5603), SkBits2Float(0x425a9167));  // 21.141f, 54.653f, 21.227f, 54.663f, 21.292f, 54.642f
5859 path.cubicTo(SkBits2Float(0x41aa8311), SkBits2Float(0x425a8623), SkBits2Float(0x41aa9999), SkBits2Float(0x425a655f), SkBits2Float(0x41aab020), SkBits2Float(0x425a655f));  // 21.314f, 54.631f, 21.325f, 54.599f, 21.336f, 54.599f
5860 path.cubicTo(SkBits2Float(0x41aa3f7c), SkBits2Float(0x42599eb7), SkBits2Float(0x41a9a5e3), SkBits2Float(0x42591998), SkBits2Float(0x41a9374b), SkBits2Float(0x42586871));  // 21.281f, 54.405f, 21.206f, 54.275f, 21.152f, 54.102f
5861 path.cubicTo(SkBits2Float(0x41a8c8b3), SkBits2Float(0x4257e458), SkBits2Float(0x41a8b22c), SkBits2Float(0x42575f3a), SkBits2Float(0x41a85a1c), SkBits2Float(0x4256c49a));  // 21.098f, 53.973f, 21.087f, 53.843f, 21.044f, 53.692f
5862 path.cubicTo(SkBits2Float(0x41a76666), SkBits2Float(0x42551479), SkBits2Float(0x41a68937), SkBits2Float(0x4252cabf), SkBits2Float(0x41a74fdf), SkBits2Float(0x4250a1c9));  // 20.925f, 53.27f, 20.817f, 52.698f, 20.914f, 52.158f
5863 path.cubicTo(SkBits2Float(0x41a77ced), SkBits2Float(0x42500729), SkBits2Float(0x41a870a4), SkBits2Float(0x424e8417), SkBits2Float(0x41a8b22d), SkBits2Float(0x424e4ccb));  // 20.936f, 52.007f, 21.055f, 51.629f, 21.087f, 51.575f
5864 path.cubicTo(SkBits2Float(0x41a8b22d), SkBits2Float(0x424e4187), SkBits2Float(0x41aa147b), SkBits2Float(0x424cc9b9), SkBits2Float(0x41aab021), SkBits2Float(0x424c2f19));  // 21.087f, 51.564f, 21.26f, 51.197f, 21.336f, 51.046f
5865 path.cubicTo(SkBits2Float(0x41aac49c), SkBits2Float(0x424c1892), SkBits2Float(0x41ab49bb), SkBits2Float(0x424b9eb7), SkBits2Float(0x41ab8b44), SkBits2Float(0x424b676b));  // 21.346f, 51.024f, 21.411f, 50.905f, 21.443f, 50.851f
5866 path.cubicTo(SkBits2Float(0x41ac3d71), SkBits2Float(0x424ab644), SkBits2Float(0x41ad45a2), SkBits2Float(0x424a26e8), SkBits2Float(0x41ae22d1), SkBits2Float(0x42498105));  // 21.53f, 50.678f, 21.659f, 50.538f, 21.767f, 50.376f
5867 path.cubicTo(SkBits2Float(0x41ae6667), SkBits2Float(0x42496b84), SkBits2Float(0x41aeeb85), SkBits2Float(0x42491db1), SkBits2Float(0x41af0000), SkBits2Float(0x4248fbe6));  // 21.8f, 50.355f, 21.865f, 50.279f, 21.875f, 50.246f
5868 path.cubicTo(SkBits2Float(0x41b0624e), SkBits2Float(0x4248353e), SkBits2Float(0x41b1db23), SkBits2Float(0x424779da), SkBits2Float(0x41b353f8), SkBits2Float(0x4246bd6f));  // 22.048f, 50.052f, 22.232f, 49.869f, 22.416f, 49.685f
5869 path.cubicTo(SkBits2Float(0x41b3c083), SkBits2Float(0x42468623), SkBits2Float(0x41b445a2), SkBits2Float(0x42464ed7), SkBits2Float(0x41b4cac1), SkBits2Float(0x4246178c));  // 22.469f, 49.631f, 22.534f, 49.577f, 22.599f, 49.523f
5870 path.cubicTo(SkBits2Float(0x41b56667), SkBits2Float(0x4245c9b9), SkBits2Float(0x41b62d0f), SkBits2Float(0x4245872a), SkBits2Float(0x41b6c8b5), SkBits2Float(0x4245449a));  // 22.675f, 49.447f, 22.772f, 49.382f, 22.848f, 49.317f
5871 path.cubicTo(SkBits2Float(0x41b7624f), SkBits2Float(0x42450311), SkBits2Float(0x41b7e76d), SkBits2Float(0x4244a9fa), SkBits2Float(0x41b88313), SkBits2Float(0x42445d2d));  // 22.923f, 49.253f, 22.988f, 49.166f, 23.064f, 49.091f
5872 path.cubicTo(SkBits2Float(0x41b949bb), SkBits2Float(0x4243ee95), SkBits2Float(0x41ba1063), SkBits2Float(0x424374ba), SkBits2Float(0x41baed92), SkBits2Float(0x42431166));  // 23.161f, 48.983f, 23.258f, 48.864f, 23.366f, 48.767f
5873 path.cubicTo(SkBits2Float(0x41bb45a2), SkBits2Float(0x4242c393), SkBits2Float(0x41bbb43a), SkBits2Float(0x424276c6), SkBits2Float(0x41bc0e57), SkBits2Float(0x424228f3));  // 23.409f, 48.691f, 23.463f, 48.616f, 23.507f, 48.54f
5874 path.cubicTo(SkBits2Float(0x41bc6667), SkBits2Float(0x4241e664), SkBits2Float(0x41bc7ae2), SkBits2Float(0x4241a4da), SkBits2Float(0x41bcd2f3), SkBits2Float(0x4241624b));  // 23.55f, 48.475f, 23.56f, 48.411f, 23.603f, 48.346f
5875 path.cubicTo(SkBits2Float(0x41bd0001), SkBits2Float(0x42411478), SkBits2Float(0x41bd0001), SkBits2Float(0x4240c6a5), SkBits2Float(0x41bd1689), SkBits2Float(0x4240851c));  // 23.625f, 48.27f, 23.625f, 48.194f, 23.636f, 48.13f
5876 path.cubicTo(SkBits2Float(0x41bd2d10), SkBits2Float(0x42404cca), SkBits2Float(0x41bdb023), SkBits2Float(0x423fd3f5), SkBits2Float(0x41bd8521), SkBits2Float(0x423f7adf));  // 23.647f, 48.075f, 23.711f, 47.957f, 23.69f, 47.87f
5877 path.lineTo(SkBits2Float(0x41bd6e9a), SkBits2Float(0x423f7adf));  // 23.679f, 47.87f
5878 path.cubicTo(SkBits2Float(0x41bd6e9a), SkBits2Float(0x423f7adf), SkBits2Float(0x41bd5813), SkBits2Float(0x423f4ed7), SkBits2Float(0x41bd168a), SkBits2Float(0x423f4499));  // 23.679f, 47.87f, 23.668f, 47.827f, 23.636f, 47.817f
5879 path.cubicTo(SkBits2Float(0x41bc916b), SkBits2Float(0x423f22ce), SkBits2Float(0x41bc22d4), SkBits2Float(0x423f3955), SkBits2Float(0x41bb893a), SkBits2Float(0x423f178b));  // 23.571f, 47.784f, 23.517f, 47.806f, 23.442f, 47.773f
5880 path.cubicTo(SkBits2Float(0x41bb2f1d), SkBits2Float(0x423f0c47), SkBits2Float(0x41bb041b), SkBits2Float(0x423ee03f), SkBits2Float(0x41baac0b), SkBits2Float(0x423ec9b8));  // 23.398f, 47.762f, 23.377f, 47.719f, 23.334f, 47.697f
5881 path.cubicTo(SkBits2Float(0x41baac0b), SkBits2Float(0x423ebf7b), SkBits2Float(0x41bac086), SkBits2Float(0x423ea8f3), SkBits2Float(0x41bac086), SkBits2Float(0x423e926c));  // 23.334f, 47.687f, 23.344f, 47.665f, 23.344f, 47.643f
5882 path.cubicTo(SkBits2Float(0x41bb2f1e), SkBits2Float(0x423e882f), SkBits2Float(0x41bc0e59), SkBits2Float(0x423e6664), SkBits2Float(0x41bc916b), SkBits2Float(0x423e5c26));  // 23.398f, 47.633f, 23.507f, 47.6f, 23.571f, 47.59f
5883 path.cubicTo(SkBits2Float(0x41be4bc9), SkBits2Float(0x423e50e2), SkBits2Float(0x41c53542), SkBits2Float(0x423e926c), SkBits2Float(0x41c5ba61), SkBits2Float(0x423e24da));  // 23.787f, 47.579f, 24.651f, 47.643f, 24.716f, 47.536f
5884 path.cubicTo(SkBits2Float(0x41c61271), SkBits2Float(0x423de24b), SkBits2Float(0x41c61271), SkBits2Float(0x423d1a9d), SkBits2Float(0x41c63f80), SkBits2Float(0x423ca1c8));  // 24.759f, 47.471f, 24.759f, 47.276f, 24.781f, 47.158f
5885 path.cubicTo(SkBits2Float(0x41c68109), SkBits2Float(0x423bda1a), SkBits2Float(0x41c6ae18), SkBits2Float(0x423afceb), SkBits2Float(0x41c70628), SkBits2Float(0x423a2aff));  // 24.813f, 46.963f, 24.835f, 46.747f, 24.878f, 46.542f
5886 path.cubicTo(SkBits2Float(0x41c71caf), SkBits2Float(0x42399ba3), SkBits2Float(0x41c81065), SkBits2Float(0x42379eb5), SkBits2Float(0x41c79fc2), SkBits2Float(0x4237459f));  // 24.889f, 46.402f, 25.008f, 45.905f, 24.953f, 45.818f
5887 path.cubicTo(SkBits2Float(0x41c70628), SkBits2Float(0x4236e24b), SkBits2Float(0x41c4dd33), SkBits2Float(0x4237459f), SkBits2Float(0x41c45814), SkBits2Float(0x423750e3));  // 24.878f, 45.721f, 24.608f, 45.818f, 24.543f, 45.829f
5888 path.cubicTo(SkBits2Float(0x41c245a5), SkBits2Float(0x42379eb6), SkBits2Float(0x41bea5e7), SkBits2Float(0x42380d4d), SkBits2Float(0x41bbf5c6), SkBits2Float(0x4237ec89));  // 24.284f, 45.905f, 23.831f, 46.013f, 23.495f, 45.981f
5889 path.cubicTo(SkBits2Float(0x41b9f9df), SkBits2Float(0x4237e145), SkBits2Float(0x41b7e770), SkBits2Float(0x4237a9fa), SkBits2Float(0x41b62d12), SkBits2Float(0x4237676a));  // 23.247f, 45.97f, 22.988f, 45.916f, 22.772f, 45.851f
5890 path.cubicTo(SkBits2Float(0x41b4312b), SkBits2Float(0x423724db), SkBits2Float(0x41b1f1ae), SkBits2Float(0x42369fbc), SkBits2Float(0x41af9baa), SkBits2Float(0x423673b4));  // 22.524f, 45.786f, 22.243f, 45.656f, 21.951f, 45.613f
5891 path.cubicTo(SkBits2Float(0x41ae7ae5), SkBits2Float(0x42366977), SkBits2Float(0x41aced96), SkBits2Float(0x42365d2d), SkBits2Float(0x41ab8b48), SkBits2Float(0x42366977));  // 21.81f, 45.603f, 21.616f, 45.591f, 21.443f, 45.603f
5892 path.cubicTo(SkBits2Float(0x41a9e771), SkBits2Float(0x42368a3c), SkBits2Float(0x41a82d13), SkBits2Float(0x4236d708), SkBits2Float(0x41a65e3a), SkBits2Float(0x4236b644));  // 21.238f, 45.635f, 21.022f, 45.71f, 20.796f, 45.678f
5893 path.cubicTo(SkBits2Float(0x41a65e3a), SkBits2Float(0x4236ab00), SkBits2Float(0x41a647b3), SkBits2Float(0x42369fbd), SkBits2Float(0x41a65e3a), SkBits2Float(0x42369479));  // 20.796f, 45.667f, 20.785f, 45.656f, 20.796f, 45.645f
5894 path.cubicTo(SkBits2Float(0x41a672b5), SkBits2Float(0x42366977), SkBits2Float(0x41a7a7f4), SkBits2Float(0x42363125), SkBits2Float(0x41a81898), SkBits2Float(0x42361ba4));  // 20.806f, 45.603f, 20.957f, 45.548f, 21.012f, 45.527f
5895 path.cubicTo(SkBits2Float(0x41a85a21), SkBits2Float(0x42361060), SkBits2Float(0x41a8df40), SkBits2Float(0x4235d915), SkBits2Float(0x41a94dd7), SkBits2Float(0x4235cdd1));  // 21.044f, 45.516f, 21.109f, 45.462f, 21.163f, 45.451f
5896 path.cubicTo(SkBits2Float(0x41ab8b48), SkBits2Float(0x42356a7d), SkBits2Float(0x41af8523), SkBits2Float(0x423575c1), SkBits2Float(0x41b249be), SkBits2Float(0x42359685));  // 21.443f, 45.354f, 21.94f, 45.365f, 22.286f, 45.397f
5897 path.cubicTo(SkBits2Float(0x41b3d70e), SkBits2Float(0x4235a1c9), SkBits2Float(0x41b6168b), SkBits2Float(0x4235cdd1), SkBits2Float(0x41b7e770), SkBits2Float(0x4235ad0c));  // 22.48f, 45.408f, 22.761f, 45.451f, 22.988f, 45.419f
5898 path.cubicTo(SkBits2Float(0x41bac087), SkBits2Float(0x42359685), SkBits2Float(0x41bd6e9b), SkBits2Float(0x4234fbe5), SkBits2Float(0x41c03337), SkBits2Float(0x4234af18));  // 23.344f, 45.397f, 23.679f, 45.246f, 24.025f, 45.171f
5899 path.cubicTo(SkBits2Float(0x41c2cac4), SkBits2Float(0x42346145), SkBits2Float(0x41c56252), SkBits2Float(0x4234820a), SkBits2Float(0x41c81066), SkBits2Float(0x42346145));  // 24.349f, 45.095f, 24.673f, 45.127f, 25.008f, 45.095f
5900 path.cubicTo(SkBits2Float(0x41c824e1), SkBits2Float(0x42340935), SkBits2Float(0x41c89378), SkBits2Float(0x42330a3b), SkBits2Float(0x41c7b649), SkBits2Float(0x4232fef7));  // 25.018f, 45.009f, 25.072f, 44.76f, 24.964f, 44.749f
5901 path.cubicTo(SkBits2Float(0x41c6d91a), SkBits2Float(0x4232e976), SkBits2Float(0x41c5a3da), SkBits2Float(0x42338416), SkBits2Float(0x41c51ebc), SkBits2Float(0x4233a4da));  // 24.856f, 44.728f, 24.705f, 44.879f, 24.64f, 44.911f
5902 path.cubicTo(SkBits2Float(0x41c42b06), SkBits2Float(0x4233bb61), SkBits2Float(0x41c2cac4), SkBits2Float(0x4233d0e2), SkBits2Float(0x41c1d70e), SkBits2Float(0x4233e769));  // 24.521f, 44.933f, 24.349f, 44.954f, 24.23f, 44.976f
5903 path.cubicTo(SkBits2Float(0x41c08b47), SkBits2Float(0x4233f2ad), SkBits2Float(0x41bf1272), SkBits2Float(0x4233c6a4), SkBits2Float(0x41bdf3ba), SkBits2Float(0x4233bb61));  // 24.068f, 44.987f, 23.884f, 44.944f, 23.744f, 44.933f
5904 path.cubicTo(SkBits2Float(0x41bcd2f5), SkBits2Float(0x4233b01d), SkBits2Float(0x41bbf5c6), SkBits2Float(0x4233b01d), SkBits2Float(0x41baed95), SkBits2Float(0x4233a4da));  // 23.603f, 44.922f, 23.495f, 44.922f, 23.366f, 44.911f
5905 path.cubicTo(SkBits2Float(0x41ba26ed), SkBits2Float(0x42338f59), SkBits2Float(0x41b91cb0), SkBits2Float(0x4233580d), SkBits2Float(0x41b83f81), SkBits2Float(0x4233580d));  // 23.269f, 44.89f, 23.139f, 44.836f, 23.031f, 44.836f
5906 path.cubicTo(SkBits2Float(0x41b4b43d), SkBits2Float(0x42333642), SkBits2Float(0x41b19791), SkBits2Float(0x4233a4da), SkBits2Float(0x41aea7f4), SkBits2Float(0x4233d0e2));  // 22.588f, 44.803f, 22.199f, 44.911f, 21.832f, 44.954f
5907 path.cubicTo(SkBits2Float(0x41aba1cf), SkBits2Float(0x42340934), SkBits2Float(0x41a7666b), SkBits2Float(0x4233e769), SkBits2Float(0x41a4b856), SkBits2Float(0x42338415));  // 21.454f, 45.009f, 20.925f, 44.976f, 20.59f, 44.879f
5908 path.cubicTo(SkBits2Float(0x41a46046), SkBits2Float(0x423378d1), SkBits2Float(0x41a3f1ae), SkBits2Float(0x4233580d), SkBits2Float(0x41a3c6ac), SkBits2Float(0x42334cc9));  // 20.547f, 44.868f, 20.493f, 44.836f, 20.472f, 44.825f
5909 path.cubicTo(SkBits2Float(0x41a28f60), SkBits2Float(0x4233157d), SkBits2Float(0x41a19db6), SkBits2Float(0x42330a3a), SkBits2Float(0x41a0c087), SkBits2Float(0x4232c7aa));  // 20.32f, 44.771f, 20.202f, 44.76f, 20.094f, 44.695f
5910 path.cubicTo(SkBits2Float(0x41a0eb89), SkBits2Float(0x4232bc66), SkBits2Float(0x41a0eb89), SkBits2Float(0x4232905e), SkBits2Float(0x41a10210), SkBits2Float(0x4232905e));  // 20.115f, 44.684f, 20.115f, 44.641f, 20.126f, 44.641f
5911 path.cubicTo(SkBits2Float(0x41a19db6), SkBits2Float(0x42325912), SkBits2Float(0x41a2645e), SkBits2Float(0x42326f99), SkBits2Float(0x41a35608), SkBits2Float(0x42326f99));  // 20.202f, 44.587f, 20.299f, 44.609f, 20.417f, 44.609f
5912 path.cubicTo(SkBits2Float(0x41a476cd), SkBits2Float(0x42324ed4), SkBits2Float(0x41a5ed95), SkBits2Float(0x4232384d), SkBits2Float(0x41a724e1), SkBits2Float(0x42320c45));  // 20.558f, 44.577f, 20.741f, 44.555f, 20.893f, 44.512f
5913 path.cubicTo(SkBits2Float(0x41a8c8b8), SkBits2Float(0x4231c9b6), SkBits2Float(0x41aa999d), SkBits2Float(0x42316662), SkBits2Float(0x41ac26ed), SkBits2Float(0x4231188f));  // 21.098f, 44.447f, 21.325f, 44.35f, 21.519f, 44.274f
5914 path.cubicTo(SkBits2Float(0x41af168b), SkBits2Float(0x423072ac), SkBits2Float(0x41b249be), SkBits2Float(0x42300f58), SkBits2Float(0x41b57ae5), SkBits2Float(0x422fe249));  // 21.886f, 44.112f, 22.286f, 44.015f, 22.685f, 43.971f
5915 path.cubicTo(SkBits2Float(0x41b66e9b), SkBits2Float(0x422fd80c), SkBits2Float(0x41b7d0e9), SkBits2Float(0x422fee93), SkBits2Float(0x41b89791), SkBits2Float(0x422fee93));  // 22.804f, 43.961f, 22.977f, 43.983f, 23.074f, 43.983f
5916 path.cubicTo(SkBits2Float(0x41bb1897), SkBits2Float(0x42300f58), SkBits2Float(0x41bd2d12), SkBits2Float(0x423024d9), SkBits2Float(0x41bfc49f), SkBits2Float(0x4230301c));  // 23.387f, 44.015f, 23.647f, 44.036f, 23.971f, 44.047f
5917 path.cubicTo(SkBits2Float(0x41c0e357), SkBits2Float(0x423046a3), SkBits2Float(0x41c245a5), SkBits2Float(0x42305c24), SkBits2Float(0x41c3a7f3), SkBits2Float(0x423051e7));  // 24.111f, 44.069f, 24.284f, 44.09f, 24.457f, 44.08f
5918 path.cubicTo(SkBits2Float(0x41c50835), SkBits2Float(0x423046a3), SkBits2Float(0x41c69791), SkBits2Float(0x42300f58), SkBits2Float(0x41c79fc2), SkBits2Float(0x422fb641));  // 24.629f, 44.069f, 24.824f, 44.015f, 24.953f, 43.928f
5919 path.cubicTo(SkBits2Float(0x41c7f9df), SkBits2Float(0x422fa0c0), SkBits2Float(0x41c86876), SkBits2Float(0x422f5e31), SkBits2Float(0x41c8eb89), SkBits2Float(0x422f52ed));  // 24.997f, 43.907f, 25.051f, 43.842f, 25.115f, 43.831f
5920 path.cubicTo(SkBits2Float(0x41c9b43d), SkBits2Float(0x422f3c66), SkBits2Float(0x41c9df3f), SkBits2Float(0x422fb641), SkBits2Float(0x41c9f5c6), SkBits2Float(0x42300f57));  // 25.213f, 43.809f, 25.234f, 43.928f, 25.245f, 44.015f
5921 path.cubicTo(SkBits2Float(0x41ca0c4d), SkBits2Float(0x4230e143), SkBits2Float(0x41c9df3f), SkBits2Float(0x42319ca7), SkBits2Float(0x41c9f5c6), SkBits2Float(0x4232384d));  // 25.256f, 44.22f, 25.234f, 44.403f, 25.245f, 44.555f
5922 path.cubicTo(SkBits2Float(0x41ca395c), SkBits2Float(0x4234fbe2), SkBits2Float(0x41ca22d4), SkBits2Float(0x4237cabc), SkBits2Float(0x41ca7ae5), SkBits2Float(0x423a6d8c));  // 25.278f, 45.246f, 25.267f, 45.948f, 25.31f, 46.607f
5923 path.cubicTo(SkBits2Float(0x41ca916c), SkBits2Float(0x423b3f78), SkBits2Float(0x41ca645e), SkBits2Float(0x423ca1c5), SkBits2Float(0x41ca916c), SkBits2Float(0x423d9475));  // 25.321f, 46.812f, 25.299f, 47.158f, 25.321f, 47.395f
5924 path.cubicTo(SkBits2Float(0x41ca916c), SkBits2Float(0x423daafc), SkBits2Float(0x41ca7ae5), SkBits2Float(0x423dd704), SkBits2Float(0x41ca916c), SkBits2Float(0x423dec85));  // 25.321f, 47.417f, 25.31f, 47.46f, 25.321f, 47.481f
5925 path.cubicTo(SkBits2Float(0x41caa5e7), SkBits2Float(0x423e0e50), SkBits2Float(0x41cb0004), SkBits2Float(0x423e459c), SkBits2Float(0x41cb2b06), SkBits2Float(0x423e50df));  // 25.331f, 47.514f, 25.375f, 47.568f, 25.396f, 47.579f
5926 path.cubicTo(SkBits2Float(0x41cb6e9c), SkBits2Float(0x423e5c23), SkBits2Float(0x41ce47b2), SkBits2Float(0x423e7ce7), SkBits2Float(0x41ce8b48), SkBits2Float(0x423e6660));  // 25.429f, 47.59f, 25.785f, 47.622f, 25.818f, 47.6f
5927 path.lineTo(SkBits2Float(0x41ceb64a), SkBits2Float(0x423e5c23));  // 25.839f, 47.59f
5928 path.cubicTo(SkBits2Float(0x41d1395c), SkBits2Float(0x423e5c23), SkBits2Float(0x41d41273), SkBits2Float(0x423e50df), SkBits2Float(0x41d6666b), SkBits2Float(0x423e6660));  // 26.153f, 47.59f, 26.509f, 47.579f, 26.8f, 47.6f
5929 path.cubicTo(SkBits2Float(0x41d71898), SkBits2Float(0x423e7ce7), SkBits2Float(0x41d80a42), SkBits2Float(0x423e5c23), SkBits2Float(0x41d8a5e8), SkBits2Float(0x423e7ce7));  // 26.887f, 47.622f, 27.005f, 47.59f, 27.081f, 47.622f
5930 path.cubicTo(SkBits2Float(0x41d8d2f6), SkBits2Float(0x423e882b), SkBits2Float(0x41d8d2f6), SkBits2Float(0x423e9268), SkBits2Float(0x41d8fdf8), SkBits2Float(0x423e9eb2));  // 27.103f, 47.633f, 27.103f, 47.643f, 27.124f, 47.655f
5931 path.cubicTo(SkBits2Float(0x41d8e771), SkBits2Float(0x423ebf77), SkBits2Float(0x41d8fdf8), SkBits2Float(0x423ed4f8), SkBits2Float(0x41d8e771), SkBits2Float(0x423eeb7f));  // 27.113f, 47.687f, 27.124f, 47.708f, 27.113f, 47.73f
5932 path.cubicTo(SkBits2Float(0x41d88f61), SkBits2Float(0x423f4496), SkBits2Float(0x41d71898), SkBits2Float(0x423f4496), SkBits2Float(0x41d6aa00), SkBits2Float(0x423f9162));  // 27.07f, 47.817f, 26.887f, 47.817f, 26.833f, 47.892f
5933 path.cubicTo(SkBits2Float(0x41d547b2), SkBits2Float(0x42406e91), SkBits2Float(0x41d43d75), SkBits2Float(0x4241ba58), SkBits2Float(0x41d38d54), SkBits2Float(0x4242b952));  // 26.66f, 48.108f, 26.53f, 48.432f, 26.444f, 48.681f
5934 path.cubicTo(SkBits2Float(0x41d1395c), SkBits2Float(0x4245a8f0), SkBits2Float(0x41d0b231), SkBits2Float(0x42491dac), SkBits2Float(0x41d2147f), SkBits2Float(0x424c2f15));  // 26.153f, 49.415f, 26.087f, 50.279f, 26.26f, 51.046f
5935 path.cubicTo(SkBits2Float(0x41d2418d), SkBits2Float(0x424c7be2), SkBits2Float(0x41d2999e), SkBits2Float(0x424cc9b5), SkBits2Float(0x41d2b025), SkBits2Float(0x424d0c44));  // 26.282f, 51.121f, 26.325f, 51.197f, 26.336f, 51.262f
5936 path.cubicTo(SkBits2Float(0x41d33544), SkBits2Float(0x424dc7a8), SkBits2Float(0x41d3a3db), SkBits2Float(0x424e8413), SkBits2Float(0x41d453fc), SkBits2Float(0x424f136f));  // 26.401f, 51.445f, 26.455f, 51.629f, 26.541f, 51.769f
5937 path.cubicTo(SkBits2Float(0x41d453fc), SkBits2Float(0x424f136f), SkBits2Float(0x41d59fc3), SkBits2Float(0x42506a79), SkBits2Float(0x41d6c087), SkBits2Float(0x4250e454));  // 26.541f, 51.769f, 26.703f, 52.104f, 26.844f, 52.223f
5938 path.cubicTo(SkBits2Float(0x41d6c087), SkBits2Float(0x4250ef98), SkBits2Float(0x41d6eb89), SkBits2Float(0x4251105c), SkBits2Float(0x41d70210), SkBits2Float(0x4251105c));  // 26.844f, 52.234f, 26.865f, 52.266f, 26.876f, 52.266f
5939 path.cubicTo(SkBits2Float(0x41d71897), SkBits2Float(0x42511ba0), SkBits2Float(0x41d75a20), SkBits2Float(0x4251105c), SkBits2Float(0x41d7872f), SkBits2Float(0x4251105c));  // 26.887f, 52.277f, 26.919f, 52.266f, 26.941f, 52.266f
5940 path.cubicTo(SkBits2Float(0x41d87ae5), SkBits2Float(0x42501ca6), SkBits2Float(0x41d9147f), SkBits2Float(0x424f136e), SkBits2Float(0x41da0835), SkBits2Float(0x424e157b));  // 27.06f, 52.028f, 27.135f, 51.769f, 27.254f, 51.521f
5941 path.cubicTo(SkBits2Float(0x41da1ebc), SkBits2Float(0x424df4b6), SkBits2Float(0x41db1066), SkBits2Float(0x424d0c44), SkBits2Float(0x41db1066), SkBits2Float(0x424d0100));  // 27.265f, 51.489f, 27.383f, 51.262f, 27.383f, 51.251f
5942 path.cubicTo(SkBits2Float(0x41db3d74), SkBits2Float(0x424cc9b4), SkBits2Float(0x41db9585), SkBits2Float(0x424c8725), SkBits2Float(0x41dbd91a), SkBits2Float(0x424c5b1d));  // 27.405f, 51.197f, 27.448f, 51.132f, 27.481f, 51.089f
5943 path.cubicTo(SkBits2Float(0x41dc5e39), SkBits2Float(0x424bcbc1), SkBits2Float(0x41dcf7d2), SkBits2Float(0x424b301b), SkBits2Float(0x41dd7cf1), SkBits2Float(0x424aac02));  // 27.546f, 50.949f, 27.621f, 50.797f, 27.686f, 50.668f
5944 path.cubicTo(SkBits2Float(0x41ddd501), SkBits2Float(0x424a5e2f), SkBits2Float(0x41ddeb89), SkBits2Float(0x424a105c), SkBits2Float(0x41de4399), SkBits2Float(0x4249b84c));  // 27.729f, 50.592f, 27.74f, 50.516f, 27.783f, 50.43f
5945 path.cubicTo(SkBits2Float(0x41de70a7), SkBits2Float(0x4249a1c5), SkBits2Float(0x41def5c6), SkBits2Float(0x42490725), SkBits2Float(0x41df20c8), SkBits2Float(0x4248e660));  // 27.805f, 50.408f, 27.87f, 50.257f, 27.891f, 50.225f
5946 path.cubicTo(SkBits2Float(0x41df8f60), SkBits2Float(0x42488206), SkBits2Float(0x41e0c49f), SkBits2Float(0x42474cc6), SkBits2Float(0x41e10835), SkBits2Float(0x42472c02));  // 27.945f, 50.127f, 28.096f, 49.825f, 28.129f, 49.793f
5947 path.cubicTo(SkBits2Float(0x41e11ebc), SkBits2Float(0x42472c02), SkBits2Float(0x41e13337), SkBits2Float(0x4246fef4), SkBits2Float(0x41e13337), SkBits2Float(0x4246f4b6));  // 28.14f, 49.793f, 28.15f, 49.749f, 28.15f, 49.739f
5948 path.cubicTo(SkBits2Float(0x41e149be), SkBits2Float(0x4246c7a8), SkBits2Float(0x41e226ed), SkBits2Float(0x42461787), SkBits2Float(0x41e253fc), SkBits2Float(0x4245df35));  // 28.161f, 49.695f, 28.269f, 49.523f, 28.291f, 49.468f
5949 path.cubicTo(SkBits2Float(0x41e27efe), SkBits2Float(0x4245d3f1), SkBits2Float(0x41e2ac0c), SkBits2Float(0x42459ca6), SkBits2Float(0x41e2ac0c), SkBits2Float(0x42459162));  // 28.312f, 49.457f, 28.334f, 49.403f, 28.334f, 49.392f
5950 path.cubicTo(SkBits2Float(0x41e372b4), SkBits2Float(0x4244e141), SkBits2Float(0x41e4666a), SkBits2Float(0x42445c23), SkBits2Float(0x41e4eb89), SkBits2Float(0x42437ef3));  // 28.431f, 49.22f, 28.55f, 49.09f, 28.615f, 48.874f
5951 path.cubicTo(SkBits2Float(0x41e4a7f3), SkBits2Float(0x424373af), SkBits2Float(0x41e47ae5), SkBits2Float(0x42435e2e), SkBits2Float(0x41e4666a), SkBits2Float(0x42435e2e));  // 28.582f, 48.863f, 28.56f, 48.842f, 28.55f, 48.842f
5952 path.cubicTo(SkBits2Float(0x41e3893b), SkBits2Float(0x42433c63), SkBits2Float(0x41e1fbeb), SkBits2Float(0x4243686b), SkBits2Float(0x41e18b47), SkBits2Float(0x42431b9f));  // 28.442f, 48.809f, 28.248f, 48.852f, 28.193f, 48.777f
5953 path.cubicTo(SkBits2Float(0x41e16045), SkBits2Float(0x4242f9d4), SkBits2Float(0x41e18b47), SkBits2Float(0x4242ee91), SkBits2Float(0x41e16045), SkBits2Float(0x4242d910));  // 28.172f, 48.744f, 28.193f, 48.733f, 28.172f, 48.712f
5954 path.cubicTo(SkBits2Float(0x41e1a1ce), SkBits2Float(0x4242b84b), SkBits2Float(0x41e1fbeb), SkBits2Float(0x42429681), SkBits2Float(0x41e226ed), SkBits2Float(0x42429681));  // 28.204f, 48.68f, 28.248f, 48.647f, 28.269f, 48.647f
5955 path.cubicTo(SkBits2Float(0x41e3cac4), SkBits2Float(0x42425f35), SkBits2Float(0x41e9c087), SkBits2Float(0x4242b84c), SkBits2Float(0x41ea5c2c), SkBits2Float(0x424248ae));  // 28.474f, 48.593f, 29.219f, 48.68f, 29.295f, 48.571f
5956 path.cubicTo(SkBits2Float(0x41eacac4), SkBits2Float(0x4241fbe1), SkBits2Float(0x41eacac4), SkBits2Float(0x42414aba), SkBits2Float(0x41eaf7d2), SkBits2Float(0x4240d0df));  // 29.349f, 48.496f, 29.349f, 48.323f, 29.371f, 48.204f
5957 path.cubicTo(SkBits2Float(0x41eb395b), SkBits2Float(0x4240580a), SkBits2Float(0x41eba7f3), SkBits2Float(0x423fb121), SkBits2Float(0x41ebd501), SkBits2Float(0x423f21c4));  // 29.403f, 48.086f, 29.457f, 47.923f, 29.479f, 47.783f
5958 path.cubicTo(SkBits2Float(0x41ec2d11), SkBits2Float(0x423e4fd8), SkBits2Float(0x41ec5813), SkBits2Float(0x423d936e), SkBits2Float(0x41ecb230), SkBits2Float(0x423cb63f));  // 29.522f, 47.578f, 29.543f, 47.394f, 29.587f, 47.178f
5959 path.cubicTo(SkBits2Float(0x41ecc8b7), SkBits2Float(0x423c5e2f), SkBits2Float(0x41edba61), SkBits2Float(0x423b332d), SkBits2Float(0x41ed8f5f), SkBits2Float(0x423ac495));  // 29.598f, 47.092f, 29.716f, 46.8f, 29.695f, 46.692f
5960 path.cubicTo(SkBits2Float(0x41ed6251), SkBits2Float(0x423a8d49), SkBits2Float(0x41ec9ba9), SkBits2Float(0x423a407c), SkBits2Float(0x41ec2d11), SkBits2Float(0x423a3539));  // 29.673f, 46.638f, 29.576f, 46.563f, 29.522f, 46.552f
5961 path.cubicTo(SkBits2Float(0x41ec0003), SkBits2Float(0x423a29f5), SkBits2Float(0x41ebeb88), SkBits2Float(0x423a3539), SkBits2Float(0x41ebd501), SkBits2Float(0x423a3539));  // 29.5f, 46.541f, 29.49f, 46.552f, 29.479f, 46.552f
5962 path.cubicTo(SkBits2Float(0x41eb6669), SkBits2Float(0x423a29f5), SkBits2Float(0x41ea72b3), SkBits2Float(0x4239f2aa), SkBits2Float(0x41e9c086), SkBits2Float(0x423a0931));  // 29.425f, 46.541f, 29.306f, 46.487f, 29.219f, 46.509f
5963 path.cubicTo(SkBits2Float(0x41e99584), SkBits2Float(0x423a0931), SkBits2Float(0x41e96876), SkBits2Float(0x423a29f6), SkBits2Float(0x41e953fb), SkBits2Float(0x423a3539));  // 29.198f, 46.509f, 29.176f, 46.541f, 29.166f, 46.552f
5964 path.cubicTo(SkBits2Float(0x41e96876), SkBits2Float(0x423a8d49), SkBits2Float(0x41e9c086), SkBits2Float(0x423acfd9), SkBits2Float(0x41e9d70d), SkBits2Float(0x423b28ef));  // 29.176f, 46.638f, 29.219f, 46.703f, 29.23f, 46.79f
5965 path.cubicTo(SkBits2Float(0x41ea041b), SkBits2Float(0x423bd910), SkBits2Float(0x41e8fbea), SkBits2Float(0x423c73b0), SkBits2Float(0x41e849bd), SkBits2Float(0x423cac01));  // 29.252f, 46.962f, 29.123f, 47.113f, 29.036f, 47.168f
5966 path.cubicTo(SkBits2Float(0x41e75607), SkBits2Float(0x423cf8ce), SkBits2Float(0x41e5f3b9), SkBits2Float(0x423ced8a), SkBits2Float(0x41e4eb88), SkBits2Float(0x423cd809));  // 28.917f, 47.243f, 28.744f, 47.232f, 28.615f, 47.211f
5967 path.cubicTo(SkBits2Float(0x41e372b3), SkBits2Float(0x423cb63e), SkBits2Float(0x41e2ac0b), SkBits2Float(0x423c0517), SkBits2Float(0x41e10834), SkBits2Float(0x423c52ea));  // 28.431f, 47.178f, 28.334f, 47.005f, 28.129f, 47.081f
5968 path.cubicTo(SkBits2Float(0x41e0db26), SkBits2Float(0x423cd809), SkBits2Float(0x41e0999c), SkBits2Float(0x423d46a0), SkBits2Float(0x41dfd0e8), SkBits2Float(0x423d72a8));  // 28.107f, 47.211f, 28.075f, 47.319f, 27.977f, 47.362f
5969 path.cubicTo(SkBits2Float(0x41deb230), SkBits2Float(0x423dcab8), SkBits2Float(0x41dd3b67), SkBits2Float(0x423d8829), SkBits2Float(0x41dc312a), SkBits2Float(0x423d46a0));  // 27.837f, 47.448f, 27.654f, 47.383f, 27.524f, 47.319f
5970 path.cubicTo(SkBits2Float(0x41dae563), SkBits2Float(0x423cf8cd), SkBits2Float(0x41d98316), SkBits2Float(0x423cccc5), SkBits2Float(0x41d8645d), SkBits2Float(0x423c6971));  // 27.362f, 47.243f, 27.189f, 47.2f, 27.049f, 47.103f
5971 path.cubicTo(SkBits2Float(0x41d7df3e), SkBits2Float(0x423c52ea), SkBits2Float(0x41d72d11), SkBits2Float(0x423c311f), SkBits2Float(0x41d6a9ff), SkBits2Float(0x423c0517));  // 26.984f, 47.081f, 26.897f, 47.048f, 26.833f, 47.005f
5972 path.cubicTo(SkBits2Float(0x41d67cf1), SkBits2Float(0x423bfada), SkBits2Float(0x41d572b3), SkBits2Float(0x423b967f), SkBits2Float(0x41d5893a), SkBits2Float(0x423b967f));  // 26.811f, 46.995f, 26.681f, 46.897f, 26.692f, 46.897f
5973 path.cubicTo(SkBits2Float(0x41d5893a), SkBits2Float(0x423b967f), SkBits2Float(0x41d5b648), SkBits2Float(0x423b6a77), SkBits2Float(0x41d5ccd0), SkBits2Float(0x423b6a77));  // 26.692f, 46.897f, 26.714f, 46.854f, 26.725f, 46.854f
5974 path.cubicTo(SkBits2Float(0x41d6eb88), SkBits2Float(0x423b3e6f), SkBits2Float(0x41d8374f), SkBits2Float(0x423b967f), SkBits2Float(0x41d8fdf7), SkBits2Float(0x423bad06));  // 26.865f, 46.811f, 27.027f, 46.897f, 27.124f, 46.919f
5975 path.cubicTo(SkBits2Float(0x41d9c6ab), SkBits2Float(0x423bb84a), SkBits2Float(0x41da49be), SkBits2Float(0x423bb84a), SkBits2Float(0x41db1066), SkBits2Float(0x423bd90e));  // 27.222f, 46.93f, 27.286f, 46.93f, 27.383f, 46.962f
5976 path.cubicTo(SkBits2Float(0x41db810a), SkBits2Float(0x423bd90e), SkBits2Float(0x41dc5e39), SkBits2Float(0x423bfad9), SkBits2Float(0x41dcf7d3), SkBits2Float(0x423bef95));  // 27.438f, 46.962f, 27.546f, 46.995f, 27.621f, 46.984f
5977 path.cubicTo(SkBits2Float(0x41ddd502), SkBits2Float(0x423bc38d), SkBits2Float(0x41dd4fe3), SkBits2Float(0x423b332b), SkBits2Float(0x41dd7cf2), SkBits2Float(0x423ab94f));  // 27.729f, 46.941f, 27.664f, 46.8f, 27.686f, 46.681f
5978 path.cubicTo(SkBits2Float(0x41dda7f4), SkBits2Float(0x423a77c6), SkBits2Float(0x41de2d13), SkBits2Float(0x423a29f3), SkBits2Float(0x41de70a8), SkBits2Float(0x423a136c));  // 27.707f, 46.617f, 27.772f, 46.541f, 27.805f, 46.519f
5979 path.cubicTo(SkBits2Float(0x41dfba62), SkBits2Float(0x4239c69f), SkBits2Float(0x41e253fc), SkBits2Float(0x423a092f), SkBits2Float(0x41e372b4), SkBits2Float(0x423a4bbe));  // 27.966f, 46.444f, 28.291f, 46.509f, 28.431f, 46.574f
5980 path.cubicTo(SkBits2Float(0x41e40e5a), SkBits2Float(0x423a6c83), SkBits2Float(0x41e49379), SkBits2Float(0x423a8d47), SkBits2Float(0x41e55a21), SkBits2Float(0x423ab94f));  // 28.507f, 46.606f, 28.572f, 46.638f, 28.669f, 46.681f
5981 path.lineTo(SkBits2Float(0x41e58523), SkBits2Float(0x423acfd6));  // 28.69f, 46.703f
5982 path.cubicTo(SkBits2Float(0x41e5b231), SkBits2Float(0x423acfd6), SkBits2Float(0x41e60a42), SkBits2Float(0x423ac492), SkBits2Float(0x41e66252), SkBits2Float(0x423acfd6));  // 28.712f, 46.703f, 28.755f, 46.692f, 28.798f, 46.703f
5983 path.cubicTo(SkBits2Float(0x41e66252), SkBits2Float(0x423ab94f), SkBits2Float(0x41e68f60), SkBits2Float(0x423ab94f), SkBits2Float(0x41e6a5e8), SkBits2Float(0x423aae0b));  // 28.798f, 46.681f, 28.82f, 46.681f, 28.831f, 46.67f
5984 path.cubicTo(SkBits2Float(0x41e6fdf8), SkBits2Float(0x423a136b), SkBits2Float(0x41e5dd34), SkBits2Float(0x423978cc), SkBits2Float(0x41e68f61), SkBits2Float(0x4238fef0));  // 28.874f, 46.519f, 28.733f, 46.368f, 28.82f, 46.249f
5985 path.cubicTo(SkBits2Float(0x41e72b07), SkBits2Float(0x42389058), SkBits2Float(0x41eaf7d4), SkBits2Float(0x42391577), SkBits2Float(0x41ec5815), SkBits2Float(0x4238f3ac));  // 28.896f, 46.141f, 29.371f, 46.271f, 29.543f, 46.238f
5986 path.cubicTo(SkBits2Float(0x41ef1cb1), SkBits2Float(0x4238bd66), SkBits2Float(0x41ed6252), SkBits2Float(0x4237d4f4), SkBits2Float(0x41ede771), SkBits2Float(0x42369eae));  // 29.889f, 46.185f, 29.673f, 45.958f, 29.738f, 45.655f
5987 path.cubicTo(SkBits2Float(0x41ee28fa), SkBits2Float(0x423651e1), SkBits2Float(0x41ee8317), SkBits2Float(0x42366868), SkBits2Float(0x41eedb27), SkBits2Float(0x42365c1f));  // 29.77f, 45.58f, 29.814f, 45.602f, 29.857f, 45.59f
5988 path.cubicTo(SkBits2Float(0x41ef0629), SkBits2Float(0x4236a9f2), SkBits2Float(0x41ef3337), SkBits2Float(0x42371889), SkBits2Float(0x41ef3337), SkBits2Float(0x42375b19));  // 29.878f, 45.666f, 29.9f, 45.774f, 29.9f, 45.839f
5989 path.cubicTo(SkBits2Float(0x41ef49be), SkBits2Float(0x4237e038), SkBits2Float(0x41ef3337), SkBits2Float(0x42386450), SkBits2Float(0x41ef49be), SkBits2Float(0x4238d2e8));  // 29.911f, 45.969f, 29.9f, 46.098f, 29.911f, 46.206f
5990 path.cubicTo(SkBits2Float(0x41ef8b47), SkBits2Float(0x42394cc3), SkBits2Float(0x41eff9df), SkBits2Float(0x4239e763), SkBits2Float(0x41f026ed), SkBits2Float(0x423a613e));  // 29.943f, 46.325f, 29.997f, 46.476f, 30.019f, 46.595f
5991 path.cubicTo(SkBits2Float(0x41f0ac0c), SkBits2Float(0x423b967d), SkBits2Float(0x41f11897), SkBits2Float(0x423ca0bb), SkBits2Float(0x41f1893b), SkBits2Float(0x423dd5fa));  // 30.084f, 46.897f, 30.137f, 47.157f, 30.192f, 47.459f
5992 path.cubicTo(SkBits2Float(0x41f19db6), SkBits2Float(0x423e1889), SkBits2Float(0x41f1f5c6), SkBits2Float(0x423e7bdd), SkBits2Float(0x41f20e5a), SkBits2Float(0x423ebe6d));  // 30.202f, 47.524f, 30.245f, 47.621f, 30.257f, 47.686f
5993 path.cubicTo(SkBits2Float(0x41f27ae5), SkBits2Float(0x423f9059), SkBits2Float(0x41f2be7b), SkBits2Float(0x42406d88), SkBits2Float(0x41f3168b), SkBits2Float(0x424128ec));  // 30.31f, 47.891f, 30.343f, 48.107f, 30.386f, 48.29f
5994 path.cubicTo(SkBits2Float(0x41f35814), SkBits2Float(0x42418203), SkBits2Float(0x41f35814), SkBits2Float(0x4241e556), SkBits2Float(0x41f38523), SkBits2Float(0x42423329));  // 30.418f, 48.377f, 30.418f, 48.474f, 30.44f, 48.55f
5995 path.cubicTo(SkBits2Float(0x41f3b025), SkBits2Float(0x424248aa), SkBits2Float(0x41f420c9), SkBits2Float(0x424275b8), SkBits2Float(0x41f46252), SkBits2Float(0x424280fc));  // 30.461f, 48.571f, 30.516f, 48.615f, 30.548f, 48.626f
5996 path.cubicTo(SkBits2Float(0x41f4fdf8), SkBits2Float(0x4242967d), SkBits2Float(0x41f5db27), SkBits2Float(0x424275b8), SkBits2Float(0x41f674c1), SkBits2Float(0x424280fc));  // 30.624f, 48.647f, 30.732f, 48.615f, 30.807f, 48.626f
5997 path.cubicTo(SkBits2Float(0x41f8f5c7), SkBits2Float(0x4242967d), SkBits2Float(0x41fc5609), SkBits2Float(0x424280fc), SkBits2Float(0x41feeb8a), SkBits2Float(0x4242a1c1));  // 31.12f, 48.647f, 31.542f, 48.626f, 31.865f, 48.658f
5998 path.cubicTo(SkBits2Float(0x41ff45a7), SkBits2Float(0x4242a1c1), SkBits2Float(0x41ffdf40), SkBits2Float(0x424280fc), SkBits2Float(0x4200322f), SkBits2Float(0x4242a1c1));  // 31.909f, 48.658f, 31.984f, 48.626f, 32.049f, 48.658f
5999 path.cubicTo(SkBits2Float(0x420048b6), SkBits2Float(0x4242a1c1), SkBits2Float(0x42005e37), SkBits2Float(0x4242c286), SkBits2Float(0x420074be), SkBits2Float(0x4242d90d));  // 32.071f, 48.658f, 32.092f, 48.69f, 32.114f, 48.712f
6000 path.cubicTo(SkBits2Float(0x420074be), SkBits2Float(0x4242ee8e), SkBits2Float(0x42008002), SkBits2Float(0x42431b9c), SkBits2Float(0x420074be), SkBits2Float(0x4243311d));  // 32.114f, 48.733f, 32.125f, 48.777f, 32.114f, 48.798f
6001 path.lineTo(SkBits2Float(0x420052f3), SkBits2Float(0x42433c61));  // 32.081f, 48.809f
6002 path.cubicTo(SkBits2Float(0x42001cad), SkBits2Float(0x42439fb5), SkBits2Float(0x41ff2f1d), SkBits2Float(0x42436869), SkBits2Float(0x41fe7cf0), SkBits2Float(0x4243aaf9));  // 32.028f, 48.906f, 31.898f, 48.852f, 31.811f, 48.917f
6003 path.cubicTo(SkBits2Float(0x41fe24e0), SkBits2Float(0x4243cbbe), SkBits2Float(0x41fd3336), SkBits2Float(0x4244cab7), SkBits2Float(0x41fd0627), SkBits2Float(0x42450203));  // 31.768f, 48.949f, 31.65f, 49.198f, 31.628f, 49.252f
6004 path.cubicTo(SkBits2Float(0x41fcc291), SkBits2Float(0x4245438c), SkBits2Float(0x41fcc291), SkBits2Float(0x42457bde), SkBits2Float(0x41fcae17), SkBits2Float(0x4245be6d));  // 31.595f, 49.316f, 31.595f, 49.371f, 31.585f, 49.436f
6005 path.cubicTo(SkBits2Float(0x41fc9790), SkBits2Float(0x4245fff6), SkBits2Float(0x41fc28f8), SkBits2Float(0x4246634a), SkBits2Float(0x41fc1271), SkBits2Float(0x4246b11d));  // 31.574f, 49.5f, 31.52f, 49.597f, 31.509f, 49.673f
6006 path.cubicTo(SkBits2Float(0x41fbba61), SkBits2Float(0x42478e4c), SkBits2Float(0x41fba3d9), SkBits2Float(0x424880fc), SkBits2Float(0x41fbba61), SkBits2Float(0x424974b2));  // 31.466f, 49.889f, 31.455f, 50.126f, 31.466f, 50.364f
6007 path.cubicTo(SkBits2Float(0x41fbd0e8), SkBits2Float(0x424a7de9), SkBits2Float(0x41fc8109), SkBits2Float(0x424b5b18), SkBits2Float(0x41fd47b1), SkBits2Float(0x424c4ecf));  // 31.477f, 50.623f, 31.563f, 50.839f, 31.66f, 51.077f
6008 path.cubicTo(SkBits2Float(0x41fd8b47), SkBits2Float(0x424c915e), SkBits2Float(0x41fdccd0), SkBits2Float(0x424cde2b), SkBits2Float(0x41fe3b67), SkBits2Float(0x424d167d));  // 31.693f, 51.142f, 31.725f, 51.217f, 31.779f, 51.272f
6009 path.cubicTo(SkBits2Float(0x41fe9377), SkBits2Float(0x424d4dc9), SkBits2Float(0x41fec086), SkBits2Float(0x424d8f52), SkBits2Float(0x41ff2f1d), SkBits2Float(0x424dc69e));  // 31.822f, 51.326f, 31.844f, 51.39f, 31.898f, 51.444f
6010 path.cubicTo(SkBits2Float(0x41ff70a6), SkBits2Float(0x424df3ac), SkBits2Float(0x41ffdf3e), SkBits2Float(0x424e092d), SkBits2Float(0x42000626), SkBits2Float(0x424e3536));  // 31.93f, 51.488f, 31.984f, 51.509f, 32.006f, 51.552f
6011 path.cubicTo(SkBits2Float(0x42003d72), SkBits2Float(0x424e6c82), SkBits2Float(0x4200c18a), SkBits2Float(0x424f3e6d), SkBits2Float(0x4201041a), SkBits2Float(0x424f49b1));  // 32.06f, 51.606f, 32.189f, 51.811f, 32.254f, 51.822f
6012 path.cubicTo(SkBits2Float(0x420172b2), SkBits2Float(0x424f6b7c), SkBits2Float(0x4201ec8d), SkBits2Float(0x424e8309), SkBits2Float(0x42020d51), SkBits2Float(0x424e4bbd));  // 32.362f, 51.855f, 32.481f, 51.628f, 32.513f, 51.574f
6013 path.cubicTo(SkBits2Float(0x4202be78), SkBits2Float(0x424d5807), SkBits2Float(0x42037ae2), SkBits2Float(0x424c6557), SkBits2Float(0x42044cce), SkBits2Float(0x424b9265));  // 32.686f, 51.336f, 32.87f, 51.099f, 33.075f, 50.893f
6014 path.cubicTo(SkBits2Float(0x42049aa1), SkBits2Float(0x424b4598), SkBits2Float(0x4204e874), SkBits2Float(0x424ae13e), SkBits2Float(0x42054084), SkBits2Float(0x424a9471));  // 33.151f, 50.818f, 33.227f, 50.72f, 33.313f, 50.645f
6015 path.cubicTo(SkBits2Float(0x42058d51), SkBits2Float(0x424a51e2), SkBits2Float(0x4206ef9f), SkBits2Float(0x4248fad7), SkBits2Float(0x42071063), SkBits2Float(0x4248cecf));  // 33.388f, 50.58f, 33.734f, 50.245f, 33.766f, 50.202f
6016 path.cubicTo(SkBits2Float(0x42075e36), SkBits2Float(0x424876bf), SkBits2Float(0x4207cccd), SkBits2Float(0x4248342f), SkBits2Float(0x42083021), SkBits2Float(0x4247e65c));  // 33.842f, 50.116f, 33.95f, 50.051f, 34.047f, 49.975f
6017 path.cubicTo(SkBits2Float(0x42088831), SkBits2Float(0x42478308), SkBits2Float(0x4208f6c9), SkBits2Float(0x4247363b), SkBits2Float(0x420970a4), SkBits2Float(0x4246f3ac));  // 34.133f, 49.878f, 34.241f, 49.803f, 34.36f, 49.738f
6018 path.cubicTo(SkBits2Float(0x4209f5c3), SkBits2Float(0x42469a95), SkBits2Float(0x420a645a), SkBits2Float(0x42464285), SkBits2Float(0x420add2f), SkBits2Float(0x4245f4b2));  // 34.49f, 49.651f, 34.598f, 49.565f, 34.716f, 49.489f
6019 path.cubicTo(SkBits2Float(0x420b2b02), SkBits2Float(0x4245be6c), SkBits2Float(0x420bc5a2), SkBits2Float(0x42455a12), SkBits2Float(0x420b8418), SkBits2Float(0x4244eb7b));  // 34.792f, 49.436f, 34.943f, 49.338f, 34.879f, 49.23f
6020 path.cubicTo(SkBits2Float(0x420b624d), SkBits2Float(0x4244cab6), SkBits2Float(0x420b1fbe), SkBits2Float(0x42449eae), SkBits2Float(0x420b0a3d), SkBits2Float(0x42448827));  // 34.846f, 49.198f, 34.781f, 49.155f, 34.76f, 49.133f
6021 path.cubicTo(SkBits2Float(0x420abd70), SkBits2Float(0x424450db), SkBits2Float(0x420a9ba5), SkBits2Float(0x42440e4c), SkBits2Float(0x420a5916), SkBits2Float(0x4243d700));  // 34.685f, 49.079f, 34.652f, 49.014f, 34.587f, 48.96f
6022 path.cubicTo(SkBits2Float(0x420a3851), SkBits2Float(0x4243b63b), SkBits2Float(0x420a21ca), SkBits2Float(0x4243b63b), SkBits2Float(0x4209f5c2), SkBits2Float(0x42439fb4));  // 34.555f, 48.928f, 34.533f, 48.928f, 34.49f, 48.906f
6023 path.cubicTo(SkBits2Float(0x4209ea7e), SkBits2Float(0x42439470), SkBits2Float(0x4209ea7e), SkBits2Float(0x424373ac), SkBits2Float(0x4209d3f7), SkBits2Float(0x42436868));  // 34.479f, 48.895f, 34.479f, 48.863f, 34.457f, 48.852f
6024 path.cubicTo(SkBits2Float(0x4209b332), SkBits2Float(0x424352e7), SkBits2Float(0x42099db1), SkBits2Float(0x42435e2b), SkBits2Float(0x42097be7), SkBits2Float(0x424352e7));  // 34.425f, 48.831f, 34.404f, 48.842f, 34.371f, 48.831f
6025 path.cubicTo(SkBits2Float(0x420970a3), SkBits2Float(0x42433c60), SkBits2Float(0x42096560), SkBits2Float(0x42431b9b), SkBits2Float(0x4209449b), SkBits2Float(0x42431b9b));  // 34.36f, 48.809f, 34.349f, 48.777f, 34.317f, 48.777f
6026 path.cubicTo(SkBits2Float(0x4208f6c8), SkBits2Float(0x4242e349), SkBits2Float(0x42089eb8), SkBits2Float(0x4242c284), SkBits2Float(0x42083020), SkBits2Float(0x4242a1c0));  // 34.241f, 48.722f, 34.155f, 48.69f, 34.047f, 48.658f
6027 path.cubicTo(SkBits2Float(0x42080f5b), SkBits2Float(0x4242967c), SkBits2Float(0x4207d810), SkBits2Float(0x42425f31), SkBits2Float(0x4207c188), SkBits2Float(0x42425f31));  // 34.015f, 48.647f, 33.961f, 48.593f, 33.939f, 48.593f
6028 path.cubicTo(SkBits2Float(0x420748b3), SkBits2Float(0x424227e5), SkBits2Float(0x42066040), SkBits2Float(0x4241fbdd), SkBits2Float(0x4205b957), SkBits2Float(0x42421ca2));  // 33.821f, 48.539f, 33.594f, 48.496f, 33.431f, 48.528f
6029 path.cubicTo(SkBits2Float(0x4204c6a7), SkBits2Float(0x42423329), SkBits2Float(0x42041580), SkBits2Float(0x4242ad04), SkBits2Float(0x42032d0d), SkBits2Float(0x4242c285));  // 33.194f, 48.55f, 33.021f, 48.669f, 32.794f, 48.69f
6030 path.cubicTo(SkBits2Float(0x42032d0d), SkBits2Float(0x4242b848), SkBits2Float(0x420322d0), SkBits2Float(0x4242a1c0), SkBits2Float(0x42032d0d), SkBits2Float(0x4242a1c0));  // 32.794f, 48.68f, 32.784f, 48.658f, 32.794f, 48.658f
6031 path.cubicTo(SkBits2Float(0x42032d0d), SkBits2Float(0x424280fb), SkBits2Float(0x42036459), SkBits2Float(0x424275b8), SkBits2Float(0x42036f9c), SkBits2Float(0x42426a74));  // 32.794f, 48.626f, 32.848f, 48.615f, 32.859f, 48.604f
6032 path.cubicTo(SkBits2Float(0x4203e977), SkBits2Float(0x4241cfd4), SkBits2Float(0x4204580f), SkBits2Float(0x42418201), SkBits2Float(0x420529fa), SkBits2Float(0x42413f72));  // 32.978f, 48.453f, 33.086f, 48.377f, 33.291f, 48.312f
6033 path.lineTo(SkBits2Float(0x42054abf), SkBits2Float(0x424128eb));  // 33.323f, 48.29f
6034 path.cubicTo(SkBits2Float(0x4205cfde), SkBits2Float(0x4240fde9), SkBits2Float(0x420649b9), SkBits2Float(0x4240fde9), SkBits2Float(0x4206b850), SkBits2Float(0x4240b016));  // 33.453f, 48.248f, 33.572f, 48.248f, 33.68f, 48.172f
6035 path.cubicTo(SkBits2Float(0x4206a1c9), SkBits2Float(0x4240998f), SkBits2Float(0x4206b850), SkBits2Float(0x42408e4b), SkBits2Float(0x4206a1c9), SkBits2Float(0x424078ca));  // 33.658f, 48.15f, 33.68f, 48.139f, 33.658f, 48.118f
6036 path.cubicTo(SkBits2Float(0x42068104), SkBits2Float(0x4240363b), SkBits2Float(0x42054081), SkBits2Float(0x423fb11c), SkBits2Float(0x4204d1ea), SkBits2Float(0x423f9057));  // 33.626f, 48.053f, 33.313f, 47.923f, 33.205f, 47.891f
6037 path.cubicTo(SkBits2Float(0x42044ccb), SkBits2Float(0x423f79d0), SkBits2Float(0x42035915), SkBits2Float(0x423f644f), SkBits2Float(0x4202be75), SkBits2Float(0x423f8513));  // 33.075f, 47.869f, 32.837f, 47.848f, 32.686f, 47.88f
6038 path.cubicTo(SkBits2Float(0x42022f19), SkBits2Float(0x423f9b9a), SkBits2Float(0x4201c081), SkBits2Float(0x423fde2a), SkBits2Float(0x420125e2), SkBits2Float(0x423ff3ab));  // 32.546f, 47.902f, 32.438f, 47.967f, 32.287f, 47.988f
6039 path.lineTo(SkBits2Float(0x42010f5b), SkBits2Float(0x423fc7a3));  // 32.265f, 47.945f
6040 path.cubicTo(SkBits2Float(0x4201a9fb), SkBits2Float(0x423f167c), SkBits2Float(0x42036459), SkBits2Float(0x423d5c1e), SkBits2Float(0x4204580f), SkBits2Float(0x423d198f));  // 32.416f, 47.772f, 32.848f, 47.34f, 33.086f, 47.275f
6041 path.cubicTo(SkBits2Float(0x4205b957), SkBits2Float(0x423cabfe), SkBits2Float(0x4207c188), SkBits2Float(0x423cd806), SkBits2Float(0x42090d4e), SkBits2Float(0x423d24d3));  // 33.431f, 47.168f, 33.939f, 47.211f, 34.263f, 47.286f
6042 path.cubicTo(SkBits2Float(0x420ae871), SkBits2Float(0x423d936b), SkBits2Float(0x420c9892), SkBits2Float(0x423e7bdd), SkBits2Float(0x420e6871), SkBits2Float(0x423ed3ee));  // 34.727f, 47.394f, 35.149f, 47.621f, 35.602f, 47.707f
6043 path.cubicTo(SkBits2Float(0x42103956), SkBits2Float(0x423f438c), SkBits2Float(0x42121479), SkBits2Float(0x423f0b3a), SkBits2Float(0x4213c49a), SkBits2Float(0x423e2e0b));  // 36.056f, 47.816f, 36.52f, 47.761f, 36.942f, 47.545f
6044 path.cubicTo(SkBits2Float(0x4214cdd1), SkBits2Float(0x423db536), SkBits2Float(0x4215c081), SkBits2Float(0x423d24d4), SkBits2Float(0x42169db1), SkBits2Float(0x423c696f));  // 37.201f, 47.427f, 37.438f, 47.286f, 37.654f, 47.103f
6045 path.cubicTo(SkBits2Float(0x4216eb84), SkBits2Float(0x423c26e0), SkBits2Float(0x4217df3a), SkBits2Float(0x423afbde), SkBits2Float(0x4218580f), SkBits2Float(0x423b75b9));  // 37.73f, 47.038f, 37.968f, 46.746f, 38.086f, 46.865f
6046 path.cubicTo(SkBits2Float(0x42189a9e), SkBits2Float(0x423bad05), SkBits2Float(0x421820c3), SkBits2Float(0x423c1b9c), SkBits2Float(0x4217ffff), SkBits2Float(0x423c311d));  // 38.151f, 46.919f, 38.032f, 47.027f, 38, 47.048f
6047 path.cubicTo(SkBits2Float(0x4217a6e8), SkBits2Float(0x423c9577), SkBits2Float(0x42173851), SkBits2Float(0x423ced87), SkBits2Float(0x4216cac0), SkBits2Float(0x423d5c1f));  // 37.913f, 47.146f, 37.805f, 47.232f, 37.698f, 47.34f
6048 path.cubicTo(SkBits2Float(0x42168831), SkBits2Float(0x423d9eae), SkBits2Float(0x421650e5), SkBits2Float(0x423deb7b), SkBits2Float(0x4215f7ce), SkBits2Float(0x423e23cd));  // 37.633f, 47.405f, 37.579f, 47.48f, 37.492f, 47.535f
6049 path.lineTo(SkBits2Float(0x4215f7ce), SkBits2Float(0x423e4492));  // 37.492f, 47.567f
6050 path.cubicTo(SkBits2Float(0x4215ed91), SkBits2Float(0x423e4fd6), SkBits2Float(0x4215d709), SkBits2Float(0x423e4492), SkBits2Float(0x4215cbc6), SkBits2Float(0x423e4fd6));  // 37.482f, 47.578f, 37.46f, 47.567f, 37.449f, 47.578f
6051 path.cubicTo(SkBits2Float(0x42158937), SkBits2Float(0x423e8722), SkBits2Float(0x42153126), SkBits2Float(0x423f00fd), SkBits2Float(0x4214ee97), SkBits2Float(0x423f3849));  // 37.384f, 47.632f, 37.298f, 47.751f, 37.233f, 47.805f
6052 path.cubicTo(SkBits2Float(0x4214d810), SkBits2Float(0x423f438d), SkBits2Float(0x4214cdd2), SkBits2Float(0x423f590e), SkBits2Float(0x4214cdd2), SkBits2Float(0x423f590e));  // 37.211f, 47.816f, 37.201f, 47.837f, 37.201f, 47.837f
6053 path.lineTo(SkBits2Float(0x4214b74b), SkBits2Float(0x423f590e));  // 37.179f, 47.837f
6054 path.lineTo(SkBits2Float(0x4214b74b), SkBits2Float(0x423f79d3));  // 37.179f, 47.869f
6055 path.cubicTo(SkBits2Float(0x42147fff), SkBits2Float(0x423f905a), SkBits2Float(0x421474bc), SkBits2Float(0x423fb11f), SkBits2Float(0x421448b3), SkBits2Float(0x423fc7a6));  // 37.125f, 47.891f, 37.114f, 47.923f, 37.071f, 47.945f
6056 path.lineTo(SkBits2Float(0x421448b3), SkBits2Float(0x423fdd27));  // 37.071f, 47.966f
6057 path.lineTo(SkBits2Float(0x42143332), SkBits2Float(0x423fdd27));  // 37.05f, 47.966f
6058 path.lineTo(SkBits2Float(0x4213b957), SkBits2Float(0x424077c7));  // 36.931f, 48.117f
6059 path.cubicTo(SkBits2Float(0x4213a2d0), SkBits2Float(0x4240830b), SkBits2Float(0x4213b957), SkBits2Float(0x4240988c), SkBits2Float(0x4213b957), SkBits2Float(0x4240988c));  // 36.909f, 48.128f, 36.931f, 48.149f, 36.931f, 48.149f
6060 path.cubicTo(SkBits2Float(0x4213c49b), SkBits2Float(0x4240988c), SkBits2Float(0x4213b957), SkBits2Float(0x4240ba57), SkBits2Float(0x4213da1c), SkBits2Float(0x4240af13));  // 36.942f, 48.149f, 36.931f, 48.182f, 36.963f, 48.171f
6061 path.cubicTo(SkBits2Float(0x42141cab), SkBits2Float(0x4240af13), SkBits2Float(0x4214a1ca), SkBits2Float(0x42405703), SkBits2Float(0x4214ee97), SkBits2Float(0x42403538));  // 37.028f, 48.171f, 37.158f, 48.085f, 37.233f, 48.052f
6062 path.cubicTo(SkBits2Float(0x42153126), SkBits2Float(0x42401473), SkBits2Float(0x42157ef9), SkBits2Float(0x423ffdec), SkBits2Float(0x4215cbc6), SkBits2Float(0x423fd1e4));  // 37.298f, 48.02f, 37.374f, 47.998f, 37.449f, 47.955f
6063 path.cubicTo(SkBits2Float(0x421650e5), SkBits2Float(0x423f8f55), SkBits2Float(0x4216cac0), SkBits2Float(0x423f4288), SkBits2Float(0x42178624), SkBits2Float(0x423f20bd));  // 37.579f, 47.89f, 37.698f, 47.815f, 37.881f, 47.782f
6064 path.cubicTo(SkBits2Float(0x42177ae0), SkBits2Float(0x423f8f55), SkBits2Float(0x421770a3), SkBits2Float(0x423fc6a0), SkBits2Float(0x42174395), SkBits2Float(0x423ffdec));  // 37.87f, 47.89f, 37.86f, 47.944f, 37.816f, 47.998f
6065 path.cubicTo(SkBits2Float(0x4216bf7c), SkBits2Float(0x4240ba56), SkBits2Float(0x4215ab02), SkBits2Float(0x4241332b), SkBits2Float(0x4214f9db), SkBits2Float(0x4241c38e));  // 37.687f, 48.182f, 37.417f, 48.3f, 37.244f, 48.441f
6066 path.cubicTo(SkBits2Float(0x42143333), SkBits2Float(0x424274b5), SkBits2Float(0x42136b85), SkBits2Float(0x42433019), SkBits2Float(0x4212c5a2), SkBits2Float(0x4243f7c7));  // 37.05f, 48.614f, 36.855f, 48.797f, 36.693f, 48.992f
6067 path.cubicTo(SkBits2Float(0x42115917), SkBits2Float(0x42459b9e), SkBits2Float(0x421022d1), SkBits2Float(0x42476c83), SkBits2Float(0x420f0313), SkBits2Float(0x4249311f));  // 36.337f, 49.402f, 36.034f, 49.856f, 35.753f, 50.298f
6068 path.cubicTo(SkBits2Float(0x420e1ba6), SkBits2Float(0x424a936d), SkBits2Float(0x420d75c3), SkBits2Float(0x424c21c3), SkBits2Float(0x420cdb23), SkBits2Float(0x424dba56));  // 35.527f, 50.644f, 35.365f, 51.033f, 35.214f, 51.432f
6069 path.cubicTo(SkBits2Float(0x420c3f7d), SkBits2Float(0x424f6a77), SkBits2Float(0x420b8419), SkBits2Float(0x42510e4e), SkBits2Float(0x420b1fbf), SkBits2Float(0x4252d3f0));  // 35.062f, 51.854f, 34.879f, 52.264f, 34.781f, 52.707f
6070 path.cubicTo(SkBits2Float(0x420ad2f2), SkBits2Float(0x42548e4e), SkBits2Float(0x420ab127), SkBits2Float(0x42565e2d), SkBits2Float(0x420a9063), SkBits2Float(0x4258188c));  // 34.706f, 53.139f, 34.673f, 53.592f, 34.641f, 54.024f
6071 path.cubicTo(SkBits2Float(0x420a7ae2), SkBits2Float(0x4258882a), SkBits2Float(0x420a9ba7), SkBits2Float(0x4258e03a), SkBits2Float(0x420a9ba7), SkBits2Float(0x42594ed2));  // 34.62f, 54.133f, 34.652f, 54.219f, 34.652f, 54.327f
6072 path.cubicTo(SkBits2Float(0x420aa6eb), SkBits2Float(0x425e301a), SkBits2Float(0x420c820d), SkBits2Float(0x4262c495), SkBits2Float(0x420ecbc8), SkBits2Float(0x4266fff9));  // 34.663f, 55.547f, 35.127f, 56.692f, 35.699f, 57.75f
6073 path.cubicTo(SkBits2Float(0x420eed93), SkBits2Float(0x426721c4), SkBits2Float(0x420f0e57), SkBits2Float(0x42674dcc), SkBits2Float(0x420f3022), SkBits2Float(0x42676e91));  // 35.732f, 57.783f, 35.764f, 57.826f, 35.797f, 57.858f
6074 path.cubicTo(SkBits2Float(0x420f7df5), SkBits2Float(0x42680a37), SkBits2Float(0x420fbf7e), SkBits2Float(0x42689993), SkBits2Float(0x42100d51), SkBits2Float(0x42693433));  // 35.873f, 58.01f, 35.937f, 58.15f, 36.013f, 58.301f
6075 path.cubicTo(SkBits2Float(0x42102e16), SkBits2Float(0x426955fe), SkBits2Float(0x42105a1e), SkBits2Float(0x426976c2), SkBits2Float(0x42106561), SkBits2Float(0x42698d4a));  // 36.045f, 58.334f, 36.088f, 58.366f, 36.099f, 58.388f
6076 path.cubicTo(SkBits2Float(0x4210872c), SkBits2Float(0x4269e55a), SkBits2Float(0x4210a7f0), SkBits2Float(0x426a3d6b), SkBits2Float(0x4210ea80), SkBits2Float(0x426a6a79));  // 36.132f, 58.474f, 36.164f, 58.56f, 36.229f, 58.604f
6077 path.cubicTo(SkBits2Float(0x42119aa1), SkBits2Float(0x426acdcd), SkBits2Float(0x42131376), SkBits2Float(0x426a48ae), SkBits2Float(0x4213e561), SkBits2Float(0x426a6a79));  // 36.401f, 58.701f, 36.769f, 58.571f, 36.974f, 58.604f
6078 path.cubicTo(SkBits2Float(0x4213fae2), SkBits2Float(0x426a75bd), SkBits2Float(0x42141cad), SkBits2Float(0x426a8b3e), SkBits2Float(0x42143d71), SkBits2Float(0x426a8b3e));  // 36.995f, 58.615f, 37.028f, 58.636f, 37.06f, 58.636f
6079 path.cubicTo(SkBits2Float(0x42141cac), SkBits2Float(0x426acdcd), SkBits2Float(0x42143334), SkBits2Float(0x426aee92), SkBits2Float(0x42141cac), SkBits2Float(0x426b25de));  // 37.028f, 58.701f, 37.05f, 58.733f, 37.028f, 58.787f
6080 path.cubicTo(SkBits2Float(0x4213e560), SkBits2Float(0x426b9fb9), SkBits2Float(0x4212dc29), SkBits2Float(0x426d0d4b), SkBits2Float(0x4212f1aa), SkBits2Float(0x426da7ea));  // 36.974f, 58.906f, 36.715f, 59.263f, 36.736f, 59.414f
6081 path.cubicTo(SkBits2Float(0x4212f1aa), SkBits2Float(0x426dfffa), SkBits2Float(0x4213b958), SkBits2Float(0x426ed1e6), SkBits2Float(0x4213c49c), SkBits2Float(0x426edd29));  // 36.736f, 59.5f, 36.931f, 59.705f, 36.942f, 59.716f
6082 path.cubicTo(SkBits2Float(0x4213e561), SkBits2Float(0x426f1fb8), SkBits2Float(0x42143d71), SkBits2Float(0x426f9993), SkBits2Float(0x421448b5), SkBits2Float(0x426ffce7));  // 36.974f, 59.781f, 37.06f, 59.9f, 37.071f, 59.997f
6083 path.cubicTo(SkBits2Float(0x421448b5), SkBits2Float(0x427076c2), SkBits2Float(0x4214072c), SkBits2Float(0x4270ef97), SkBits2Float(0x4213fae2), SkBits2Float(0x427148ae));  // 37.071f, 60.116f, 37.007f, 60.234f, 36.995f, 60.321f
6084 path.cubicTo(SkBits2Float(0x4213e561), SkBits2Float(0x42717ffa), SkBits2Float(0x4213fae2), SkBits2Float(0x42718b3d), SkBits2Float(0x4213e561), SkBits2Float(0x4271b746));  // 36.974f, 60.375f, 36.995f, 60.386f, 36.974f, 60.429f
6085 path.cubicTo(SkBits2Float(0x4213da1d), SkBits2Float(0x4271ccc7), SkBits2Float(0x4213b959), SkBits2Float(0x42721a9a), SkBits2Float(0x4213a2d2), SkBits2Float(0x42721a9a));  // 36.963f, 60.45f, 36.931f, 60.526f, 36.909f, 60.526f
6086 path.cubicTo(SkBits2Float(0x42134ac2), SkBits2Float(0x42723c65), SkBits2Float(0x4212d0e6), SkBits2Float(0x427225de), SkBits2Float(0x42126d93), SkBits2Float(0x427225de));  // 36.823f, 60.559f, 36.704f, 60.537f, 36.607f, 60.537f
6087 path.cubicTo(SkBits2Float(0x42124bc8), SkBits2Float(0x427225de), SkBits2Float(0x4211bc6c), SkBits2Float(0x42723c65), SkBits2Float(0x42119064), SkBits2Float(0x42723c65));  // 36.574f, 60.537f, 36.434f, 60.559f, 36.391f, 60.559f
6088 path.cubicTo(SkBits2Float(0x4210d3fa), SkBits2Float(0x427246a2), SkBits2Float(0x420ff6ca), SkBits2Float(0x4272301b), SkBits2Float(0x420f676e), SkBits2Float(0x4272686d));  // 36.207f, 60.569f, 35.991f, 60.547f, 35.851f, 60.602f
6089 path.cubicTo(SkBits2Float(0x420eb647), SkBits2Float(0x4272b53a), SkBits2Float(0x420e52f3), SkBits2Float(0x42737ce8), SkBits2Float(0x420dc291), SkBits2Float(0x4273f5bd));  // 35.678f, 60.677f, 35.581f, 60.872f, 35.44f, 60.99f
6090 path.cubicTo(SkBits2Float(0x420d116a), SkBits2Float(0x4274861f), SkBits2Float(0x420c5606), SkBits2Float(0x4274e973), SkBits2Float(0x420b999b), SkBits2Float(0x4275580b));  // 35.267f, 61.131f, 35.084f, 61.228f, 34.9f, 61.336f
6091 path.cubicTo(SkBits2Float(0x420a9ba7), SkBits2Float(0x4275fdee), SkBits2Float(0x4209b335), SkBits2Float(0x42768d4a), SkBits2Float(0x42089eba), SkBits2Float(0x4276f1a5));  // 34.652f, 61.498f, 34.425f, 61.638f, 34.155f, 61.736f
6092 path.cubicTo(SkBits2Float(0x4207ab04), SkBits2Float(0x42773e72), SkBits2Float(0x4206a1cc), SkBits2Float(0x42778101), SkBits2Float(0x4205b95a), SkBits2Float(0x4277c391));  // 33.917f, 61.811f, 33.658f, 61.876f, 33.431f, 61.941f
6093 path.cubicTo(SkBits2Float(0x4203bd73), SkBits2Float(0x42786974), SkBits2Float(0x4201cbc9), SkBits2Float(0x42793b60), SkBits2Float(0x4200ac0a), SkBits2Float(0x427af5be));  // 32.935f, 62.103f, 32.449f, 62.308f, 32.168f, 62.74f
6094 path.cubicTo(SkBits2Float(0x420074be), SkBits2Float(0x427b428b), SkBits2Float(0x41ffb43d), SkBits2Float(0x427c4cc8), SkBits2Float(0x41ff872f), SkBits2Float(0x427ca4d9));  // 32.114f, 62.815f, 31.963f, 63.075f, 31.941f, 63.161f
6095 path.cubicTo(SkBits2Float(0x41ff872f), SkBits2Float(0x427cbb60), SkBits2Float(0x41ff9db6), SkBits2Float(0x427cd0e1), SkBits2Float(0x41ff872f), SkBits2Float(0x427ce768));  // 31.941f, 63.183f, 31.952f, 63.204f, 31.941f, 63.226f
6096 path.cubicTo(SkBits2Float(0x41ffb43d), SkBits2Float(0x427cfce9), SkBits2Float(0x41ffb43d), SkBits2Float(0x427cfce9), SkBits2Float(0x41ffdf3f), SkBits2Float(0x427d1370));  // 31.963f, 63.247f, 31.963f, 63.247f, 31.984f, 63.269f
6097 path.cubicTo(SkBits2Float(0x4200ac0a), SkBits2Float(0x427cfce9), SkBits2Float(0x42010f5e), SkBits2Float(0x427cd0e1), SkBits2Float(0x4201a9fe), SkBits2Float(0x427ca4d8));  // 32.168f, 63.247f, 32.265f, 63.204f, 32.416f, 63.161f
6098 path.cubicTo(SkBits2Float(0x4201c085), SkBits2Float(0x427c9994), SkBits2Float(0x4201f7d1), SkBits2Float(0x427c78d0), SkBits2Float(0x42020315), SkBits2Float(0x427c78d0));  // 32.438f, 63.15f, 32.492f, 63.118f, 32.503f, 63.118f
6099 path.cubicTo(SkBits2Float(0x420223da), SkBits2Float(0x427c6249), SkBits2Float(0x42022f1d), SkBits2Float(0x427c78d0), SkBits2Float(0x42023a61), SkBits2Float(0x427c78d0));  // 32.535f, 63.096f, 32.546f, 63.118f, 32.557f, 63.118f
6100 path.cubicTo(SkBits2Float(0x42025b26), SkBits2Float(0x427c6249), SkBits2Float(0x42028834), SkBits2Float(0x427c4184), SkBits2Float(0x4202a8f9), SkBits2Float(0x427c4184));  // 32.589f, 63.096f, 32.633f, 63.064f, 32.665f, 63.064f
6101 path.cubicTo(SkBits2Float(0x4203e97c), SkBits2Float(0x427bc7a9), SkBits2Float(0x42061db5), SkBits2Float(0x427ba6e4), SkBits2Float(0x4207b649), SkBits2Float(0x427bfef5));  // 32.978f, 62.945f, 33.529f, 62.913f, 33.928f, 62.999f
6102 path.cubicTo(SkBits2Float(0x42089ebc), SkBits2Float(0x427c20c0), SkBits2Float(0x420970a7), SkBits2Float(0x427c78d0), SkBits2Float(0x420a21ce), SkBits2Float(0x427cc59d));  // 34.155f, 63.032f, 34.36f, 63.118f, 34.533f, 63.193f
6103 path.cubicTo(SkBits2Float(0x420a6fa1), SkBits2Float(0x427cdc24), SkBits2Float(0x420ab12a), SkBits2Float(0x427ce768), SkBits2Float(0x420af3ba), SkBits2Float(0x427d1370));  // 34.609f, 63.215f, 34.673f, 63.226f, 34.738f, 63.269f
6104 path.cubicTo(SkBits2Float(0x420b0a41), SkBits2Float(0x427d1370), SkBits2Float(0x420af3ba), SkBits2Float(0x427d353b), SkBits2Float(0x420b1585), SkBits2Float(0x427d407e));  // 34.76f, 63.269f, 34.738f, 63.302f, 34.771f, 63.313f
6105 path.cubicTo(SkBits2Float(0x420b0a41), SkBits2Float(0x427d6143), SkBits2Float(0x420b0a41), SkBits2Float(0x427d8207), SkBits2Float(0x420af3ba), SkBits2Float(0x427dae0f));  // 34.76f, 63.345f, 34.76f, 63.377f, 34.738f, 63.42f
6106 path.cubicTo(SkBits2Float(0x420ad2f5), SkBits2Float(0x427df09e), SkBits2Float(0x420a2d12), SkBits2Float(0x427e54f8), SkBits2Float(0x420a4293), SkBits2Float(0x427ee455));  // 34.706f, 63.485f, 34.544f, 63.583f, 34.565f, 63.723f
6107 path.cubicTo(SkBits2Float(0x420a591a), SkBits2Float(0x427f051a), SkBits2Float(0x420ad2f5), SkBits2Float(0x427f3122), SkBits2Float(0x420af3ba), SkBits2Float(0x427f47a9));  // 34.587f, 63.755f, 34.706f, 63.798f, 34.738f, 63.82f
6108 path.cubicTo(SkBits2Float(0x420af3ba), SkBits2Float(0x427f5d2a), SkBits2Float(0x420af3ba), SkBits2Float(0x427f73b1), SkBits2Float(0x420b0a41), SkBits2Float(0x427f7ef5));  // 34.738f, 63.841f, 34.738f, 63.863f, 34.76f, 63.874f
6109 path.cubicTo(SkBits2Float(0x420add33), SkBits2Float(0x427fccc8), SkBits2Float(0x420a21ce), SkBits2Float(0x42803e74), SkBits2Float(0x420a2d12), SkBits2Float(0x4280701e));  // 34.716f, 63.95f, 34.533f, 64.122f, 34.544f, 64.219f
6110 path.cubicTo(SkBits2Float(0x420a3856), SkBits2Float(0x42808bc4), SkBits2Float(0x420ad2f5), SkBits2Float(0x4280a7ed), SkBits2Float(0x420ae876), SkBits2Float(0x4280b2ad));  // 34.555f, 64.273f, 34.706f, 64.328f, 34.727f, 64.349f
6111 path.cubicTo(SkBits2Float(0x420af3ba), SkBits2Float(0x4280bdf1), SkBits2Float(0x420add32), SkBits2Float(0x4280c8b1), SkBits2Float(0x420af3ba), SkBits2Float(0x4280d3f5));  // 34.738f, 64.371f, 34.716f, 64.392f, 34.738f, 64.414f
6112 path.cubicTo(SkBits2Float(0x420abd74), SkBits2Float(0x4280f53d), SkBits2Float(0x4209f5c6), SkBits2Float(0x4281428d), SkBits2Float(0x420a21ce), SkBits2Float(0x42816e95));  // 34.685f, 64.479f, 34.49f, 64.63f, 34.533f, 64.716f
6113 path.cubicTo(SkBits2Float(0x420a4293), SkBits2Float(0x4281957e), SkBits2Float(0x420ad2f5), SkBits2Float(0x4281a664), SkBits2Float(0x420ae876), SkBits2Float(0x4281c187));  // 34.565f, 64.792f, 34.706f, 64.825f, 34.727f, 64.878f
6114 path.cubicTo(SkBits2Float(0x420ae876), SkBits2Float(0x4281c729), SkBits2Float(0x420add32), SkBits2Float(0x4281d26c), SkBits2Float(0x420ae876), SkBits2Float(0x4281d26c));  // 34.727f, 64.889f, 34.716f, 64.911f, 34.727f, 64.911f
6115 path.cubicTo(SkBits2Float(0x420aa6ed), SkBits2Float(0x4281fe74), SkBits2Float(0x420a591a), SkBits2Float(0x42821a1a), SkBits2Float(0x4209f5c6), SkBits2Float(0x42823b62));  // 34.663f, 64.997f, 34.587f, 65.051f, 34.49f, 65.116f
6116 path.cubicTo(SkBits2Float(0x420a168b), SkBits2Float(0x42825caa), SkBits2Float(0x420a010a), SkBits2Float(0x4282624b), SkBits2Float(0x420a2d12), SkBits2Float(0x42827850));  // 34.522f, 65.181f, 34.501f, 65.192f, 34.544f, 65.235f
6117 path.cubicTo(SkBits2Float(0x420a645e), SkBits2Float(0x428288b2), SkBits2Float(0x420a9baa), SkBits2Float(0x428293f6), SkBits2Float(0x420ad2f5), SkBits2Float(0x4282a458));  // 34.598f, 65.267f, 34.652f, 65.289f, 34.706f, 65.321f
6118 path.cubicTo(SkBits2Float(0x420ad2f5), SkBits2Float(0x4282a458), SkBits2Float(0x420add32), SkBits2Float(0x4282d685), SkBits2Float(0x420abd74), SkBits2Float(0x4282c5a0));  // 34.706f, 65.321f, 34.716f, 65.419f, 34.685f, 65.386f
6119 path.cubicTo(SkBits2Float(0x420aa6ed), SkBits2Float(0x4282cb42), SkBits2Float(0x420a9066), SkBits2Float(0x4282e146), SkBits2Float(0x420a6fa1), SkBits2Float(0x4282e6e8));  // 34.663f, 65.397f, 34.641f, 65.44f, 34.609f, 65.451f
6120 path.cubicTo(SkBits2Float(0x4209df3f), SkBits2Float(0x42830830), SkBits2Float(0x4208f6cc), SkBits2Float(0x4282bae0), SkBits2Float(0x42088834), SkBits2Float(0x4282a459));  // 34.468f, 65.516f, 34.241f, 65.365f, 34.133f, 65.321f
6121 path.cubicTo(SkBits2Float(0x420846ab), SkBits2Float(0x42829915), SkBits2Float(0x42080f5f), SkBits2Float(0x42829915), SkBits2Float(0x4207c18c), SkBits2Float(0x428293f7));  // 34.069f, 65.299f, 34.015f, 65.299f, 33.939f, 65.289f
6122 path.cubicTo(SkBits2Float(0x42079584), SkBits2Float(0x428288b3), SkBits2Float(0x420748b7), SkBits2Float(0x42826d0e), SkBits2Float(0x42071ba9), SkBits2Float(0x42826d0e));  // 33.896f, 65.267f, 33.821f, 65.213f, 33.777f, 65.213f
6123 path.cubicTo(SkBits2Float(0x4206cedc), SkBits2Float(0x4282624d), SkBits2Float(0x42068109), SkBits2Float(0x4282624d), SkBits2Float(0x42061272), SkBits2Float(0x4282624d));  // 33.702f, 65.192f, 33.626f, 65.192f, 33.518f, 65.192f
6124 path.cubicTo(SkBits2Float(0x4205cfe3), SkBits2Float(0x42825cab), SkBits2Float(0x4205614b), SkBits2Float(0x42824bc6), SkBits2Float(0x42051ebc), SkBits2Float(0x42824bc6));  // 33.453f, 65.181f, 33.345f, 65.148f, 33.28f, 65.148f
6125 path.cubicTo(SkBits2Float(0x42037ae5), SkBits2Float(0x428246a7), SkBits2Float(0x4201cbca), SkBits2Float(0x42829eb8), SkBits2Float(0x4200ac0c), SkBits2Float(0x4282e147));  // 32.87f, 65.138f, 32.449f, 65.31f, 32.168f, 65.44f
6126 path.cubicTo(SkBits2Float(0x42008b47), SkBits2Float(0x4282e6e9), SkBits2Float(0x42005e39), SkBits2Float(0x4282fced), SkBits2Float(0x42003d74), SkBits2Float(0x4283028f));  // 32.136f, 65.451f, 32.092f, 65.494f, 32.06f, 65.505f
6127 path.cubicTo(SkBits2Float(0x41fdf9e2), SkBits2Float(0x42833f7d), SkBits2Float(0x41fa4190), SkBits2Float(0x42836041), SkBits2Float(0x41f674c3), SkBits2Float(0x42834fdf));  // 31.747f, 65.624f, 31.282f, 65.688f, 30.807f, 65.656f
6128 path.cubicTo(SkBits2Float(0x41f59794), SkBits2Float(0x4283451e), SkBits2Float(0x41f48d56), SkBits2Float(0x4283451e), SkBits2Float(0x41f3b027), SkBits2Float(0x428339db));  // 30.699f, 65.635f, 30.569f, 65.635f, 30.461f, 65.613f
6129 path.cubicTo(SkBits2Float(0x41f32d15), SkBits2Float(0x42832e97), SkBits2Float(0x41f2666d), SkBits2Float(0x428312f2), SkBits2Float(0x41f1b440), SkBits2Float(0x42830831));  // 30.397f, 65.591f, 30.3f, 65.537f, 30.213f, 65.516f
6130 path.cubicTo(SkBits2Float(0x41f1041f), SkBits2Float(0x4282fced), SkBits2Float(0x41f07f01), SkBits2Float(0x4282f74c), SkBits2Float(0x41efb859), SkBits2Float(0x4282e6e9));  // 30.127f, 65.494f, 30.062f, 65.483f, 29.965f, 65.451f
6131 path.cubicTo(SkBits2Float(0x41efa1d2), SkBits2Float(0x4282e147), SkBits2Float(0x41ef6049), SkBits2Float(0x4282d687), SkBits2Float(0x41ef49c1), SkBits2Float(0x4282d687));  // 29.954f, 65.44f, 29.922f, 65.419f, 29.911f, 65.419f
6132 path.cubicTo(SkBits2Float(0x41ef062b), SkBits2Float(0x4282cb43), SkBits2Float(0x41eec4a2), SkBits2Float(0x4282cb43), SkBits2Float(0x41ee560b), SkBits2Float(0x4282c5a2));  // 29.878f, 65.397f, 29.846f, 65.397f, 29.792f, 65.386f
6133 path.cubicTo(SkBits2Float(0x41ee1275), SkBits2Float(0x4282c000), SkBits2Float(0x41ed8f63), SkBits2Float(0x4282a45a), SkBits2Float(0x41ed3546), SkBits2Float(0x42829eb9));  // 29.759f, 65.375f, 29.695f, 65.321f, 29.651f, 65.31f
6134 path.cubicTo(SkBits2Float(0x41ebbe7d), SkBits2Float(0x42827d71), SkBits2Float(0x41ea72b7), SkBits2Float(0x42825cad), SkBits2Float(0x41e91069), SkBits2Float(0x42823b65));  // 29.468f, 65.245f, 29.306f, 65.181f, 29.133f, 65.116f
6135 path.cubicTo(SkBits2Float(0x41e6fdfa), SkBits2Float(0x42820419), SkBits2Float(0x41e4a7f6), SkBits2Float(0x4281ab86), SkBits2Float(0x41e18b4a), SkBits2Float(0x4281ab86));  // 28.874f, 65.008f, 28.582f, 64.835f, 28.193f, 64.835f
6136 path.cubicTo(SkBits2Float(0x41de9bac), SkBits2Float(0x4281b128), SkBits2Float(0x41dcf7d5), SkBits2Float(0x4281fe78), SkBits2Float(0x41db3d77), SkBits2Float(0x428246a9));  // 27.826f, 64.846f, 27.621f, 64.997f, 27.405f, 65.138f
6137 path.cubicTo(SkBits2Float(0x41dacedf), SkBits2Float(0x4282570b), SkBits2Float(0x41da76cf), SkBits2Float(0x4282570b), SkBits2Float(0x41da0838), SkBits2Float(0x4282676e));  // 27.351f, 65.17f, 27.308f, 65.17f, 27.254f, 65.202f
6138 path.cubicTo(SkBits2Float(0x41d9f1b1), SkBits2Float(0x4282676e), SkBits2Float(0x41d9f1b1), SkBits2Float(0x42827853), SkBits2Float(0x41d9db2a), SkBits2Float(0x42827d72));  // 27.243f, 65.202f, 27.243f, 65.235f, 27.232f, 65.245f
6139 path.cubicTo(SkBits2Float(0x41d96c92), SkBits2Float(0x428288b6), SkBits2Float(0x41d91482), SkBits2Float(0x428288b6), SkBits2Float(0x41d8a5eb), SkBits2Float(0x42829eba));  // 27.178f, 65.267f, 27.135f, 65.267f, 27.081f, 65.31f
6140 path.lineTo(SkBits2Float(0x41d88f64), SkBits2Float(0x4282a9fe));  // 27.07f, 65.332f
6141 path.cubicTo(SkBits2Float(0x41d6eb8d), SkBits2Float(0x4282e14a), SkBits2Float(0x41d4ac10), SkBits2Float(0x42830291), SkBits2Float(0x41d25818), SkBits2Float(0x428312f4));  // 26.865f, 65.44f, 26.584f, 65.505f, 26.293f, 65.537f
6142 path.cubicTo(SkBits2Float(0x41d0b235), SkBits2Float(0x42831896), SkBits2Float(0x41ce74c4), SkBits2Float(0x428312f4), SkBits2Float(0x41cce568), SkBits2Float(0x42830292));  // 26.087f, 65.548f, 25.807f, 65.537f, 25.612f, 65.505f
6143 path.cubicTo(SkBits2Float(0x41cca3df), SkBits2Float(0x4282fcf0), SkBits2Float(0x41cc1ec0), SkBits2Float(0x4282f1ad), SkBits2Float(0x41cbf3be), SkBits2Float(0x4282f1ad));  // 25.58f, 65.494f, 25.515f, 65.472f, 25.494f, 65.472f
6144 path.cubicTo(SkBits2Float(0x41ca9170), SkBits2Float(0x4282dba9), SkBits2Float(0x41c99dba), SkBits2Float(0x4282e14b), SkBits2Float(0x41c8687a), SkBits2Float(0x4282cb47));  // 25.321f, 65.429f, 25.202f, 65.44f, 25.051f, 65.397f
6145 path.cubicTo(SkBits2Float(0x41c7b64d), SkBits2Float(0x4282c003), SkBits2Float(0x41c71cb3), SkBits2Float(0x4282bae5), SkBits2Float(0x41c6560b), SkBits2Float(0x4282a9ff));  // 24.964f, 65.375f, 24.889f, 65.365f, 24.792f, 65.332f
6146 path.lineTo(SkBits2Float(0x41c628fd), SkBits2Float(0x42829ebb));  // 24.77f, 65.31f
6147 path.cubicTo(SkBits2Float(0x41c58d57), SkBits2Float(0x428293fa), SkBits2Float(0x41c53547), SkBits2Float(0x42829919), SkBits2Float(0x41c4b028), SkBits2Float(0x428293fa));  // 24.694f, 65.289f, 24.651f, 65.299f, 24.586f, 65.289f
6148 path.lineTo(SkBits2Float(0x41c46e9f), SkBits2Float(0x42828315));  // 24.554f, 65.256f
6149 path.cubicTo(SkBits2Float(0x41c1d712), SkBits2Float(0x4282570d), SkBits2Float(0x41be20cc), SkBits2Float(0x428209bd), SkBits2Float(0x41bb0420), SkBits2Float(0x42820f5f));  // 24.23f, 65.17f, 23.766f, 65.019f, 23.377f, 65.03f
6150 path.cubicTo(SkBits2Float(0x41b9a1d2), SkBits2Float(0x42820f5f), SkBits2Float(0x41b7e774), SkBits2Float(0x42823024), SkBits2Float(0x41b6dd37), SkBits2Float(0x428246ab));  // 23.204f, 65.03f, 22.988f, 65.094f, 22.858f, 65.138f
6151 path.cubicTo(SkBits2Float(0x41b5eb8d), SkBits2Float(0x4282570d), SkBits2Float(0x41b54fe7), SkBits2Float(0x4282570d), SkBits2Float(0x41b45c31), SkBits2Float(0x42826770));  // 22.74f, 65.17f, 22.664f, 65.17f, 22.545f, 65.202f
6152 path.cubicTo(SkBits2Float(0x41b3ed99), SkBits2Float(0x42826d12), SkBits2Float(0x41b35400), SkBits2Float(0x428288b8), SkBits2Float(0x41b2fbef), SkBits2Float(0x428293fb));  // 22.491f, 65.213f, 22.416f, 65.267f, 22.373f, 65.289f
6153 path.cubicTo(SkBits2Float(0x41b274c4), SkBits2Float(0x4282991a), SkBits2Float(0x41b249c2), SkBits2Float(0x428293fb), SkBits2Float(0x41b1c4a3), SkBits2Float(0x42829ebc));  // 22.307f, 65.299f, 22.286f, 65.289f, 22.221f, 65.31f
6154 path.cubicTo(SkBits2Float(0x41b1560b), SkBits2Float(0x4282a45e), SkBits2Float(0x41b08f64), SkBits2Float(0x4282c004), SkBits2Float(0x41aff3be), SkBits2Float(0x4282cb47));  // 22.167f, 65.321f, 22.07f, 65.375f, 21.994f, 65.397f
6155 path.cubicTo(SkBits2Float(0x41aea7f7), SkBits2Float(0x4282e14b), SkBits2Float(0x41ad893f), SkBits2Float(0x4282f1ad), SkBits2Float(0x41ac3d78), SkBits2Float(0x42830835));  // 21.832f, 65.44f, 21.692f, 65.472f, 21.53f, 65.516f
6156 path.cubicTo(SkBits2Float(0x41ac106a), SkBits2Float(0x428312f6), SkBits2Float(0x41aba1d2), SkBits2Float(0x42831e39), SkBits2Float(0x41ab76d0), SkBits2Float(0x428323db));  // 21.508f, 65.537f, 21.454f, 65.559f, 21.433f, 65.57f
6157 path.cubicTo(SkBits2Float(0x41aac4a3), SkBits2Float(0x4283343d), SkBits2Float(0x41aa560b), SkBits2Float(0x4283343d), SkBits2Float(0x41a9ba66), SkBits2Float(0x42833f81));  // 21.346f, 65.602f, 21.292f, 65.602f, 21.216f, 65.624f
6158 path.lineTo(SkBits2Float(0x41a98f64), SkBits2Float(0x42834fe3));  // 21.195f, 65.656f
6159 path.cubicTo(SkBits2Float(0x41a96256), SkBits2Float(0x42834fe3), SkBits2Float(0x41a93754), SkBits2Float(0x42834522), SkBits2Float(0x41a920cc), SkBits2Float(0x42834fe3));  // 21.173f, 65.656f, 21.152f, 65.635f, 21.141f, 65.656f
6160 path.cubicTo(SkBits2Float(0x41a90a45), SkBits2Float(0x42834fe3), SkBits2Float(0x41a8b234), SkBits2Float(0x42836045), SkBits2Float(0x41a89bad), SkBits2Float(0x42836b89));  // 21.13f, 65.656f, 21.087f, 65.688f, 21.076f, 65.71f
6161 path.cubicTo(SkBits2Float(0x41a7d505), SkBits2Float(0x42837beb), SkBits2Float(0x41a7666e), SkBits2Float(0x4283818d), SkBits2Float(0x41a6cac8), SkBits2Float(0x42839d33));  // 20.979f, 65.742f, 20.925f, 65.753f, 20.849f, 65.807f
6162 path.cubicTo(SkBits2Float(0x41a6b64d), SkBits2Float(0x4283a2d5), SkBits2Float(0x41a672b8), SkBits2Float(0x4283b3ba), SkBits2Float(0x41a65e3d), SkBits2Float(0x4283b8d9));  // 20.839f, 65.818f, 20.806f, 65.851f, 20.796f, 65.861f
6163 path.cubicTo(SkBits2Float(0x41a6312f), SkBits2Float(0x4283be7b), SkBits2Float(0x41a60420), SkBits2Float(0x4283b8d9), SkBits2Float(0x41a5ed99), SkBits2Float(0x4283be7b));  // 20.774f, 65.872f, 20.752f, 65.861f, 20.741f, 65.872f
6164 path.cubicTo(SkBits2Float(0x41a5810e), SkBits2Float(0x4283cedd), SkBits2Float(0x41a4e568), SkBits2Float(0x428406ac), SkBits2Float(0x41a48d57), SkBits2Float(0x42840bcb));  // 20.688f, 65.904f, 20.612f, 66.013f, 20.569f, 66.023f
6165 path.lineTo(SkBits2Float(0x41a41ebf), SkBits2Float(0x42840bcb));  // 20.515f, 66.023f
6166 path.cubicTo(SkBits2Float(0x41a40838), SkBits2Float(0x4283fb69), SkBits2Float(0x41a3f1b1), SkBits2Float(0x428406ac), SkBits2Float(0x41a3f1b1), SkBits2Float(0x4283fb69));  // 20.504f, 65.991f, 20.493f, 66.013f, 20.493f, 65.991f
6167 path.cubicTo(SkBits2Float(0x41a38319), SkBits2Float(0x4283b8da), SkBits2Float(0x41a4b859), SkBits2Float(0x4282f750), SkBits2Float(0x41a4e567), SkBits2Float(0x4282cb48));  // 20.439f, 65.861f, 20.59f, 65.483f, 20.612f, 65.397f
6168 path.cubicTo(SkBits2Float(0x41a5ed98), SkBits2Float(0x4281d273), SkBits2Float(0x41a74fe6), SkBits2Float(0x4280ea00), SkBits2Float(0x41a96255), SkBits2Float(0x42802e19));  // 20.741f, 64.911f, 20.914f, 64.457f, 21.173f, 64.09f
6169 path.cubicTo(SkBits2Float(0x41aa2b09), SkBits2Float(0x427fccd6), SkBits2Float(0x41ab1ebf), SkBits2Float(0x427f6982), SkBits2Float(0x41abfbef), SkBits2Float(0x427eefa7));  // 21.271f, 63.95f, 21.39f, 63.853f, 21.498f, 63.734f
6170 path.cubicTo(SkBits2Float(0x41ac7f01), SkBits2Float(0x427e9690), SkBits2Float(0x41aced99), SkBits2Float(0x427e49c4), SkBits2Float(0x41ad893f), SkBits2Float(0x427e0734));  // 21.562f, 63.647f, 21.616f, 63.572f, 21.692f, 63.507f
6171 path.cubicTo(SkBits2Float(0x41aed506), SkBits2Float(0x427d8215), SkBits2Float(0x41b020cc), SkBits2Float(0x427d137e), SkBits2Float(0x41b1831a), SkBits2Float(0x427cbb6d));  // 21.854f, 63.377f, 22.016f, 63.269f, 22.189f, 63.183f
6172 path.cubicTo(SkBits2Float(0x41b1f1b2), SkBits2Float(0x427c99a2), SkBits2Float(0x41b26049), SkBits2Float(0x427c6256), SkBits2Float(0x41b2cee1), SkBits2Float(0x427c4cd5));  // 22.243f, 63.15f, 22.297f, 63.096f, 22.351f, 63.075f
6173 path.cubicTo(SkBits2Float(0x41b3106a), SkBits2Float(0x427c2b0a), SkBits2Float(0x41b445aa), SkBits2Float(0x427bff02), SkBits2Float(0x41b49dba), SkBits2Float(0x427bde3d));  // 22.383f, 63.042f, 22.534f, 62.999f, 22.577f, 62.967f
6174 path.cubicTo(SkBits2Float(0x41b49dba), SkBits2Float(0x427bd2f9), SkBits2Float(0x41b4cac8), SkBits2Float(0x427ba6f1), SkBits2Float(0x41b4cac8), SkBits2Float(0x427ba6f1));  // 22.577f, 62.956f, 22.599f, 62.913f, 22.599f, 62.913f
6175 path.cubicTo(SkBits2Float(0x41b4cac8), SkBits2Float(0x427b6462), SkBits2Float(0x41b33b6c), SkBits2Float(0x427a4fe7), SkBits2Float(0x41b2fbef), SkBits2Float(0x427a189b));  // 22.599f, 62.848f, 22.404f, 62.578f, 22.373f, 62.524f
6176 path.cubicTo(SkBits2Float(0x41b2cee1), SkBits2Float(0x4279f7d6), SkBits2Float(0x41b19795), SkBits2Float(0x42796774), SkBits2Float(0x41b1560c), SkBits2Float(0x42795c31));  // 22.351f, 62.492f, 22.199f, 62.351f, 22.167f, 62.34f
6177 path.cubicTo(SkBits2Float(0x41b0e774), SkBits2Float(0x42793b6c), SkBits2Float(0x41aff3be), SkBits2Float(0x42795c31), SkBits2Float(0x41af70ac), SkBits2Float(0x42795c31));  // 22.113f, 62.308f, 21.994f, 62.34f, 21.93f, 62.34f
6178 path.cubicTo(SkBits2Float(0x41ae0e5e), SkBits2Float(0x42796775), SkBits2Float(0x41ac9589), SkBits2Float(0x427946b0), SkBits2Float(0x41ab76d1), SkBits2Float(0x42793b6c));  // 21.757f, 62.351f, 21.573f, 62.319f, 21.433f, 62.308f
6179 path.cubicTo(SkBits2Float(0x41aa3f85), SkBits2Float(0x42793028), SkBits2Float(0x41a94ddb), SkBits2Float(0x42793b6c), SkBits2Float(0x41a82d17), SkBits2Float(0x42793028));  // 21.281f, 62.297f, 21.163f, 62.308f, 21.022f, 62.297f
6180 path.cubicTo(SkBits2Float(0x41a5c298), SkBits2Float(0x42791aa7), SkBits2Float(0x41a2e775), SkBits2Float(0x4278ed99), SkBits2Float(0x41a07cf6), SkBits2Float(0x4278c190));  // 20.72f, 62.276f, 20.363f, 62.232f, 20.061f, 62.189f
6181 path.cubicTo(SkBits2Float(0x419f47b7), SkBits2Float(0x4278b753), SkBits2Float(0x419e810f), SkBits2Float(0x4278b753), SkBits2Float(0x419d4bcf), SkBits2Float(0x4278a0cb));  // 19.91f, 62.179f, 19.813f, 62.179f, 19.662f, 62.157f
6182 path.cubicTo(SkBits2Float(0x419c831b), SkBits2Float(0x42788a44), SkBits2Float(0x419b20cd), SkBits2Float(0x42785e3c), SkBits2Float(0x419a45aa), SkBits2Float(0x427847b4));  // 19.564f, 62.135f, 19.391f, 62.092f, 19.284f, 62.07f
6183 path.cubicTo(SkBits2Float(0x41949171), SkBits2Float(0x4277e460), SkBits2Float(0x418e5819), SkBits2Float(0x42778c50), SkBits2Float(0x41896a87), SkBits2Float(0x4275dd35));  // 18.571f, 61.973f, 17.793f, 61.887f, 17.177f, 61.466f
6184 path.cubicTo(SkBits2Float(0x4182efa6), SkBits2Float(0x4273a8fc), SkBits2Float(0x417fd71a), SkBits2Float(0x42703f83), SkBits2Float(0x4180dd37), SkBits2Float(0x426c5b29));  // 16.367f, 60.915f, 15.99f, 60.062f, 16.108f, 59.089f
6185 path.cubicTo(SkBits2Float(0x41813547), SkBits2Float(0x426b5d35), SkBits2Float(0x41821276), SkBits2Float(0x426a8006), SkBits2Float(0x4182560c), SkBits2Float(0x426976cf));  // 16.151f, 58.841f, 16.259f, 58.625f, 16.292f, 58.366f
6186 path.cubicTo(SkBits2Float(0x418228fe), SkBits2Float(0x426976cf), SkBits2Float(0x41823f85), SkBits2Float(0x42696b8b), SkBits2Float(0x418228fe), SkBits2Float(0x42694ac7));  // 16.27f, 58.366f, 16.281f, 58.355f, 16.27f, 58.323f
6187 path.cubicTo(SkBits2Float(0x4181a5ec), SkBits2Float(0x42696b8c), SkBits2Float(0x41813548), SkBits2Float(0x42696b8c), SkBits2Float(0x41809bae), SkBits2Float(0x4269560b));  // 16.206f, 58.355f, 16.151f, 58.355f, 16.076f, 58.334f
6188 path.cubicTo(SkBits2Float(0x4180b235), SkBits2Float(0x4269560b), SkBits2Float(0x4180439e), SkBits2Float(0x426976d0), SkBits2Float(0x4180168f), SkBits2Float(0x42696b8c));  // 16.087f, 58.334f, 16.033f, 58.366f, 16.011f, 58.355f
6189 path.cubicTo(SkBits2Float(0x417eccdc), SkBits2Float(0x4269560b), SkBits2Float(0x417e9fce), SkBits2Float(0x4268d0ec), SkBits2Float(0x417f4fef), SkBits2Float(0x42688319));  // 15.925f, 58.334f, 15.914f, 58.204f, 15.957f, 58.128f
6190 path.cubicTo(SkBits2Float(0x4180168f), SkBits2Float(0x4268364c), SkBits2Float(0x41849589), SkBits2Float(0x4267a5ea), SkBits2Float(0x4185b441), SkBits2Float(0x42679069));  // 16.011f, 58.053f, 16.573f, 57.912f, 16.713f, 57.891f
6191 path.cubicTo(SkBits2Float(0x41891276), SkBits2Float(0x42674296), SkBits2Float(0x418c9dba), SkBits2Float(0x4266df42), SkBits2Float(0x418fd0ed), SkBits2Float(0x4266916f));  // 17.134f, 57.815f, 17.577f, 57.718f, 17.977f, 57.642f
6192 path.cubicTo(SkBits2Float(0x4190ae1c), SkBits2Float(0x42668732), SkBits2Float(0x4191333b), SkBits2Float(0x42668732), SkBits2Float(0x4192106a), SkBits2Float(0x426670aa));  // 18.085f, 57.632f, 18.15f, 57.632f, 18.258f, 57.61f
6193 path.cubicTo(SkBits2Float(0x4193189b), SkBits2Float(0x42665a23), SkBits2Float(0x4194a5eb), SkBits2Float(0x426622d7), SkBits2Float(0x4195dd37), SkBits2Float(0x42660d56));  // 18.387f, 57.588f, 18.581f, 57.534f, 18.733f, 57.513f
6194 path.cubicTo(SkBits2Float(0x41975400), SkBits2Float(0x4265e254), SkBits2Float(0x41988b4b), SkBits2Float(0x4265c18f), SkBits2Float(0x4199d506), SkBits2Float(0x4265ac0e));  // 18.916f, 57.471f, 19.068f, 57.439f, 19.229f, 57.418f
6195 path.moveTo(SkBits2Float(0x41a4e568), SkBits2Float(0x4277d0eb));  // 20.612f, 61.954f
6196 path.cubicTo(SkBits2Float(0x41a4cee1), SkBits2Float(0x4277d0eb), SkBits2Float(0x41a48d58), SkBits2Float(0x4277f1b0), SkBits2Float(0x41a48d58), SkBits2Float(0x4277f1b0));  // 20.601f, 61.954f, 20.569f, 61.986f, 20.569f, 61.986f
6197 path.cubicTo(SkBits2Float(0x41a3831b), SkBits2Float(0x42781275), SkBits2Float(0x41a0c08b), SkBits2Float(0x4277c5a8), SkBits2Float(0x419fe35c), SkBits2Float(0x4277af21));  // 20.439f, 62.018f, 20.094f, 61.943f, 19.986f, 61.921f
6198 path.cubicTo(SkBits2Float(0x419dd0ed), SkBits2Float(0x42778319), SkBits2Float(0x419bbc73), SkBits2Float(0x42775711), SkBits2Float(0x4199c08b), SkBits2Float(0x42771481));  // 19.727f, 61.878f, 19.467f, 61.835f, 19.219f, 61.77f
6199 path.cubicTo(SkBits2Float(0x4199687b), SkBits2Float(0x4277093d), SkBits2Float(0x4198f7d7), SkBits2Float(0x4276f3bc), SkBits2Float(0x4198b64e), SkBits2Float(0x4276dd35));  // 19.176f, 61.759f, 19.121f, 61.738f, 19.089f, 61.716f
6200 path.cubicTo(SkBits2Float(0x419847b6), SkBits2Float(0x4276d1f1), SkBits2Float(0x4198062d), SkBits2Float(0x4276dd35), SkBits2Float(0x4197ae1d), SkBits2Float(0x4276d1f1));  // 19.035f, 61.705f, 19.003f, 61.716f, 18.96f, 61.705f
6201 path.cubicTo(SkBits2Float(0x4196fbf0), SkBits2Float(0x4276c6ad), SkBits2Float(0x4196083a), SkBits2Float(0x42768f62), SkBits2Float(0x4195831b), SkBits2Float(0x427679e1));  // 18.873f, 61.694f, 18.754f, 61.64f, 18.689f, 61.619f
6202 path.cubicTo(SkBits2Float(0x41951690), SkBits2Float(0x4276635a), SkBits2Float(0x41950009), SkBits2Float(0x427679e1), SkBits2Float(0x4194a5ec), SkBits2Float(0x4276635a));  // 18.636f, 61.597f, 18.625f, 61.619f, 18.581f, 61.597f
6203 path.cubicTo(SkBits2Float(0x41940c52), SkBits2Float(0x42764dd9), SkBits2Float(0x41935a25), SkBits2Float(0x4276168d), SkBits2Float(0x4192c08c), SkBits2Float(0x42760006));  // 18.506f, 61.576f, 18.419f, 61.522f, 18.344f, 61.5f
6204 path.cubicTo(SkBits2Float(0x4190c298), SkBits2Float(0x42759cb2), SkBits2Float(0x418f6257), SkBits2Float(0x427544a2), SkBits2Float(0x418e2b0b), SkBits2Float(0x42748837));  // 18.095f, 61.403f, 17.923f, 61.317f, 17.771f, 61.133f
6205 path.cubicTo(SkBits2Float(0x418e1690), SkBits2Float(0x4274666c), SkBits2Float(0x418dd2fb), SkBits2Float(0x4274666c), SkBits2Float(0x418dbe80), SkBits2Float(0x42745c2f));  // 17.761f, 61.1f, 17.728f, 61.1f, 17.718f, 61.09f
6206 path.cubicTo(SkBits2Float(0x418da7f9), SkBits2Float(0x42742f21), SkBits2Float(0x418da7f9), SkBits2Float(0x42740e5c), SkBits2Float(0x418d6670), SkBits2Float(0x4273ed97));  // 17.707f, 61.046f, 17.707f, 61.014f, 17.675f, 60.982f
6207 path.cubicTo(SkBits2Float(0x418d22da), SkBits2Float(0x42739fc4), SkBits2Float(0x418ccaca), SkBits2Float(0x427373bc), SkBits2Float(0x418c9dbc), SkBits2Float(0x42731aa5));  // 17.642f, 60.906f, 17.599f, 60.863f, 17.577f, 60.776f
6208 path.cubicTo(SkBits2Float(0x418bd714), SkBits2Float(0x4271b95d), SkBits2Float(0x418d22db), SkBits2Float(0x4270999f), SkBits2Float(0x418fd0ef), SkBits2Float(0x4270418e));  // 17.48f, 60.431f, 17.642f, 60.15f, 17.977f, 60.064f
6209 path.cubicTo(SkBits2Float(0x41919fc8), SkBits2Float(0x426ffeff), SkBits2Float(0x4193df45), SkBits2Float(0x42701fc3), SkBits2Float(0x4195f3c0), SkBits2Float(0x4270841d));  // 18.203f, 59.999f, 18.484f, 60.031f, 18.744f, 60.129f
6210 path.cubicTo(SkBits2Float(0x419847b8), SkBits2Float(0x4270e771), SkBits2Float(0x419a5a26), SkBits2Float(0x42718211), SkBits2Float(0x419bd2fb), SkBits2Float(0x42723231));  // 19.035f, 60.226f, 19.294f, 60.377f, 19.478f, 60.549f
6211 path.cubicTo(SkBits2Float(0x419be982), SkBits2Float(0x42723e7b), SkBits2Float(0x419be982), SkBits2Float(0x42726a83), SkBits2Float(0x419c1484), SkBits2Float(0x42726a83));  // 19.489f, 60.561f, 19.489f, 60.604f, 19.51f, 60.604f
6212 path.cubicTo(SkBits2Float(0x419c4192), SkBits2Float(0x42728004), SkBits2Float(0x419c831c), SkBits2Float(0x42728004), SkBits2Float(0x419c99a3), SkBits2Float(0x4272968b));  // 19.532f, 60.625f, 19.564f, 60.625f, 19.575f, 60.647f
6213 path.cubicTo(SkBits2Float(0x419cdb2c), SkBits2Float(0x4272b750), SkBits2Float(0x419d083b), SkBits2Float(0x4272ee9b), SkBits2Float(0x419d3549), SkBits2Float(0x427325e7));  // 19.607f, 60.679f, 19.629f, 60.733f, 19.651f, 60.787f
6214 path.cubicTo(SkBits2Float(0x419e28ff), SkBits2Float(0x4273cbca), SkBits2Float(0x419f062e), SkBits2Float(0x4274666a), SkBits2Float(0x419ff7d8), SkBits2Float(0x42750c4d));  // 19.77f, 60.949f, 19.878f, 61.1f, 19.996f, 61.262f
6215 path.cubicTo(SkBits2Float(0x41a0c08c), SkBits2Float(0x42758628), SkBits2Float(0x41a1f5cc), SkBits2Float(0x4275df3f), SkBits2Float(0x41a2d2fb), SkBits2Float(0x42766357));  // 20.094f, 61.381f, 20.245f, 61.468f, 20.353f, 61.597f
6216 path.cubicTo(SkBits2Float(0x41a31484), SkBits2Float(0x42769aa3), SkBits2Float(0x41a36c95), SkBits2Float(0x4276f3b9), SkBits2Float(0x41a3db2c), SkBits2Float(0x42771fc1));  // 20.385f, 61.651f, 20.428f, 61.738f, 20.482f, 61.781f
6217 path.cubicTo(SkBits2Float(0x41a4083a), SkBits2Float(0x42774bc9), SkBits2Float(0x41a4b85b), SkBits2Float(0x42778315), SkBits2Float(0x41a4e569), SkBits2Float(0x4277af1d));  // 20.504f, 61.824f, 20.59f, 61.878f, 20.612f, 61.921f
6218 path.cubicTo(SkBits2Float(0x41a4e569), SkBits2Float(0x4277ba61), SkBits2Float(0x41a4cee2), SkBits2Float(0x4277c5a4), SkBits2Float(0x41a4e569), SkBits2Float(0x4277d0e8));  // 20.612f, 61.932f, 20.601f, 61.943f, 20.612f, 61.954f
6219 path.moveTo(SkBits2Float(0x41ad72b9), SkBits2Float(0x42786044));  // 21.681f, 62.094f
6220 path.cubicTo(SkBits2Float(0x41ac106b), SkBits2Float(0x42788c4c), SkBits2Float(0x41a9d0ee), SkBits2Float(0x4277d0e8), SkBits2Float(0x41a8b236), SkBits2Float(0x42778e58));  // 21.508f, 62.137f, 21.227f, 61.954f, 21.087f, 61.889f
6221 path.cubicTo(SkBits2Float(0x41a2fdfd), SkBits2Float(0x42761689), SkBits2Float(0x41a10215), SkBits2Float(0x42733c6c), SkBits2Float(0x419fb64f), SkBits2Float(0x42704ccf));  // 20.374f, 61.522f, 20.126f, 60.809f, 19.964f, 60.075f
6222 path.cubicTo(SkBits2Float(0x419f9fc8), SkBits2Float(0x42700a40), SkBits2Float(0x419f47b7), SkBits2Float(0x426f9ba8), SkBits2Float(0x419f3130), SkBits2Float(0x426f5919));  // 19.953f, 60.01f, 19.91f, 59.902f, 19.899f, 59.837f
6223 path.cubicTo(SkBits2Float(0x419f3130), SkBits2Float(0x426f0b46), SkBits2Float(0x419f47b7), SkBits2Float(0x426ec9bd), SkBits2Float(0x419f3130), SkBits2Float(0x426e70a6));  // 19.899f, 59.761f, 19.91f, 59.697f, 19.899f, 59.61f
6224 path.cubicTo(SkBits2Float(0x419f1aa9), SkBits2Float(0x426de14a), SkBits2Float(0x419f062e), SkBits2Float(0x426ced94), SkBits2Float(0x419f3130), SkBits2Float(0x426c5d31));  // 19.888f, 59.47f, 19.878f, 59.232f, 19.899f, 59.091f
6225 path.cubicTo(SkBits2Float(0x419f72b9), SkBits2Float(0x426befa0), SkBits2Float(0x419fe35d), SkBits2Float(0x426b8108), SkBits2Float(0x41a00e5f), SkBits2Float(0x426b3335));  // 19.931f, 58.984f, 19.986f, 58.876f, 20.007f, 58.8f
6226 path.cubicTo(SkBits2Float(0x41a0666f), SkBits2Float(0x426acfe1), SkBits2Float(0x41a10215), SkBits2Float(0x4269c6aa), SkBits2Float(0x41a19dbb), SkBits2Float(0x4269bb66));  // 20.05f, 58.703f, 20.126f, 58.444f, 20.202f, 58.433f
6227 path.cubicTo(SkBits2Float(0x41a220cd), SkBits2Float(0x4269bb66), SkBits2Float(0x41a2a5ec), SkBits2Float(0x4269f2b2), SkBits2Float(0x41a31484), SkBits2Float(0x426a3f7f));  // 20.266f, 58.433f, 20.331f, 58.487f, 20.385f, 58.562f
6228 path.cubicTo(SkBits2Float(0x41a3c6b1), SkBits2Float(0x426aa3d9), SkBits2Float(0x41a449c3), SkBits2Float(0x426b1cae), SkBits2Float(0x41a476d2), SkBits2Float(0x426b3e79));  // 20.472f, 58.66f, 20.536f, 58.778f, 20.558f, 58.811f
6229 path.cubicTo(SkBits2Float(0x41a5ac11), SkBits2Float(0x426c0521), SkBits2Float(0x41a6caca), SkBits2Float(0x426ce250), SkBits2Float(0x41a8189d), SkBits2Float(0x426da9fe));  // 20.709f, 59.005f, 20.849f, 59.221f, 21.012f, 59.416f
6230 path.cubicTo(SkBits2Float(0x41aa3f86), SkBits2Float(0x426f1689), SkBits2Float(0x41ac5401), SkBits2Float(0x4270841b), SkBits2Float(0x41ae7aeb), SkBits2Float(0x4271f0a6));  // 21.281f, 59.772f, 21.541f, 60.129f, 21.81f, 60.485f
6231 path.cubicTo(SkBits2Float(0x41af000a), SkBits2Float(0x427248b6), SkBits2Float(0x41afb237), SkBits2Float(0x4272a1cd), SkBits2Float(0x41b020ce), SkBits2Float(0x4272ee9a));  // 21.875f, 60.571f, 21.962f, 60.658f, 22.016f, 60.733f
6232 path.cubicTo(SkBits2Float(0x41b06257), SkBits2Float(0x42731aa2), SkBits2Float(0x41b19797), SkBits2Float(0x4273f7d1), SkBits2Float(0x41b19797), SkBits2Float(0x4274199c));  // 22.048f, 60.776f, 22.199f, 60.992f, 22.199f, 61.025f
6233 path.cubicTo(SkBits2Float(0x41b1c4a5), SkBits2Float(0x427424e0), SkBits2Float(0x41b1831c), SkBits2Float(0x42746669), SkBits2Float(0x41b1831c), SkBits2Float(0x42746669));  // 22.221f, 61.036f, 22.189f, 61.1f, 22.189f, 61.1f
6234 path.cubicTo(SkBits2Float(0x41ac3d7a), SkBits2Float(0x42742f1d), SkBits2Float(0x41a96257), SkBits2Float(0x4271ae17), SkBits2Float(0x41a7a7f9), SkBits2Float(0x426fb12a));  // 21.53f, 61.046f, 21.173f, 60.42f, 20.957f, 59.923f
6235 path.cubicTo(SkBits2Float(0x41a77cf7), SkBits2Float(0x426f9ba9), SkBits2Float(0x41a73b6e), SkBits2Float(0x426f79de), SkBits2Float(0x41a73b6e), SkBits2Float(0x426f591a));  // 20.936f, 59.902f, 20.904f, 59.869f, 20.904f, 59.837f
6236 path.cubicTo(SkBits2Float(0x41a6e151), SkBits2Float(0x426eea82), SkBits2Float(0x41a68941), SkBits2Float(0x426e6564), SkBits2Float(0x41a672ba), SkBits2Float(0x426dec8f));  // 20.86f, 59.729f, 20.817f, 59.599f, 20.806f, 59.481f
6237 path.cubicTo(SkBits2Float(0x41a65e3f), SkBits2Float(0x426daa00), SkBits2Float(0x41a68941), SkBits2Float(0x426d71ae), SkBits2Float(0x41a65e3f), SkBits2Float(0x426d50e9));  // 20.796f, 59.416f, 20.817f, 59.361f, 20.796f, 59.329f
6238 path.cubicTo(SkBits2Float(0x41a63131), SkBits2Float(0x426d24e1), SkBits2Float(0x41a56a89), SkBits2Float(0x426cf8d9), SkBits2Float(0x41a4fbf1), SkBits2Float(0x426cf8d9));  // 20.774f, 59.286f, 20.677f, 59.243f, 20.623f, 59.243f
6239 path.cubicTo(SkBits2Float(0x41a449c4), SkBits2Float(0x426ced95), SkBits2Float(0x41a36c95), SkBits2Float(0x426cf8d9), SkBits2Float(0x41a31484), SkBits2Float(0x426d24e1));  // 20.536f, 59.232f, 20.428f, 59.243f, 20.385f, 59.286f
6240 path.cubicTo(SkBits2Float(0x41a20a47), SkBits2Float(0x426d71ae), SkBits2Float(0x41a1f5cc), SkBits2Float(0x426f645e), SkBits2Float(0x41a220ce), SkBits2Float(0x42701fc2));  // 20.255f, 59.361f, 20.245f, 59.848f, 20.266f, 60.031f
6241 path.cubicTo(SkBits2Float(0x41a28f66), SkBits2Float(0x4272e45e), SkBits2Float(0x41a4b85b), SkBits2Float(0x4274c9be), SkBits2Float(0x41a7eb8e), SkBits2Float(0x427621ce));  // 20.32f, 60.723f, 20.59f, 61.197f, 20.99f, 61.533f
6242 path.cubicTo(SkBits2Float(0x41a82d17), SkBits2Float(0x42764293), SkBits2Float(0x41a870ad), SkBits2Float(0x42764293), SkBits2Float(0x41a8b236), SkBits2Float(0x4276591a));  // 21.022f, 61.565f, 21.055f, 61.565f, 21.087f, 61.587f
6243 path.cubicTo(SkBits2Float(0x41a90a46), SkBits2Float(0x427679df), SkBits2Float(0x41a93755), SkBits2Float(0x4276b12a), SkBits2Float(0x41a98f65), SkBits2Float(0x4276c6ab));  // 21.13f, 61.619f, 21.152f, 61.673f, 21.195f, 61.694f
6244 path.cubicTo(SkBits2Float(0x41aadb2c), SkBits2Float(0x42774086), SkBits2Float(0x41ac958a), SkBits2Float(0x42778e59), SkBits2Float(0x41adb64e), SkBits2Float(0x427828f9));  // 21.357f, 61.813f, 21.573f, 61.889f, 21.714f, 62.04f
6245 path.cubicTo(SkBits2Float(0x41adb64e), SkBits2Float(0x427828f9), SkBits2Float(0x41ad8940), SkBits2Float(0x42786045), SkBits2Float(0x41ad72b8), SkBits2Float(0x42786045));  // 21.714f, 62.04f, 21.692f, 62.094f, 21.681f, 62.094f
6246 path.moveTo(SkBits2Float(0x41bd168f), SkBits2Float(0x4267be7a));  // 23.636f, 57.936f
6247 path.cubicTo(SkBits2Float(0x41bd168f), SkBits2Float(0x42679caf), SkBits2Float(0x41bd2d16), SkBits2Float(0x4267666a), SkBits2Float(0x41bd168f), SkBits2Float(0x42674fe2));  // 23.636f, 57.903f, 23.647f, 57.85f, 23.636f, 57.828f
6248 path.cubicTo(SkBits2Float(0x41bd168f), SkBits2Float(0x4267449e), SkBits2Float(0x41bd0008), SkBits2Float(0x42674fe2), SkBits2Float(0x41bce981), SkBits2Float(0x42672f1d));  // 23.636f, 57.817f, 23.625f, 57.828f, 23.614f, 57.796f
6249 path.cubicTo(SkBits2Float(0x41bcd2fa), SkBits2Float(0x42672f1d), SkBits2Float(0x41bc9171), SkBits2Float(0x4267449e), SkBits2Float(0x41bc7ae9), SkBits2Float(0x42672f1d));  // 23.603f, 57.796f, 23.571f, 57.817f, 23.56f, 57.796f
6250 path.cubicTo(SkBits2Float(0x41bb9dba), SkBits2Float(0x4267d500), SkBits2Float(0x41bbb441), SkBits2Float(0x42693648), SkBits2Float(0x41bb72b8), SkBits2Float(0x426a1377));  // 23.452f, 57.958f, 23.463f, 58.303f, 23.431f, 58.519f
6251 path.cubicTo(SkBits2Float(0x41bb45aa), SkBits2Float(0x426a6c8e), SkBits2Float(0x41bb2f22), SkBits2Float(0x426acfe1), SkBits2Float(0x41bb189b), SkBits2Float(0x426b3335));  // 23.409f, 58.606f, 23.398f, 58.703f, 23.387f, 58.8f
6252 path.lineTo(SkBits2Float(0x41baed99), SkBits2Float(0x426b5f3d));  // 23.366f, 58.843f
6253 path.cubicTo(SkBits2Float(0x41baac10), SkBits2Float(0x426bd918), SkBits2Float(0x41bac08b), SkBits2Float(0x426c3129), SkBits2Float(0x41baac10), SkBits2Float(0x426cab04));  // 23.334f, 58.962f, 23.344f, 59.048f, 23.334f, 59.167f
6254 path.cubicTo(SkBits2Float(0x41ba7f02), SkBits2Float(0x426d50e7), SkBits2Float(0x41ba3b6c), SkBits2Float(0x426e0d52), SkBits2Float(0x41ba106a), SkBits2Float(0x426ec9bc));  // 23.312f, 59.329f, 23.279f, 59.513f, 23.258f, 59.697f
6255 path.cubicTo(SkBits2Float(0x41b9ccd4), SkBits2Float(0x426f645c), SkBits2Float(0x41b974c4), SkBits2Float(0x42701fc0), SkBits2Float(0x41b949c2), SkBits2Float(0x4270c5a3));  // 23.225f, 59.848f, 23.182f, 60.031f, 23.161f, 60.193f
6256 path.cubicTo(SkBits2Float(0x41b9333b), SkBits2Float(0x42713f7e), SkBits2Float(0x41b98b4b), SkBits2Float(0x4271820d), SkBits2Float(0x41b9f9e3), SkBits2Float(0x4271ae16));  // 23.15f, 60.312f, 23.193f, 60.377f, 23.247f, 60.42f
6257 path.cubicTo(SkBits2Float(0x41ba3b6c), SkBits2Float(0x42718d51), SkBits2Float(0x41ba7f02), SkBits2Float(0x4271b95a), SkBits2Float(0x41ba9589), SkBits2Float(0x42716b87));  // 23.279f, 60.388f, 23.312f, 60.431f, 23.323f, 60.355f
6258 path.cubicTo(SkBits2Float(0x41baac10), SkBits2Float(0x4271343b), SkBits2Float(0x41ba9589), SkBits2Float(0x4270e76e), SkBits2Float(0x41ba9589), SkBits2Float(0x4270999b));  // 23.334f, 60.301f, 23.323f, 60.226f, 23.323f, 60.15f
6259 path.cubicTo(SkBits2Float(0x41ba9589), SkBits2Float(0x4270418b), SkBits2Float(0x41bac08b), SkBits2Float(0x426fd1ed), SkBits2Float(0x41baed99), SkBits2Float(0x426f645c));  // 23.323f, 60.064f, 23.344f, 59.955f, 23.366f, 59.848f
6260 path.cubicTo(SkBits2Float(0x41bb2f22), SkBits2Float(0x426e6562), SkBits2Float(0x41bb9dba), SkBits2Float(0x426d3b66), SkBits2Float(0x41bbf5ca), SkBits2Float(0x426c3c6c));  // 23.398f, 59.599f, 23.452f, 59.308f, 23.495f, 59.059f
6261 path.cubicTo(SkBits2Float(0x41bc0e5d), SkBits2Float(0x426bb853), SkBits2Float(0x41bc0e5d), SkBits2Float(0x426b5f3d), SkBits2Float(0x41bc22d8), SkBits2Float(0x426ae562));  // 23.507f, 58.93f, 23.507f, 58.843f, 23.517f, 58.724f
6262 path.cubicTo(SkBits2Float(0x41bc395f), SkBits2Float(0x426a820e), SkBits2Float(0x41bc9170), SkBits2Float(0x4269f2b2), SkBits2Float(0x41bca7f7), SkBits2Float(0x42698f5e));  // 23.528f, 58.627f, 23.571f, 58.487f, 23.582f, 58.39f
6263 path.cubicTo(SkBits2Float(0x41bcd2f9), SkBits2Float(0x426920c6), SkBits2Float(0x41bca7f7), SkBits2Float(0x4268d2f4), SkBits2Float(0x41bcd2f9), SkBits2Float(0x4268645c));  // 23.603f, 58.282f, 23.582f, 58.206f, 23.603f, 58.098f
6264 path.cubicTo(SkBits2Float(0x41bcd2f9), SkBits2Float(0x42684291), SkBits2Float(0x41bd168f), SkBits2Float(0x4267df3d), SkBits2Float(0x41bd168f), SkBits2Float(0x4267be79));  // 23.603f, 58.065f, 23.636f, 57.968f, 23.636f, 57.936f
6265 path.moveTo(SkBits2Float(0x41bd6e9f), SkBits2Float(0x426e916b));  // 23.679f, 59.642f
6266 path.cubicTo(SkBits2Float(0x41bdb028), SkBits2Float(0x426d199c), SkBits2Float(0x41bdf3be), SkBits2Float(0x426bb854), SkBits2Float(0x41be6255), SkBits2Float(0x426a343c));  // 23.711f, 59.275f, 23.744f, 58.93f, 23.798f, 58.551f
6267 path.cubicTo(SkBits2Float(0x41be78dc), SkBits2Float(0x4269f2b3), SkBits2Float(0x41bed0ed), SkBits2Float(0x4269841b), SkBits2Float(0x41bed0ed), SkBits2Float(0x4269418c));  // 23.809f, 58.487f, 23.852f, 58.379f, 23.852f, 58.314f
6268 path.cubicTo(SkBits2Float(0x41bee774), SkBits2Float(0x4268bc6d), SkBits2Float(0x41bee774), SkBits2Float(0x42684edc), SkBits2Float(0x41bf1276), SkBits2Float(0x4267df3e));  // 23.863f, 58.184f, 23.863f, 58.077f, 23.884f, 57.968f
6269 path.cubicTo(SkBits2Float(0x41bf3f84), SkBits2Float(0x4267a7f2), SkBits2Float(0x41bf3f84), SkBits2Float(0x4267872e), SkBits2Float(0x41bf9795), SkBits2Float(0x426770a6));  // 23.906f, 57.914f, 23.906f, 57.882f, 23.949f, 57.86f
6270 path.cubicTo(SkBits2Float(0x41c0ccd4), SkBits2Float(0x42675b25), SkBits2Float(0x41c6810e), SkBits2Float(0x4268d2f4), SkBits2Float(0x41c6d91e), SkBits2Float(0x426920c7));  // 24.1f, 57.839f, 24.813f, 58.206f, 24.856f, 58.282f
6271 path.cubicTo(SkBits2Float(0x41c7333b), SkBits2Float(0x42696d94), SkBits2Float(0x41c7062c), SkBits2Float(0x4270e76f), SkBits2Float(0x41c6ae1c), SkBits2Float(0x42713f7f));  // 24.9f, 58.357f, 24.878f, 60.226f, 24.835f, 60.312f
6272 path.cubicTo(SkBits2Float(0x41c63f84), SkBits2Float(0x4271a2d3), SkBits2Float(0x41c3a7f7), SkBits2Float(0x42716b87), SkBits2Float(0x41c2cac8), SkBits2Float(0x427176cb));  // 24.781f, 60.409f, 24.457f, 60.355f, 24.349f, 60.366f
6273 path.cubicTo(SkBits2Float(0x41c2b441), SkBits2Float(0x427176cb), SkBits2Float(0x41c270ab), SkBits2Float(0x4271a2d3), SkBits2Float(0x41c245a9), SkBits2Float(0x4271a2d3));  // 24.338f, 60.366f, 24.305f, 60.409f, 24.284f, 60.409f
6274 path.cubicTo(SkBits2Float(0x41c1aa03), SkBits2Float(0x4271b95a), SkBits2Float(0x41c1106a), SkBits2Float(0x4271ae17), SkBits2Float(0x41c05e3c), SkBits2Float(0x4271b95a));  // 24.208f, 60.431f, 24.133f, 60.42f, 24.046f, 60.431f
6275 path.cubicTo(SkBits2Float(0x41bf1275), SkBits2Float(0x4271e562), SkBits2Float(0x41be4bcd), SkBits2Float(0x427227f2), SkBits2Float(0x41bcd2f8), SkBits2Float(0x4272322f));  // 23.884f, 60.474f, 23.787f, 60.539f, 23.603f, 60.549f
6276 path.cubicTo(SkBits2Float(0x41bc395e), SkBits2Float(0x427128f8), SkBits2Float(0x41bd2d15), SkBits2Float(0x426f8f5e), SkBits2Float(0x41bd6e9e), SkBits2Float(0x426e916a));  // 23.528f, 60.29f, 23.647f, 59.89f, 23.679f, 59.642f
6277 path.moveTo(SkBits2Float(0x41d21481), SkBits2Float(0x42700a3f));  // 26.26f, 60.01f
6278 path.cubicTo(SkBits2Float(0x41d22b08), SkBits2Float(0x42704cce), SkBits2Float(0x41d299a0), SkBits2Float(0x4270f1ac), SkBits2Float(0x41d2418f), SkBits2Float(0x42713f7e));  // 26.271f, 60.075f, 26.325f, 60.236f, 26.282f, 60.312f
6279 path.cubicTo(SkBits2Float(0x41d2418f), SkBits2Float(0x42714ac2), SkBits2Float(0x41d22b08), SkBits2Float(0x42713f7e), SkBits2Float(0x41d21481), SkBits2Float(0x42715605));  // 26.282f, 60.323f, 26.271f, 60.312f, 26.26f, 60.334f
6280 path.cubicTo(SkBits2Float(0x41d1bc71), SkBits2Float(0x42715605), SkBits2Float(0x41d1916f), SkBits2Float(0x42715605), SkBits2Float(0x41d1395e), SkBits2Float(0x42714ac1));  // 26.217f, 60.334f, 26.196f, 60.334f, 26.153f, 60.323f
6281 path.cubicTo(SkBits2Float(0x41d0b233), SkBits2Float(0x42708419), SkBits2Float(0x41d0c8ba), SkBits2Float(0x426f645b), SkBits2Float(0x41d09db8), SkBits2Float(0x426e5a1d));  // 26.087f, 60.129f, 26.098f, 59.848f, 26.077f, 59.588f
6282 path.cubicTo(SkBits2Float(0x41d09db8), SkBits2Float(0x426e23d7), SkBits2Float(0x41d05a22), SkBits2Float(0x426d9375), SkBits2Float(0x41d070aa), SkBits2Float(0x426d50e6));  // 26.077f, 59.535f, 26.044f, 59.394f, 26.055f, 59.329f
6283 path.cubicTo(SkBits2Float(0x41d09db8), SkBits2Float(0x426d3b65), SkBits2Float(0x41d0b233), SkBits2Float(0x426d50e6), SkBits2Float(0x41d0b233), SkBits2Float(0x426d2f1b));  // 26.077f, 59.308f, 26.087f, 59.329f, 26.087f, 59.296f
6284 path.cubicTo(SkBits2Float(0x41d1395e), SkBits2Float(0x426d3b65), SkBits2Float(0x41d14dd9), SkBits2Float(0x426d2f1b), SkBits2Float(0x41d1916e), SkBits2Float(0x426d50e6));  // 26.153f, 59.308f, 26.163f, 59.296f, 26.196f, 59.329f
6285 path.cubicTo(SkBits2Float(0x41d1a5e9), SkBits2Float(0x426d50e6), SkBits2Float(0x41d1e97e), SkBits2Float(0x426de148), SkBits2Float(0x41d1e97e), SkBits2Float(0x426dec8c));  // 26.206f, 59.329f, 26.239f, 59.47f, 26.239f, 59.481f
6286 path.cubicTo(SkBits2Float(0x41d22b07), SkBits2Float(0x426e9cad), SkBits2Float(0x41d1e97e), SkBits2Float(0x426f4dd4), SkBits2Float(0x41d21480), SkBits2Float(0x42700a3e));  // 26.271f, 59.653f, 26.239f, 59.826f, 26.26f, 60.01f
6287 path.moveTo(SkBits2Float(0x41ee1274), SkBits2Float(0x42564ac1));  // 29.759f, 53.573f
6288 path.cubicTo(SkBits2Float(0x41ee1274), SkBits2Float(0x42566b86), SkBits2Float(0x41ee3f82), SkBits2Float(0x4256c49c), SkBits2Float(0x41ee28fb), SkBits2Float(0x4256fbe8));  // 29.759f, 53.605f, 29.781f, 53.692f, 29.77f, 53.746f
6289 path.cubicTo(SkBits2Float(0x41ee28fb), SkBits2Float(0x42571cad), SkBits2Float(0x41ede772), SkBits2Float(0x425748b5), SkBits2Float(0x41ede772), SkBits2Float(0x42576a80));  // 29.77f, 53.778f, 29.738f, 53.821f, 29.738f, 53.854f
6290 path.cubicTo(SkBits2Float(0x41ed8f62), SkBits2Float(0x425774bd), SkBits2Float(0x41ed20ca), SkBits2Float(0x42579688), SkBits2Float(0x41ec6e9d), SkBits2Float(0x42579688));  // 29.695f, 53.864f, 29.641f, 53.897f, 29.554f, 53.897f
6291 path.cubicTo(SkBits2Float(0x41ebeb8b), SkBits2Float(0x42579688), SkBits2Float(0x41eb666c), SkBits2Float(0x425774bd), SkBits2Float(0x41eaf7d4), SkBits2Float(0x42576a80));  // 29.49f, 53.897f, 29.425f, 53.864f, 29.371f, 53.854f
6292 path.cubicTo(SkBits2Float(0x41eacac6), SkBits2Float(0x425676ca), SkBits2Float(0x41eb666c), SkBits2Float(0x42556d92), SkBits2Float(0x41ebbe7c), SkBits2Float(0x42549063));  // 29.349f, 53.616f, 29.425f, 53.357f, 29.468f, 53.141f
6293 path.cubicTo(SkBits2Float(0x41ebd503), SkBits2Float(0x425421cb), SkBits2Float(0x41ebd503), SkBits2Float(0x4253d3f9), SkBits2Float(0x41ec0005), SkBits2Float(0x42537be8));  // 29.479f, 53.033f, 29.479f, 52.957f, 29.5f, 52.871f
6294 path.cubicTo(SkBits2Float(0x41ec2d13), SkBits2Float(0x42535a1d), SkBits2Float(0x41ec6e9d), SkBits2Float(0x42531894), SkBits2Float(0x41ecb232), SkBits2Float(0x42531894));  // 29.522f, 52.838f, 29.554f, 52.774f, 29.587f, 52.774f
6295 path.cubicTo(SkBits2Float(0x41ed3544), SkBits2Float(0x4253020d), SkBits2Float(0x41edd0ea), SkBits2Float(0x42531894), SkBits2Float(0x41ede771), SkBits2Float(0x4253449c));  // 29.651f, 52.752f, 29.727f, 52.774f, 29.738f, 52.817f
6296 path.cubicTo(SkBits2Float(0x41ee1273), SkBits2Float(0x42534fe0), SkBits2Float(0x41ede771), SkBits2Float(0x42536561), SkBits2Float(0x41ede771), SkBits2Float(0x42537be8));  // 29.759f, 52.828f, 29.738f, 52.849f, 29.738f, 52.871f
6297 path.cubicTo(SkBits2Float(0x41ee3f81), SkBits2Float(0x42544290), SkBits2Float(0x41ede771), SkBits2Float(0x42554ccd), SkBits2Float(0x41ee1273), SkBits2Float(0x42564ac1));  // 29.781f, 53.065f, 29.738f, 53.325f, 29.759f, 53.573f
6298 path.moveTo(SkBits2Float(0x41f51273), SkBits2Float(0x4258cbc7));  // 30.634f, 54.199f
6299 path.cubicTo(SkBits2Float(0x41f4e771), SkBits2Float(0x4259199a), SkBits2Float(0x41f3b025), SkBits2Float(0x4259bf7d), SkBits2Float(0x41f35815), SkBits2Float(0x4259eb85));  // 30.613f, 54.275f, 30.461f, 54.437f, 30.418f, 54.48f
6300 path.cubicTo(SkBits2Float(0x41f2395d), SkBits2Float(0x425aa6e9), SkBits2Float(0x41f2395d), SkBits2Float(0x425a449c), SkBits2Float(0x41f222d6), SkBits2Float(0x42596666));  // 30.278f, 54.663f, 30.278f, 54.567f, 30.267f, 54.35f
6301 path.cubicTo(SkBits2Float(0x41f222d6), SkBits2Float(0x425945a1), SkBits2Float(0x41f1f5c8), SkBits2Float(0x4258e24d), SkBits2Float(0x41f222d6), SkBits2Float(0x4258ab02));  // 30.267f, 54.318f, 30.245f, 54.221f, 30.267f, 54.167f
6302 path.cubicTo(SkBits2Float(0x41f2395d), SkBits2Float(0x42589fbe), SkBits2Float(0x41f2e97e), SkBits2Float(0x42588a3d), SkBits2Float(0x41f30005), SkBits2Float(0x425873b6));  // 30.278f, 54.156f, 30.364f, 54.135f, 30.375f, 54.113f
6303 path.cubicTo(SkBits2Float(0x41f3b026), SkBits2Float(0x42586872), SkBits2Float(0x41f48d55), SkBits2Float(0x42588937), SkBits2Float(0x41f51274), SkBits2Float(0x4258947b));  // 30.461f, 54.102f, 30.569f, 54.134f, 30.634f, 54.145f
6304 path.cubicTo(SkBits2Float(0x41f4fdf9), SkBits2Float(0x42589fbf), SkBits2Float(0x41f51274), SkBits2Float(0x4258b646), SkBits2Float(0x41f51274), SkBits2Float(0x4258cbc7));  // 30.624f, 54.156f, 30.634f, 54.178f, 30.634f, 54.199f
6305 path.moveTo(SkBits2Float(0x41f20e5b), SkBits2Float(0x425727f0));  // 30.257f, 53.789f
6306 path.cubicTo(SkBits2Float(0x41f1cac5), SkBits2Float(0x4256da1d), SkBits2Float(0x41f222d6), SkBits2Float(0x42561375), SkBits2Float(0x41f222d6), SkBits2Float(0x4255d0e6));  // 30.224f, 53.713f, 30.267f, 53.519f, 30.267f, 53.454f
6307 path.cubicTo(SkBits2Float(0x41f222d6), SkBits2Float(0x42553646), SkBits2Float(0x41f1b43e), SkBits2Float(0x4254374c), SkBits2Float(0x41f20e5b), SkBits2Float(0x42539169));  // 30.267f, 53.303f, 30.213f, 53.054f, 30.257f, 52.892f
6308 path.cubicTo(SkBits2Float(0x41f222d6), SkBits2Float(0x42536561), SkBits2Float(0x41f2916d), SkBits2Float(0x4253449c), SkBits2Float(0x41f2be7c), SkBits2Float(0x4253449c));  // 30.267f, 52.849f, 30.321f, 52.817f, 30.343f, 52.817f
6309 path.cubicTo(SkBits2Float(0x41f3b026), SkBits2Float(0x42532e15), SkBits2Float(0x41f845a7), SkBits2Float(0x42539cac), SkBits2Float(0x41f88730), SkBits2Float(0x4253d3f8));  // 30.461f, 52.795f, 31.034f, 52.903f, 31.066f, 52.957f
6310 path.cubicTo(SkBits2Float(0x41f8cac6), SkBits2Float(0x42540000), SkBits2Float(0x41f8cac6), SkBits2Float(0x42544290), SkBits2Float(0x41f8e14d), SkBits2Float(0x4254851f));  // 31.099f, 53, 31.099f, 53.065f, 31.11f, 53.13f
6311 path.cubicTo(SkBits2Float(0x41f8f5c8), SkBits2Float(0x4254d1ec), SkBits2Float(0x41f97ae7), SkBits2Float(0x425578d5), SkBits2Float(0x41f9666c), SkBits2Float(0x4255e76d));  // 31.12f, 53.205f, 31.185f, 53.368f, 31.175f, 53.476f
6312 path.cubicTo(SkBits2Float(0x41f94dd9), SkBits2Float(0x42561375), SkBits2Float(0x41f88731), SkBits2Float(0x4256a2d1), SkBits2Float(0x41f85c2f), SkBits2Float(0x4256c49c));  // 31.163f, 53.519f, 31.066f, 53.659f, 31.045f, 53.692f
6313 path.cubicTo(SkBits2Float(0x41f845a8), SkBits2Float(0x4256da1d), SkBits2Float(0x41f7d710), SkBits2Float(0x4256f0a4), SkBits2Float(0x41f7d710), SkBits2Float(0x4256fbe8));  // 31.034f, 53.713f, 30.98f, 53.735f, 30.98f, 53.746f
6314 path.lineTo(SkBits2Float(0x41f7d710), SkBits2Float(0x42571cad));  // 30.98f, 53.778f
6315 path.cubicTo(SkBits2Float(0x41f79587), SkBits2Float(0x4257322e), SkBits2Float(0x41f73b6a), SkBits2Float(0x425748b5), SkBits2Float(0x41f6f9e1), SkBits2Float(0x42575f3c));  // 30.948f, 53.799f, 30.904f, 53.821f, 30.872f, 53.843f
6316 path.cubicTo(SkBits2Float(0x41f6062b), SkBits2Float(0x425774bd), SkBits2Float(0x41f2395e), SkBits2Float(0x425774bd), SkBits2Float(0x41f20e5c), SkBits2Float(0x425727f0));  // 30.753f, 53.864f, 30.278f, 53.864f, 30.257f, 53.789f
6317 path.moveTo(SkBits2Float(0x42048f5f), SkBits2Float(0x426b072b));  // 33.14f, 58.757f
6318 path.cubicTo(SkBits2Float(0x42046d94), SkBits2Float(0x426acfdf), SkBits2Float(0x42048f5f), SkBits2Float(0x426ab958), SkBits2Float(0x420478d8), SkBits2Float(0x426a77cf));  // 33.107f, 58.703f, 33.14f, 58.681f, 33.118f, 58.617f
6319 path.cubicTo(SkBits2Float(0x42045813), SkBits2Float(0x4269d0e6), SkBits2Float(0x42042c0b), SkBits2Float(0x42693646), SkBits2Float(0x42041584), SkBits2Float(0x4268851f));  // 33.086f, 58.454f, 33.043f, 58.303f, 33.021f, 58.13f
6320 path.cubicTo(SkBits2Float(0x4203e97c), SkBits2Float(0x4267c9bb), SkBits2Float(0x42039caf), SkBits2Float(0x42670d50), SkBits2Float(0x4203a6ec), SkBits2Float(0x426624dd));  // 32.978f, 57.947f, 32.903f, 57.763f, 32.913f, 57.536f
6321 path.cubicTo(SkBits2Float(0x4203a6ec), SkBits2Float(0x426624dd), SkBits2Float(0x4203de38), SkBits2Float(0x4265f8d5), SkBits2Float(0x4203e97b), SkBits2Float(0x4265f8d5));  // 32.913f, 57.536f, 32.967f, 57.493f, 32.978f, 57.493f
6322 path.cubicTo(SkBits2Float(0x42042c0a), SkBits2Float(0x4265ee98), SkBits2Float(0x4204c6aa), SkBits2Float(0x4266199a), SkBits2Float(0x4204e875), SkBits2Float(0x42663b64));  // 33.043f, 57.483f, 33.194f, 57.525f, 33.227f, 57.558f
6323 path.cubicTo(SkBits2Float(0x42051ebb), SkBits2Float(0x42668937), SkBits2Float(0x42051ebb), SkBits2Float(0x42671893), SkBits2Float(0x42054085), SkBits2Float(0x426770a3));  // 33.28f, 57.634f, 33.28f, 57.774f, 33.313f, 57.86f
6324 path.cubicTo(SkBits2Float(0x42058314), SkBits2Float(0x4268a6e9), SkBits2Float(0x4206072d), SkBits2Float(0x4269d0e5), SkBits2Float(0x42061271), SkBits2Float(0x426b3e76));  // 33.378f, 58.163f, 33.507f, 58.454f, 33.518f, 58.811f
6325 path.cubicTo(SkBits2Float(0x4205e669), SkBits2Float(0x426b3e76), SkBits2Float(0x4205e669), SkBits2Float(0x426b49ba), SkBits2Float(0x4205b95a), SkBits2Float(0x426b5f3b));  // 33.475f, 58.811f, 33.475f, 58.822f, 33.431f, 58.843f
6326 path.cubicTo(SkBits2Float(0x42056c8d), SkBits2Float(0x426b5f3b), SkBits2Float(0x4204e875), SkBits2Float(0x426b75c2), SkBits2Float(0x4204b023), SkBits2Float(0x426b49ba));  // 33.356f, 58.843f, 33.227f, 58.865f, 33.172f, 58.822f
6327 path.lineTo(SkBits2Float(0x4204b023), SkBits2Float(0x426b3333));  // 33.172f, 58.8f
6328 path.cubicTo(SkBits2Float(0x4204b023), SkBits2Float(0x426b27ef), SkBits2Float(0x42048f5e), SkBits2Float(0x426b072b), SkBits2Float(0x42048f5e), SkBits2Float(0x426b072b));  // 33.172f, 58.789f, 33.14f, 58.757f, 33.14f, 58.757f
6329 path.moveTo(SkBits2Float(0x42035918), SkBits2Float(0x426b6a7f));  // 32.837f, 58.854f
6330 path.cubicTo(SkBits2Float(0x42032d10), SkBits2Float(0x426b6a7f), SkBits2Float(0x42030108), SkBits2Float(0x426b75c3), SkBits2Float(0x4202d4ff), SkBits2Float(0x426b75c3));  // 32.794f, 58.854f, 32.751f, 58.865f, 32.708f, 58.865f
6331 path.cubicTo(SkBits2Float(0x42026667), SkBits2Float(0x426b75c3), SkBits2Float(0x42020d51), SkBits2Float(0x426b5f3c), SkBits2Float(0x4201ec8c), SkBits2Float(0x426b27f0));  // 32.6f, 58.865f, 32.513f, 58.843f, 32.481f, 58.789f
6332 path.cubicTo(SkBits2Float(0x4201cbc7), SkBits2Float(0x426ae561), SkBits2Float(0x4201cbc7), SkBits2Float(0x426a6c8c), SkBits2Float(0x4201b540), SkBits2Float(0x426a0832));  // 32.449f, 58.724f, 32.449f, 58.606f, 32.427f, 58.508f
6333 path.cubicTo(SkBits2Float(0x42018938), SkBits2Float(0x426920c5), SkBits2Float(0x42016873), SkBits2Float(0x42683853), SkBits2Float(0x42013021), SkBits2Float(0x42672f1b));  // 32.384f, 58.282f, 32.352f, 58.055f, 32.297f, 57.796f
6334 path.cubicTo(SkBits2Float(0x42013021), SkBits2Float(0x4267020d), SkBits2Float(0x4200f9db), SkBits2Float(0x42669375), SkBits2Float(0x4200f9db), SkBits2Float(0x426651ec));  // 32.297f, 57.752f, 32.244f, 57.644f, 32.244f, 57.58f
6335 path.cubicTo(SkBits2Float(0x42010418), SkBits2Float(0x4266199a), SkBits2Float(0x420151eb), SkBits2Float(0x4265ee98), SkBits2Float(0x42018937), SkBits2Float(0x4265ee98));  // 32.254f, 57.525f, 32.33f, 57.483f, 32.384f, 57.483f
6336 path.cubicTo(SkBits2Float(0x4201e147), SkBits2Float(0x4265e24e), SkBits2Float(0x42022f1a), SkBits2Float(0x4265ee98), SkBits2Float(0x42023a5e), SkBits2Float(0x4266199a));  // 32.47f, 57.471f, 32.546f, 57.483f, 32.557f, 57.525f
6337 path.cubicTo(SkBits2Float(0x420271aa), SkBits2Float(0x42665c29), SkBits2Float(0x42027be7), SkBits2Float(0x42670d50), SkBits2Float(0x42029db2), SkBits2Float(0x426770a4));  // 32.611f, 57.59f, 32.621f, 57.763f, 32.654f, 57.86f
6338 path.cubicTo(SkBits2Float(0x42029db2), SkBits2Float(0x4267be77), SkBits2Float(0x4202d4fe), SkBits2Float(0x4268178d), SkBits2Float(0x4202e041), SkBits2Float(0x42684ed9));  // 32.654f, 57.936f, 32.708f, 58.023f, 32.719f, 58.077f
6339 path.cubicTo(SkBits2Float(0x4202ea7e), SkBits2Float(0x4268bc6a), SkBits2Float(0x4202ea7e), SkBits2Float(0x4268fefa), SkBits2Float(0x42030106), SkBits2Float(0x42695810));  // 32.729f, 58.184f, 32.729f, 58.249f, 32.751f, 58.336f
6340 path.cubicTo(SkBits2Float(0x420322d1), SkBits2Float(0x4269fced), SkBits2Float(0x4203645a), SkBits2Float(0x426a820c), SkBits2Float(0x4203645a), SkBits2Float(0x426b49ba));  // 32.784f, 58.497f, 32.848f, 58.627f, 32.848f, 58.822f
6341 path.cubicTo(SkBits2Float(0x42034395), SkBits2Float(0x426b49ba), SkBits2Float(0x42035916), SkBits2Float(0x426b49ba), SkBits2Float(0x42035916), SkBits2Float(0x426b6a7f));  // 32.816f, 58.822f, 32.837f, 58.822f, 32.837f, 58.854f
6342 path.moveTo(SkBits2Float(0x42009580), SkBits2Float(0x426b6a7f));  // 32.146f, 58.854f
6343 path.lineTo(SkBits2Float(0x42008b43), SkBits2Float(0x426b8106));  // 32.136f, 58.876f
6344 path.cubicTo(SkBits2Float(0x42007fff), SkBits2Float(0x426b8106), SkBits2Float(0x42005e35), SkBits2Float(0x426b75c2), SkBits2Float(0x420048b4), SkBits2Float(0x426b8106));  // 32.125f, 58.876f, 32.092f, 58.865f, 32.071f, 58.876f
6345 path.cubicTo(SkBits2Float(0x41fdcccc), SkBits2Float(0x426bad0e), SkBits2Float(0x41f94dd2), SkBits2Float(0x426b8c4a), SkBits2Float(0x41f6cccc), SkBits2Float(0x426b8c4a));  // 31.725f, 58.919f, 31.163f, 58.887f, 30.85f, 58.887f
6346 path.cubicTo(SkBits2Float(0x41f65e34), SkBits2Float(0x426b8106), SkBits2Float(0x41f39ba5), SkBits2Float(0x426b8106), SkBits2Float(0x41f35810), SkBits2Float(0x426b49bb));  // 30.796f, 58.876f, 30.451f, 58.876f, 30.418f, 58.822f
6347 path.cubicTo(SkBits2Float(0x41f35810), SkBits2Float(0x426b3334), SkBits2Float(0x41f2e978), SkBits2Float(0x4267926f), SkBits2Float(0x41f31687), SkBits2Float(0x426723d8));  // 30.418f, 58.8f, 30.364f, 57.893f, 30.386f, 57.785f
6348 path.lineTo(SkBits2Float(0x41f36e97), SkBits2Float(0x4266ec8c));  // 30.429f, 57.731f
6349 path.cubicTo(SkBits2Float(0x41f3f3b6), SkBits2Float(0x4266b540), SkBits2Float(0x41f4d0e5), SkBits2Float(0x4266b540), SkBits2Float(0x41f58106), SkBits2Float(0x42669eb9));  // 30.494f, 57.677f, 30.602f, 57.677f, 30.688f, 57.655f
6350 path.cubicTo(SkBits2Float(0x41f7ed91), SkBits2Float(0x42663b65), SkBits2Float(0x41fac6a8), SkBits2Float(0x4265ee98), SkBits2Float(0x41fdb646), SkBits2Float(0x4265d811));  // 30.991f, 57.558f, 31.347f, 57.483f, 31.714f, 57.461f
6351 path.cubicTo(SkBits2Float(0x41fe51ec), SkBits2Float(0x4265c18a), SkBits2Float(0x41ff2f1b), SkBits2Float(0x4265d811), SkBits2Float(0x41ff872b), SkBits2Float(0x4265f8d6));  // 31.79f, 57.439f, 31.898f, 57.461f, 31.941f, 57.493f
6352 path.cubicTo(SkBits2Float(0x41ffb439), SkBits2Float(0x4266199b), SkBits2Float(0x41ffb439), SkBits2Float(0x42669eb9), SkBits2Float(0x41ffdf3b), SkBits2Float(0x4266d605));  // 31.963f, 57.525f, 31.963f, 57.655f, 31.984f, 57.709f
6353 path.cubicTo(SkBits2Float(0x41fff5c2), SkBits2Float(0x42670d51), SkBits2Float(0x42001cac), SkBits2Float(0x42675b24), SkBits2Float(0x42001cac), SkBits2Float(0x4267926f));  // 31.995f, 57.763f, 32.028f, 57.839f, 32.028f, 57.893f
6354 path.cubicTo(SkBits2Float(0x42003d71), SkBits2Float(0x42684290), SkBits2Float(0x420048b4), SkBits2Float(0x4268c7ae), SkBits2Float(0x42005e35), SkBits2Float(0x42696d92));  // 32.06f, 58.065f, 32.071f, 58.195f, 32.092f, 58.357f
6355 path.cubicTo(SkBits2Float(0x42008000), SkBits2Float(0x4269d0e6), SkBits2Float(0x4200ac08), SkBits2Float(0x426a5605), SkBits2Float(0x4200b74c), SkBits2Float(0x426acfe0));  // 32.125f, 58.454f, 32.168f, 58.584f, 32.179f, 58.703f
6356 path.cubicTo(SkBits2Float(0x4200c189), SkBits2Float(0x426b072c), SkBits2Float(0x4200b74c), SkBits2Float(0x426b49bb), SkBits2Float(0x42009581), SkBits2Float(0x426b6a80));  // 32.189f, 58.757f, 32.179f, 58.822f, 32.146f, 58.854f
6357 path.moveTo(SkBits2Float(0x41eeae14), SkBits2Float(0x426bef9f));  // 29.835f, 58.984f
6358 path.cubicTo(SkBits2Float(0x41ee8312), SkBits2Float(0x426c26eb), SkBits2Float(0x41ed353f), SkBits2Float(0x426c52f3), SkBits2Float(0x41ecc8b4), SkBits2Float(0x426c73b8));  // 29.814f, 59.038f, 29.651f, 59.081f, 29.598f, 59.113f
6359 path.cubicTo(SkBits2Float(0x41eb7ae1), SkBits2Float(0x426cd70c), SkBits2Float(0x41ea3127), SkBits2Float(0x426d9376), SkBits2Float(0x41e96872), SkBits2Float(0x426e2e16));  // 29.435f, 59.21f, 29.274f, 59.394f, 29.176f, 59.545f
6360 path.cubicTo(SkBits2Float(0x41e88b43), SkBits2Float(0x426ed3f9), SkBits2Float(0x41e7c49b), SkBits2Float(0x426fdd31), SkBits2Float(0x41e6a5e3), SkBits2Float(0x4270570c));  // 29.068f, 59.707f, 28.971f, 59.966f, 28.831f, 60.085f
6361 path.cubicTo(SkBits2Float(0x41e678d5), SkBits2Float(0x427078d7), SkBits2Float(0x41e6624d), SkBits2Float(0x42706d93), SkBits2Float(0x41e620c4), SkBits2Float(0x427078d7));  // 28.809f, 60.118f, 28.798f, 60.107f, 28.766f, 60.118f
6362 path.cubicTo(SkBits2Float(0x41e60a3d), SkBits2Float(0x4270841b), SkBits2Float(0x41e5f3b6), SkBits2Float(0x4270999c), SkBits2Float(0x41e5f3b6), SkBits2Float(0x4270999c));  // 28.755f, 60.129f, 28.744f, 60.15f, 28.744f, 60.15f
6363 path.cubicTo(SkBits2Float(0x41e52d0e), SkBits2Float(0x4270d0e8), SkBits2Float(0x41e49374), SkBits2Float(0x4270e76f), SkBits2Float(0x41e39fbe), SkBits2Float(0x4270fcf0));  // 28.647f, 60.204f, 28.572f, 60.226f, 28.453f, 60.247f
6364 path.cubicTo(SkBits2Float(0x41e2c28f), SkBits2Float(0x42711377), SkBits2Float(0x41e1a1ca), SkBits2Float(0x42714ac3), SkBits2Float(0x41e03f7c), SkBits2Float(0x4271343c));  // 28.345f, 60.269f, 28.204f, 60.323f, 28.031f, 60.301f
6365 path.cubicTo(SkBits2Float(0x41de2d0d), SkBits2Float(0x42711377), SkBits2Float(0x41e0c49b), SkBits2Float(0x426e9caf), SkBits2Float(0x41e149b9), SkBits2Float(0x426e23da));  // 27.772f, 60.269f, 28.096f, 59.653f, 28.161f, 59.535f
6366 path.cubicTo(SkBits2Float(0x41e23d6f), SkBits2Float(0x426d2f1e), SkBits2Float(0x41e38936), SkBits2Float(0x426c52f5), SkBits2Float(0x41e4eb84), SkBits2Float(0x426b8109));  // 28.28f, 59.296f, 28.442f, 59.081f, 28.615f, 58.876f
6367 path.cubicTo(SkBits2Float(0x41e55a1c), SkBits2Float(0x426b49bd), SkBits2Float(0x41e5dd2e), SkBits2Float(0x426b1caf), SkBits2Float(0x41e6624d), SkBits2Float(0x426ae563));  // 28.669f, 58.822f, 28.733f, 58.778f, 28.798f, 58.724f
6368 path.cubicTo(SkBits2Float(0x41e78312), SkBits2Float(0x426a77d2), SkBits2Float(0x41e88b43), SkBits2Float(0x4269fcf0), SkBits2Float(0x41e99580), SkBits2Float(0x42698f5f));  // 28.939f, 58.617f, 29.068f, 58.497f, 29.198f, 58.39f
6369 path.cubicTo(SkBits2Float(0x41ea3126), SkBits2Float(0x42695813), SkBits2Float(0x41edd0e4), SkBits2Float(0x4267a7f2), SkBits2Float(0x41eeae13), SkBits2Float(0x42684292));  // 29.274f, 58.336f, 29.727f, 57.914f, 29.835f, 58.065f
6370 path.cubicTo(SkBits2Float(0x41eeae13), SkBits2Float(0x42684292), SkBits2Float(0x41eec49a), SkBits2Float(0x42684edc), SkBits2Float(0x41eec49a), SkBits2Float(0x42685919));  // 29.835f, 58.065f, 29.846f, 58.077f, 29.846f, 58.087f
6371 path.cubicTo(SkBits2Float(0x41ef0623), SkBits2Float(0x4268a6ec), SkBits2Float(0x41eedb21), SkBits2Float(0x426bb854), SkBits2Float(0x41eeae13), SkBits2Float(0x426befa0));  // 29.878f, 58.163f, 29.857f, 58.93f, 29.835f, 58.984f
6372 path.moveTo(SkBits2Float(0x41eaf7cd), SkBits2Float(0x4258947d));  // 29.371f, 54.145f
6373 path.cubicTo(SkBits2Float(0x41ebd4fc), SkBits2Float(0x425873b8), SkBits2Float(0x41ed353e), SkBits2Float(0x42589fc1), SkBits2Float(0x41edba5c), SkBits2Float(0x4258ab04));  // 29.479f, 54.113f, 29.651f, 54.156f, 29.716f, 54.167f
6374 path.cubicTo(SkBits2Float(0x41ede76a), SkBits2Float(0x4259c9bc), SkBits2Float(0x41ee3f7b), SkBits2Float(0x425b6e9a), SkBits2Float(0x41ee126c), SkBits2Float(0x425c8314));  // 29.738f, 54.447f, 29.781f, 54.858f, 29.759f, 55.128f
6375 path.cubicTo(SkBits2Float(0x41ede76a), SkBits2Float(0x425d343b), SkBits2Float(0x41ee5602), SkBits2Float(0x425dda1e), SkBits2Float(0x41edd0e3), SkBits2Float(0x425e74be));  // 29.738f, 55.301f, 29.792f, 55.463f, 29.727f, 55.614f
6376 path.cubicTo(SkBits2Float(0x41ed624b), SkBits2Float(0x425f1aa1), SkBits2Float(0x41ec6e95), SkBits2Float(0x425f947c), SkBits2Float(0x41ebd4fc), SkBits2Float(0x426023d9));  // 29.673f, 55.776f, 29.554f, 55.895f, 29.479f, 56.035f
6377 path.cubicTo(SkBits2Float(0x41eb22cf), SkBits2Float(0x4260c9bc), SkBits2Float(0x41ea5c27), SkBits2Float(0x4261645c), SkBits2Float(0x41e9957f), SkBits2Float(0x42621583));  // 29.392f, 56.197f, 29.295f, 56.348f, 29.198f, 56.521f
6378 path.cubicTo(SkBits2Float(0x41e8e55e), SkBits2Float(0x4262c6aa), SkBits2Float(0x41e849b8), SkBits2Float(0x42638314), SkBits2Float(0x41e78310), SkBits2Float(0x426427f2));  // 29.112f, 56.694f, 29.036f, 56.878f, 28.939f, 57.039f
6379 path.cubicTo(SkBits2Float(0x41e72b00), SkBits2Float(0x42646b88), SkBits2Float(0x41e6e76a), SkBits2Float(0x4264b854), SkBits2Float(0x41e68f5a), SkBits2Float(0x4264efa0));  // 28.896f, 57.105f, 28.863f, 57.18f, 28.82f, 57.234f
6380 path.cubicTo(SkBits2Float(0x41e6624c), SkBits2Float(0x42651ba8), SkBits2Float(0x41e60a3b), SkBits2Float(0x4265322f), SkBits2Float(0x41e5dd2d), SkBits2Float(0x426552f4));  // 28.798f, 57.277f, 28.755f, 57.299f, 28.733f, 57.331f
6381 path.cubicTo(SkBits2Float(0x41e570a2), SkBits2Float(0x4264ad11), SkBits2Float(0x41e620c3), SkBits2Float(0x4263c49e), SkBits2Float(0x41e6624c), SkBits2Float(0x426329fe));  // 28.68f, 57.169f, 28.766f, 56.942f, 28.798f, 56.791f
6382 path.cubicTo(SkBits2Float(0x41e6a5e2), SkBits2Float(0x4262418b), SkBits2Float(0x41e6e76b), SkBits2Float(0x42617ae3), SkBits2Float(0x41e72b00), SkBits2Float(0x42609271));  // 28.831f, 56.564f, 28.863f, 56.37f, 28.896f, 56.143f
6383 path.cubicTo(SkBits2Float(0x41e75602), SkBits2Float(0x42604fe2), SkBits2Float(0x41e7978b), SkBits2Float(0x425fe250), SkBits2Float(0x41e7c49a), SkBits2Float(0x425f9fc1));  // 28.917f, 56.078f, 28.949f, 55.971f, 28.971f, 55.906f
6384 path.cubicTo(SkBits2Float(0x41e7db21), SkBits2Float(0x425f25e6), SkBits2Float(0x41e7db21), SkBits2Float(0x425ec18c), SkBits2Float(0x41e80623), SkBits2Float(0x425e53fa));  // 28.982f, 55.787f, 28.982f, 55.689f, 29.003f, 55.582f
6385 path.lineTo(SkBits2Float(0x41e849b9), SkBits2Float(0x425e26ec));  // 29.036f, 55.538f
6386 path.cubicTo(SkBits2Float(0x41e874bb), SkBits2Float(0x425da2d3), SkBits2Float(0x41e8b851), SkBits2Float(0x425d28f8), SkBits2Float(0x41e8e55f), SkBits2Float(0x425caf1d));  // 29.057f, 55.409f, 29.09f, 55.29f, 29.112f, 55.171f
6387 path.cubicTo(SkBits2Float(0x41e93b63), SkBits2Float(0x425b8f5f), SkBits2Float(0x41e97ef9), SkBits2Float(0x425a7ae4), SkBits2Float(0x41ea0417), SkBits2Float(0x42596669));  // 29.154f, 54.89f, 29.187f, 54.62f, 29.252f, 54.35f
6388 path.cubicTo(SkBits2Float(0x41ea3125), SkBits2Float(0x4259199c), SkBits2Float(0x41ea5c27), SkBits2Float(0x4258ab05), SkBits2Float(0x41eaf7cd), SkBits2Float(0x4258947d));  // 29.274f, 54.275f, 29.295f, 54.167f, 29.371f, 54.145f
6389 path.moveTo(SkBits2Float(0x41e96871), SkBits2Float(0x4256a2d3));  // 29.176f, 53.659f
6390 path.cubicTo(SkBits2Float(0x41e953f6), SkBits2Float(0x4256e562), SkBits2Float(0x41e96871), SkBits2Float(0x425727f2), SkBits2Float(0x41e93b63), SkBits2Float(0x42575f3d));  // 29.166f, 53.724f, 29.176f, 53.789f, 29.154f, 53.843f
6391 path.cubicTo(SkBits2Float(0x41e8fbe6), SkBits2Float(0x42578002), SkBits2Float(0x41e88b42), SkBits2Float(0x42578002), SkBits2Float(0x41e81cab), SkBits2Float(0x42578002));  // 29.123f, 53.875f, 29.068f, 53.875f, 29.014f, 53.875f
6392 path.cubicTo(SkBits2Float(0x41e7db22), SkBits2Float(0x42578002), SkBits2Float(0x41e78311), SkBits2Float(0x42576a81), SkBits2Float(0x41e75603), SkBits2Float(0x42575f3d));  // 28.982f, 53.875f, 28.939f, 53.854f, 28.917f, 53.843f
6393 path.cubicTo(SkBits2Float(0x41e72b01), SkBits2Float(0x4257322f), SkBits2Float(0x41e72b01), SkBits2Float(0x4257322f), SkBits2Float(0x41e72b01), SkBits2Float(0x4256fbe9));  // 28.896f, 53.799f, 28.896f, 53.799f, 28.896f, 53.746f
6394 path.cubicTo(SkBits2Float(0x41e72b01), SkBits2Float(0x4256b95a), SkBits2Float(0x41e78311), SkBits2Float(0x42564ac2), SkBits2Float(0x41e7978c), SkBits2Float(0x42561376));  // 28.896f, 53.681f, 28.939f, 53.573f, 28.949f, 53.519f
6395 path.cubicTo(SkBits2Float(0x41e7db22), SkBits2Float(0x4255570c), SkBits2Float(0x41e80624), SkBits2Float(0x4254b128), SkBits2Float(0x41e86040), SkBits2Float(0x42540b45));  // 28.982f, 53.335f, 29.003f, 53.173f, 29.047f, 53.011f
6396 path.cubicTo(SkBits2Float(0x41e874bb), SkBits2Float(0x4253cac2), SkBits2Float(0x41e86040), SkBits2Float(0x4253916a), SkBits2Float(0x41e8b850), SkBits2Float(0x42536562));  // 29.057f, 52.948f, 29.047f, 52.892f, 29.09f, 52.849f
6397 path.cubicTo(SkBits2Float(0x41e8ced7), SkBits2Float(0x42534fe1), SkBits2Float(0x41e953f6), SkBits2Float(0x42532e16), SkBits2Float(0x41e97ef8), SkBits2Float(0x42532e16));  // 29.101f, 52.828f, 29.166f, 52.795f, 29.187f, 52.795f
6398 path.cubicTo(SkBits2Float(0x41ea0417), SkBits2Float(0x425323d9), SkBits2Float(0x41ea3125), SkBits2Float(0x42534fe1), SkBits2Float(0x41ea72ae), SkBits2Float(0x42535a1e));  // 29.252f, 52.785f, 29.274f, 52.828f, 29.306f, 52.838f
6399 path.cubicTo(SkBits2Float(0x41ea72ae), SkBits2Float(0x42548520), SkBits2Float(0x41e9d708), SkBits2Float(0x4255a4df), SkBits2Float(0x41e96871), SkBits2Float(0x4256a2d2));  // 29.306f, 53.13f, 29.23f, 53.411f, 29.176f, 53.659f
6400 path.moveTo(SkBits2Float(0x41e874bb), SkBits2Float(0x4258b647));  // 29.057f, 54.178f
6401 path.cubicTo(SkBits2Float(0x41e86040), SkBits2Float(0x42595c2a), SkBits2Float(0x41e849b9), SkBits2Float(0x4259bf7e), SkBits2Float(0x41e80623), SkBits2Float(0x425a4eda));  // 29.047f, 54.34f, 29.036f, 54.437f, 29.003f, 54.577f
6402 path.cubicTo(SkBits2Float(0x41e7db21), SkBits2Float(0x425ad3f9), SkBits2Float(0x41e76c89), SkBits2Float(0x425b8520), SkBits2Float(0x41e72b00), SkBits2Float(0x425c147c));  // 28.982f, 54.707f, 28.928f, 54.88f, 28.896f, 55.02f
6403 path.cubicTo(SkBits2Float(0x41e71479), SkBits2Float(0x425c570b), SkBits2Float(0x41e72b00), SkBits2Float(0x425c77d0), SkBits2Float(0x41e71479), SkBits2Float(0x425cba5f));  // 28.885f, 55.085f, 28.896f, 55.117f, 28.885f, 55.182f
6404 path.cubicTo(SkBits2Float(0x41e68f5a), SkBits2Float(0x425dfae2), SkBits2Float(0x41e5dd2d), SkBits2Float(0x425f676d), SkBits2Float(0x41e570a2), SkBits2Float(0x4260a8f7));  // 28.82f, 55.495f, 28.733f, 55.851f, 28.68f, 56.165f
6405 path.cubicTo(SkBits2Float(0x41e52d0c), SkBits2Float(0x42610c4b), SkBits2Float(0x41e55a1b), SkBits2Float(0x42614eda), SkBits2Float(0x41e52d0c), SkBits2Float(0x42619ba7));  // 28.647f, 56.262f, 28.669f, 56.327f, 28.647f, 56.402f
6406 path.cubicTo(SkBits2Float(0x41e51685), SkBits2Float(0x4261f4be), SkBits2Float(0x41e4be74), SkBits2Float(0x42624cce), SkBits2Float(0x41e4a7ed), SkBits2Float(0x42628f5d));  // 28.636f, 56.489f, 28.593f, 56.575f, 28.582f, 56.64f
6407 path.cubicTo(SkBits2Float(0x41e46664), SkBits2Float(0x42634bc7), SkBits2Float(0x41e43b62), SkBits2Float(0x4263e667), SkBits2Float(0x41e3f7cc), SkBits2Float(0x4264a1cc));  // 28.55f, 56.824f, 28.529f, 56.975f, 28.496f, 57.158f
6408 path.cubicTo(SkBits2Float(0x41e39fbc), SkBits2Float(0x42657efb), SkBits2Float(0x41e31a9d), SkBits2Float(0x42669376), SkBits2Float(0x41e2ac05), SkBits2Float(0x426770a5));  // 28.453f, 57.374f, 28.388f, 57.644f, 28.334f, 57.86f
6409 path.cubicTo(SkBits2Float(0x41e27ef7), SkBits2Float(0x426821cc), SkBits2Float(0x41e253f5), SkBits2Float(0x4268bc6c), SkBits2Float(0x41e2105f), SkBits2Float(0x42695812));  // 28.312f, 58.033f, 28.291f, 58.184f, 28.258f, 58.336f
6410 path.cubicTo(SkBits2Float(0x41e1ced6), SkBits2Float(0x4269f2b2), SkBits2Float(0x41e1082e), SkBits2Float(0x426aa3d9), SkBits2Float(0x41e09996), SkBits2Float(0x426b3335));  // 28.226f, 58.487f, 28.129f, 58.66f, 28.075f, 58.8f
6411 path.lineTo(SkBits2Float(0x41e05600), SkBits2Float(0x426b3e79));  // 28.042f, 58.811f
6412 path.cubicTo(SkBits2Float(0x41dfe768), SkBits2Float(0x426bb854), SkBits2Float(0x41dfba5a), SkBits2Float(0x426c3129), SkBits2Float(0x41df4dcf), SkBits2Float(0x426ccccf));  // 27.988f, 58.93f, 27.966f, 59.048f, 27.913f, 59.2f
6413 path.cubicTo(SkBits2Float(0x41def5bf), SkBits2Float(0x426d50e8), SkBits2Float(0x41de5a19), SkBits2Float(0x426de14a), SkBits2Float(0x41ddeb81), SkBits2Float(0x426e70a6));  // 27.87f, 59.329f, 27.794f, 59.47f, 27.74f, 59.61f
6414 path.cubicTo(SkBits2Float(0x41dd3b60), SkBits2Float(0x426f79dd), SkBits2Float(0x41dd4fdb), SkBits2Float(0x426e1896), SkBits2Float(0x41dd6662), SkBits2Float(0x426db43c));  // 27.654f, 59.869f, 27.664f, 59.524f, 27.675f, 59.426f
6415 path.cubicTo(SkBits2Float(0x41de9ba1), SkBits2Float(0x426aa3da), SkBits2Float(0x41e01476), SkBits2Float(0x42679271), SkBits2Float(0x41e1332f), SkBits2Float(0x42648109));  // 27.826f, 58.66f, 28.01f, 57.893f, 28.15f, 57.126f
6416 path.cubicTo(SkBits2Float(0x41e149b6), SkBits2Float(0x42645f3e), SkBits2Float(0x41e1a1c7), SkBits2Float(0x4264072e), SkBits2Float(0x41e1a1c7), SkBits2Float(0x4263f1ad));  // 28.161f, 57.093f, 28.204f, 57.007f, 28.204f, 56.986f
6417 path.cubicTo(SkBits2Float(0x41e253f4), SkBits2Float(0x42626e9b), SkBits2Float(0x41e2c28c), SkBits2Float(0x42610109), SkBits2Float(0x41e3459e), SkBits2Float(0x425f72b3));  // 28.291f, 56.608f, 28.345f, 56.251f, 28.409f, 55.862f
6418 path.cubicTo(SkBits2Float(0x41e372ac), SkBits2Float(0x425f51ee), SkBits2Float(0x41e3b642), SkBits2Float(0x425ef9de), SkBits2Float(0x41e3b642), SkBits2Float(0x425ed813));  // 28.431f, 55.83f, 28.464f, 55.744f, 28.464f, 55.711f
6419 path.cubicTo(SkBits2Float(0x41e46663), SkBits2Float(0x425d76cb), SkBits2Float(0x41e4be73), SkBits2Float(0x425c3542), SkBits2Float(0x41e570a0), SkBits2Float(0x425ad3fa));  // 28.55f, 55.366f, 28.593f, 55.052f, 28.68f, 54.707f
6420 path.cubicTo(SkBits2Float(0x41e570a0), SkBits2Float(0x425a916b), SkBits2Float(0x41e5dd2b), SkBits2Float(0x425a22d3), SkBits2Float(0x41e5f3b2), SkBits2Float(0x4259e044));  // 28.68f, 54.642f, 28.733f, 54.534f, 28.744f, 54.469f
6421 path.cubicTo(SkBits2Float(0x41e620c0), SkBits2Float(0x42595c2b), SkBits2Float(0x41e60a39), SkBits2Float(0x4258ab05), SkBits2Float(0x41e72afe), SkBits2Float(0x4258947d));  // 28.766f, 54.34f, 28.755f, 54.167f, 28.896f, 54.145f
6422 path.cubicTo(SkBits2Float(0x41e79789), SkBits2Float(0x4258947d), SkBits2Float(0x41e80621), SkBits2Float(0x4258ab04), SkBits2Float(0x41e874b8), SkBits2Float(0x4258b648));  // 28.949f, 54.145f, 29.003f, 54.167f, 29.057f, 54.178f
6423 path.moveTo(SkBits2Float(0x41e5b229), SkBits2Float(0x4256a2d3));  // 28.712f, 53.659f
6424 path.cubicTo(SkBits2Float(0x41e5851b), SkBits2Float(0x4256e562), SkBits2Float(0x41e59ba2), SkBits2Float(0x425727f2), SkBits2Float(0x41e570a0), SkBits2Float(0x42575f3d));  // 28.69f, 53.724f, 28.701f, 53.789f, 28.68f, 53.843f
6425 path.cubicTo(SkBits2Float(0x41e52d0a), SkBits2Float(0x42578002), SkBits2Float(0x41e4a7ec), SkBits2Float(0x42579689), SkBits2Float(0x41e43b61), SkBits2Float(0x42578002));  // 28.647f, 53.875f, 28.582f, 53.897f, 28.529f, 53.875f
6426 path.cubicTo(SkBits2Float(0x41e3f7cb), SkBits2Float(0x42578002), SkBits2Float(0x41e39fbb), SkBits2Float(0x425748b6), SkBits2Float(0x41e3459e), SkBits2Float(0x42573e79));  // 28.496f, 53.875f, 28.453f, 53.821f, 28.409f, 53.811f
6427 path.cubicTo(SkBits2Float(0x41e39fbb), SkBits2Float(0x42566044), SkBits2Float(0x41e40e52), SkBits2Float(0x42558e58), SkBits2Float(0x41e47add), SkBits2Float(0x4254c7b0));  // 28.453f, 53.594f, 28.507f, 53.389f, 28.56f, 53.195f
6428 path.cubicTo(SkBits2Float(0x41e49370), SkBits2Float(0x425479dd), SkBits2Float(0x41e49370), SkBits2Float(0x42541689), SkBits2Float(0x41e4eb81), SkBits2Float(0x4253df3d));  // 28.572f, 53.119f, 28.572f, 53.022f, 28.615f, 52.968f
6429 path.cubicTo(SkBits2Float(0x41e4fffc), SkBits2Float(0x4253c9bc), SkBits2Float(0x41e5b229), SkBits2Float(0x4253916a), SkBits2Float(0x41e60a39), SkBits2Float(0x4253916a));  // 28.625f, 52.947f, 28.712f, 52.892f, 28.755f, 52.892f
6430 path.cubicTo(SkBits2Float(0x41e68f58), SkBits2Float(0x4253872d), SkBits2Float(0x41e68f58), SkBits2Float(0x4253a7f1), SkBits2Float(0x41e6e768), SkBits2Float(0x4253be78));  // 28.82f, 52.882f, 28.82f, 52.914f, 28.863f, 52.936f
6431 path.cubicTo(SkBits2Float(0x41e68f58), SkBits2Float(0x4254c7af), SkBits2Float(0x41e60a39), SkBits2Float(0x4255af1c), SkBits2Float(0x41e5b229), SkBits2Float(0x4256a2d2));  // 28.82f, 53.195f, 28.755f, 53.421f, 28.712f, 53.659f
6432 path.moveTo(SkBits2Float(0x41e372ac), SkBits2Float(0x42589fc0));  // 28.431f, 54.156f
6433 path.cubicTo(SkBits2Float(0x41e55a19), SkBits2Float(0x42586874), SkBits2Float(0x41e40e52), SkBits2Float(0x425a178f), SkBits2Float(0x41e3cabc), SkBits2Float(0x425a7ae3));  // 28.669f, 54.102f, 28.507f, 54.523f, 28.474f, 54.62f
6434 path.cubicTo(SkBits2Float(0x41e1fbe3), SkBits2Float(0x425f3b66), SkBits2Float(0x41dfd0e1), SkBits2Float(0x4263f1ac), SkBits2Float(0x41ddeb81), SkBits2Float(0x4268c7b0));  // 28.248f, 55.808f, 27.977f, 56.986f, 27.74f, 58.195f
6435 path.cubicTo(SkBits2Float(0x41ddd4fa), SkBits2Float(0x42690a3f), SkBits2Float(0x41dd7ce9), SkBits2Float(0x42696d93), SkBits2Float(0x41dd6662), SkBits2Float(0x4269999c));  // 27.729f, 58.26f, 27.686f, 58.357f, 27.675f, 58.4f
6436 path.cubicTo(SkBits2Float(0x41dd3b60), SkBits2Float(0x426a29fe), SkBits2Float(0x41dd3b60), SkBits2Float(0x426a8d52), SkBits2Float(0x41dcf7ca), SkBits2Float(0x426b1cae));  // 27.654f, 58.541f, 27.654f, 58.638f, 27.621f, 58.778f
6437 path.cubicTo(SkBits2Float(0x41dcb641), SkBits2Float(0x426bf9dd), SkBits2Float(0x41dc0414), SkBits2Float(0x426cf8d7), SkBits2Float(0x41db957c), SkBits2Float(0x426dec8d));  // 27.589f, 58.994f, 27.502f, 59.243f, 27.448f, 59.481f
6438 path.cubicTo(SkBits2Float(0x41db53f3), SkBits2Float(0x426e916a), SkBits2Float(0x41db3d6c), SkBits2Float(0x426eea81), SkBits2Float(0x41daa3d2), SkBits2Float(0x426f5918));  // 27.416f, 59.642f, 27.405f, 59.729f, 27.33f, 59.837f
6439 path.cubicTo(SkBits2Float(0x41da76c4), SkBits2Float(0x426f4dd4), SkBits2Float(0x41da49b5), SkBits2Float(0x426f4291), SkBits2Float(0x41da082c), SkBits2Float(0x426f21cc));  // 27.308f, 59.826f, 27.286f, 59.815f, 27.254f, 59.783f
6440 path.cubicTo(SkBits2Float(0x41d9db1e), SkBits2Float(0x426f0b45), SkBits2Float(0x41d9f1a5), SkBits2Float(0x426f0b45), SkBits2Float(0x41d9c6a3), SkBits2Float(0x426eea80));  // 27.232f, 59.761f, 27.243f, 59.761f, 27.222f, 59.729f
6441 path.lineTo(SkBits2Float(0x41d99995), SkBits2Float(0x426edf3c));  // 27.2f, 59.718f
6442 path.cubicTo(SkBits2Float(0x41d91476), SkBits2Float(0x426ea7f0), SkBits2Float(0x41d8e768), SkBits2Float(0x426e6561), SkBits2Float(0x41d8a5df), SkBits2Float(0x426e020d));  // 27.135f, 59.664f, 27.113f, 59.599f, 27.081f, 59.502f
6443 path.cubicTo(SkBits2Float(0x41d8a5df), SkBits2Float(0x426e020d), SkBits2Float(0x41d86456), SkBits2Float(0x426dd605), SkBits2Float(0x41d8a5df), SkBits2Float(0x426dd605));  // 27.081f, 59.502f, 27.049f, 59.459f, 27.081f, 59.459f
6444 path.cubicTo(SkBits2Float(0x41d8e768), SkBits2Float(0x426d5c2a), SkBits2Float(0x41d8fdef), SkBits2Float(0x426cf8d6), SkBits2Float(0x41d92afe), SkBits2Float(0x426c7efb));  // 27.113f, 59.34f, 27.124f, 59.243f, 27.146f, 59.124f
6445 path.cubicTo(SkBits2Float(0x41d9830e), SkBits2Float(0x426bb853), SkBits2Float(0x41da1eb4), SkBits2Float(0x426ae561), SkBits2Float(0x41da8d4c), SkBits2Float(0x426a29fd));  // 27.189f, 58.93f, 27.265f, 58.724f, 27.319f, 58.541f
6446 path.cubicTo(SkBits2Float(0x41dccabd), SkBits2Float(0x4265d811), SkBits2Float(0x41e02afe), SkBits2Float(0x42617ae2), SkBits2Float(0x41e1332f), SkBits2Float(0x425cfcef));  // 27.599f, 57.461f, 28.021f, 56.37f, 28.15f, 55.247f
6447 path.cubicTo(SkBits2Float(0x41e149b6), SkBits2Float(0x425c4085), SkBits2Float(0x41e1a1c7), SkBits2Float(0x425b8f5e), SkBits2Float(0x41e1fbe3), SkBits2Float(0x425adf3d));  // 28.161f, 55.063f, 28.204f, 54.89f, 28.248f, 54.718f
6448 path.cubicTo(SkBits2Float(0x41e226e5), SkBits2Float(0x425a4edb), SkBits2Float(0x41e226e5), SkBits2Float(0x42598833), SkBits2Float(0x41e2ac04), SkBits2Float(0x4258f7d0));  // 28.269f, 54.577f, 28.269f, 54.383f, 28.334f, 54.242f
6449 path.cubicTo(SkBits2Float(0x41e2c28b), SkBits2Float(0x4258ec8c), SkBits2Float(0x41e372ac), SkBits2Float(0x42589fc0), SkBits2Float(0x41e372ac), SkBits2Float(0x42589fc0));  // 28.345f, 54.231f, 28.431f, 54.156f, 28.431f, 54.156f
6450 path.moveTo(SkBits2Float(0x41d9830e), SkBits2Float(0x427128f7));  // 27.189f, 60.29f
6451 path.cubicTo(SkBits2Float(0x41d95600), SkBits2Float(0x42714ac2), SkBits2Float(0x41d92afe), SkBits2Float(0x427176ca), SkBits2Float(0x41d8e768), SkBits2Float(0x427176ca));  // 27.167f, 60.323f, 27.146f, 60.366f, 27.113f, 60.366f
6452 path.cubicTo(SkBits2Float(0x41d86456), SkBits2Float(0x42718d51), SkBits2Float(0x41d67ce9), SkBits2Float(0x4271820e), SkBits2Float(0x41d60e51), SkBits2Float(0x42716b86));  // 27.049f, 60.388f, 26.811f, 60.377f, 26.757f, 60.355f
6453 path.cubicTo(SkBits2Float(0x41d5f7ca), SkBits2Float(0x42716b86), SkBits2Float(0x41d5ccc8), SkBits2Float(0x42714ac1), SkBits2Float(0x41d5b641), SkBits2Float(0x42713f7e));  // 26.746f, 60.355f, 26.725f, 60.323f, 26.714f, 60.312f
6454 path.cubicTo(SkBits2Float(0x41d5b641), SkBits2Float(0x42708e57), SkBits2Float(0x41d5f7ca), SkBits2Float(0x426ffefb), SkBits2Float(0x41d69370), SkBits2Float(0x426f8f5d));  // 26.714f, 60.139f, 26.746f, 59.999f, 26.822f, 59.89f
6455 path.cubicTo(SkBits2Float(0x41d6eb80), SkBits2Float(0x426f9ba7), SkBits2Float(0x41d7188f), SkBits2Float(0x426f8f5d), SkBits2Float(0x41d7709f), SkBits2Float(0x426f9ba7));  // 26.865f, 59.902f, 26.887f, 59.89f, 26.93f, 59.902f
6456 path.cubicTo(SkBits2Float(0x41d7b228), SkBits2Float(0x426fb128), SkBits2Float(0x41d99995), SkBits2Float(0x42706d93), SkBits2Float(0x41d9c6a3), SkBits2Float(0x42708e57));  // 26.962f, 59.923f, 27.2f, 60.107f, 27.222f, 60.139f
6457 path.cubicTo(SkBits2Float(0x41d9db1e), SkBits2Float(0x4270d0e6), SkBits2Float(0x41d99995), SkBits2Float(0x42710832), SkBits2Float(0x41d9830d), SkBits2Float(0x427128f7));  // 27.232f, 60.204f, 27.2f, 60.258f, 27.189f, 60.29f
6458 path.moveTo(SkBits2Float(0x41e1603c), SkBits2Float(0x4255f1ab));  // 28.172f, 53.486f
6459 path.cubicTo(SkBits2Float(0x41e149b5), SkBits2Float(0x42563f7e), SkBits2Float(0x41e1603c), SkBits2Float(0x425676ca), SkBits2Float(0x41e1332e), SkBits2Float(0x4256c49d));  // 28.161f, 53.562f, 28.172f, 53.616f, 28.15f, 53.692f
6460 path.cubicTo(SkBits2Float(0x41e11eb3), SkBits2Float(0x4256f0a5), SkBits2Float(0x41e0db1e), SkBits2Float(0x425727f1), SkBits2Float(0x41e0b01c), SkBits2Float(0x425748b6));  // 28.14f, 53.735f, 28.107f, 53.789f, 28.086f, 53.821f
6461 path.lineTo(SkBits2Float(0x41e055ff), SkBits2Float(0x425748b6));  // 28.042f, 53.821f
6462 path.cubicTo(SkBits2Float(0x41e055ff), SkBits2Float(0x425748b6), SkBits2Float(0x41df4dce), SkBits2Float(0x4256e562), SkBits2Float(0x41df3747), SkBits2Float(0x4256da1e));  // 28.042f, 53.821f, 27.913f, 53.724f, 27.902f, 53.713f
6463 path.cubicTo(SkBits2Float(0x41deb228), SkBits2Float(0x4256820e), SkBits2Float(0x41de4391), SkBits2Float(0x42561376), SkBits2Float(0x41ddbe72), SkBits2Float(0x4255ba60));  // 27.837f, 53.627f, 27.783f, 53.519f, 27.718f, 53.432f
6464 path.lineTo(SkBits2Float(0x41dd7ce9), SkBits2Float(0x4255af1c));  // 27.686f, 53.421f
6465 path.cubicTo(SkBits2Float(0x41dd7ce9), SkBits2Float(0x4255a4df), SkBits2Float(0x41dda7eb), SkBits2Float(0x425578d6), SkBits2Float(0x41dd7ce9), SkBits2Float(0x42556d93));  // 27.686f, 53.411f, 27.707f, 53.368f, 27.686f, 53.357f
6466 path.cubicTo(SkBits2Float(0x41de9ba1), SkBits2Float(0x4255147c), SkBits2Float(0x41df8f58), SkBits2Float(0x4254c7b0), SkBits2Float(0x41e0b01c), SkBits2Float(0x42549064));  // 27.826f, 53.27f, 27.945f, 53.195f, 28.086f, 53.141f
6467 path.cubicTo(SkBits2Float(0x41e0c497), SkBits2Float(0x42548520), SkBits2Float(0x41e11eb4), SkBits2Float(0x4254645c), SkBits2Float(0x41e1332e), SkBits2Float(0x4254645c));  // 28.096f, 53.13f, 28.14f, 53.098f, 28.15f, 53.098f
6468 path.cubicTo(SkBits2Float(0x41e18b3e), SkBits2Float(0x42545918), SkBits2Float(0x41e1ced4), SkBits2Float(0x425479dd), SkBits2Float(0x41e1fbe2), SkBits2Float(0x425479dd));  // 28.193f, 53.087f, 28.226f, 53.119f, 28.248f, 53.119f
6469 path.cubicTo(SkBits2Float(0x41e1fbe2), SkBits2Float(0x4255147d), SkBits2Float(0x41e1a1c5), SkBits2Float(0x4255841a), SkBits2Float(0x41e1603c), SkBits2Float(0x4255f1ac));  // 28.248f, 53.27f, 28.204f, 53.379f, 28.172f, 53.486f
6470 path.moveTo(SkBits2Float(0x41df6248), SkBits2Float(0x425b4ccf));  // 27.923f, 54.825f
6471 path.cubicTo(SkBits2Float(0x41dfe767), SkBits2Float(0x425b9aa2), SkBits2Float(0x41df4dcd), SkBits2Float(0x425c6c8d), SkBits2Float(0x41df20bf), SkBits2Float(0x425cd0e8));  // 27.988f, 54.901f, 27.913f, 55.106f, 27.891f, 55.204f
6472 path.cubicTo(SkBits2Float(0x41ddeb80), SkBits2Float(0x425f893a), SkBits2Float(0x41dc8932), SkBits2Float(0x4262374e), SkBits2Float(0x41db105d), SkBits2Float(0x4264e45d));  // 27.74f, 55.884f, 27.567f, 56.554f, 27.383f, 57.223f
6473 path.cubicTo(SkBits2Float(0x41daced4), SkBits2Float(0x42657efd), SkBits2Float(0x41d78726), SkBits2Float(0x426c52f5), SkBits2Float(0x41d6c07e), SkBits2Float(0x426c3c6d));  // 27.351f, 57.374f, 26.941f, 59.081f, 26.844f, 59.059f
6474 path.cubicTo(SkBits2Float(0x41d58932), SkBits2Float(0x426c3129), SkBits2Float(0x41d50620), SkBits2Float(0x426b1caf), SkBits2Float(0x41d48101), SkBits2Float(0x426aa3da));  // 26.692f, 59.048f, 26.628f, 58.778f, 26.563f, 58.66f
6475 path.cubicTo(SkBits2Float(0x41d3d0e0), SkBits2Float(0x426a0834), SkBits2Float(0x41d34bc2), SkBits2Float(0x42696d94), SkBits2Float(0x41d2db1e), SkBits2Float(0x4268bc6d));  // 26.477f, 58.508f, 26.412f, 58.357f, 26.357f, 58.184f
6476 path.cubicTo(SkBits2Float(0x41d21476), SkBits2Float(0x42674fe2), SkBits2Float(0x41d19164), SkBits2Float(0x4265c18c), SkBits2Float(0x41d19164), SkBits2Float(0x426449bd));  // 26.26f, 57.828f, 26.196f, 57.439f, 26.196f, 57.072f
6477 path.cubicTo(SkBits2Float(0x41d1a5df), SkBits2Float(0x4261bd73), SkBits2Float(0x41d3d0e1), SkBits2Float(0x425f51ee), SkBits2Float(0x41d79dae), SkBits2Float(0x425d820f));  // 26.206f, 56.435f, 26.477f, 55.83f, 26.952f, 55.377f
6478 path.cubicTo(SkBits2Float(0x41d8a5df), SkBits2Float(0x425cfcf0), SkBits2Float(0x41d9db1f), SkBits2Float(0x425c8e59), SkBits2Float(0x41db105e), SkBits2Float(0x425c3542));  // 27.081f, 55.247f, 27.232f, 55.139f, 27.383f, 55.052f
6479 path.cubicTo(SkBits2Float(0x41dbed8d), SkBits2Float(0x425bf4bf), SkBits2Float(0x41ddbe72), SkBits2Float(0x425b21cd), SkBits2Float(0x41dec8b0), SkBits2Float(0x425b21cd));  // 27.491f, 54.989f, 27.718f, 54.783f, 27.848f, 54.783f
6480 path.cubicTo(SkBits2Float(0x41df20c0), SkBits2Float(0x425b374e), SkBits2Float(0x41df4dcf), SkBits2Float(0x425b4292), SkBits2Float(0x41df624a), SkBits2Float(0x425b4ccf));  // 27.891f, 54.804f, 27.913f, 54.815f, 27.923f, 54.825f
6481 path.moveTo(SkBits2Float(0x41d453f4), SkBits2Float(0x426fbc6d));  // 26.541f, 59.934f
6482 path.cubicTo(SkBits2Float(0x41d48102), SkBits2Float(0x426f8521), SkBits2Float(0x41d51a9c), SkBits2Float(0x426ea7f2), SkBits2Float(0x41d4957d), SkBits2Float(0x426e872e));  // 26.563f, 59.88f, 26.638f, 59.664f, 26.573f, 59.632f
6483 path.cubicTo(SkBits2Float(0x41d453f4), SkBits2Float(0x426e70a7), SkBits2Float(0x41d428f2), SkBits2Float(0x426e872e), SkBits2Float(0x41d3fbe3), SkBits2Float(0x426e70a7));  // 26.541f, 59.61f, 26.52f, 59.632f, 26.498f, 59.61f
6484 path.cubicTo(SkBits2Float(0x41d3d0e1), SkBits2Float(0x426e916c), SkBits2Float(0x41d3b84d), SkBits2Float(0x426e872e), SkBits2Float(0x41d3a3d3), SkBits2Float(0x426e916c));  // 26.477f, 59.642f, 26.465f, 59.632f, 26.455f, 59.642f
6485 path.cubicTo(SkBits2Float(0x41d3603d), SkBits2Float(0x426f010a), SkBits2Float(0x41d3d0e1), SkBits2Float(0x426f9ba9), SkBits2Float(0x41d4126b), SkBits2Float(0x426fdd33));  // 26.422f, 59.751f, 26.477f, 59.902f, 26.509f, 59.966f
6486 path.lineTo(SkBits2Float(0x41d43d6d), SkBits2Float(0x426fdd33));  // 26.53f, 59.966f
6487 path.cubicTo(SkBits2Float(0x41d43d6d), SkBits2Float(0x426fd1ef), SkBits2Float(0x41d43d6d), SkBits2Float(0x426fbc6e), SkBits2Float(0x41d453f4), SkBits2Float(0x426fbc6e));  // 26.53f, 59.955f, 26.53f, 59.934f, 26.541f, 59.934f
6488 path.moveTo(SkBits2Float(0x42071ba4), SkBits2Float(0x42670210));  // 33.777f, 57.752f
6489 path.cubicTo(SkBits2Float(0x42075e33), SkBits2Float(0x42670d54), SkBits2Float(0x4207957f), SkBits2Float(0x42671897), SkBits2Float(0x4207cccb), SkBits2Float(0x42672f1e));  // 33.842f, 57.763f, 33.896f, 57.774f, 33.95f, 57.796f
6490 path.cubicTo(SkBits2Float(0x4208a9fa), SkBits2Float(0x4267872e), SkBits2Float(0x42097be6), SkBits2Float(0x42681791), SkBits2Float(0x420a3850), SkBits2Float(0x42688522));  // 34.166f, 57.882f, 34.371f, 58.023f, 34.555f, 58.13f
6491 path.cubicTo(SkBits2Float(0x420b0a3c), SkBits2Float(0x4268fefd), SkBits2Float(0x420d1167), SkBits2Float(0x4269e770), SkBits2Float(0x420d27ee), SkBits2Float(0x426ae564));  // 34.76f, 58.249f, 35.267f, 58.476f, 35.289f, 58.724f
6492 path.cubicTo(SkBits2Float(0x420d0729), SkBits2Float(0x426af0a8), SkBits2Float(0x420cdb21), SkBits2Float(0x426afbeb), SkBits2Float(0x420cb956), SkBits2Float(0x426b072f));  // 35.257f, 58.735f, 35.214f, 58.746f, 35.181f, 58.757f
6493 path.cubicTo(SkBits2Float(0x420b9998), SkBits2Float(0x426b27f4), SkBits2Float(0x420a6f9c), SkBits2Float(0x426b27f4), SkBits2Float(0x42095b21), SkBits2Float(0x426b3337));  // 34.9f, 58.789f, 34.609f, 58.789f, 34.339f, 58.8f
6494 path.cubicTo(SkBits2Float(0x42090d4e), SkBits2Float(0x426b3337), SkBits2Float(0x4207b644), SkBits2Float(0x426b49be), SkBits2Float(0x420773b4), SkBits2Float(0x426b3337));  // 34.263f, 58.8f, 33.928f, 58.822f, 33.863f, 58.8f
6495 path.cubicTo(SkBits2Float(0x4207322b), SkBits2Float(0x426b072f), SkBits2Float(0x4206ef9b), SkBits2Float(0x4269999d), SkBits2Float(0x4206ced7), SkBits2Float(0x426920c8));  // 33.799f, 58.757f, 33.734f, 58.4f, 33.702f, 58.282f
6496 path.cubicTo(SkBits2Float(0x42069685), SkBits2Float(0x4268645e), SkBits2Float(0x4205c49a), SkBits2Float(0x4266b543), SkBits2Float(0x42071ba4), SkBits2Float(0x42670210));  // 33.647f, 58.098f, 33.442f, 57.677f, 33.777f, 57.752f
6497 path.moveTo(SkBits2Float(0x41f026e6), SkBits2Float(0x423f0c4e));  // 30.019f, 47.762f
6498 path.cubicTo(SkBits2Float(0x41effbe4), SkBits2Float(0x42400004), SkBits2Float(0x41f0105f), SkBits2Float(0x4240e877), SkBits2Float(0x41f03b61), SkBits2Float(0x4241d0ea));  // 29.998f, 48, 30.008f, 48.227f, 30.029f, 48.454f
6499 path.lineTo(SkBits2Float(0x41f03b61), SkBits2Float(0x424228fa));  // 30.029f, 48.54f
6500 path.cubicTo(SkBits2Float(0x41f051e8), SkBits2Float(0x42423f81), SkBits2Float(0x41f0c080), SkBits2Float(0x424276cd), SkBits2Float(0x41f11890), SkBits2Float(0x424276cd));  // 30.04f, 48.562f, 30.094f, 48.616f, 30.137f, 48.616f
6501 path.cubicTo(SkBits2Float(0x41f11890), SkBits2Float(0x424276cd), SkBits2Float(0x41f18934), SkBits2Float(0x42426b89), SkBits2Float(0x41f12f17), SkBits2Float(0x42426b89));  // 30.137f, 48.616f, 30.192f, 48.605f, 30.148f, 48.605f
6502 path.cubicTo(SkBits2Float(0x41f1459e), SkBits2Float(0x42426045), SkBits2Float(0x41f18934), SkBits2Float(0x42426b89), SkBits2Float(0x41f18934), SkBits2Float(0x42426b89));  // 30.159f, 48.594f, 30.192f, 48.605f, 30.192f, 48.605f
6503 path.cubicTo(SkBits2Float(0x41f19daf), SkBits2Float(0x424249be), SkBits2Float(0x41f19daf), SkBits2Float(0x42423f81), SkBits2Float(0x41f1b436), SkBits2Float(0x42423f81));  // 30.202f, 48.572f, 30.202f, 48.562f, 30.213f, 48.562f
6504 path.cubicTo(SkBits2Float(0x41f18934), SkBits2Float(0x42414087), SkBits2Float(0x41f11890), SkBits2Float(0x424079df), SkBits2Float(0x41f0ac05), SkBits2Float(0x423f9cb0));  // 30.192f, 48.313f, 30.137f, 48.119f, 30.084f, 47.903f
6505 path.cubicTo(SkBits2Float(0x41f0957e), SkBits2Float(0x423f7ae5), SkBits2Float(0x41f0c080), SkBits2Float(0x423f5a21), SkBits2Float(0x41f0957e), SkBits2Float(0x423f395c));  // 30.073f, 47.87f, 30.094f, 47.838f, 30.073f, 47.806f
6506 path.lineTo(SkBits2Float(0x41f026e6), SkBits2Float(0x423f0c4e));  // 30.019f, 47.762f
6507 path.moveTo(SkBits2Float(0x41ed4dcf), SkBits2Float(0x423fd3fc));  // 29.663f, 47.957f
6508 path.cubicTo(SkBits2Float(0x41ecc8b0), SkBits2Float(0x42408523), SkBits2Float(0x41ec580c), SkBits2Float(0x42414bcb), SkBits2Float(0x41ec580c), SkBits2Float(0x42423f81));  // 29.598f, 48.13f, 29.543f, 48.324f, 29.543f, 48.562f
6509 path.cubicTo(SkBits2Float(0x41ec6e93), SkBits2Float(0x42423f81), SkBits2Float(0x41ec9ba2), SkBits2Float(0x42426046), SkBits2Float(0x41ecb229), SkBits2Float(0x42426b89));  // 29.554f, 48.562f, 29.576f, 48.594f, 29.587f, 48.605f
6510 path.cubicTo(SkBits2Float(0x41ecc8b0), SkBits2Float(0x42426b89), SkBits2Float(0x41ecdd2b), SkBits2Float(0x42426045), SkBits2Float(0x41ecf3b2), SkBits2Float(0x42426b89));  // 29.598f, 48.605f, 29.608f, 48.594f, 29.619f, 48.605f
6511 path.cubicTo(SkBits2Float(0x41ecf3b2), SkBits2Float(0x42426b89), SkBits2Float(0x41eda5df), SkBits2Float(0x42426045), SkBits2Float(0x41edba5a), SkBits2Float(0x42423f81));  // 29.619f, 48.605f, 29.706f, 48.594f, 29.716f, 48.562f
6512 path.cubicTo(SkBits2Float(0x41ee126a), SkBits2Float(0x4241e66a), SkBits2Float(0x41edd0e1), SkBits2Float(0x42403750), SkBits2Float(0x41eda5df), SkBits2Float(0x423fdf3f));  // 29.759f, 48.475f, 29.727f, 48.054f, 29.706f, 47.968f
6513 path.lineTo(SkBits2Float(0x41ed4dcf), SkBits2Float(0x423fd3fb));  // 29.663f, 47.957f
6514 path.moveTo(SkBits2Float(0x41d05a19), SkBits2Float(0x4258ab05));  // 26.044f, 54.167f
6515 path.cubicTo(SkBits2Float(0x41d05a19), SkBits2Float(0x42589fc1), SkBits2Float(0x41d070a0), SkBits2Float(0x42588a40), SkBits2Float(0x41d05a19), SkBits2Float(0x42586876));  // 26.044f, 54.156f, 26.055f, 54.135f, 26.044f, 54.102f
6516 path.cubicTo(SkBits2Float(0x41d05a19), SkBits2Float(0x42583c6e), SkBits2Float(0x41d02f17), SkBits2Float(0x4257ee9b), SkBits2Float(0x41d00209), SkBits2Float(0x4257c293));  // 26.044f, 54.059f, 26.023f, 53.983f, 26.001f, 53.94f
6517 path.cubicTo(SkBits2Float(0x41cfeb82), SkBits2Float(0x42571cb0), SkBits2Float(0x41d00209), SkBits2Float(0x42568210), SkBits2Float(0x41cfeb82), SkBits2Float(0x4255c5a5));  // 25.99f, 53.778f, 26.001f, 53.627f, 25.99f, 53.443f
6518 path.cubicTo(SkBits2Float(0x41cfeb82), SkBits2Float(0x4255a4e0), SkBits2Float(0x41cfc080), SkBits2Float(0x42552b05), SkBits2Float(0x41cfd4fb), SkBits2Float(0x4254dd32));  // 25.99f, 53.411f, 25.969f, 53.292f, 25.979f, 53.216f
6519 path.cubicTo(SkBits2Float(0x41cfeb82), SkBits2Float(0x4254b12a), SkBits2Float(0x41d05a1a), SkBits2Float(0x4254b12a), SkBits2Float(0x41d0df38), SkBits2Float(0x4254c7b1));  // 25.99f, 53.173f, 26.044f, 53.173f, 26.109f, 53.195f
6520 path.cubicTo(SkBits2Float(0x41d24186), SkBits2Float(0x42552b05), SkBits2Float(0x41d4ac05), SkBits2Float(0x42563f80), SkBits2Float(0x41d50621), SkBits2Float(0x42566044));  // 26.282f, 53.292f, 26.584f, 53.562f, 26.628f, 53.594f
6521 path.cubicTo(SkBits2Float(0x41d60e52), SkBits2Float(0x4256da1f), SkBits2Float(0x41d70208), SkBits2Float(0x425748b7), SkBits2Float(0x41d80a3a), SkBits2Float(0x4257c292));  // 26.757f, 53.713f, 26.876f, 53.821f, 27.005f, 53.94f
6522 path.cubicTo(SkBits2Float(0x41d8a5e0), SkBits2Float(0x4257f9de), SkBits2Float(0x41da1eb5), SkBits2Float(0x4258947e), SkBits2Float(0x41d8a5e0), SkBits2Float(0x4258ab05));  // 27.081f, 53.994f, 27.265f, 54.145f, 27.081f, 54.167f
6523 path.cubicTo(SkBits2Float(0x41d7df38), SkBits2Float(0x4258cbca), SkBits2Float(0x41d72d0b), SkBits2Float(0x4258b649), SkBits2Float(0x41d66663), SkBits2Float(0x4258b649));  // 26.984f, 54.199f, 26.897f, 54.178f, 26.8f, 54.178f
6524 path.cubicTo(SkBits2Float(0x41d547ab), SkBits2Float(0x4258cbca), SkBits2Float(0x41d1bc67), SkBits2Float(0x42592f1e), SkBits2Float(0x41d0b22a), SkBits2Float(0x4258e251));  // 26.66f, 54.199f, 26.217f, 54.296f, 26.087f, 54.221f
6525 path.lineTo(SkBits2Float(0x41d0b22a), SkBits2Float(0x4258d70d));  // 26.087f, 54.21f
6526 path.cubicTo(SkBits2Float(0x41d09daf), SkBits2Float(0x4258d70d), SkBits2Float(0x41d070a1), SkBits2Float(0x4258b648), SkBits2Float(0x41d05a1a), SkBits2Float(0x4258ab05));  // 26.077f, 54.21f, 26.055f, 54.178f, 26.044f, 54.167f
6527 path.moveTo(SkBits2Float(0x41ce8b41), SkBits2Float(0x42588a40));  // 25.818f, 54.135f
6528 path.cubicTo(SkBits2Float(0x41ceb643), SkBits2Float(0x4258ab05), SkBits2Float(0x41ce74ba), SkBits2Float(0x4258ab05), SkBits2Float(0x41ceccca), SkBits2Float(0x4258ab05));  // 25.839f, 54.167f, 25.807f, 54.167f, 25.85f, 54.167f
6529 path.cubicTo(SkBits2Float(0x41cef7cc), SkBits2Float(0x4258ab05), SkBits2Float(0x41cf0e53), SkBits2Float(0x4258b336), SkBits2Float(0x41cf0e53), SkBits2Float(0x42589db5));  // 25.871f, 54.167f, 25.882f, 54.175f, 25.882f, 54.154f
6530 path.cubicTo(SkBits2Float(0x41cf0e53), SkBits2Float(0x4258395b), SkBits2Float(0x41cf0a3a), SkBits2Float(0x42579790), SkBits2Float(0x41cedd2c), SkBits2Float(0x4257343c));  // 25.882f, 54.056f, 25.88f, 53.898f, 25.858f, 53.801f
6531 path.cubicTo(SkBits2Float(0x41cec8b1), SkBits2Float(0x42564086), SkBits2Float(0x41ceccca), SkBits2Float(0x4254f3b9), SkBits2Float(0x41ce5e32), SkBits2Float(0x425421cd));  // 25.848f, 53.563f, 25.85f, 53.238f, 25.796f, 53.033f
6532 path.lineTo(SkBits2Float(0x41cdef9a), SkBits2Float(0x425421cd));  // 25.742f, 53.033f
6533 path.cubicTo(SkBits2Float(0x41cdd913), SkBits2Float(0x4254dd31), SkBits2Float(0x41ce126b), SkBits2Float(0x425626ec), SkBits2Float(0x41ce28f2), SkBits2Float(0x4256e250));  // 25.731f, 53.216f, 25.759f, 53.538f, 25.77f, 53.721f
6534 path.cubicTo(SkBits2Float(0x41ce3f79), SkBits2Float(0x42579377), SkBits2Float(0x41ce47aa), SkBits2Float(0x42580f5e), SkBits2Float(0x41ce8b40), SkBits2Float(0x42588a40));  // 25.781f, 53.894f, 25.785f, 54.015f, 25.818f, 54.135f
6535 path.moveTo(SkBits2Float(0x41c58d4c), SkBits2Float(0x425271ad));  // 24.694f, 52.611f
6536 path.cubicTo(SkBits2Float(0x41c58d4c), SkBits2Float(0x42525c2c), SkBits2Float(0x41c5ba5a), SkBits2Float(0x42523024), SkBits2Float(0x41c5fbe4), SkBits2Float(0x425224e0));  // 24.694f, 52.59f, 24.716f, 52.547f, 24.748f, 52.536f
6537 path.lineTo(SkBits2Float(0x41c6126b), SkBits2Float(0x4252199c));  // 24.759f, 52.525f
6538 path.cubicTo(SkBits2Float(0x41c6978a), SkBits2Float(0x42520f5f), SkBits2Float(0x41c774b9), SkBits2Float(0x42523023), SkBits2Float(0x41c79fbb), SkBits2Float(0x42525c2b));  // 24.824f, 52.515f, 24.932f, 52.547f, 24.953f, 52.59f
6539 path.cubicTo(SkBits2Float(0x41c7f9d8), SkBits2Float(0x4252a9fe), SkBits2Float(0x41c79fbb), SkBits2Float(0x4258e250), SkBits2Float(0x41c78b40), SkBits2Float(0x4259199c));  // 24.997f, 52.666f, 24.953f, 54.221f, 24.943f, 54.275f
6540 path.lineTo(SkBits2Float(0x41c78b40), SkBits2Float(0x42592f1d));  // 24.943f, 54.296f
6541 path.cubicTo(SkBits2Float(0x41c747aa), SkBits2Float(0x42595c2b), SkBits2Float(0x41c68103), SkBits2Float(0x42596669), SkBits2Float(0x41c5fbe4), SkBits2Float(0x42596669));  // 24.91f, 54.34f, 24.813f, 54.35f, 24.748f, 54.35f
6542 path.cubicTo(SkBits2Float(0x41c5353c), SkBits2Float(0x425971ad), SkBits2Float(0x41c41684), SkBits2Float(0x425971ad), SkBits2Float(0x41c3e975), SkBits2Float(0x42592f1d));  // 24.651f, 54.361f, 24.511f, 54.361f, 24.489f, 54.296f
6543 path.cubicTo(SkBits2Float(0x41c3a7ec), SkBits2Float(0x4258cbc9), SkBits2Float(0x41c42afe), SkBits2Float(0x4257d919), SkBits2Float(0x41c44185), SkBits2Float(0x42578002));  // 24.457f, 54.199f, 24.521f, 53.962f, 24.532f, 53.875f
6544 path.cubicTo(SkBits2Float(0x41c46e93), SkBits2Float(0x42563f7f), SkBits2Float(0x41c4c6a4), SkBits2Float(0x42550a3f), SkBits2Float(0x41c5353b), SkBits2Float(0x4253df3d));  // 24.554f, 53.562f, 24.597f, 53.26f, 24.651f, 52.968f
6545 path.cubicTo(SkBits2Float(0x41c54bc2), SkBits2Float(0x42537be9), SkBits2Float(0x41c56249), SkBits2Float(0x42530d51), SkBits2Float(0x41c58d4b), SkBits2Float(0x4252cac2));  // 24.662f, 52.871f, 24.673f, 52.763f, 24.694f, 52.698f
6546 path.cubicTo(SkBits2Float(0x41c58d4b), SkBits2Float(0x4252a9fd), SkBits2Float(0x41c56249), SkBits2Float(0x42528833), SkBits2Float(0x41c58d4b), SkBits2Float(0x425271ab));  // 24.694f, 52.666f, 24.673f, 52.633f, 24.694f, 52.611f
6547 path.moveTo(SkBits2Float(0x41c36662), SkBits2Float(0x42534fe0));  // 24.425f, 52.828f
6548 path.cubicTo(SkBits2Float(0x41c33954), SkBits2Float(0x4253c9bb), SkBits2Float(0x41c34dcf), SkBits2Float(0x42541688), SkBits2Float(0x41c322cc), SkBits2Float(0x42549063));  // 24.403f, 52.947f, 24.413f, 53.022f, 24.392f, 53.141f
6549 path.cubicTo(SkBits2Float(0x41c2f5be), SkBits2Float(0x4254fefb), SkBits2Float(0x41c2b434), SkBits2Float(0x42558e57), SkBits2Float(0x41c29dad), SkBits2Float(0x42560832));  // 24.37f, 53.249f, 24.338f, 53.389f, 24.327f, 53.508f
6550 path.cubicTo(SkBits2Float(0x41c2709f), SkBits2Float(0x4256e561), SkBits2Float(0x41c2459d), SkBits2Float(0x4257ad0f), SkBits2Float(0x41c1ed8c), SkBits2Float(0x42586874));  // 24.305f, 53.724f, 24.284f, 53.919f, 24.241f, 54.102f
6551 path.cubicTo(SkBits2Float(0x41c1d705), SkBits2Float(0x4258cbc8), SkBits2Float(0x41c20207), SkBits2Float(0x42590e57), SkBits2Float(0x41c1c07e), SkBits2Float(0x425950e7));  // 24.23f, 54.199f, 24.251f, 54.264f, 24.219f, 54.329f
6552 path.cubicTo(SkBits2Float(0x41c1c07e), SkBits2Float(0x42596668), SkBits2Float(0x41c1686e), SkBits2Float(0x42599270), SkBits2Float(0x41c13b5f), SkBits2Float(0x42599270));  // 24.219f, 54.35f, 24.176f, 54.393f, 24.154f, 54.393f
6553 path.cubicTo(SkBits2Float(0x41c0ccc7), SkBits2Float(0x4259a8f7), SkBits2Float(0x41c074b7), SkBits2Float(0x42599270), SkBits2Float(0x41c00620), SkBits2Float(0x425971ab));  // 24.1f, 54.415f, 24.057f, 54.393f, 24.003f, 54.361f
6554 path.cubicTo(SkBits2Float(0x41c00620), SkBits2Float(0x425825e4), SkBits2Float(0x41c08b3f), SkBits2Float(0x4256da1e), SkBits2Float(0x41c0f9d6), SkBits2Float(0x42558e57));  // 24.003f, 54.037f, 24.068f, 53.713f, 24.122f, 53.389f
6555 path.cubicTo(SkBits2Float(0x41c151e6), SkBits2Float(0x425479dc), SkBits2Float(0x41c151e6), SkBits2Float(0x42534fe0), SkBits2Float(0x41c1ed8c), SkBits2Float(0x425245a3));  // 24.165f, 53.119f, 24.165f, 52.828f, 24.241f, 52.568f
6556 path.cubicTo(SkBits2Float(0x41c22f15), SkBits2Float(0x42520f5d), SkBits2Float(0x41c22f15), SkBits2Float(0x4251d70b), SkBits2Float(0x41c25c24), SkBits2Float(0x4251ccce));  // 24.273f, 52.515f, 24.273f, 52.46f, 24.295f, 52.45f
6557 path.cubicTo(SkBits2Float(0x41c2e143), SkBits2Float(0x4251b647), SkBits2Float(0x41c34dce), SkBits2Float(0x4251e24f), SkBits2Float(0x41c3a7eb), SkBits2Float(0x4251e24f));  // 24.36f, 52.428f, 24.413f, 52.471f, 24.457f, 52.471f
6558 path.cubicTo(SkBits2Float(0x41c3be72), SkBits2Float(0x42525c2a), SkBits2Float(0x41c37add), SkBits2Float(0x4252e149), SkBits2Float(0x41c36662), SkBits2Float(0x42534fe0));  // 24.468f, 52.59f, 24.435f, 52.72f, 24.425f, 52.828f
6559 path.moveTo(SkBits2Float(0x41b3105e), SkBits2Float(0x426e020d));  // 22.383f, 59.502f
6560 path.cubicTo(SkBits2Float(0x41b2ced5), SkBits2Float(0x426dcac1), SkBits2Float(0x41b28b3f), SkBits2Float(0x426d9375), SkBits2Float(0x41b21ca8), SkBits2Float(0x426d676d));  // 22.351f, 59.448f, 22.318f, 59.394f, 22.264f, 59.351f
6561 path.lineTo(SkBits2Float(0x41b1f1a6), SkBits2Float(0x426d676d));  // 22.243f, 59.351f
6562 path.lineTo(SkBits2Float(0x41b1f1a6), SkBits2Float(0x426d50e6));  // 22.243f, 59.329f
6563 path.cubicTo(SkBits2Float(0x41b1f1a6), SkBits2Float(0x426d2f1b), SkBits2Float(0x41b1830e), SkBits2Float(0x426d199a), SkBits2Float(0x41b15600), SkBits2Float(0x426d0f5d));  // 22.243f, 59.296f, 22.189f, 59.275f, 22.167f, 59.265f
6564 path.cubicTo(SkBits2Float(0x41b0e768), SkBits2Float(0x426cccce), SkBits2Float(0x41af1683), SkBits2Float(0x426bd917), SkBits2Float(0x41aefffc), SkBits2Float(0x426b8107));  // 22.113f, 59.2f, 21.886f, 58.962f, 21.875f, 58.876f
6565 path.cubicTo(SkBits2Float(0x41aeeb81), SkBits2Float(0x426b3334), SkBits2Float(0x41af5a19), SkBits2Float(0x426acfe0), SkBits2Float(0x41af70a0), SkBits2Float(0x426a8d51));  // 21.865f, 58.8f, 21.919f, 58.703f, 21.93f, 58.638f
6566 path.cubicTo(SkBits2Float(0x41b04dcf), SkBits2Float(0x42693647), SkBits2Float(0x41b1db1f), SkBits2Float(0x4268645b), SkBits2Float(0x41b43123), SkBits2Float(0x4267c9bc));  // 22.038f, 58.303f, 22.232f, 58.098f, 22.524f, 57.947f
6567 path.cubicTo(SkBits2Float(0x41b472ac), SkBits2Float(0x4267a7f1), SkBits2Float(0x41b4f7cb), SkBits2Float(0x426770a5), SkBits2Float(0x41b56662), SkBits2Float(0x42676668));  // 22.556f, 57.914f, 22.621f, 57.86f, 22.675f, 57.85f
6568 path.cubicTo(SkBits2Float(0x41b5a7eb), SkBits2Float(0x42675b24), SkBits2Float(0x41b5d4fa), SkBits2Float(0x42676668), SkBits2Float(0x41b62d0a), SkBits2Float(0x42675b24));  // 22.707f, 57.839f, 22.729f, 57.85f, 22.772f, 57.839f
6569 path.cubicTo(SkBits2Float(0x41b69ba2), SkBits2Float(0x42674fe0), SkBits2Float(0x41b78f58), SkBits2Float(0x42671895), SkBits2Float(0x41b828f1), SkBits2Float(0x42671895));  // 22.826f, 57.828f, 22.945f, 57.774f, 23.02f, 57.774f
6570 path.cubicTo(SkBits2Float(0x41b8ae10), SkBits2Float(0x42671895), SkBits2Float(0x41b8c497), SkBits2Float(0x42672f1c), SkBits2Float(0x41b91ca7), SkBits2Float(0x4267449d));  // 23.085f, 57.774f, 23.096f, 57.796f, 23.139f, 57.817f
6571 path.lineTo(SkBits2Float(0x41b91ca7), SkBits2Float(0x42675b24));  // 23.139f, 57.839f
6572 path.cubicTo(SkBits2Float(0x41b91ca7), SkBits2Float(0x42674fe0), SkBits2Float(0x41b9332e), SkBits2Float(0x426770a5), SkBits2Float(0x41b9332e), SkBits2Float(0x4267872c));  // 23.139f, 57.828f, 23.15f, 57.86f, 23.15f, 57.882f
6573 path.cubicTo(SkBits2Float(0x41b91ca7), SkBits2Float(0x4267df3c), SkBits2Float(0x41b90620), SkBits2Float(0x42685918), SkBits2Float(0x41b8db1e), SkBits2Float(0x4268bc6b));  // 23.139f, 57.968f, 23.128f, 58.087f, 23.107f, 58.184f
6574 path.cubicTo(SkBits2Float(0x41b855ff), SkBits2Float(0x426a29fc), SkBits2Float(0x41b7d0e1), SkBits2Float(0x426bc290), SkBits2Float(0x41b76249), SkBits2Float(0x426d2f1b));  // 23.042f, 58.541f, 22.977f, 58.94f, 22.923f, 59.296f
6575 path.cubicTo(SkBits2Float(0x41b720c0), SkBits2Float(0x426e0d50), SkBits2Float(0x41b720c0), SkBits2Float(0x426ed3f8), SkBits2Float(0x41b69ba1), SkBits2Float(0x426f79dc));  // 22.891f, 59.513f, 22.891f, 59.707f, 22.826f, 59.869f
6576 path.cubicTo(SkBits2Float(0x41b64391), SkBits2Float(0x426f645b), SkBits2Float(0x41b62d09), SkBits2Float(0x426f79dc), SkBits2Float(0x41b5eb80), SkBits2Float(0x426f645b));  // 22.783f, 59.848f, 22.772f, 59.869f, 22.74f, 59.848f
6577 path.cubicTo(SkBits2Float(0x41b5a7ea), SkBits2Float(0x426f5917), SkBits2Float(0x41b57adc), SkBits2Float(0x426f374d), SkBits2Float(0x41b53953), SkBits2Float(0x426f1688));  // 22.707f, 59.837f, 22.685f, 59.804f, 22.653f, 59.772f
6578 path.lineTo(SkBits2Float(0x41b53953), SkBits2Float(0x426f0107));  // 22.653f, 59.751f
6579 path.cubicTo(SkBits2Float(0x41b472ab), SkBits2Float(0x426ea7f0), SkBits2Float(0x41b3ac03), SkBits2Float(0x426e5a1e), SkBits2Float(0x41b3105d), SkBits2Float(0x426e020d));  // 22.556f, 59.664f, 22.459f, 59.588f, 22.383f, 59.502f
6580     testSimplify(reporter, path, filename);
6581 }
6582 
joel_5(skiatest::Reporter * reporter,const char * filename)6583 static void joel_5(skiatest::Reporter* reporter, const char* filename) {
6584     SkPath path;
6585     path.setFillType((SkPathFillType) 0);
6586 path.moveTo(SkBits2Float(0x43c5145a), SkBits2Float(0x43dc82f2));  // 394.159f, 441.023f
6587 path.lineTo(SkBits2Float(0x43c5145a), SkBits2Float(0x43dc82f2));  // 394.159f, 441.023f
6588 path.close();
6589 path.moveTo(SkBits2Float(0x43af4e56), SkBits2Float(0x43dbc604));  // 350.612f, 439.547f
6590 path.lineTo(SkBits2Float(0x43af4e56), SkBits2Float(0x43dbc604));  // 350.612f, 439.547f
6591 path.close();
6592 path.moveTo(SkBits2Float(0x43af4e56), SkBits2Float(0x43dbc604));  // 350.612f, 439.547f
6593 path.cubicTo(SkBits2Float(0x43b64a5e), SkBits2Float(0x43dc9604), SkBits2Float(0x43be0958), SkBits2Float(0x43dbb604), SkBits2Float(0x43c5145a), SkBits2Float(0x43dc8312));  // 364.581f, 441.172f, 380.073f, 439.422f, 394.159f, 441.024f
6594 path.cubicTo(SkBits2Float(0x43be0958), SkBits2Float(0x43dbb604), SkBits2Float(0x43b64a5e), SkBits2Float(0x43dc9604), SkBits2Float(0x43af4e56), SkBits2Float(0x43dbc604));  // 380.073f, 439.422f, 364.581f, 441.172f, 350.612f, 439.547f
6595 path.close();
6596 path.moveTo(SkBits2Float(0x43a9126f), SkBits2Float(0x43e11604));  // 338.144f, 450.172f
6597 path.lineTo(SkBits2Float(0x43a9126f), SkBits2Float(0x43e11604));  // 338.144f, 450.172f
6598 path.close();
6599 path.moveTo(SkBits2Float(0x43a9126f), SkBits2Float(0x43e11604));  // 338.144f, 450.172f
6600 path.cubicTo(SkBits2Float(0x43ab3c6b), SkBits2Float(0x43debc08), SkBits2Float(0x43ad1b65), SkBits2Float(0x43de18f6), SkBits2Float(0x43af4e77), SkBits2Float(0x43dbc604));  // 342.472f, 445.469f, 346.214f, 444.195f, 350.613f, 439.547f
6601 path.cubicTo(SkBits2Float(0x43ad1b65), SkBits2Float(0x43de18f6), SkBits2Float(0x43ab3c6b), SkBits2Float(0x43debc08), SkBits2Float(0x43a9126f), SkBits2Float(0x43e11604));  // 346.214f, 444.195f, 342.472f, 445.469f, 338.144f, 450.172f
6602 path.close();
6603 path.moveTo(SkBits2Float(0x43aa9d50), SkBits2Float(0x43e173f8));  // 341.229f, 450.906f
6604 path.lineTo(SkBits2Float(0x43aa9d50), SkBits2Float(0x43e173f8));  // 341.229f, 450.906f
6605 path.close();
6606 path.moveTo(SkBits2Float(0x43aa9d50), SkBits2Float(0x43e173f8));  // 341.229f, 450.906f
6607 path.cubicTo(SkBits2Float(0x43aa0852), SkBits2Float(0x43e183f8), SkBits2Float(0x43a9be56), SkBits2Float(0x43e0d2f2), SkBits2Float(0x43a9124e), SkBits2Float(0x43e11604));  // 340.065f, 451.031f, 339.487f, 449.648f, 338.143f, 450.172f
6608 path.cubicTo(SkBits2Float(0x43a9be56), SkBits2Float(0x43e0d2f2), SkBits2Float(0x43aa0852), SkBits2Float(0x43e183f8), SkBits2Float(0x43aa9d50), SkBits2Float(0x43e173f8));  // 339.487f, 449.648f, 340.065f, 451.031f, 341.229f, 450.906f
6609 path.close();
6610 path.moveTo(SkBits2Float(0x43b13667), SkBits2Float(0x43dce106));  // 354.425f, 441.758f
6611 path.lineTo(SkBits2Float(0x43b13667), SkBits2Float(0x43dce106));  // 354.425f, 441.758f
6612 path.close();
6613 path.moveTo(SkBits2Float(0x43b13667), SkBits2Float(0x43dce106));  // 354.425f, 441.758f
6614 path.cubicTo(SkBits2Float(0x43aead71), SkBits2Float(0x43dd9d0e), SkBits2Float(0x43acd375), SkBits2Float(0x43dff20c), SkBits2Float(0x43aa9d71), SkBits2Float(0x43e173f8));  // 349.355f, 443.227f, 345.652f, 447.891f, 341.23f, 450.906f
6615 path.cubicTo(SkBits2Float(0x43acd354), SkBits2Float(0x43dff20c), SkBits2Float(0x43aead50), SkBits2Float(0x43dd9d0f), SkBits2Float(0x43b13667), SkBits2Float(0x43dce106));  // 345.651f, 447.891f, 349.354f, 443.227f, 354.425f, 441.758f
6616 path.close();
6617 path.moveTo(SkBits2Float(0x43ac8561), SkBits2Float(0x43e30106));  // 345.042f, 454.008f
6618 path.lineTo(SkBits2Float(0x43ac8561), SkBits2Float(0x43e30106));  // 345.042f, 454.008f
6619 path.close();
6620 path.moveTo(SkBits2Float(0x43ac8561), SkBits2Float(0x43e30106));  // 345.042f, 454.008f
6621 path.cubicTo(SkBits2Float(0x43adc76d), SkBits2Float(0x43e0f4fe), SkBits2Float(0x43b21a5f), SkBits2Float(0x43df7efa), SkBits2Float(0x43b13667), SkBits2Float(0x43dce106));  // 347.558f, 449.914f, 356.206f, 446.992f, 354.425f, 441.758f
6622 path.cubicTo(SkBits2Float(0x43b21a5f), SkBits2Float(0x43df7efa), SkBits2Float(0x43adc76d), SkBits2Float(0x43e0f4fe), SkBits2Float(0x43ac8561), SkBits2Float(0x43e30106));  // 356.206f, 446.992f, 347.558f, 449.914f, 345.042f, 454.008f
6623 path.close();
6624 path.moveTo(SkBits2Float(0x43b33169), SkBits2Float(0x43dc82f2));  // 358.386f, 441.023f
6625 path.lineTo(SkBits2Float(0x43b33169), SkBits2Float(0x43dc82f2));  // 358.386f, 441.023f
6626 path.close();
6627 path.moveTo(SkBits2Float(0x43b33169), SkBits2Float(0x43dc82f2));  // 358.386f, 441.023f
6628 path.cubicTo(SkBits2Float(0x43b16169), SkBits2Float(0x43ded7f0), SkBits2Float(0x43aef375), SkBits2Float(0x43e13be8), SkBits2Float(0x43ac8561), SkBits2Float(0x43e300e6));  // 354.761f, 445.687f, 349.902f, 450.468f, 345.042f, 454.007f
6629 path.cubicTo(SkBits2Float(0x43aef355), SkBits2Float(0x43e13c09), SkBits2Float(0x43b16169), SkBits2Float(0x43ded811), SkBits2Float(0x43b33169), SkBits2Float(0x43dc82f2));  // 349.901f, 450.469f, 354.761f, 445.688f, 358.386f, 441.023f
6630 path.close();
6631 path.moveTo(SkBits2Float(0x43b4bb65), SkBits2Float(0x43dd4000));  // 361.464f, 442.5f
6632 path.lineTo(SkBits2Float(0x43b4bb65), SkBits2Float(0x43dd4000));  // 361.464f, 442.5f
6633 path.close();
6634 path.moveTo(SkBits2Float(0x43b4bb65), SkBits2Float(0x43dd4000));  // 361.464f, 442.5f
6635 path.cubicTo(SkBits2Float(0x43b44959), SkBits2Float(0x43dcddf4), SkBits2Float(0x43b3e76d), SkBits2Float(0x43dc48f6), SkBits2Float(0x43b33169), SkBits2Float(0x43dc82f2));  // 360.573f, 441.734f, 359.808f, 440.57f, 358.386f, 441.023f
6636 path.cubicTo(SkBits2Float(0x43b3e76d), SkBits2Float(0x43dc48f6), SkBits2Float(0x43b44959), SkBits2Float(0x43dcddf4), SkBits2Float(0x43b4bb65), SkBits2Float(0x43dd4000));  // 359.808f, 440.57f, 360.573f, 441.734f, 361.464f, 442.5f
6637 path.close();
6638 path.moveTo(SkBits2Float(0x43ae7f5d), SkBits2Float(0x43e5a70a));  // 348.995f, 459.305f
6639 path.lineTo(SkBits2Float(0x43ae7f5d), SkBits2Float(0x43e5a70a));  // 348.995f, 459.305f
6640 path.close();
6641 path.moveTo(SkBits2Float(0x43ae7f5d), SkBits2Float(0x43e5a70a));  // 348.995f, 459.305f
6642 path.cubicTo(SkBits2Float(0x43af945b), SkBits2Float(0x43e21d0e), SkBits2Float(0x43b3a74d), SkBits2Float(0x43e0ce14), SkBits2Float(0x43b4bb65), SkBits2Float(0x43dd4000));  // 351.159f, 452.227f, 359.307f, 449.61f, 361.464f, 442.5f
6643 path.cubicTo(SkBits2Float(0x43b3a76d), SkBits2Float(0x43e0cdf4), SkBits2Float(0x43af945b), SkBits2Float(0x43e21d0e), SkBits2Float(0x43ae7f5d), SkBits2Float(0x43e5a70a));  // 359.308f, 449.609f, 351.159f, 452.227f, 348.995f, 459.305f
6644 path.close();
6645 path.moveTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43dce106));  // 363.081f, 441.758f
6646 path.lineTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43dce106));  // 363.081f, 441.758f
6647 path.close();
6648 path.moveTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43dce106));  // 363.081f, 441.758f
6649 path.cubicTo(SkBits2Float(0x43b2c063), SkBits2Float(0x43dfa604), SkBits2Float(0x43b1d561), SkBits2Float(0x43e374fe), SkBits2Float(0x43ae7f5d), SkBits2Float(0x43e5a70a));  // 357.503f, 447.297f, 355.667f, 454.914f, 348.995f, 459.305f
6650 path.cubicTo(SkBits2Float(0x43b1d561), SkBits2Float(0x43e374fe), SkBits2Float(0x43b2c063), SkBits2Float(0x43dfa604), SkBits2Float(0x43b58a5f), SkBits2Float(0x43dce106));  // 355.667f, 454.914f, 357.503f, 447.297f, 363.081f, 441.758f
6651 path.close();
6652 path.moveTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43dd4000));  // 365.417f, 442.5f
6653 path.lineTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43dd4000));  // 365.417f, 442.5f
6654 path.close();
6655 path.moveTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43dd4000));  // 365.417f, 442.5f
6656 path.lineTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43dce106));  // 363.081f, 441.758f
6657 path.lineTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43dd4000));  // 365.417f, 442.5f
6658 path.close();
6659 path.moveTo(SkBits2Float(0x43b07a5f), SkBits2Float(0x43e7220c));  // 352.956f, 462.266f
6660 path.lineTo(SkBits2Float(0x43b07a5f), SkBits2Float(0x43e7220c));  // 352.956f, 462.266f
6661 path.close();
6662 path.moveTo(SkBits2Float(0x43b07a5f), SkBits2Float(0x43e7220c));  // 352.956f, 462.266f
6663 path.cubicTo(SkBits2Float(0x43b29f5d), SkBits2Float(0x43e3e810), SkBits2Float(0x43b59667), SkBits2Float(0x43e0f916), SkBits2Float(0x43b6b561), SkBits2Float(0x43dd4000));  // 357.245f, 455.813f, 363.175f, 449.946f, 365.417f, 442.5f
6664 path.cubicTo(SkBits2Float(0x43b59667), SkBits2Float(0x43e0f8f6), SkBits2Float(0x43b29f5d), SkBits2Float(0x43e3e7f0), SkBits2Float(0x43b07a5f), SkBits2Float(0x43e7220c));  // 363.175f, 449.945f, 357.245f, 455.812f, 352.956f, 462.266f
6665 path.close();
6666 path.moveTo(SkBits2Float(0x43b0d853), SkBits2Float(0x43e84efa));  // 353.69f, 464.617f
6667 path.lineTo(SkBits2Float(0x43b0d853), SkBits2Float(0x43e84efa));  // 353.69f, 464.617f
6668 path.close();
6669 path.moveTo(SkBits2Float(0x43b0d853), SkBits2Float(0x43e84efa));  // 353.69f, 464.617f
6670 path.cubicTo(SkBits2Float(0x43b03a5f), SkBits2Float(0x43e934fe), SkBits2Float(0x43b1345b), SkBits2Float(0x43e7870a), SkBits2Float(0x43b07a5f), SkBits2Float(0x43e721ec));  // 352.456f, 466.414f, 354.409f, 463.055f, 352.956f, 462.265f
6671 path.cubicTo(SkBits2Float(0x43b1345b), SkBits2Float(0x43e7870b), SkBits2Float(0x43b03a5f), SkBits2Float(0x43e934fe), SkBits2Float(0x43b0d853), SkBits2Float(0x43e84efa));  // 354.409f, 463.055f, 352.456f, 466.414f, 353.69f, 464.617f
6672 path.close();
6673 path.moveTo(SkBits2Float(0x43b84063), SkBits2Float(0x43ddb106));  // 368.503f, 443.383f
6674 path.lineTo(SkBits2Float(0x43b84063), SkBits2Float(0x43ddb106));  // 368.503f, 443.383f
6675 path.close();
6676 path.moveTo(SkBits2Float(0x43b84063), SkBits2Float(0x43ddb106));  // 368.503f, 443.383f
6677 path.cubicTo(SkBits2Float(0x43b42667), SkBits2Float(0x43e039fc), SkBits2Float(0x43b39d71), SkBits2Float(0x43e4e000), SkBits2Float(0x43b0d873), SkBits2Float(0x43e84efa));  // 360.3f, 448.453f, 359.23f, 457.75f, 353.691f, 464.617f
6678 path.cubicTo(SkBits2Float(0x43b39d50), SkBits2Float(0x43e4e000), SkBits2Float(0x43b42667), SkBits2Float(0x43e039fc), SkBits2Float(0x43b84063), SkBits2Float(0x43ddb106));  // 359.229f, 457.75f, 360.3f, 448.453f, 368.503f, 443.383f
6679 path.close();
6680 path.moveTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43de0efa));  // 369.229f, 444.117f
6681 path.lineTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43de0efa));  // 369.229f, 444.117f
6682 path.close();
6683 path.moveTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43de0efa));  // 369.229f, 444.117f
6684 path.lineTo(SkBits2Float(0x43b84043), SkBits2Float(0x43ddb106));  // 368.502f, 443.383f
6685 path.lineTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43de0efa));  // 369.229f, 444.117f
6686 path.close();
6687 path.moveTo(SkBits2Float(0x43b26270), SkBits2Float(0x43e90c08));  // 356.769f, 466.094f
6688 path.lineTo(SkBits2Float(0x43b26270), SkBits2Float(0x43e90c08));  // 356.769f, 466.094f
6689 path.close();
6690 path.moveTo(SkBits2Float(0x43b26270), SkBits2Float(0x43e90c08));  // 356.769f, 466.094f
6691 path.cubicTo(SkBits2Float(0x43b48d72), SkBits2Float(0x43e569fc), SkBits2Float(0x43b7897a), SkBits2Float(0x43e21d0e), SkBits2Float(0x43b89d72), SkBits2Float(0x43de0efa));  // 361.105f, 458.828f, 367.074f, 452.227f, 369.23f, 444.117f
6692 path.cubicTo(SkBits2Float(0x43b78959), SkBits2Float(0x43e21d0e), SkBits2Float(0x43b48d51), SkBits2Float(0x43e569fc), SkBits2Float(0x43b26270), SkBits2Float(0x43e90c08));  // 367.073f, 452.227f, 361.104f, 458.828f, 356.769f, 466.094f
6693 path.close();
6694 path.moveTo(SkBits2Float(0x43b3316a), SkBits2Float(0x43e90c08));  // 358.386f, 466.094f
6695 path.lineTo(SkBits2Float(0x43b3316a), SkBits2Float(0x43e90c08));  // 358.386f, 466.094f
6696 path.close();
6697 path.moveTo(SkBits2Float(0x43b3316a), SkBits2Float(0x43e90c08));  // 358.386f, 466.094f
6698 path.lineTo(SkBits2Float(0x43b26270), SkBits2Float(0x43e90c08));  // 356.769f, 466.094f
6699 path.lineTo(SkBits2Float(0x43b3316a), SkBits2Float(0x43e90c08));  // 358.386f, 466.094f
6700 path.close();
6701 path.moveTo(SkBits2Float(0x43ba2853), SkBits2Float(0x43ddb106));  // 372.315f, 443.383f
6702 path.lineTo(SkBits2Float(0x43ba2853), SkBits2Float(0x43ddb106));  // 372.315f, 443.383f
6703 path.close();
6704 path.moveTo(SkBits2Float(0x43ba2853), SkBits2Float(0x43ddb106));  // 372.315f, 443.383f
6705 path.cubicTo(SkBits2Float(0x43b7d74d), SkBits2Float(0x43e17604), SkBits2Float(0x43b5824f), SkBits2Float(0x43e59604), SkBits2Float(0x43b33149), SkBits2Float(0x43e90c08));  // 367.682f, 450.922f, 363.018f, 459.172f, 358.385f, 466.094f
6706 path.cubicTo(SkBits2Float(0x43b58270), SkBits2Float(0x43e59604), SkBits2Float(0x43b7d76e), SkBits2Float(0x43e17604), SkBits2Float(0x43ba2853), SkBits2Float(0x43ddb106));  // 363.019f, 459.172f, 367.683f, 450.922f, 372.315f, 443.383f
6707 path.close();
6708 path.moveTo(SkBits2Float(0x43bb5355), SkBits2Float(0x43de0efa));  // 374.651f, 444.117f
6709 path.lineTo(SkBits2Float(0x43bb5355), SkBits2Float(0x43de0efa));  // 374.651f, 444.117f
6710 path.close();
6711 path.moveTo(SkBits2Float(0x43bb5355), SkBits2Float(0x43de0efa));  // 374.651f, 444.117f
6712 path.cubicTo(SkBits2Float(0x43bb1853), SkBits2Float(0x43dd92f2), SkBits2Float(0x43ba9e57), SkBits2Float(0x43ddab02), SkBits2Float(0x43ba2853), SkBits2Float(0x43ddb106));  // 374.19f, 443.148f, 373.237f, 443.336f, 372.315f, 443.383f
6713 path.cubicTo(SkBits2Float(0x43ba9e57), SkBits2Float(0x43ddab02), SkBits2Float(0x43bb1853), SkBits2Float(0x43dd92f2), SkBits2Float(0x43bb5355), SkBits2Float(0x43de0efa));  // 373.237f, 443.336f, 374.19f, 443.148f, 374.651f, 444.117f
6714 path.close();
6715 path.moveTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43e90c08));  // 363.081f, 466.094f
6716 path.lineTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43e90c08));  // 363.081f, 466.094f
6717 path.close();
6718 path.moveTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43e90c08));  // 363.081f, 466.094f
6719 path.cubicTo(SkBits2Float(0x43b76c6b), SkBits2Float(0x43e55d0e), SkBits2Float(0x43ba4a5f), SkBits2Float(0x43e21312), SkBits2Float(0x43bb5355), SkBits2Float(0x43de0efa));  // 366.847f, 458.727f, 372.581f, 452.149f, 374.651f, 444.117f
6720 path.cubicTo(SkBits2Float(0x43ba4a5f), SkBits2Float(0x43e212f2), SkBits2Float(0x43b76c6c), SkBits2Float(0x43e55d0e), SkBits2Float(0x43b58a5f), SkBits2Float(0x43e90c08));  // 372.581f, 452.148f, 366.847f, 458.727f, 363.081f, 466.094f
6721 path.close();
6722 path.moveTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43e90c08));  // 365.417f, 466.094f
6723 path.lineTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43e90c08));  // 365.417f, 466.094f
6724 path.close();
6725 path.moveTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43e90c08));  // 365.417f, 466.094f
6726 path.lineTo(SkBits2Float(0x43b58a5f), SkBits2Float(0x43e90c08));  // 363.081f, 466.094f
6727 path.lineTo(SkBits2Float(0x43b6b561), SkBits2Float(0x43e90c08));  // 365.417f, 466.094f
6728 path.close();
6729 path.moveTo(SkBits2Float(0x43bc8063), SkBits2Float(0x43e058f6));  // 377.003f, 448.695f
6730 path.lineTo(SkBits2Float(0x43bc8063), SkBits2Float(0x43e058f6));  // 377.003f, 448.695f
6731 path.close();
6732 path.moveTo(SkBits2Float(0x43bc8063), SkBits2Float(0x43e058f6));  // 377.003f, 448.695f
6733 path.cubicTo(SkBits2Float(0x43b9de57), SkBits2Float(0x43e29df4), SkBits2Float(0x43b84355), SkBits2Float(0x43e5fefa), SkBits2Float(0x43b6b561), SkBits2Float(0x43e90be8));  // 371.737f, 453.234f, 368.526f, 459.992f, 365.417f, 466.093f
6734 path.cubicTo(SkBits2Float(0x43b84355), SkBits2Float(0x43e5fefa), SkBits2Float(0x43b9de57), SkBits2Float(0x43e29df4), SkBits2Float(0x43bc8063), SkBits2Float(0x43e058f6));  // 368.526f, 459.992f, 371.737f, 453.234f, 377.003f, 448.695f
6735 path.close();
6736 path.moveTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43e969fc));  // 369.229f, 466.828f
6737 path.lineTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43e969fc));  // 369.229f, 466.828f
6738 path.close();
6739 path.moveTo(SkBits2Float(0x43b89d51), SkBits2Float(0x43e969fc));  // 369.229f, 466.828f
6740 path.cubicTo(SkBits2Float(0x43b98149), SkBits2Float(0x43e637f0), SkBits2Float(0x43bd3355), SkBits2Float(0x43e3adf4), SkBits2Float(0x43bc8043), SkBits2Float(0x43e058f6));  // 371.01f, 460.437f, 378.401f, 455.359f, 377.002f, 448.695f
6741 path.cubicTo(SkBits2Float(0x43bd3355), SkBits2Float(0x43e3adf4), SkBits2Float(0x43b9816a), SkBits2Float(0x43e638f6), SkBits2Float(0x43b89d51), SkBits2Float(0x43e969fc));  // 378.401f, 455.359f, 371.011f, 460.445f, 369.229f, 466.828f
6742 path.close();
6743 path.moveTo(SkBits2Float(0x43ba8668), SkBits2Float(0x43e9c7f0));  // 373.05f, 467.562f
6744 path.lineTo(SkBits2Float(0x43ba8668), SkBits2Float(0x43e9c7f0));  // 373.05f, 467.562f
6745 path.close();
6746 path.moveTo(SkBits2Float(0x43ba8668), SkBits2Float(0x43e9c7f0));  // 373.05f, 467.562f
6747 path.cubicTo(SkBits2Float(0x43ba1376), SkBits2Float(0x43e90000), SkBits2Float(0x43b94270), SkBits2Float(0x43e8f1ec), SkBits2Float(0x43b89d72), SkBits2Float(0x43e969fc));  // 372.152f, 466, 370.519f, 465.89f, 369.23f, 466.828f
6748 path.cubicTo(SkBits2Float(0x43b94270), SkBits2Float(0x43e8f20c), SkBits2Float(0x43ba1355), SkBits2Float(0x43e90000), SkBits2Float(0x43ba8668), SkBits2Float(0x43e9c7f0));  // 370.519f, 465.891f, 372.151f, 466, 373.05f, 467.562f
6749 path.close();
6750 path.moveTo(SkBits2Float(0x43c0c064), SkBits2Float(0x43dc82f2));  // 385.503f, 441.023f
6751 path.lineTo(SkBits2Float(0x43c0c064), SkBits2Float(0x43dc82f2));  // 385.503f, 441.023f
6752 path.close();
6753 path.moveTo(SkBits2Float(0x43c0c064), SkBits2Float(0x43dc82f2));  // 385.503f, 441.023f
6754 path.cubicTo(SkBits2Float(0x43be095a), SkBits2Float(0x43e0acee), SkBits2Float(0x43bd8a60), SkBits2Float(0x43e5c0e6), SkBits2Float(0x43ba8668), SkBits2Float(0x43e9c7f0));  // 380.073f, 449.351f, 379.081f, 459.507f, 373.05f, 467.562f
6755 path.cubicTo(SkBits2Float(0x43bd8a60), SkBits2Float(0x43e5c107), SkBits2Float(0x43be095a), SkBits2Float(0x43e0ad0f), SkBits2Float(0x43c0c064), SkBits2Float(0x43dc82f2));  // 379.081f, 459.508f, 380.073f, 449.352f, 385.503f, 441.023f
6756 path.close();
6757 path.moveTo(SkBits2Float(0x43c00562), SkBits2Float(0x43e23000));  // 384.042f, 452.375f
6758 path.lineTo(SkBits2Float(0x43c00562), SkBits2Float(0x43e23000));  // 384.042f, 452.375f
6759 path.close();
6760 path.moveTo(SkBits2Float(0x43c00562), SkBits2Float(0x43e23000));  // 384.042f, 452.375f
6761 path.cubicTo(SkBits2Float(0x43bfaf5e), SkBits2Float(0x43e013f8), SkBits2Float(0x43c40668), SkBits2Float(0x43ddc2f2), SkBits2Float(0x43c0c064), SkBits2Float(0x43dc82f2));  // 383.37f, 448.156f, 392.05f, 443.523f, 385.503f, 441.023f
6762 path.cubicTo(SkBits2Float(0x43c40668), SkBits2Float(0x43ddc2f2), SkBits2Float(0x43bfaf5e), SkBits2Float(0x43e013f8), SkBits2Float(0x43c00562), SkBits2Float(0x43e23000));  // 392.05f, 443.523f, 383.37f, 448.156f, 384.042f, 452.375f
6763 path.close();
6764 path.moveTo(SkBits2Float(0x43bed854), SkBits2Float(0x43e5370a));  // 381.69f, 458.43f
6765 path.lineTo(SkBits2Float(0x43bed854), SkBits2Float(0x43e5370a));  // 381.69f, 458.43f
6766 path.close();
6767 path.moveTo(SkBits2Float(0x43bed854), SkBits2Float(0x43e5370a));  // 381.69f, 458.43f
6768 path.cubicTo(SkBits2Float(0x43c06562), SkBits2Float(0x43e4b4fe), SkBits2Float(0x43bf095a), SkBits2Float(0x43e2fd0e), SkBits2Float(0x43c00562), SkBits2Float(0x43e23000));  // 384.792f, 457.414f, 382.073f, 453.977f, 384.042f, 452.375f
6769 path.cubicTo(SkBits2Float(0x43bf095a), SkBits2Float(0x43e2fdf4), SkBits2Float(0x43c06562), SkBits2Float(0x43e4b4fe), SkBits2Float(0x43bed854), SkBits2Float(0x43e5370a));  // 382.073f, 453.984f, 384.792f, 457.414f, 381.69f, 458.43f
6770 path.close();
6771 path.moveTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43e5a70a));  // 382.425f, 459.305f
6772 path.lineTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43e5a70a));  // 382.425f, 459.305f
6773 path.close();
6774 path.moveTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43e5a70a));  // 382.425f, 459.305f
6775 path.lineTo(SkBits2Float(0x43bed874), SkBits2Float(0x43e5370a));  // 381.691f, 458.43f
6776 path.lineTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43e5a70a));  // 382.425f, 459.305f
6777 path.close();
6778 path.moveTo(SkBits2Float(0x43bcde58), SkBits2Float(0x43e9c7ef));  // 377.737f, 467.562f
6779 path.lineTo(SkBits2Float(0x43bcde58), SkBits2Float(0x43e9c7ef));  // 377.737f, 467.562f
6780 path.close();
6781 path.moveTo(SkBits2Float(0x43bcde58), SkBits2Float(0x43e9c7ef));  // 377.737f, 467.562f
6782 path.cubicTo(SkBits2Float(0x43bdfb66), SkBits2Float(0x43e888f5), SkBits2Float(0x43bd6854), SkBits2Float(0x43e69ced), SkBits2Float(0x43bf3668), SkBits2Float(0x43e5a6e9));  // 379.964f, 465.07f, 378.815f, 461.226f, 382.425f, 459.304f
6783 path.cubicTo(SkBits2Float(0x43bd6854), SkBits2Float(0x43e69d0e), SkBits2Float(0x43bdfb66), SkBits2Float(0x43e888f5), SkBits2Float(0x43bcde58), SkBits2Float(0x43e9c7ef));  // 378.815f, 461.227f, 379.964f, 465.07f, 377.737f, 467.562f
6784 path.close();
6785 path.moveTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43ea9810));  // 382.425f, 469.188f
6786 path.lineTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43ea9810));  // 382.425f, 469.188f
6787 path.close();
6788 path.moveTo(SkBits2Float(0x43bf3668), SkBits2Float(0x43ea9810));  // 382.425f, 469.188f
6789 path.cubicTo(SkBits2Float(0x43bebf5e), SkBits2Float(0x43e99e14), SkBits2Float(0x43bdc562), SkBits2Float(0x43e9d70a), SkBits2Float(0x43bcde58), SkBits2Float(0x43e9c810));  // 381.495f, 467.235f, 379.542f, 467.68f, 377.737f, 467.563f
6790 path.cubicTo(SkBits2Float(0x43bdc562), SkBits2Float(0x43e9d70a), SkBits2Float(0x43bebf5e), SkBits2Float(0x43e99df3), SkBits2Float(0x43bf3668), SkBits2Float(0x43ea9810));  // 379.542f, 467.68f, 381.495f, 467.234f, 382.425f, 469.188f
6791 path.close();
6792 path.moveTo(SkBits2Float(0x43c0c064), SkBits2Float(0x43e78000));  // 385.503f, 463
6793 path.lineTo(SkBits2Float(0x43c0c064), SkBits2Float(0x43e78000));  // 385.503f, 463
6794 path.close();
6795 path.moveTo(SkBits2Float(0x43c0c064), SkBits2Float(0x43e78000));  // 385.503f, 463
6796 path.cubicTo(SkBits2Float(0x43bfaf5e), SkBits2Float(0x43e7f9fc), SkBits2Float(0x43bfbe58), SkBits2Float(0x43e98b02), SkBits2Float(0x43bf3668), SkBits2Float(0x43ea9810));  // 383.37f, 463.953f, 383.487f, 467.086f, 382.425f, 469.188f
6797 path.cubicTo(SkBits2Float(0x43bfbe58), SkBits2Float(0x43e98b02), SkBits2Float(0x43bfaf5e), SkBits2Float(0x43e7f9fc), SkBits2Float(0x43c0c064), SkBits2Float(0x43e78000));  // 383.487f, 467.086f, 383.37f, 463.953f, 385.503f, 463
6798 path.close();
6799 path.moveTo(SkBits2Float(0x43c1316a), SkBits2Float(0x43e35efa));  // 386.386f, 454.742f
6800 path.lineTo(SkBits2Float(0x43c1316a), SkBits2Float(0x43e35efa));  // 386.386f, 454.742f
6801 path.close();
6802 path.moveTo(SkBits2Float(0x43c1316a), SkBits2Float(0x43e35efa));  // 386.386f, 454.742f
6803 path.cubicTo(SkBits2Float(0x43c35270), SkBits2Float(0x43e586ea), SkBits2Float(0x43beb064), SkBits2Float(0x43e561ec), SkBits2Float(0x43c0c064), SkBits2Float(0x43e78000));  // 390.644f, 459.054f, 381.378f, 458.765f, 385.503f, 463
6804 path.cubicTo(SkBits2Float(0x43beb064), SkBits2Float(0x43e5620c), SkBits2Float(0x43c35270), SkBits2Float(0x43e5870a), SkBits2Float(0x43c1316a), SkBits2Float(0x43e35efa));  // 381.378f, 458.766f, 390.644f, 459.055f, 386.386f, 454.742f
6805 path.close();
6806 path.moveTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43df2b02));  // 391.808f, 446.336f
6807 path.lineTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43df2b02));  // 391.808f, 446.336f
6808 path.close();
6809 path.moveTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43df2b02));  // 391.808f, 446.336f
6810 path.cubicTo(SkBits2Float(0x43c2ba60), SkBits2Float(0x43e07810), SkBits2Float(0x43c32a60), SkBits2Float(0x43e31106), SkBits2Float(0x43c1316a), SkBits2Float(0x43e35efa));  // 389.456f, 448.938f, 390.331f, 454.133f, 386.386f, 454.742f
6811 path.cubicTo(SkBits2Float(0x43c32a60), SkBits2Float(0x43e31106), SkBits2Float(0x43c2ba60), SkBits2Float(0x43e07811), SkBits2Float(0x43c3e76e), SkBits2Float(0x43df2b02));  // 390.331f, 454.133f, 389.456f, 448.938f, 391.808f, 446.336f
6812 path.close();
6813 path.moveTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43dd4000));  // 391.808f, 442.5f
6814 path.lineTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43dd4000));  // 391.808f, 442.5f
6815 path.close();
6816 path.moveTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43dd4000));  // 391.808f, 442.5f
6817 path.cubicTo(SkBits2Float(0x43c2a668), SkBits2Float(0x43ddbefa), SkBits2Float(0x43c35f7e), SkBits2Float(0x43def4fe), SkBits2Float(0x43c3e76e), SkBits2Float(0x43df2b02));  // 389.3f, 443.492f, 390.746f, 445.914f, 391.808f, 446.336f
6818 path.cubicTo(SkBits2Float(0x43c35f5e), SkBits2Float(0x43def4fe), SkBits2Float(0x43c2a668), SkBits2Float(0x43ddbefa), SkBits2Float(0x43c3e76e), SkBits2Float(0x43dd4000));  // 390.745f, 445.914f, 389.3f, 443.492f, 391.808f, 442.5f
6819 path.close();
6820 path.moveTo(SkBits2Float(0x43c44562), SkBits2Float(0x43ddb106));  // 392.542f, 443.383f
6821 path.lineTo(SkBits2Float(0x43c44562), SkBits2Float(0x43ddb106));  // 392.542f, 443.383f
6822 path.close();
6823 path.moveTo(SkBits2Float(0x43c44562), SkBits2Float(0x43ddb106));  // 392.542f, 443.383f
6824 path.lineTo(SkBits2Float(0x43c3e76e), SkBits2Float(0x43dd4000));  // 391.808f, 442.5f
6825 path.lineTo(SkBits2Float(0x43c44562), SkBits2Float(0x43ddb106));  // 392.542f, 443.383f
6826 path.close();
6827 path.moveTo(SkBits2Float(0x43c5145c), SkBits2Float(0x43dc82f2));  // 394.159f, 441.023f
6828 path.lineTo(SkBits2Float(0x43c44562), SkBits2Float(0x43ddb0e6));  // 392.542f, 443.382f
6829 path.lineTo(SkBits2Float(0x43c5145c), SkBits2Float(0x43dc82f2));  // 394.159f, 441.023f
6830 path.close();
6831     testSimplify(reporter, path, filename);
6832 }
6833 
joel_6(skiatest::Reporter * reporter,const char * filename)6834 static void joel_6(skiatest::Reporter* reporter, const char* filename) {
6835     SkPath path;
6836 path.moveTo(SkBits2Float(0x43c38c6a), SkBits2Float(0x43a739fc));  // 391.097f, 334.453f
6837 path.lineTo(SkBits2Float(0x43c36168), SkBits2Float(0x43a74efa));  // 390.761f, 334.617f
6838 path.lineTo(SkBits2Float(0x43c33666), SkBits2Float(0x43a6f7f0));  // 390.425f, 333.937f
6839 path.lineTo(SkBits2Float(0x43c36168), SkBits2Float(0x43a6e1ec));  // 390.761f, 333.765f
6840 path.lineTo(SkBits2Float(0x43c38c6a), SkBits2Float(0x43a739fc));  // 391.097f, 334.453f
6841 path.close();
6842 path.moveTo(SkBits2Float(0x43c39062), SkBits2Float(0x43a73810));  // 391.128f, 334.438f
6843 path.lineTo(SkBits2Float(0x43c3676c), SkBits2Float(0x43a75106));  // 390.808f, 334.633f
6844 path.lineTo(SkBits2Float(0x43c33374), SkBits2Float(0x43a6fefa));  // 390.402f, 333.992f
6845 path.lineTo(SkBits2Float(0x43c35d70), SkBits2Float(0x43a6e3f8));  // 390.73f, 333.781f
6846 path.lineTo(SkBits2Float(0x43c39062), SkBits2Float(0x43a73811));  // 391.128f, 334.438f
6847 path.lineTo(SkBits2Float(0x43c39062), SkBits2Float(0x43a73810));  // 391.128f, 334.438f
6848 path.close();
6849 path.moveTo(SkBits2Float(0x43e38958), SkBits2Float(0x43971c08));  // 455.073f, 302.219f
6850 path.lineTo(SkBits2Float(0x43e3824e), SkBits2Float(0x43973000));  // 455.018f, 302.375f
6851 path.lineTo(SkBits2Float(0x43e36f5c), SkBits2Float(0x439739fc));  // 454.87f, 302.453f
6852 path.lineTo(SkBits2Float(0x43e35a5e), SkBits2Float(0x43970df4));  // 454.706f, 302.109f
6853 path.lineTo(SkBits2Float(0x43e38958), SkBits2Float(0x43971c08));  // 455.073f, 302.219f
6854 path.close();
6855 path.moveTo(SkBits2Float(0x43e36f5c), SkBits2Float(0x439739fc));  // 454.87f, 302.453f
6856 path.lineTo(SkBits2Float(0x43c38c6a), SkBits2Float(0x43a739fc));  // 391.097f, 334.453f
6857 path.lineTo(SkBits2Float(0x43c36168), SkBits2Float(0x43a6e1ec));  // 390.761f, 333.765f
6858 path.lineTo(SkBits2Float(0x43e3445a), SkBits2Float(0x4396e1ec));  // 454.534f, 301.765f
6859 path.lineTo(SkBits2Float(0x43e36f5c), SkBits2Float(0x439739fc));  // 454.87f, 302.453f
6860 path.close();
6861 path.moveTo(SkBits2Float(0x43e41f5c), SkBits2Float(0x43946efa));  // 456.245f, 296.867f
6862 path.lineTo(SkBits2Float(0x43e4545a), SkBits2Float(0x439479fc));  // 456.659f, 296.953f
6863 path.lineTo(SkBits2Float(0x43e44354), SkBits2Float(0x4394acee));  // 456.526f, 297.351f
6864 path.lineTo(SkBits2Float(0x43e41646), SkBits2Float(0x43949efa));  // 456.174f, 297.242f
6865 path.lineTo(SkBits2Float(0x43e41f5d), SkBits2Float(0x43946efa));  // 456.245f, 296.867f
6866 path.lineTo(SkBits2Float(0x43e41f5c), SkBits2Float(0x43946efa));  // 456.245f, 296.867f
6867 path.close();
6868 path.moveTo(SkBits2Float(0x43e44354), SkBits2Float(0x4394ad0e));  // 456.526f, 297.352f
6869 path.lineTo(SkBits2Float(0x43e38958), SkBits2Float(0x43971c08));  // 455.073f, 302.219f
6870 path.lineTo(SkBits2Float(0x43e32b64), SkBits2Float(0x43970000));  // 454.339f, 302
6871 path.lineTo(SkBits2Float(0x43e3e76c), SkBits2Float(0x43949106));  // 455.808f, 297.133f
6872 path.lineTo(SkBits2Float(0x43e44353), SkBits2Float(0x4394ad0e));  // 456.526f, 297.352f
6873 path.lineTo(SkBits2Float(0x43e44354), SkBits2Float(0x4394ad0e));  // 456.526f, 297.352f
6874 path.close();
6875 path.moveTo(SkBits2Float(0x43e17d50), SkBits2Float(0x4393f20c));  // 450.979f, 295.891f
6876 path.lineTo(SkBits2Float(0x43e18e56), SkBits2Float(0x4393e810));  // 451.112f, 295.813f
6877 path.lineTo(SkBits2Float(0x43e1a148), SkBits2Float(0x4393eb02));  // 451.26f, 295.836f
6878 path.lineTo(SkBits2Float(0x43e19852), SkBits2Float(0x43941b02));  // 451.19f, 296.211f
6879 path.lineTo(SkBits2Float(0x43e17d50), SkBits2Float(0x4393f20c));  // 450.979f, 295.891f
6880 path.close();
6881 path.moveTo(SkBits2Float(0x43e1a169), SkBits2Float(0x4393eb02));  // 451.261f, 295.836f
6882 path.lineTo(SkBits2Float(0x43e41f5d), SkBits2Float(0x43946efa));  // 456.245f, 296.867f
6883 path.lineTo(SkBits2Float(0x43e40b65), SkBits2Float(0x4394cefa));  // 456.089f, 297.617f
6884 path.lineTo(SkBits2Float(0x43e18d71), SkBits2Float(0x43944b02));  // 451.105f, 296.586f
6885 path.lineTo(SkBits2Float(0x43e1a169), SkBits2Float(0x4393eb02));  // 451.261f, 295.836f
6886 path.close();
6887 path.moveTo(SkBits2Float(0x43c35d50), SkBits2Float(0x43a6e3f8));  // 390.729f, 333.781f
6888 path.lineTo(SkBits2Float(0x43e17d50), SkBits2Float(0x4393f1ec));  // 450.979f, 295.89f
6889 path.lineTo(SkBits2Float(0x43e1b148), SkBits2Float(0x439443f8));  // 451.385f, 296.531f
6890 path.lineTo(SkBits2Float(0x43c39042), SkBits2Float(0x43a737f0));  // 391.127f, 334.437f
6891 path.lineTo(SkBits2Float(0x43c35d50), SkBits2Float(0x43a6e3f8));  // 390.729f, 333.781f
6892 path.close();
6893 testSimplify(reporter, path, filename);
6894 }
6895 
joel_7(skiatest::Reporter * reporter,const char * filename)6896 static void joel_7(skiatest::Reporter* reporter, const char* filename) {
6897     SkPath path;
6898 path.moveTo(SkBits2Float(0x4321220c), SkBits2Float(0x43eac70a));  // 161.133f, 469.555f
6899 path.lineTo(SkBits2Float(0x4321220c), SkBits2Float(0x43eac70a));  // 161.133f, 469.555f
6900 path.lineTo(SkBits2Float(0x431f8e14), SkBits2Float(0x43eb3b02));  // 159.555f, 470.461f
6901 path.lineTo(SkBits2Float(0x4321220c), SkBits2Float(0x43eac70a));  // 161.133f, 469.555f
6902 path.close();
6903 path.moveTo(SkBits2Float(0x431e33f8), SkBits2Float(0x43f03b02));  // 158.203f, 480.461f
6904 path.lineTo(SkBits2Float(0x431e33f8), SkBits2Float(0x43f03b02));  // 158.203f, 480.461f
6905 path.lineTo(SkBits2Float(0x431e33f8), SkBits2Float(0x43f03b02));  // 158.203f, 480.461f
6906 path.lineTo(SkBits2Float(0x431d4c08), SkBits2Float(0x43ef720c));  // 157.297f, 478.891f
6907 path.lineTo(SkBits2Float(0x431e33f8), SkBits2Float(0x43f03b02));  // 158.203f, 480.461f
6908 path.close();
6909 path.moveTo(SkBits2Float(0x431c6419), SkBits2Float(0x43eea7f0));  // 156.391f, 477.312f
6910 path.cubicTo(SkBits2Float(0x431d6e15), SkBits2Float(0x43ee5ae2), SkBits2Float(0x431e2000), SkBits2Float(0x43ede000), SkBits2Float(0x431e69fc), SkBits2Float(0x43ed55e4));  // 157.43f, 476.71f, 158.125f, 475.75f, 158.414f, 474.671f
6911 path.cubicTo(SkBits2Float(0x431eb3f8), SkBits2Float(0x43eccbc8), SkBits2Float(0x431e93f8), SkBits2Float(0x43ec35e4), SkBits2Float(0x431df9db), SkBits2Float(0x43ebafe0));  // 158.703f, 473.592f, 158.578f, 472.421f, 157.976f, 471.374f
6912 path.lineTo(SkBits2Float(0x432121cb), SkBits2Float(0x43eac6ea));  // 161.132f, 469.554f
6913 path.cubicTo(SkBits2Float(0x432355c3), SkBits2Float(0x43ecb0e6), SkBits2Float(0x432207ae), SkBits2Float(0x43ef1fe0), SkBits2Float(0x431e33b7), SkBits2Float(0x43f03ae2));  // 163.335f, 473.382f, 162.03f, 478.249f, 158.202f, 480.46f
6914 path.lineTo(SkBits2Float(0x431c6419), SkBits2Float(0x43eea7f0));  // 156.391f, 477.312f
6915 path.close();
6916 path.moveTo(SkBits2Float(0x43134c08), SkBits2Float(0x43eec4fe));  // 147.297f, 477.539f
6917 path.lineTo(SkBits2Float(0x43134c08), SkBits2Float(0x43eec4fe));  // 147.297f, 477.539f
6918 path.lineTo(SkBits2Float(0x43134c08), SkBits2Float(0x43eec4fe));  // 147.297f, 477.539f
6919 path.lineTo(SkBits2Float(0x4314e20c), SkBits2Float(0x43ee5106));  // 148.883f, 476.633f
6920 path.lineTo(SkBits2Float(0x43134c08), SkBits2Float(0x43eec4fe));  // 147.297f, 477.539f
6921 path.close();
6922 path.moveTo(SkBits2Float(0x431673f8), SkBits2Float(0x43eddc08));  // 150.453f, 475.719f
6923 path.cubicTo(SkBits2Float(0x43170e15), SkBits2Float(0x43ee620c), SkBits2Float(0x43180000), SkBits2Float(0x43eebb02), SkBits2Float(0x43191604), SkBits2Float(0x43eee000));  // 151.055f, 476.766f, 152, 477.461f, 153.086f, 477.75f
6924 path.cubicTo(SkBits2Float(0x431a2c08), SkBits2Float(0x43ef04fe), SkBits2Float(0x431b5810), SkBits2Float(0x43eef4fe), SkBits2Float(0x431c6418), SkBits2Float(0x43eea7f0));  // 154.172f, 478.039f, 155.344f, 477.914f, 156.391f, 477.312f
6925 path.lineTo(SkBits2Float(0x431e33f7), SkBits2Float(0x43f03ae2));  // 158.203f, 480.46f
6926 path.cubicTo(SkBits2Float(0x431a620b), SkBits2Float(0x43f154de), SkBits2Float(0x4315820c), SkBits2Float(0x43f0add4), SkBits2Float(0x43134c07), SkBits2Float(0x43eec4de));  // 154.383f, 482.663f, 149.508f, 481.358f, 147.297f, 477.538f
6927 path.lineTo(SkBits2Float(0x431673f8), SkBits2Float(0x43eddc08));  // 150.453f, 475.719f
6928 path.close();
6929 path.moveTo(SkBits2Float(0x43163a1d), SkBits2Float(0x43e95106));  // 150.227f, 466.633f
6930 path.lineTo(SkBits2Float(0x43163a1d), SkBits2Float(0x43e95106));  // 150.227f, 466.633f
6931 path.lineTo(SkBits2Float(0x4317220d), SkBits2Float(0x43ea19fc));  // 151.133f, 468.203f
6932 path.lineTo(SkBits2Float(0x43163a1d), SkBits2Float(0x43e95106));  // 150.227f, 466.633f
6933 path.close();
6934 path.moveTo(SkBits2Float(0x43180c08), SkBits2Float(0x43eae3f8));  // 152.047f, 469.781f
6935 path.cubicTo(SkBits2Float(0x43170000), SkBits2Float(0x43eb31ec), SkBits2Float(0x43164e14), SkBits2Float(0x43ebabe8), SkBits2Float(0x43160418), SkBits2Float(0x43ec3604));  // 151, 470.39f, 150.305f, 471.343f, 150.016f, 472.422f
6936 path.cubicTo(SkBits2Float(0x4315ba1c), SkBits2Float(0x43ecc106), SkBits2Float(0x4315d810), SkBits2Float(0x43ed570a), SkBits2Float(0x43167439), SkBits2Float(0x43eddc08));  // 149.727f, 473.508f, 149.844f, 474.68f, 150.454f, 475.719f
6937 path.lineTo(SkBits2Float(0x43134c49), SkBits2Float(0x43eec4fe));  // 147.298f, 477.539f
6938 path.cubicTo(SkBits2Float(0x43111851), SkBits2Float(0x43ecdb02), SkBits2Float(0x43126830), SkBits2Float(0x43ea6c08), SkBits2Float(0x43163a5d), SkBits2Float(0x43e95106));  // 145.095f, 473.711f, 146.407f, 468.844f, 150.228f, 466.633f
6939 path.lineTo(SkBits2Float(0x43180c08), SkBits2Float(0x43eae3f8));  // 152.047f, 469.781f
6940 path.close();
6941 path.moveTo(SkBits2Float(0x431dfa1d), SkBits2Float(0x43ebb000));  // 157.977f, 471.375f
6942 path.cubicTo(SkBits2Float(0x431d620d), SkBits2Float(0x43eb29fc), SkBits2Float(0x431c6e15), SkBits2Float(0x43ead20c), SkBits2Float(0x431b5811), SkBits2Float(0x43eaad0e));  // 157.383f, 470.328f, 156.43f, 469.641f, 155.344f, 469.352f
6943 path.cubicTo(SkBits2Float(0x431a420d), SkBits2Float(0x43ea8810), SkBits2Float(0x43191605), SkBits2Float(0x43ea970a), SkBits2Float(0x43180c09), SkBits2Float(0x43eae418));  // 154.258f, 469.063f, 153.086f, 469.18f, 152.047f, 469.782f
6944 path.lineTo(SkBits2Float(0x43163a1d), SkBits2Float(0x43e95126));  // 150.227f, 466.634f
6945 path.cubicTo(SkBits2Float(0x431a0c09), SkBits2Float(0x43e8372a), SkBits2Float(0x431eec08), SkBits2Float(0x43e8de34), SkBits2Float(0x4321220d), SkBits2Float(0x43eac72a));  // 154.047f, 464.431f, 158.922f, 465.736f, 161.133f, 469.556f
6946 path.lineTo(SkBits2Float(0x431dfa1d), SkBits2Float(0x43ebb000));  // 157.977f, 471.375f
6947 path.close();
6948 testSimplify(reporter, path, filename);
6949 }
6950 
joel_8(skiatest::Reporter * reporter,const char * filename)6951 static void joel_8(skiatest::Reporter* reporter, const char* filename) {
6952     SkPath path;
6953 path.moveTo(SkBits2Float(0x42d97520), SkBits2Float(0x410ac429)); // 108.729f, 8.67289f
6954 path.cubicTo(SkBits2Float(0x42d97520), SkBits2Float(0x410ac429), SkBits2Float(0x42e9a9ce), SkBits2Float(0x41834e87), SkBits2Float(0x42e99c8c), SkBits2Float(0x41c5c960)); // 108.729f, 8.67289f, 116.832f, 16.4133f, 116.806f, 24.7233f
6955 path.cubicTo(SkBits2Float(0x42e98f49), SkBits2Float(0x4204221c), SkBits2Float(0x42d97520), SkBits2Float(0x4223825f), SkBits2Float(0x42d97520), SkBits2Float(0x4223825f)); // 116.78f, 33.0333f, 108.729f, 40.8773f, 108.729f, 40.8773f
6956 path.cubicTo(SkBits2Float(0x42d97520), SkBits2Float(0x4223825f), SkBits2Float(0x42dbbc54), SkBits2Float(0x42099f18), SkBits2Float(0x42d1cb74), SkBits2Float(0x41f77dc0)); // 108.729f, 40.8773f, 109.868f, 34.4054f, 104.897f, 30.9364f
6957 path.cubicTo(SkBits2Float(0x42c7da94), SkBits2Float(0x41dbbd4f), SkBits2Float(0x42b1b1a1), SkBits2Float(0x41d802fb), SkBits2Float(0x42b1b1a1), SkBits2Float(0x41d802fb)); // 99.9269f, 27.4674f, 88.8469f, 27.0015f, 88.8469f, 27.0015f
6958 path.cubicTo(SkBits2Float(0x42a75637), SkBits2Float(0x41d6909f), SkBits2Float(0x4296c543), SkBits2Float(0x41f1b139), SkBits2Float(0x4296c543), SkBits2Float(0x41f1b139)); // 83.6684f, 26.8206f, 75.3853f, 30.2115f, 75.3853f, 30.2115f
6959 path.lineTo(SkBits2Float(0x42824475), SkBits2Float(0x41c69d70)); // 65.1337f, 24.8269f
6960 path.lineTo(SkBits2Float(0x4296c543), SkBits2Float(0x419b89a8)); // 75.3853f, 19.4422f
6961 path.cubicTo(SkBits2Float(0x4296c543), SkBits2Float(0x419b89a8), SkBits2Float(0x42a6b798), SkBits2Float(0x41b89815), SkBits2Float(0x42b1b1a1), SkBits2Float(0x41b95c48)); // 75.3853f, 19.4422f, 83.3586f, 23.0743f, 88.8469f, 23.1701f
6962 path.cubicTo(SkBits2Float(0x42b1b1a1), SkBits2Float(0x41b95c48), SkBits2Float(0x42c80258), SkBits2Float(0x41b03f7a), SkBits2Float(0x42d1cb74), SkBits2Float(0x419340ee)); // 88.8469f, 23.1701f, 100.005f, 22.031f, 104.897f, 18.4067f
6963 path.cubicTo(SkBits2Float(0x42db9490), SkBits2Float(0x416c84c2), SkBits2Float(0x42d97520), SkBits2Float(0x410ac42a), SkBits2Float(0x42d97520), SkBits2Float(0x410ac42a)); // 109.79f, 14.7824f, 108.729f, 8.67289f, 108.729f, 8.67289f
6964 path.lineTo(SkBits2Float(0x42d97520), SkBits2Float(0x410ac429)); // 108.729f, 8.67289f
6965 path.close();
6966 testSimplify(reporter, path, filename);
6967 }
6968 
joel_9(skiatest::Reporter * reporter,const char * filename)6969 static void joel_9(skiatest::Reporter* reporter, const char* filename) {
6970 #if DEBUG_UNDER_DEVELOPMENT
6971 // fails with image mismatch
6972     SkPath path;
6973 path.moveTo(SkBits2Float(0x4310dbe7), SkBits2Float(0x438e9604));  // 144.859f, 285.172f
6974 path.lineTo(SkBits2Float(0x4310dbe7), SkBits2Float(0x438e9604));  // 144.859f, 285.172f
6975 path.lineTo(SkBits2Float(0x4310dbe7), SkBits2Float(0x438e9604));  // 144.859f, 285.172f
6976 path.lineTo(SkBits2Float(0x430f21ca), SkBits2Float(0x438e4efa));  // 143.132f, 284.617f
6977 path.lineTo(SkBits2Float(0x4310dbe7), SkBits2Float(0x438e9604));  // 144.859f, 285.172f
6978 path.close();
6979 path.moveTo(SkBits2Float(0x4307ec08), SkBits2Float(0x438f6c08));  // 135.922f, 286.844f
6980 path.lineTo(SkBits2Float(0x4307ec08), SkBits2Float(0x438f6c08));  // 135.922f, 286.844f
6981 path.lineTo(SkBits2Float(0x4307ec08), SkBits2Float(0x438f6c08));  // 135.922f, 286.844f
6982 path.lineTo(SkBits2Float(0x43075df4), SkBits2Float(0x43904916));  // 135.367f, 288.571f
6983 path.lineTo(SkBits2Float(0x4307ec08), SkBits2Float(0x438f6c08));  // 135.922f, 286.844f
6984 path.close();
6985 path.moveTo(SkBits2Float(0x4307ec08), SkBits2Float(0x438f6c08));  // 135.922f, 286.844f
6986 path.cubicTo(SkBits2Float(0x430911eb), SkBits2Float(0x438f9c08), SkBits2Float(0x430a3df4), SkBits2Float(0x438f8b02), SkBits2Float(0x430b3df4), SkBits2Float(0x438f49fc));  // 137.07f, 287.219f, 138.242f, 287.086f, 139.242f, 286.578f
6987 path.cubicTo(SkBits2Float(0x430c3be8), SkBits2Float(0x438f09fc), SkBits2Float(0x430d07f0), SkBits2Float(0x438e99fc), SkBits2Float(0x430d67f0), SkBits2Float(0x438e070a));  // 140.234f, 286.078f, 141.031f, 285.203f, 141.406f, 284.055f
6988 path.lineTo(SkBits2Float(0x4310dbe8), SkBits2Float(0x438e9604));  // 144.859f, 285.172f
6989 path.cubicTo(SkBits2Float(0x430f7df4), SkBits2Float(0x4390b000), SkBits2Float(0x430afdf4), SkBits2Float(0x4391d3f8), SkBits2Float(0x4306cc09), SkBits2Float(0x43912604));  // 143.492f, 289.375f, 138.992f, 291.656f, 134.797f, 290.297f
6990 path.lineTo(SkBits2Float(0x4307ec08), SkBits2Float(0x438f6c08));  // 135.922f, 286.844f
6991 path.close();
6992 path.moveTo(SkBits2Float(0x4301ae14), SkBits2Float(0x438c1efa));  // 129.68f, 280.242f
6993 path.lineTo(SkBits2Float(0x4301ae14), SkBits2Float(0x438c1efa));  // 129.68f, 280.242f
6994 path.lineTo(SkBits2Float(0x4301ae14), SkBits2Float(0x438c1efa));  // 129.68f, 280.242f
6995 path.lineTo(SkBits2Float(0x43036831), SkBits2Float(0x438c66ea));  // 131.407f, 280.804f
6996 path.lineTo(SkBits2Float(0x4301ae14), SkBits2Float(0x438c1efa));  // 129.68f, 280.242f
6997 path.close();
6998 path.moveTo(SkBits2Float(0x4305220c), SkBits2Float(0x438caefa));  // 133.133f, 281.367f
6999 path.cubicTo(SkBits2Float(0x4304c20c), SkBits2Float(0x438d4106), SkBits2Float(0x4304e20c), SkBits2Float(0x438dd7f0), SkBits2Float(0x43056418), SkBits2Float(0x438e56ea));  // 132.758f, 282.508f, 132.883f, 283.687f, 133.391f, 284.679f
7000 path.cubicTo(SkBits2Float(0x4305e831), SkBits2Float(0x438ed6ea), SkBits2Float(0x4306c624), SkBits2Float(0x438f3be8), SkBits2Float(0x4307ec08), SkBits2Float(0x438f6be8));  // 133.907f, 285.679f, 134.774f, 286.468f, 135.922f, 286.843f
7001 path.lineTo(SkBits2Float(0x4306cc08), SkBits2Float(0x439125e4));  // 134.797f, 290.296f
7002 path.cubicTo(SkBits2Float(0x43029a1c), SkBits2Float(0x439076ea), SkBits2Float(0x43005021), SkBits2Float(0x438e37f0), SkBits2Float(0x4301ae14), SkBits2Float(0x438c1eda));  // 130.602f, 288.929f, 128.313f, 284.437f, 129.68f, 280.241f
7003 path.lineTo(SkBits2Float(0x4305220c), SkBits2Float(0x438caefa));  // 133.133f, 281.367f
7004 path.close();
7005 path.moveTo(SkBits2Float(0x430bbdf4), SkBits2Float(0x43898efa));  // 139.742f, 275.117f
7006 path.lineTo(SkBits2Float(0x430bbdf4), SkBits2Float(0x43898efa));  // 139.742f, 275.117f
7007 path.lineTo(SkBits2Float(0x430b2e15), SkBits2Float(0x438a6c08));  // 139.18f, 276.844f
7008 path.lineTo(SkBits2Float(0x430bbdf4), SkBits2Float(0x43898efa));  // 139.742f, 275.117f
7009 path.close();
7010 path.moveTo(SkBits2Float(0x430a9be7), SkBits2Float(0x438b48f6));  // 138.609f, 278.57f
7011 path.cubicTo(SkBits2Float(0x43097604), SkBits2Float(0x438b19fc), SkBits2Float(0x43084c08), SkBits2Float(0x438b29fc), SkBits2Float(0x43074c08), SkBits2Float(0x438b6b02));  // 137.461f, 278.203f, 136.297f, 278.328f, 135.297f, 278.836f
7012 path.cubicTo(SkBits2Float(0x43064c08), SkBits2Float(0x438bac08), SkBits2Float(0x4305820c), SkBits2Float(0x438c1c08), SkBits2Float(0x4305220c), SkBits2Float(0x438caefa));  // 134.297f, 279.344f, 133.508f, 280.219f, 133.133f, 281.367f
7013 path.lineTo(SkBits2Float(0x4301ae14), SkBits2Float(0x438c1efa));  // 129.68f, 280.242f
7014 path.cubicTo(SkBits2Float(0x43030c08), SkBits2Float(0x438a04fe), SkBits2Float(0x430789fb), SkBits2Float(0x4388e106), SkBits2Float(0x430bbdf3), SkBits2Float(0x43898efa));  // 131.047f, 276.039f, 135.539f, 273.758f, 139.742f, 275.117f
7015 path.lineTo(SkBits2Float(0x430a9be7), SkBits2Float(0x438b48f6));  // 138.609f, 278.57f
7016 path.close();
7017 path.moveTo(SkBits2Float(0x430d67f0), SkBits2Float(0x438e070a));  // 141.406f, 284.055f
7018 path.cubicTo(SkBits2Float(0x430dc5e4), SkBits2Float(0x438d7418), SkBits2Float(0x430da5e4), SkBits2Float(0x438cde14), SkBits2Float(0x430d25e4), SkBits2Float(0x438c5e14));  // 141.773f, 282.907f, 141.648f, 281.735f, 141.148f, 280.735f
7019 path.cubicTo(SkBits2Float(0x430ca001), SkBits2Float(0x438bde14), SkBits2Float(0x430bc1cb), SkBits2Float(0x438b7916), SkBits2Float(0x430a9be8), SkBits2Float(0x438b4916));  // 140.625f, 279.735f, 139.757f, 278.946f, 138.609f, 278.571f
7020 path.lineTo(SkBits2Float(0x430bbdf4), SkBits2Float(0x43898f1a));  // 139.742f, 275.118f
7021 path.cubicTo(SkBits2Float(0x430fefe0), SkBits2Float(0x438a3f1a), SkBits2Float(0x43123811), SkBits2Float(0x438c7d0e), SkBits2Float(0x4310dbe8), SkBits2Float(0x438e9624));  // 143.937f, 276.493f, 146.219f, 280.977f, 144.859f, 285.173f
7022 path.lineTo(SkBits2Float(0x430d67f0), SkBits2Float(0x438e070a));  // 141.406f, 284.055f
7023 path.close();
7024 testSimplify(reporter, path, filename);
7025 #endif
7026 }
7027 
joel_10(skiatest::Reporter * reporter,const char * filename)7028 static void joel_10(skiatest::Reporter* reporter, const char* filename) {
7029 #if DEBUG_UNDER_DEVELOPMENT
7030 // fails with image mismatch
7031     SkPath path;
7032 path.moveTo(SkBits2Float(0x440fc979), SkBits2Float(0x43d88000));  // 575.148f, 433
7033 path.lineTo(SkBits2Float(0x440fc979), SkBits2Float(0x43d88000));  // 575.148f, 433
7034 path.lineTo(SkBits2Float(0x440fc979), SkBits2Float(0x43d88000));  // 575.148f, 433
7035 path.lineTo(SkBits2Float(0x44103800), SkBits2Float(0x43d8c7f0));  // 576.875f, 433.562f
7036 path.lineTo(SkBits2Float(0x440fc979), SkBits2Float(0x43d88000));  // 575.148f, 433
7037 path.close();
7038 path.moveTo(SkBits2Float(0x44124d81), SkBits2Float(0x43d5f000));  // 585.211f, 427.875f
7039 path.lineTo(SkBits2Float(0x44124d81), SkBits2Float(0x43d5f000));  // 585.211f, 427.875f
7040 path.lineTo(SkBits2Float(0x44122906), SkBits2Float(0x43d6cdf4));  // 584.641f, 429.609f
7041 path.lineTo(SkBits2Float(0x44124d81), SkBits2Float(0x43d5f000));  // 585.211f, 427.875f
7042 path.close();
7043 path.moveTo(SkBits2Float(0x44120581), SkBits2Float(0x43d7ab02));  // 584.086f, 431.336f
7044 path.cubicTo(SkBits2Float(0x4411bc08), SkBits2Float(0x43d77b02), SkBits2Float(0x44117083), SkBits2Float(0x43d78b02), SkBits2Float(0x44113106), SkBits2Float(0x43d7cc08));  // 582.938f, 430.961f, 581.758f, 431.086f, 580.766f, 431.594f
7045 path.cubicTo(SkBits2Float(0x4410f189), SkBits2Float(0x43d80d0e), SkBits2Float(0x4410be87), SkBits2Float(0x43d87d0e), SkBits2Float(0x4410a687), SkBits2Float(0x43d91000));  // 579.774f, 432.102f, 578.977f, 432.977f, 578.602f, 434.125f
7046 path.lineTo(SkBits2Float(0x440fc979), SkBits2Float(0x43d88000));  // 575.148f, 433
7047 path.cubicTo(SkBits2Float(0x441020f6), SkBits2Float(0x43d66604), SkBits2Float(0x441140f6), SkBits2Float(0x43d5420c), SkBits2Float(0x44124d71), SkBits2Float(0x43d5f000));  // 576.515f, 428.797f, 581.015f, 426.516f, 585.21f, 427.875f
7048 path.lineTo(SkBits2Float(0x44120581), SkBits2Float(0x43d7ab02));  // 584.086f, 431.336f
7049 path.close();
7050 path.moveTo(SkBits2Float(0x441394fe), SkBits2Float(0x43daf810));  // 590.328f, 437.938f
7051 path.lineTo(SkBits2Float(0x441394fe), SkBits2Float(0x43daf810));  // 590.328f, 437.938f
7052 path.lineTo(SkBits2Float(0x441394fe), SkBits2Float(0x43daf810));  // 590.328f, 437.938f
7053 path.lineTo(SkBits2Float(0x44132677), SkBits2Float(0x43dab020));  // 588.601f, 437.376f
7054 path.lineTo(SkBits2Float(0x441394fe), SkBits2Float(0x43daf810));  // 590.328f, 437.938f
7055 path.close();
7056 path.moveTo(SkBits2Float(0x4412b800), SkBits2Float(0x43da67f0));  // 586.875f, 436.812f
7057 path.cubicTo(SkBits2Float(0x4412d000), SkBits2Float(0x43d9d4fe), SkBits2Float(0x4412c800), SkBits2Float(0x43d94000), SkBits2Float(0x4412a77d), SkBits2Float(0x43d8befa));  // 587.25f, 435.664f, 587.125f, 434.5f, 586.617f, 433.492f
7058 path.cubicTo(SkBits2Float(0x44128677), SkBits2Float(0x43d84000), SkBits2Float(0x44124efa), SkBits2Float(0x43d7d9fc), SkBits2Float(0x44120581), SkBits2Float(0x43d7ab02));  // 586.101f, 432.5f, 585.234f, 431.703f, 584.086f, 431.336f
7059 path.lineTo(SkBits2Float(0x44124d81), SkBits2Float(0x43d5f000));  // 585.211f, 427.875f
7060 path.cubicTo(SkBits2Float(0x441359fc), SkBits2Float(0x43d69efa), SkBits2Float(0x4413ec7b), SkBits2Float(0x43d8ddf4), SkBits2Float(0x441394fe), SkBits2Float(0x43daf7f0));  // 589.406f, 429.242f, 591.695f, 433.734f, 590.328f, 437.937f
7061 path.lineTo(SkBits2Float(0x4412b800), SkBits2Float(0x43da67f0));  // 586.875f, 436.812f
7062 path.close();
7063 path.moveTo(SkBits2Float(0x44111106), SkBits2Float(0x43dd870a));  // 580.266f, 443.055f
7064 path.lineTo(SkBits2Float(0x44111106), SkBits2Float(0x43dd870a));  // 580.266f, 443.055f
7065 path.lineTo(SkBits2Float(0x44111106), SkBits2Float(0x43dd870a));  // 580.266f, 443.055f
7066 path.lineTo(SkBits2Float(0x441134fe), SkBits2Float(0x43dca9fc));  // 580.828f, 441.328f
7067 path.lineTo(SkBits2Float(0x44111106), SkBits2Float(0x43dd870a));  // 580.266f, 443.055f
7068 path.close();
7069 path.moveTo(SkBits2Float(0x44115979), SkBits2Float(0x43dbcd0e));  // 581.398f, 439.602f
7070 path.cubicTo(SkBits2Float(0x4411a27f), SkBits2Float(0x43dbfc08), SkBits2Float(0x4411ed71), SkBits2Float(0x43dbed0e), SkBits2Float(0x44122d71), SkBits2Float(0x43dbac08));  // 582.539f, 439.969f, 583.71f, 439.852f, 584.71f, 439.344f
7071 path.cubicTo(SkBits2Float(0x44126cee), SkBits2Float(0x43db6b02), SkBits2Float(0x44129ff0), SkBits2Float(0x43dafb02), SkBits2Float(0x4412b7f0), SkBits2Float(0x43da6810));  // 585.702f, 438.836f, 586.499f, 437.961f, 586.874f, 436.813f
7072 path.lineTo(SkBits2Float(0x441394ee), SkBits2Float(0x43daf810));  // 590.327f, 437.938f
7073 path.cubicTo(SkBits2Float(0x44133cee), SkBits2Float(0x43dd1106), SkBits2Float(0x44121df4), SkBits2Float(0x43de3604), SkBits2Float(0x441110f6), SkBits2Float(0x43dd870a));  // 588.952f, 442.133f, 584.468f, 444.422f, 580.265f, 443.055f
7074 path.lineTo(SkBits2Float(0x44115979), SkBits2Float(0x43dbcd0e));  // 581.398f, 439.602f
7075 path.close();
7076 path.moveTo(SkBits2Float(0x4410a687), SkBits2Float(0x43d91000));  // 578.602f, 434.125f
7077 path.cubicTo(SkBits2Float(0x44108f0a), SkBits2Float(0x43d9a2f2), SkBits2Float(0x44109687), SkBits2Float(0x43da37f0), SkBits2Float(0x4410b70a), SkBits2Float(0x43dab8f6));  // 578.235f, 435.273f, 578.352f, 436.437f, 578.86f, 437.445f
7078 path.cubicTo(SkBits2Float(0x4410d78d), SkBits2Float(0x43db37f0), SkBits2Float(0x44111010), SkBits2Float(0x43db9cee), SkBits2Float(0x44115989), SkBits2Float(0x43dbccee));  // 579.368f, 438.437f, 580.251f, 439.226f, 581.399f, 439.601f
7079 path.lineTo(SkBits2Float(0x44111106), SkBits2Float(0x43dd86ea));  // 580.266f, 443.054f
7080 path.cubicTo(SkBits2Float(0x4410048b), SkBits2Float(0x43dcd7f0), SkBits2Float(0x440f720c), SkBits2Float(0x43da99dc), SkBits2Float(0x440fc989), SkBits2Float(0x43d87fe0));  // 576.071f, 441.687f, 573.782f, 437.202f, 575.149f, 432.999f
7081 path.lineTo(SkBits2Float(0x4410a687), SkBits2Float(0x43d91000));  // 578.602f, 434.125f
7082 path.close();
7083 testSimplify(reporter, path, filename);
7084 #endif
7085 }
7086 
joel_11(skiatest::Reporter * reporter,const char * filename)7087 static void joel_11(skiatest::Reporter* reporter, const char* filename) {
7088 #if DEBUG_UNDER_DEVELOPMENT
7089 // fails with image mismatch
7090     SkPath path;
7091 path.moveTo(SkBits2Float(0x43c9d000), SkBits2Float(0x4411977d));  // 403.625f, 582.367f
7092 path.lineTo(SkBits2Float(0x43c9d000), SkBits2Float(0x4411977d));  // 403.625f, 582.367f
7093 path.lineTo(SkBits2Float(0x43c9d000), SkBits2Float(0x4411977d));  // 403.625f, 582.367f
7094 path.lineTo(SkBits2Float(0x43ca0106), SkBits2Float(0x441208f6));  // 404.008f, 584.14f
7095 path.lineTo(SkBits2Float(0x43c9d000), SkBits2Float(0x4411977d));  // 403.625f, 582.367f
7096 path.close();
7097 path.moveTo(SkBits2Float(0x43ce8d0e), SkBits2Float(0x44132106));  // 413.102f, 588.516f
7098 path.lineTo(SkBits2Float(0x43ce8d0e), SkBits2Float(0x44132106));  // 413.102f, 588.516f
7099 path.lineTo(SkBits2Float(0x43ce8d0e), SkBits2Float(0x44132106));  // 413.102f, 588.516f
7100 path.lineTo(SkBits2Float(0x43cda916), SkBits2Float(0x44133989));  // 411.321f, 588.899f
7101 path.lineTo(SkBits2Float(0x43ce8d0e), SkBits2Float(0x44132106));  // 413.102f, 588.516f
7102 path.close();
7103 path.moveTo(SkBits2Float(0x43ccc4fe), SkBits2Float(0x44135179));  // 409.539f, 589.273f
7104 path.cubicTo(SkBits2Float(0x43cca604), SkBits2Float(0x44130571), SkBits2Float(0x43cc4c08), SkBits2Float(0x4412c8f6), SkBits2Float(0x43cbd4fe), SkBits2Float(0x4412a179));  // 409.297f, 588.085f, 408.594f, 587.14f, 407.664f, 586.523f
7105 path.cubicTo(SkBits2Float(0x43cb5c08), SkBits2Float(0x44127a7f), SkBits2Float(0x43cac7f0), SkBits2Float(0x44126af2), SkBits2Float(0x43ca3106), SkBits2Float(0x44127af2));  // 406.719f, 585.914f, 405.562f, 585.671f, 404.383f, 585.921f
7106 path.lineTo(SkBits2Float(0x43c9d000), SkBits2Float(0x4411976d));  // 403.625f, 582.366f
7107 path.cubicTo(SkBits2Float(0x43cbf9fc), SkBits2Float(0x44115cee), SkBits2Float(0x43ce170a), SkBits2Float(0x44120cee), SkBits2Float(0x43ce8d0e), SkBits2Float(0x441320e6));  // 407.953f, 581.452f, 412.18f, 584.202f, 413.102f, 588.514f
7108 path.lineTo(SkBits2Float(0x43ccc4fe), SkBits2Float(0x44135179));  // 409.539f, 589.273f
7109 path.close();
7110 path.moveTo(SkBits2Float(0x43cb78f6), SkBits2Float(0x44157efa));  // 406.945f, 597.984f
7111 path.lineTo(SkBits2Float(0x43cb78f6), SkBits2Float(0x44157f7d));  // 406.945f, 597.992f
7112 path.lineTo(SkBits2Float(0x43cb78f6), SkBits2Float(0x44157efa));  // 406.945f, 597.984f
7113 path.lineTo(SkBits2Float(0x43cb49fc), SkBits2Float(0x44150d81));  // 406.578f, 596.211f
7114 path.lineTo(SkBits2Float(0x43cb78f6), SkBits2Float(0x44157efa));  // 406.945f, 597.984f
7115 path.close();
7116 path.moveTo(SkBits2Float(0x43cb18f6), SkBits2Float(0x44149b85));  // 406.195f, 594.43f
7117 path.cubicTo(SkBits2Float(0x43cbb000), SkBits2Float(0x44148b85), SkBits2Float(0x43cc28f6), SkBits2Float(0x44145f0a), SkBits2Float(0x43cc76ea), SkBits2Float(0x44142302));  // 407.375f, 594.18f, 408.32f, 593.485f, 408.929f, 592.547f
7118 path.cubicTo(SkBits2Float(0x43ccc4de), SkBits2Float(0x4413e687), SkBits2Float(0x43cce4de), SkBits2Float(0x44139cfe), SkBits2Float(0x43ccc4de), SkBits2Float(0x44135189));  // 409.538f, 591.602f, 409.788f, 590.453f, 409.538f, 589.274f
7119 path.lineTo(SkBits2Float(0x43ce8cce), SkBits2Float(0x44132106));  // 413.1f, 588.516f
7120 path.cubicTo(SkBits2Float(0x43cf00c6), SkBits2Float(0x44143581), SkBits2Float(0x43cda2d2), SkBits2Float(0x44154408), SkBits2Float(0x43cb78d6), SkBits2Float(0x44157f0a));  // 414.006f, 592.836f, 411.272f, 597.063f, 406.944f, 597.985f
7121 path.lineTo(SkBits2Float(0x43cb18f6), SkBits2Float(0x44149b85));  // 406.195f, 594.43f
7122 path.close();
7123 path.moveTo(SkBits2Float(0x43c883f8), SkBits2Float(0x4413c4fe));  // 401.031f, 591.078f
7124 path.lineTo(SkBits2Float(0x43c883f8), SkBits2Float(0x4413c4fe));  // 401.031f, 591.078f
7125 path.lineTo(SkBits2Float(0x43c883f8), SkBits2Float(0x4413c4fe));  // 401.031f, 591.078f
7126 path.lineTo(SkBits2Float(0x43c7a106), SkBits2Float(0x4413dd81));  // 399.258f, 591.461f
7127 path.lineTo(SkBits2Float(0x43c883f8), SkBits2Float(0x4413c4fe));  // 401.031f, 591.078f
7128 path.close();
7129 path.moveTo(SkBits2Float(0x43c883f8), SkBits2Float(0x4413c4fe));  // 401.031f, 591.078f
7130 path.cubicTo(SkBits2Float(0x43c8a4fe), SkBits2Float(0x44141083), SkBits2Float(0x43c8fdf4), SkBits2Float(0x44144d81), SkBits2Float(0x43c974fe), SkBits2Float(0x4414747b));  // 401.289f, 592.258f, 401.984f, 593.211f, 402.914f, 593.82f
7131 path.cubicTo(SkBits2Float(0x43c9edf4), SkBits2Float(0x44149b75), SkBits2Float(0x43ca820c), SkBits2Float(0x4414ab75), SkBits2Float(0x43cb18f6), SkBits2Float(0x44149b75));  // 403.859f, 594.429f, 405.016f, 594.679f, 406.195f, 594.429f
7132 path.lineTo(SkBits2Float(0x43cb78f6), SkBits2Float(0x44157efa));  // 406.945f, 597.984f
7133 path.cubicTo(SkBits2Float(0x43c95000), SkBits2Float(0x4415b979), SkBits2Float(0x43c732f2), SkBits2Float(0x441509fc), SkBits2Float(0x43c6bcee), SkBits2Float(0x4413f581));  // 402.625f, 598.898f, 398.398f, 596.156f, 397.476f, 591.836f
7134 path.lineTo(SkBits2Float(0x43c883f8), SkBits2Float(0x4413c4fe));  // 401.031f, 591.078f
7135 path.close();
7136 path.moveTo(SkBits2Float(0x43ca3106), SkBits2Float(0x44127b02));  // 404.383f, 585.922f
7137 path.cubicTo(SkBits2Float(0x43c999fc), SkBits2Float(0x44128b02), SkBits2Float(0x43c92000), SkBits2Float(0x4412b77d), SkBits2Float(0x43c8d20c), SkBits2Float(0x4412f408));  // 403.203f, 586.172f, 402.25f, 586.867f, 401.641f, 587.813f
7138 path.cubicTo(SkBits2Float(0x43c88418), SkBits2Float(0x44133010), SkBits2Float(0x43c86418), SkBits2Float(0x44137989), SkBits2Float(0x43c88418), SkBits2Float(0x4413c50e));  // 401.032f, 588.751f, 400.782f, 589.899f, 401.032f, 591.079f
7139 path.lineTo(SkBits2Float(0x43c6bd0e), SkBits2Float(0x4413f591));  // 397.477f, 591.837f
7140 path.cubicTo(SkBits2Float(0x43c64810), SkBits2Float(0x4412e116), SkBits2Float(0x43c7a70a), SkBits2Float(0x4411d28f), SkBits2Float(0x43c9d000), SkBits2Float(0x4411978d));  // 396.563f, 587.517f, 399.305f, 583.29f, 403.625f, 582.368f
7141 path.lineTo(SkBits2Float(0x43ca3106), SkBits2Float(0x44127b02));  // 404.383f, 585.922f
7142 path.close();
7143 testSimplify(reporter, path, filename);
7144 #endif
7145 }
7146 
make_joel_12(SkPath & path)7147 static void make_joel_12(SkPath& path) {
7148 path.moveTo(SkBits2Float(0x4324e9fc), SkBits2Float(0x437211ec));  // 164.914f, 242.07f
7149 path.lineTo(SkBits2Float(0x4324e9fc), SkBits2Float(0x437211ec));  // 164.914f, 242.07f
7150 path.lineTo(SkBits2Float(0x4324e9fc), SkBits2Float(0x437211ec));  // 164.914f, 242.07f
7151 path.lineTo(SkBits2Float(0x43235810), SkBits2Float(0x437129fc));  // 163.344f, 241.164f
7152 path.lineTo(SkBits2Float(0x4324e9fc), SkBits2Float(0x437211ec));  // 164.914f, 242.07f
7153 path.close();
7154 path.moveTo(SkBits2Float(0x431a020c), SkBits2Float(0x4374fdf4));  // 154.008f, 244.992f
7155 path.lineTo(SkBits2Float(0x431a020c), SkBits2Float(0x4374fdf4));  // 154.008f, 244.992f
7156 path.lineTo(SkBits2Float(0x431a020c), SkBits2Float(0x4374fdf4));  // 154.008f, 244.992f
7157 path.lineTo(SkBits2Float(0x431aec08), SkBits2Float(0x437369fc));  // 154.922f, 243.414f
7158 path.lineTo(SkBits2Float(0x431a020c), SkBits2Float(0x4374fdf4));  // 154.008f, 244.992f
7159 path.close();
7160 path.moveTo(SkBits2Float(0x431bd3f8), SkBits2Float(0x4371d810));  // 155.828f, 241.844f
7161 path.cubicTo(SkBits2Float(0x431ce000), SkBits2Float(0x4372722d), SkBits2Float(0x431e0e15), SkBits2Float(0x43729020), SkBits2Float(0x431f2000), SkBits2Float(0x43724831));  // 156.875f, 242.446f, 158.055f, 242.563f, 159.125f, 242.282f
7162 path.cubicTo(SkBits2Float(0x43203604), SkBits2Float(0x4371fe35), SkBits2Float(0x43212c08), SkBits2Float(0x43714a3d), SkBits2Float(0x4321c5e3), SkBits2Float(0x43704041));  // 160.211f, 241.993f, 161.172f, 241.29f, 161.773f, 240.251f
7163 path.lineTo(SkBits2Float(0x4324e9fc), SkBits2Float(0x4372122d));  // 164.914f, 242.071f
7164 path.cubicTo(SkBits2Float(0x4322b3f8), SkBits2Float(0x4375e419), SkBits2Float(0x431dd810), SkBits2Float(0x4377322d), SkBits2Float(0x431a020c), SkBits2Float(0x4374fe35));  // 162.703f, 245.891f, 157.844f, 247.196f, 154.008f, 244.993f
7165 path.lineTo(SkBits2Float(0x431bd3f8), SkBits2Float(0x4371d810));  // 155.828f, 241.844f
7166 path.close();
7167 path.moveTo(SkBits2Float(0x43171810), SkBits2Float(0x436a1604));  // 151.094f, 234.086f
7168 path.lineTo(SkBits2Float(0x43171810), SkBits2Float(0x436a1604));  // 151.094f, 234.086f
7169 path.lineTo(SkBits2Float(0x43171810), SkBits2Float(0x436a1604));  // 151.094f, 234.086f
7170 path.lineTo(SkBits2Float(0x4318a9fc), SkBits2Float(0x436afdf4));  // 152.664f, 234.992f
7171 path.lineTo(SkBits2Float(0x43171810), SkBits2Float(0x436a1604));  // 151.094f, 234.086f
7172 path.close();
7173 path.moveTo(SkBits2Float(0x431a4000), SkBits2Float(0x436be7f0));  // 154.25f, 235.906f
7174 path.cubicTo(SkBits2Float(0x4319a20c), SkBits2Float(0x436cf3f8), SkBits2Float(0x431985e3), SkBits2Float(0x436e1df4), SkBits2Float(0x4319ce14), SkBits2Float(0x436f33f8));  // 153.633f, 236.953f, 153.523f, 238.117f, 153.805f, 239.203f
7175 path.cubicTo(SkBits2Float(0x431a1a1c), SkBits2Float(0x437047f0), SkBits2Float(0x431ac831), SkBits2Float(0x43713df4), SkBits2Float(0x431bd3f7), SkBits2Float(0x4371d811));  // 154.102f, 240.281f, 154.782f, 241.242f, 155.828f, 241.844f
7176 path.lineTo(SkBits2Float(0x431a020b), SkBits2Float(0x4374fdf4));  // 154.008f, 244.992f
7177 path.cubicTo(SkBits2Float(0x4316322c), SkBits2Float(0x4372c5e4), SkBits2Float(0x4314e417), SkBits2Float(0x436de9fc), SkBits2Float(0x4317180f), SkBits2Float(0x436a1604));  // 150.196f, 242.773f, 148.891f, 237.914f, 151.094f, 234.086f
7178 path.lineTo(SkBits2Float(0x431a4000), SkBits2Float(0x436be7f0));  // 154.25f, 235.906f
7179 path.close();
7180 path.moveTo(SkBits2Float(0x43220000), SkBits2Float(0x436729fc));  // 162, 231.164f
7181 path.lineTo(SkBits2Float(0x43220000), SkBits2Float(0x436729fc));  // 162, 231.164f
7182 path.lineTo(SkBits2Float(0x43220000), SkBits2Float(0x436729fc));  // 162, 231.164f
7183 path.lineTo(SkBits2Float(0x43211810), SkBits2Float(0x4368bbe8));  // 161.094f, 232.734f
7184 path.lineTo(SkBits2Float(0x43220000), SkBits2Float(0x436729fc));  // 162, 231.164f
7185 path.close();
7186 path.moveTo(SkBits2Float(0x43202e14), SkBits2Float(0x436a4fdf));  // 160.18f, 234.312f
7187 path.cubicTo(SkBits2Float(0x431f2418), SkBits2Float(0x4369b5c2), SkBits2Float(0x431df810), SkBits2Float(0x436995c2), SkBits2Float(0x431ce20c), SkBits2Float(0x4369dfbe));  // 159.141f, 233.71f, 157.969f, 233.585f, 156.883f, 233.874f
7188 path.cubicTo(SkBits2Float(0x431bcc08), SkBits2Float(0x436a2bc6), SkBits2Float(0x431ad810), SkBits2Float(0x436adba5), SkBits2Float(0x431a4000), SkBits2Float(0x436be7ae));  // 155.797f, 234.171f, 154.844f, 234.858f, 154.25f, 235.905f
7189 path.lineTo(SkBits2Float(0x43171810), SkBits2Float(0x436a15c2));  // 151.094f, 234.085f
7190 path.cubicTo(SkBits2Float(0x43194e14), SkBits2Float(0x436643d6), SkBits2Float(0x431e2c08), SkBits2Float(0x4364f3b6), SkBits2Float(0x43220000), SkBits2Float(0x436729ba));  // 153.305f, 230.265f, 158.172f, 228.952f, 162, 231.163f
7191 path.lineTo(SkBits2Float(0x43202e14), SkBits2Float(0x436a4fdf));  // 160.18f, 234.312f
7192 path.close();
7193 path.moveTo(SkBits2Float(0x4321c5e3), SkBits2Float(0x43704000));  // 161.773f, 240.25f
7194 path.cubicTo(SkBits2Float(0x43226000), SkBits2Float(0x436f3604), SkBits2Float(0x43228000), SkBits2Float(0x436e09fc), SkBits2Float(0x43223604), SkBits2Float(0x436cf3f8));  // 162.375f, 239.211f, 162.5f, 238.039f, 162.211f, 236.953f
7195 path.cubicTo(SkBits2Float(0x4321ec08), SkBits2Float(0x436be000), SkBits2Float(0x43213a1d), SkBits2Float(0x436ae9fc), SkBits2Float(0x43202e14), SkBits2Float(0x436a4fdf));  // 161.922f, 235.875f, 161.227f, 234.914f, 160.18f, 234.312f
7196 path.lineTo(SkBits2Float(0x43220000), SkBits2Float(0x436729fc));  // 162, 231.164f
7197 path.cubicTo(SkBits2Float(0x4325d1ec), SkBits2Float(0x43696000), SkBits2Float(0x4327220c), SkBits2Float(0x436e4000), SkBits2Float(0x4324e9fc), SkBits2Float(0x437211ec));  // 165.82f, 233.375f, 167.133f, 238.25f, 164.914f, 242.07f
7198 path.lineTo(SkBits2Float(0x4321c5e3), SkBits2Float(0x43704000));  // 161.773f, 240.25f
7199 path.close();
7200 }
7201 
joel_12(skiatest::Reporter * reporter,const char * filename)7202 static void joel_12(skiatest::Reporter* reporter, const char* filename) {
7203     SkPath path;
7204     make_joel_12(path);
7205     testSimplify(reporter, path, filename);
7206 }
7207 
joel_12x(skiatest::Reporter * reporter,const char * filename)7208 static void joel_12x(skiatest::Reporter* reporter, const char* filename) {
7209     SkPath path;
7210     path.setFillType(SkPathFillType::kEvenOdd);
7211     make_joel_12(path);
7212     testSimplify(reporter, path, filename);
7213 }
7214 
make_joel_13(SkPath & path)7215 static void make_joel_13(SkPath& path) {
7216 path.moveTo(SkBits2Float(0x43b4126f), SkBits2Float(0x43c058f6));  // 360.144f, 384.695f
7217 path.cubicTo(SkBits2Float(0x43bd7c6b), SkBits2Float(0x43c05b02), SkBits2Float(0x43c51d71), SkBits2Float(0x43b8e8f6), SkBits2Float(0x43c5276d), SkBits2Float(0x43afc1ec));  // 378.972f, 384.711f, 394.23f, 369.82f, 394.308f, 351.515f
7218 path.cubicTo(SkBits2Float(0x43c51d71), SkBits2Float(0x43a688f6), SkBits2Float(0x43bd7c6b), SkBits2Float(0x439f16ea), SkBits2Float(0x43b4126f), SkBits2Float(0x439f16ea));  // 394.23f, 333.07f, 378.972f, 318.179f, 360.144f, 318.179f
7219 path.cubicTo(SkBits2Float(0x43aaa979), SkBits2Float(0x439f16ea), SkBits2Float(0x43a3076d), SkBits2Float(0x43a688f6), SkBits2Float(0x43a31063), SkBits2Float(0x43afc1ec));  // 341.324f, 318.179f, 326.058f, 333.07f, 326.128f, 351.515f
7220 path.cubicTo(SkBits2Float(0x43a3076d), SkBits2Float(0x43b8e8f6), SkBits2Float(0x43aaa959), SkBits2Float(0x43c05b02), SkBits2Float(0x43b4126f), SkBits2Float(0x43c058f6));  // 326.058f, 369.82f, 341.323f, 384.711f, 360.144f, 384.695f
7221 path.close();
7222 }
7223 
joel_13(skiatest::Reporter * reporter,const char * filename)7224 static void joel_13(skiatest::Reporter* reporter, const char* filename) {
7225     SkPath path;
7226     make_joel_13(path);
7227     testSimplify(reporter, path, filename);
7228 }
7229 
7230 
joel_13x(skiatest::Reporter * reporter,const char * filename)7231 static void joel_13x(skiatest::Reporter* reporter, const char* filename) {
7232     SkPath path;
7233     path.setFillType(SkPathFillType::kEvenOdd);
7234     make_joel_13(path);
7235     testSimplify(reporter, path, filename);
7236 }
7237 
make_joel_14(SkPath & path)7238 static void make_joel_14(SkPath& path) {
7239 path.moveTo(SkBits2Float(0x43f3b354), SkBits2Float(0x43d6770a));  // 487.401f, 428.93f
7240 path.lineTo(SkBits2Float(0x43f3b354), SkBits2Float(0x43d6770a));  // 487.401f, 428.93f
7241 path.close();
7242 path.moveTo(SkBits2Float(0x43f0fd50), SkBits2Float(0x43d6770a));  // 481.979f, 428.93f
7243 path.lineTo(SkBits2Float(0x43f0fd50), SkBits2Float(0x43d6770a));  // 481.979f, 428.93f
7244 path.close();
7245 path.moveTo(SkBits2Float(0x43f0fd50), SkBits2Float(0x43d6770a));  // 481.979f, 428.93f
7246 path.lineTo(SkBits2Float(0x43f3b354), SkBits2Float(0x43d6770a));  // 487.401f, 428.93f
7247 path.lineTo(SkBits2Float(0x43f0fd50), SkBits2Float(0x43d6770a));  // 481.979f, 428.93f
7248 path.close();
7249 path.moveTo(SkBits2Float(0x43dfe76d), SkBits2Float(0x43d792f1));  // 447.808f, 431.148f
7250 path.lineTo(SkBits2Float(0x43dfe76d), SkBits2Float(0x43d792f1));  // 447.808f, 431.148f
7251 path.close();
7252 path.moveTo(SkBits2Float(0x43dfe76d), SkBits2Float(0x43d792f1));  // 447.808f, 431.148f
7253 path.cubicTo(SkBits2Float(0x43e51979), SkBits2Float(0x43d611eb), SkBits2Float(0x43eb8667), SkBits2Float(0x43d765e3), SkBits2Float(0x43f0fd71), SkBits2Float(0x43d676e9));  // 458.199f, 428.14f, 471.05f, 430.796f, 481.98f, 428.929f
7254 path.cubicTo(SkBits2Float(0x43eb8667), SkBits2Float(0x43d76604), SkBits2Float(0x43e51958), SkBits2Float(0x43d6120c), SkBits2Float(0x43dfe76d), SkBits2Float(0x43d792f1));  // 471.05f, 430.797f, 458.198f, 428.141f, 447.808f, 431.148f
7255 path.close();
7256 path.moveTo(SkBits2Float(0x43df776d), SkBits2Float(0x43d6d603));  // 446.933f, 429.672f
7257 path.lineTo(SkBits2Float(0x43df776d), SkBits2Float(0x43d6d603));  // 446.933f, 429.672f
7258 path.close();
7259 path.moveTo(SkBits2Float(0x43df776d), SkBits2Float(0x43d6d603));  // 446.933f, 429.672f
7260 path.lineTo(SkBits2Float(0x43dfe76d), SkBits2Float(0x43d79311));  // 447.808f, 431.149f
7261 path.lineTo(SkBits2Float(0x43df776d), SkBits2Float(0x43d6d603));  // 446.933f, 429.672f
7262 path.close();
7263 path.moveTo(SkBits2Float(0x43dd3169), SkBits2Float(0x43d792f1));  // 442.386f, 431.148f
7264 path.lineTo(SkBits2Float(0x43dd3169), SkBits2Float(0x43d792f1));  // 442.386f, 431.148f
7265 path.close();
7266 path.moveTo(SkBits2Float(0x43dd3169), SkBits2Float(0x43d792f1));  // 442.386f, 431.148f
7267 path.cubicTo(SkBits2Float(0x43de376d), SkBits2Float(0x43d743f7), SkBits2Float(0x43de2873), SkBits2Float(0x43d68df3), SkBits2Float(0x43df776d), SkBits2Float(0x43d6d5e3));  // 444.433f, 430.531f, 444.316f, 429.109f, 446.933f, 429.671f
7268 path.cubicTo(SkBits2Float(0x43de2852), SkBits2Float(0x43d68df3), SkBits2Float(0x43de376d), SkBits2Float(0x43d743f7), SkBits2Float(0x43dd3169), SkBits2Float(0x43d792f1));  // 444.315f, 429.109f, 444.433f, 430.531f, 442.386f, 431.148f
7269 path.close();
7270 path.moveTo(SkBits2Float(0x43dcc169), SkBits2Float(0x43d6d603));  // 441.511f, 429.672f
7271 path.lineTo(SkBits2Float(0x43dcc169), SkBits2Float(0x43d6d603));  // 441.511f, 429.672f
7272 path.close();
7273 path.moveTo(SkBits2Float(0x43dcc169), SkBits2Float(0x43d6d603));  // 441.511f, 429.672f
7274 path.lineTo(SkBits2Float(0x43dd3169), SkBits2Float(0x43d79311));  // 442.386f, 431.149f
7275 path.lineTo(SkBits2Float(0x43dcc169), SkBits2Float(0x43d6d603));  // 441.511f, 429.672f
7276 path.close();
7277 path.moveTo(SkBits2Float(0x43dad959), SkBits2Float(0x43d6d603));  // 437.698f, 429.672f
7278 path.lineTo(SkBits2Float(0x43dad959), SkBits2Float(0x43d6d603));  // 437.698f, 429.672f
7279 path.close();
7280 path.moveTo(SkBits2Float(0x43dad959), SkBits2Float(0x43d6d603));  // 437.698f, 429.672f
7281 path.lineTo(SkBits2Float(0x43dcc149), SkBits2Float(0x43d6d603));  // 441.51f, 429.672f
7282 path.lineTo(SkBits2Float(0x43dad959), SkBits2Float(0x43d6d603));  // 437.698f, 429.672f
7283 path.close();
7284 path.moveTo(SkBits2Float(0x43e3cb65), SkBits2Float(0x43e3bd0d));  // 455.589f, 455.477f
7285 path.lineTo(SkBits2Float(0x43e3cb65), SkBits2Float(0x43e3bd0d));  // 455.589f, 455.477f
7286 path.close();
7287 path.moveTo(SkBits2Float(0x43e3cb65), SkBits2Float(0x43e3bd0d));  // 455.589f, 455.477f
7288 path.lineTo(SkBits2Float(0x43dad959), SkBits2Float(0x43d6d603));  // 437.698f, 429.672f
7289 path.lineTo(SkBits2Float(0x43e3cb65), SkBits2Float(0x43e3bd0d));  // 455.589f, 455.477f
7290 path.close();
7291 path.moveTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e41b01));  // 452.354f, 456.211f
7292 path.lineTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e41b01));  // 452.354f, 456.211f
7293 path.close();
7294 path.moveTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e41b01));  // 452.354f, 456.211f
7295 path.cubicTo(SkBits2Float(0x43e2ba5f), SkBits2Float(0x43e3f9fb), SkBits2Float(0x43e37e57), SkBits2Float(0x43e46df3), SkBits2Float(0x43e3cb45), SkBits2Float(0x43e3bd0d));  // 453.456f, 455.953f, 454.987f, 456.859f, 455.588f, 455.477f
7296 path.cubicTo(SkBits2Float(0x43e37e57), SkBits2Float(0x43e46df2), SkBits2Float(0x43e2ba60), SkBits2Float(0x43e3f9fb), SkBits2Float(0x43e22d51), SkBits2Float(0x43e41b01));  // 454.987f, 456.859f, 453.456f, 455.953f, 452.354f, 456.211f
7297 path.close();
7298 path.moveTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e479fb));  // 452.354f, 456.953f
7299 path.lineTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e479fb));  // 452.354f, 456.953f
7300 path.close();
7301 path.moveTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e479fb));  // 452.354f, 456.953f
7302 path.lineTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e41b01));  // 452.354f, 456.211f
7303 path.lineTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e479fb));  // 452.354f, 456.953f
7304 path.close();
7305 path.moveTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e479fb));  // 454.706f, 456.953f
7306 path.lineTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e479fb));  // 454.706f, 456.953f
7307 path.close();
7308 path.moveTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e479fb));  // 454.706f, 456.953f
7309 path.lineTo(SkBits2Float(0x43e22d51), SkBits2Float(0x43e479fb));  // 452.354f, 456.953f
7310 path.lineTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e479fb));  // 454.706f, 456.953f
7311 path.close();
7312 path.moveTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e41b01));  // 454.706f, 456.211f
7313 path.lineTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e41b01));  // 454.706f, 456.211f
7314 path.close();
7315 path.moveTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e41b01));  // 454.706f, 456.211f
7316 path.lineTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e479fb));  // 454.706f, 456.953f
7317 path.lineTo(SkBits2Float(0x43e35a5f), SkBits2Float(0x43e41b01));  // 454.706f, 456.211f
7318 path.close();
7319 path.moveTo(SkBits2Float(0x43e1726f), SkBits2Float(0x43e90c07));  // 450.894f, 466.094f
7320 path.lineTo(SkBits2Float(0x43e1726f), SkBits2Float(0x43e90c07));  // 450.894f, 466.094f
7321 path.close();
7322 path.moveTo(SkBits2Float(0x43e1726f), SkBits2Float(0x43e90c07));  // 450.894f, 466.094f
7323 path.cubicTo(SkBits2Float(0x43e2226f), SkBits2Float(0x43e769fb), SkBits2Float(0x43e50a7f), SkBits2Float(0x43e63915), SkBits2Float(0x43e35a5f), SkBits2Float(0x43e41b01));  // 452.269f, 462.828f, 458.082f, 460.446f, 454.706f, 456.211f
7324 path.cubicTo(SkBits2Float(0x43e50a5f), SkBits2Float(0x43e638f5), SkBits2Float(0x43e2226f), SkBits2Float(0x43e769fb), SkBits2Float(0x43e1726f), SkBits2Float(0x43e90c07));  // 458.081f, 460.445f, 452.269f, 462.828f, 450.894f, 466.094f
7325 path.close();
7326 path.moveTo(SkBits2Float(0x43f09f5d), SkBits2Float(0x43ea2709));  // 481.245f, 468.305f
7327 path.lineTo(SkBits2Float(0x43f09f5d), SkBits2Float(0x43ea2709));  // 481.245f, 468.305f
7328 path.close();
7329 path.moveTo(SkBits2Float(0x43f09f5d), SkBits2Float(0x43ea2709));  // 481.245f, 468.305f
7330 path.cubicTo(SkBits2Float(0x43ebbc6b), SkBits2Float(0x43ea4105), SkBits2Float(0x43e56c6b), SkBits2Float(0x43ec9fff), SkBits2Float(0x43e1724f), SkBits2Float(0x43e90c07));  // 471.472f, 468.508f, 458.847f, 473.25f, 450.893f, 466.094f
7331 path.cubicTo(SkBits2Float(0x43e56c6c), SkBits2Float(0x43ec9fff), SkBits2Float(0x43ebbc6c), SkBits2Float(0x43ea4105), SkBits2Float(0x43f09f5d), SkBits2Float(0x43ea2709));  // 458.847f, 473.25f, 471.472f, 468.508f, 481.245f, 468.305f
7332 path.close();
7333 path.moveTo(SkBits2Float(0x43eea45b), SkBits2Float(0x43e9c7ee));  // 477.284f, 467.562f
7334 path.lineTo(SkBits2Float(0x43eea45b), SkBits2Float(0x43e9c7ee));  // 477.284f, 467.562f
7335 path.close();
7336 path.moveTo(SkBits2Float(0x43eea45b), SkBits2Float(0x43e9c7ee));  // 477.284f, 467.562f
7337 path.cubicTo(SkBits2Float(0x43ef0c4b), SkBits2Float(0x43ea7ef8), SkBits2Float(0x43eff355), SkBits2Float(0x43ea10e4), SkBits2Float(0x43f09f5d), SkBits2Float(0x43ea26e8));  // 478.096f, 468.992f, 479.901f, 468.132f, 481.245f, 468.304f
7338 path.cubicTo(SkBits2Float(0x43eff355), SkBits2Float(0x43ea1105), SkBits2Float(0x43ef0c6b), SkBits2Float(0x43ea7ef8), SkBits2Float(0x43eea45b), SkBits2Float(0x43e9c7ee));  // 479.901f, 468.133f, 478.097f, 468.992f, 477.284f, 467.562f
7339 path.close();
7340 path.moveTo(SkBits2Float(0x43ee4667), SkBits2Float(0x43ea2709));  // 476.55f, 468.305f
7341 path.lineTo(SkBits2Float(0x43ee4667), SkBits2Float(0x43ea2709));  // 476.55f, 468.305f
7342 path.close();
7343 path.moveTo(SkBits2Float(0x43ee4667), SkBits2Float(0x43ea2709));  // 476.55f, 468.305f
7344 path.lineTo(SkBits2Float(0x43eea45b), SkBits2Float(0x43e9c80f));  // 477.284f, 467.563f
7345 path.lineTo(SkBits2Float(0x43ee4667), SkBits2Float(0x43ea2709));  // 476.55f, 468.305f
7346 path.close();
7347 path.moveTo(SkBits2Float(0x43e9f26f), SkBits2Float(0x43e6c2f0));  // 467.894f, 461.523f
7348 path.lineTo(SkBits2Float(0x43e9f26f), SkBits2Float(0x43e6c2f0));  // 467.894f, 461.523f
7349 path.close();
7350 path.moveTo(SkBits2Float(0x43e9f26f), SkBits2Float(0x43e6c2f0));  // 467.894f, 461.523f
7351 path.cubicTo(SkBits2Float(0x43eb8873), SkBits2Float(0x43e7dcec), SkBits2Float(0x43eb747b), SkBits2Float(0x43ea9b00), SkBits2Float(0x43ee4667), SkBits2Float(0x43ea26e8));  // 471.066f, 463.726f, 470.91f, 469.211f, 476.55f, 468.304f
7352 path.cubicTo(SkBits2Float(0x43eb745b), SkBits2Float(0x43ea9b01), SkBits2Float(0x43eb8853), SkBits2Float(0x43e7dd0d), SkBits2Float(0x43e9f26f), SkBits2Float(0x43e6c2f0));  // 470.909f, 469.211f, 471.065f, 463.727f, 467.894f, 461.523f
7353 path.close();
7354 path.moveTo(SkBits2Float(0x43ebee56), SkBits2Float(0x43decc07));  // 471.862f, 445.594f
7355 path.lineTo(SkBits2Float(0x43ebee56), SkBits2Float(0x43decc07));  // 471.862f, 445.594f
7356 path.close();
7357 path.moveTo(SkBits2Float(0x43ebee56), SkBits2Float(0x43decc07));  // 471.862f, 445.594f
7358 path.cubicTo(SkBits2Float(0x43e85f5c), SkBits2Float(0x43e04915), SkBits2Float(0x43eaa148), SkBits2Float(0x43e41c07), SkBits2Float(0x43e9f24e), SkBits2Float(0x43e6c311));  // 464.745f, 448.571f, 469.26f, 456.219f, 467.893f, 461.524f
7359 path.cubicTo(SkBits2Float(0x43eaa169), SkBits2Float(0x43e41c07), SkBits2Float(0x43e85f5c), SkBits2Float(0x43e048f4), SkBits2Float(0x43ebee56), SkBits2Float(0x43decc07));  // 469.261f, 456.219f, 464.745f, 448.57f, 471.862f, 445.594f
7360 path.close();
7361 path.moveTo(SkBits2Float(0x43eac168), SkBits2Float(0x43dd3fff));  // 469.511f, 442.5f
7362 path.lineTo(SkBits2Float(0x43eac168), SkBits2Float(0x43dd3fff));  // 469.511f, 442.5f
7363 path.close();
7364 path.moveTo(SkBits2Float(0x43eac168), SkBits2Float(0x43dd3fff));  // 469.511f, 442.5f
7365 path.cubicTo(SkBits2Float(0x43eb245a), SkBits2Float(0x43ddc7ef), SkBits2Float(0x43eaf45a), SkBits2Float(0x43dedd0d), SkBits2Float(0x43ebee76), SkBits2Float(0x43decc07));  // 470.284f, 443.562f, 469.909f, 445.727f, 471.863f, 445.594f
7366 path.cubicTo(SkBits2Float(0x43eaf459), SkBits2Float(0x43dedd0d), SkBits2Float(0x43eb2459), SkBits2Float(0x43ddc7ee), SkBits2Float(0x43eac168), SkBits2Float(0x43dd3fff));  // 469.909f, 445.727f, 470.284f, 443.562f, 469.511f, 442.5f
7367 path.close();
7368 path.moveTo(SkBits2Float(0x43ec4c6a), SkBits2Float(0x43dce105));  // 472.597f, 441.758f
7369 path.lineTo(SkBits2Float(0x43ec4c6a), SkBits2Float(0x43dce105));  // 472.597f, 441.758f
7370 path.close();
7371 path.moveTo(SkBits2Float(0x43ec4c6a), SkBits2Float(0x43dce105));  // 472.597f, 441.758f
7372 path.cubicTo(SkBits2Float(0x43ebcb64), SkBits2Float(0x43dd08f5), SkBits2Float(0x43eb0c6a), SkBits2Float(0x43dc9603), SkBits2Float(0x43eac168), SkBits2Float(0x43dd3fff));  // 471.589f, 442.07f, 470.097f, 441.172f, 469.511f, 442.5f
7373 path.cubicTo(SkBits2Float(0x43eb0c6a), SkBits2Float(0x43dc9603), SkBits2Float(0x43ebcb64), SkBits2Float(0x43dd08f5), SkBits2Float(0x43ec4c6a), SkBits2Float(0x43dce105));  // 470.097f, 441.172f, 471.589f, 442.07f, 472.597f, 441.758f
7374 path.close();
7375 path.moveTo(SkBits2Float(0x43ecbb64), SkBits2Float(0x43ddb105));  // 473.464f, 443.383f
7376 path.lineTo(SkBits2Float(0x43ecbb64), SkBits2Float(0x43ddb105));  // 473.464f, 443.383f
7377 path.close();
7378 path.moveTo(SkBits2Float(0x43ecbb64), SkBits2Float(0x43ddb105));  // 473.464f, 443.383f
7379 path.lineTo(SkBits2Float(0x43ec4c6a), SkBits2Float(0x43dce105));  // 472.597f, 441.758f
7380 path.lineTo(SkBits2Float(0x43ecbb64), SkBits2Float(0x43ddb105));  // 473.464f, 443.383f
7381 path.close();
7382 path.moveTo(SkBits2Float(0x43eea45a), SkBits2Float(0x43dc24fd));  // 477.284f, 440.289f
7383 path.lineTo(SkBits2Float(0x43eea45a), SkBits2Float(0x43dc24fd));  // 477.284f, 440.289f
7384 path.close();
7385 path.moveTo(SkBits2Float(0x43eea45a), SkBits2Float(0x43dc24fd));  // 477.284f, 440.289f
7386 path.cubicTo(SkBits2Float(0x43eef354), SkBits2Float(0x43dd4c07), SkBits2Float(0x43ed4a5e), SkBits2Float(0x43dcfef9), SkBits2Float(0x43ecbb64), SkBits2Float(0x43ddb105));  // 477.901f, 442.594f, 474.581f, 441.992f, 473.464f, 443.383f
7387 path.cubicTo(SkBits2Float(0x43ed4a5e), SkBits2Float(0x43dcfef9), SkBits2Float(0x43eef354), SkBits2Float(0x43dd4c07), SkBits2Float(0x43eea45a), SkBits2Float(0x43dc24fd));  // 474.581f, 441.992f, 477.901f, 442.594f, 477.284f, 440.289f
7388 path.close();
7389 path.moveTo(SkBits2Float(0x43f09f5c), SkBits2Float(0x43dc24fd));  // 481.245f, 440.289f
7390 path.lineTo(SkBits2Float(0x43f09f5c), SkBits2Float(0x43dc24fd));  // 481.245f, 440.289f
7391 path.close();
7392 path.moveTo(SkBits2Float(0x43f09f5c), SkBits2Float(0x43dc24fd));  // 481.245f, 440.289f
7393 path.cubicTo(SkBits2Float(0x43effc6a), SkBits2Float(0x43daeced), SkBits2Float(0x43ef6a5e), SkBits2Float(0x43dbe4fd), SkBits2Float(0x43eea45a), SkBits2Float(0x43dc24fd));  // 479.972f, 437.851f, 478.831f, 439.789f, 477.284f, 440.289f
7394 path.cubicTo(SkBits2Float(0x43ef6a5e), SkBits2Float(0x43dbe4fd), SkBits2Float(0x43effc6a), SkBits2Float(0x43daed0d), SkBits2Float(0x43f09f5c), SkBits2Float(0x43dc24fd));  // 478.831f, 439.789f, 479.972f, 437.852f, 481.245f, 440.289f
7395 path.close();
7396 path.moveTo(SkBits2Float(0x43f2f76c), SkBits2Float(0x43dbc603));  // 485.933f, 439.547f
7397 path.lineTo(SkBits2Float(0x43f2f76c), SkBits2Float(0x43dbc603));  // 485.933f, 439.547f
7398 path.close();
7399 path.moveTo(SkBits2Float(0x43f2f76c), SkBits2Float(0x43dbc603));  // 485.933f, 439.547f
7400 path.cubicTo(SkBits2Float(0x43f24c6a), SkBits2Float(0x43dc3b01), SkBits2Float(0x43f16b64), SkBits2Float(0x43dc2311), SkBits2Float(0x43f09f5c), SkBits2Float(0x43dc24fd));  // 484.597f, 440.461f, 482.839f, 440.274f, 481.245f, 440.289f
7401 path.cubicTo(SkBits2Float(0x43f16b64), SkBits2Float(0x43dc23f7), SkBits2Float(0x43f24c6a), SkBits2Float(0x43dc3b01), SkBits2Float(0x43f2f76c), SkBits2Float(0x43dbc603));  // 482.839f, 440.281f, 484.597f, 440.461f, 485.933f, 439.547f
7402 path.close();
7403 path.moveTo(SkBits2Float(0x43f4de55), SkBits2Float(0x43d97d0d));  // 489.737f, 434.977f
7404 path.lineTo(SkBits2Float(0x43f4de55), SkBits2Float(0x43d97d0d));  // 489.737f, 434.977f
7405 path.close();
7406 path.moveTo(SkBits2Float(0x43f4de55), SkBits2Float(0x43d97d0d));  // 489.737f, 434.977f
7407 path.cubicTo(SkBits2Float(0x43f47665), SkBits2Float(0x43da020b), SkBits2Float(0x43f42851), SkBits2Float(0x43db9417), SkBits2Float(0x43f2f74b), SkBits2Float(0x43dbc603));  // 488.925f, 436.016f, 488.315f, 439.157f, 485.932f, 439.547f
7408 path.cubicTo(SkBits2Float(0x43f42851), SkBits2Float(0x43db93f7), SkBits2Float(0x43f47666), SkBits2Float(0x43da020b), SkBits2Float(0x43f4de55), SkBits2Float(0x43d97d0d));  // 488.315f, 439.156f, 488.925f, 436.016f, 489.737f, 434.977f
7409 path.close();
7410 path.moveTo(SkBits2Float(0x43f48061), SkBits2Float(0x43d97d0d));  // 489.003f, 434.977f
7411 path.lineTo(SkBits2Float(0x43f48061), SkBits2Float(0x43d97d0d));  // 489.003f, 434.977f
7412 path.close();
7413 path.moveTo(SkBits2Float(0x43f48061), SkBits2Float(0x43d97d0d));  // 489.003f, 434.977f
7414 path.lineTo(SkBits2Float(0x43f4de55), SkBits2Float(0x43d97d0d));  // 489.737f, 434.977f
7415 path.lineTo(SkBits2Float(0x43f48061), SkBits2Float(0x43d97d0d));  // 489.003f, 434.977f
7416 path.close();
7417 path.moveTo(SkBits2Float(0x43f3b353), SkBits2Float(0x43d67709));  // 487.401f, 428.93f
7418 path.cubicTo(SkBits2Float(0x43f39957), SkBits2Float(0x43d79ef9), SkBits2Float(0x43f3ca5d), SkBits2Float(0x43d8a603), SkBits2Float(0x43f48061), SkBits2Float(0x43d97d0d));  // 487.198f, 431.242f, 487.581f, 433.297f, 489.003f, 434.977f
7419 path.cubicTo(SkBits2Float(0x43f3ca5d), SkBits2Float(0x43d8a603), SkBits2Float(0x43f39957), SkBits2Float(0x43d79ef9), SkBits2Float(0x43f3b353), SkBits2Float(0x43d67709));  // 487.581f, 433.297f, 487.198f, 431.242f, 487.401f, 428.93f
7420 path.close();
7421 }
7422 
joel_14(skiatest::Reporter * reporter,const char * filename)7423 static void joel_14(skiatest::Reporter* reporter, const char* filename) {
7424     SkPath path;
7425     make_joel_14(path);
7426 testSimplify(reporter, path, filename);
7427 }
7428 
joel_14x(skiatest::Reporter * reporter,const char * filename)7429 static void joel_14x(skiatest::Reporter* reporter, const char* filename) {
7430     SkPath path;
7431     path.setFillType(SkPathFillType::kEvenOdd);
7432     make_joel_14(path);
7433 testSimplify(reporter, path, filename);
7434 }
7435 
make_joel_15(SkPath & path)7436 static void make_joel_15(SkPath& path) {
7437 path.moveTo(SkBits2Float(0x439e276d), SkBits2Float(0x43dad106));  // 316.308f, 437.633f
7438 path.lineTo(SkBits2Float(0x439e276d), SkBits2Float(0x43dad106));  // 316.308f, 437.633f
7439 path.close();
7440 path.moveTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d78000));  // 312.198f, 431
7441 path.lineTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d78000));  // 312.198f, 431
7442 path.close();
7443 path.moveTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d78000));  // 312.198f, 431
7444 path.cubicTo(SkBits2Float(0x439ea45b), SkBits2Float(0x43d6d000), SkBits2Float(0x439cce57), SkBits2Float(0x43d9f3f8), SkBits2Float(0x439e274d), SkBits2Float(0x43dad106));  // 317.284f, 429.625f, 313.612f, 435.906f, 316.307f, 437.633f
7445 path.cubicTo(SkBits2Float(0x439cce57), SkBits2Float(0x43d9f3f8), SkBits2Float(0x439ea45b), SkBits2Float(0x43d6d000), SkBits2Float(0x439c1959), SkBits2Float(0x43d78000));  // 313.612f, 435.906f, 317.284f, 429.625f, 312.198f, 431
7446 path.close();
7447 path.moveTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d8f8f6));  // 312.198f, 433.945f
7448 path.lineTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d8f8f6));  // 312.198f, 433.945f
7449 path.close();
7450 path.moveTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d8f8f6));  // 312.198f, 433.945f
7451 path.lineTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d78000));  // 312.198f, 431
7452 path.lineTo(SkBits2Float(0x439c1959), SkBits2Float(0x43d8f8f6));  // 312.198f, 433.945f
7453 path.close();
7454 path.moveTo(SkBits2Float(0x439f7853), SkBits2Float(0x43e5820c));  // 318.94f, 459.016f
7455 path.lineTo(SkBits2Float(0x439f7853), SkBits2Float(0x43e5820c));  // 318.94f, 459.016f
7456 path.close();
7457 path.moveTo(SkBits2Float(0x439f7853), SkBits2Float(0x43e5820c));  // 318.94f, 459.016f
7458 path.cubicTo(SkBits2Float(0x439e1647), SkBits2Float(0x43e17106), SkBits2Float(0x439d945b), SkBits2Float(0x43dd020c), SkBits2Float(0x439c1959), SkBits2Float(0x43d8f916));  // 316.174f, 450.883f, 315.159f, 442.016f, 312.198f, 433.946f
7459 path.cubicTo(SkBits2Float(0x439d945b), SkBits2Float(0x43dd020c), SkBits2Float(0x439e1667), SkBits2Float(0x43e17106), SkBits2Float(0x439f7853), SkBits2Float(0x43e5820c));  // 315.159f, 442.016f, 316.175f, 450.883f, 318.94f, 459.016f
7460 path.close();
7461 path.moveTo(SkBits2Float(0x439ffc6c), SkBits2Float(0x43e7f106));  // 319.972f, 463.883f
7462 path.lineTo(SkBits2Float(0x439ffc6c), SkBits2Float(0x43e7f106));  // 319.972f, 463.883f
7463 path.close();
7464 path.moveTo(SkBits2Float(0x439ffc6c), SkBits2Float(0x43e7f106));  // 319.972f, 463.883f
7465 path.cubicTo(SkBits2Float(0x439f5668), SkBits2Float(0x43e758f6), SkBits2Float(0x439fec6c), SkBits2Float(0x43e63604), SkBits2Float(0x439f7874), SkBits2Float(0x43e5820c));  // 318.675f, 462.695f, 319.847f, 460.422f, 318.941f, 459.016f
7466 path.cubicTo(SkBits2Float(0x439fec6c), SkBits2Float(0x43e63604), SkBits2Float(0x439f5668), SkBits2Float(0x43e758f5), SkBits2Float(0x439ffc6c), SkBits2Float(0x43e7f106));  // 319.847f, 460.422f, 318.675f, 462.695f, 319.972f, 463.883f
7467 path.close();
7468 path.moveTo(SkBits2Float(0x43a12853), SkBits2Float(0x43ede9fc));  // 322.315f, 475.828f
7469 path.lineTo(SkBits2Float(0x43a12853), SkBits2Float(0x43ede9fc));  // 322.315f, 475.828f
7470 path.close();
7471 path.moveTo(SkBits2Float(0x43a12853), SkBits2Float(0x43ede9fc));  // 322.315f, 475.828f
7472 path.cubicTo(SkBits2Float(0x43a18c4b), SkBits2Float(0x43eb7604), SkBits2Float(0x439fe45b), SkBits2Float(0x43ea4b02), SkBits2Float(0x439ffc4b), SkBits2Float(0x43e7f106));  // 323.096f, 470.922f, 319.784f, 468.586f, 319.971f, 463.883f
7473 path.cubicTo(SkBits2Float(0x439fe45b), SkBits2Float(0x43ea4b02), SkBits2Float(0x43a18c6c), SkBits2Float(0x43eb7604), SkBits2Float(0x43a12853), SkBits2Float(0x43ede9fc));  // 319.784f, 468.586f, 323.097f, 470.922f, 322.315f, 475.828f
7474 path.close();
7475 path.moveTo(SkBits2Float(0x43a1e45b), SkBits2Float(0x43ef63f8));  // 323.784f, 478.781f
7476 path.lineTo(SkBits2Float(0x43a1e45b), SkBits2Float(0x43ef63f8));  // 323.784f, 478.781f
7477 path.close();
7478 path.moveTo(SkBits2Float(0x43a1e45b), SkBits2Float(0x43ef63f8));  // 323.784f, 478.781f
7479 path.cubicTo(SkBits2Float(0x43a20561), SkBits2Float(0x43eeb9fc), SkBits2Float(0x43a1ae57), SkBits2Float(0x43ee4be8), SkBits2Float(0x43a12853), SkBits2Float(0x43ede9fc));  // 324.042f, 477.453f, 323.362f, 476.593f, 322.315f, 475.828f
7480 path.cubicTo(SkBits2Float(0x43a1ae57), SkBits2Float(0x43ee4c08), SkBits2Float(0x43a20561), SkBits2Float(0x43eeb9fc), SkBits2Float(0x43a1e45b), SkBits2Float(0x43ef63f8));  // 323.362f, 476.594f, 324.042f, 477.453f, 323.784f, 478.781f
7481 path.close();
7482 path.moveTo(SkBits2Float(0x439fb169), SkBits2Float(0x43f032f2));  // 319.386f, 480.398f
7483 path.lineTo(SkBits2Float(0x439fb169), SkBits2Float(0x43f032f2));  // 319.386f, 480.398f
7484 path.close();
7485 path.moveTo(SkBits2Float(0x439fb169), SkBits2Float(0x43f032f2));  // 319.386f, 480.398f
7486 path.cubicTo(SkBits2Float(0x43a08063), SkBits2Float(0x43f022f2), SkBits2Float(0x43a1ec6b), SkBits2Float(0x43f078f6), SkBits2Float(0x43a1e45b), SkBits2Float(0x43ef63f8));  // 321.003f, 480.273f, 323.847f, 480.945f, 323.784f, 478.781f
7487 path.cubicTo(SkBits2Float(0x43a1ec6b), SkBits2Float(0x43f078f6), SkBits2Float(0x43a08063), SkBits2Float(0x43f022f2), SkBits2Float(0x439fb169), SkBits2Float(0x43f032f2));  // 323.847f, 480.945f, 321.003f, 480.273f, 319.386f, 480.398f
7488 path.close();
7489 path.moveTo(SkBits2Float(0x439e4d50), SkBits2Float(0x43f16106));  // 316.604f, 482.758f
7490 path.lineTo(SkBits2Float(0x439e4d50), SkBits2Float(0x43f16106));  // 316.604f, 482.758f
7491 path.close();
7492 path.moveTo(SkBits2Float(0x439e4d50), SkBits2Float(0x43f16106));  // 316.604f, 482.758f
7493 path.cubicTo(SkBits2Float(0x439de45a), SkBits2Float(0x43f05000), SkBits2Float(0x439f445a), SkBits2Float(0x43f0b20c), SkBits2Float(0x439fb148), SkBits2Float(0x43f03312));  // 315.784f, 480.625f, 318.534f, 481.391f, 319.385f, 480.399f
7494 path.cubicTo(SkBits2Float(0x439f445a), SkBits2Float(0x43f0b20c), SkBits2Float(0x439de45a), SkBits2Float(0x43f05000), SkBits2Float(0x439e4d50), SkBits2Float(0x43f16106));  // 318.534f, 481.391f, 315.784f, 480.625f, 316.604f, 482.758f
7495 path.close();
7496 path.moveTo(SkBits2Float(0x43a0de56), SkBits2Float(0x43f7470a));  // 321.737f, 494.555f
7497 path.lineTo(SkBits2Float(0x43a0de56), SkBits2Float(0x43f7470a));  // 321.737f, 494.555f
7498 path.close();
7499 path.moveTo(SkBits2Float(0x43a0de56), SkBits2Float(0x43f7470a));  // 321.737f, 494.555f
7500 path.cubicTo(SkBits2Float(0x439f4062), SkBits2Float(0x43f5a106), SkBits2Float(0x439f2b64), SkBits2Float(0x43f33106), SkBits2Float(0x439e4d50), SkBits2Float(0x43f16106));  // 318.503f, 491.258f, 318.339f, 486.383f, 316.604f, 482.758f
7501 path.cubicTo(SkBits2Float(0x439f2b64), SkBits2Float(0x43f33106), SkBits2Float(0x439f4062), SkBits2Float(0x43f5a106), SkBits2Float(0x43a0de56), SkBits2Float(0x43f7470a));  // 318.339f, 486.383f, 318.503f, 491.258f, 321.737f, 494.555f
7502 path.close();
7503 path.moveTo(SkBits2Float(0x43a3945a), SkBits2Float(0x43fa13f8));  // 327.159f, 500.156f
7504 path.lineTo(SkBits2Float(0x43a3945a), SkBits2Float(0x43fa13f8));  // 327.159f, 500.156f
7505 path.close();
7506 path.moveTo(SkBits2Float(0x43a3945a), SkBits2Float(0x43fa13f8));  // 327.159f, 500.156f
7507 path.cubicTo(SkBits2Float(0x43a2dc4a), SkBits2Float(0x43f8ab02), SkBits2Float(0x43a0d74c), SkBits2Float(0x43f8f4fe), SkBits2Float(0x43a0de56), SkBits2Float(0x43f746ea));  // 325.721f, 497.336f, 321.682f, 497.914f, 321.737f, 494.554f
7508 path.cubicTo(SkBits2Float(0x43a0d76d), SkBits2Float(0x43f8f4fe), SkBits2Float(0x43a2dc6a), SkBits2Float(0x43f8ab03), SkBits2Float(0x43a3945a), SkBits2Float(0x43fa13f8));  // 321.683f, 497.914f, 325.722f, 497.336f, 327.159f, 500.156f
7509 path.close();
7510 path.moveTo(SkBits2Float(0x43a58e56), SkBits2Float(0x43fa98f6));  // 331.112f, 501.195f
7511 path.lineTo(SkBits2Float(0x43a58e56), SkBits2Float(0x43fa98f6));  // 331.112f, 501.195f
7512 path.close();
7513 path.moveTo(SkBits2Float(0x43a58e56), SkBits2Float(0x43fa98f6));  // 331.112f, 501.195f
7514 path.cubicTo(SkBits2Float(0x43a50148), SkBits2Float(0x43fa2be8), SkBits2Float(0x43a45646), SkBits2Float(0x43fa02f2), SkBits2Float(0x43a3945a), SkBits2Float(0x43fa13f8));  // 330.01f, 500.343f, 328.674f, 500.023f, 327.159f, 500.156f
7515 path.cubicTo(SkBits2Float(0x43a45666), SkBits2Float(0x43fa02f2), SkBits2Float(0x43a50168), SkBits2Float(0x43fa2c08), SkBits2Float(0x43a58e56), SkBits2Float(0x43fa98f6));  // 328.675f, 500.023f, 330.011f, 500.344f, 331.112f, 501.195f
7516 path.close();
7517 path.moveTo(SkBits2Float(0x43a64958), SkBits2Float(0x43f8c000));  // 332.573f, 497.5f
7518 path.lineTo(SkBits2Float(0x43a64958), SkBits2Float(0x43f8c000));  // 332.573f, 497.5f
7519 path.close();
7520 path.moveTo(SkBits2Float(0x43a64958), SkBits2Float(0x43f8c000));  // 332.573f, 497.5f
7521 path.lineTo(SkBits2Float(0x43a58e56), SkBits2Float(0x43fa98f6));  // 331.112f, 501.195f
7522 path.lineTo(SkBits2Float(0x43a64958), SkBits2Float(0x43f8c000));  // 332.573f, 497.5f
7523 path.close();
7524 path.moveTo(SkBits2Float(0x43a73e56), SkBits2Float(0x43f5820c));  // 334.487f, 491.016f
7525 path.lineTo(SkBits2Float(0x43a73e56), SkBits2Float(0x43f5820c));  // 334.487f, 491.016f
7526 path.close();
7527 path.moveTo(SkBits2Float(0x43a73e56), SkBits2Float(0x43f5820c));  // 334.487f, 491.016f
7528 path.cubicTo(SkBits2Float(0x43a64d50), SkBits2Float(0x43f654fe), SkBits2Float(0x43a7174c), SkBits2Float(0x43f7de14), SkBits2Float(0x43a64958), SkBits2Float(0x43f8c000));  // 332.604f, 492.664f, 334.182f, 495.735f, 332.573f, 497.5f
7529 path.cubicTo(SkBits2Float(0x43a7176c), SkBits2Float(0x43f7ddf4), SkBits2Float(0x43a64d50), SkBits2Float(0x43f654fe), SkBits2Float(0x43a73e56), SkBits2Float(0x43f5820c));  // 334.183f, 495.734f, 332.604f, 492.664f, 334.487f, 491.016f
7530 path.close();
7531 path.moveTo(SkBits2Float(0x43a6f26f), SkBits2Float(0x43f20b02));  // 333.894f, 484.086f
7532 path.lineTo(SkBits2Float(0x43a6f26f), SkBits2Float(0x43f20b02));  // 333.894f, 484.086f
7533 path.close();
7534 path.moveTo(SkBits2Float(0x43a6f26f), SkBits2Float(0x43f20b02));  // 333.894f, 484.086f
7535 path.cubicTo(SkBits2Float(0x43a78d71), SkBits2Float(0x43f2f810), SkBits2Float(0x43a72873), SkBits2Float(0x43f453f8), SkBits2Float(0x43a73e77), SkBits2Float(0x43f5820c));  // 335.105f, 485.938f, 334.316f, 488.656f, 334.488f, 491.016f
7536 path.cubicTo(SkBits2Float(0x43a72852), SkBits2Float(0x43f453f8), SkBits2Float(0x43a78d50), SkBits2Float(0x43f2f810), SkBits2Float(0x43a6f26f), SkBits2Float(0x43f20b02));  // 334.315f, 488.656f, 335.104f, 485.938f, 333.894f, 484.086f
7537 path.close();
7538 path.moveTo(SkBits2Float(0x43a6ba5f), SkBits2Float(0x43ef3d0e));  // 333.456f, 478.477f
7539 path.lineTo(SkBits2Float(0x43a6ba5f), SkBits2Float(0x43ef3d0e));  // 333.456f, 478.477f
7540 path.close();
7541 path.moveTo(SkBits2Float(0x43a6ba5f), SkBits2Float(0x43ef3d0e));  // 333.456f, 478.477f
7542 path.cubicTo(SkBits2Float(0x43a60e57), SkBits2Float(0x43f04000), SkBits2Float(0x43a82355), SkBits2Float(0x43f0fc08), SkBits2Float(0x43a6f26f), SkBits2Float(0x43f20b02));  // 332.112f, 480.5f, 336.276f, 481.969f, 333.894f, 484.086f
7543 path.cubicTo(SkBits2Float(0x43a82354), SkBits2Float(0x43f0fc08), SkBits2Float(0x43a60e56), SkBits2Float(0x43f04000), SkBits2Float(0x43a6ba5f), SkBits2Float(0x43ef3d0e));  // 336.276f, 481.969f, 332.112f, 480.5f, 333.456f, 478.477f
7544 path.close();
7545 path.moveTo(SkBits2Float(0x43a35c6b), SkBits2Float(0x43ef88f5));  // 326.722f, 479.07f
7546 path.lineTo(SkBits2Float(0x43a35c6b), SkBits2Float(0x43ef88f5));  // 326.722f, 479.07f
7547 path.close();
7548 path.moveTo(SkBits2Float(0x43a35c6b), SkBits2Float(0x43ef88f5));  // 326.722f, 479.07f
7549 path.cubicTo(SkBits2Float(0x43a4b26f), SkBits2Float(0x43efe105), SkBits2Float(0x43a5b76d), SkBits2Float(0x43ee2ef9), SkBits2Float(0x43a6ba5f), SkBits2Float(0x43ef3ced));  // 329.394f, 479.758f, 331.433f, 476.367f, 333.456f, 478.476f
7550 path.cubicTo(SkBits2Float(0x43a5b76d), SkBits2Float(0x43ee2ef9), SkBits2Float(0x43a4b26f), SkBits2Float(0x43efe106), SkBits2Float(0x43a35c6b), SkBits2Float(0x43ef88f5));  // 331.433f, 476.367f, 329.394f, 479.758f, 326.722f, 479.07f
7551 path.close();
7552 path.moveTo(SkBits2Float(0x43a08063), SkBits2Float(0x43e5a70a));  // 321.003f, 459.305f
7553 path.lineTo(SkBits2Float(0x43a08063), SkBits2Float(0x43e5a70a));  // 321.003f, 459.305f
7554 path.close();
7555 path.moveTo(SkBits2Float(0x43a08063), SkBits2Float(0x43e5a70a));  // 321.003f, 459.305f
7556 path.cubicTo(SkBits2Float(0x43a15169), SkBits2Float(0x43e90312), SkBits2Float(0x43a2626f), SkBits2Float(0x43ec4312), SkBits2Float(0x43a35c6b), SkBits2Float(0x43ef8916));  // 322.636f, 466.024f, 324.769f, 472.524f, 326.722f, 479.071f
7557 path.cubicTo(SkBits2Float(0x43a2626f), SkBits2Float(0x43ec42f1), SkBits2Float(0x43a15169), SkBits2Float(0x43e902f1), SkBits2Float(0x43a08063), SkBits2Float(0x43e5a70a));  // 324.769f, 472.523f, 322.636f, 466.023f, 321.003f, 459.305f
7558 path.close();
7559 path.moveTo(SkBits2Float(0x43a05a5f), SkBits2Float(0x43e407ef));  // 320.706f, 456.062f
7560 path.lineTo(SkBits2Float(0x43a05a5f), SkBits2Float(0x43e407ef));  // 320.706f, 456.062f
7561 path.close();
7562 path.moveTo(SkBits2Float(0x43a05a5f), SkBits2Float(0x43e407ef));  // 320.706f, 456.062f
7563 path.lineTo(SkBits2Float(0x43a08063), SkBits2Float(0x43e5a6e9));  // 321.003f, 459.304f
7564 path.lineTo(SkBits2Float(0x43a05a5f), SkBits2Float(0x43e407ef));  // 320.706f, 456.062f
7565 path.close();
7566 path.moveTo(SkBits2Float(0x439ecf5d), SkBits2Float(0x43dd3fff));  // 317.62f, 442.5f
7567 path.lineTo(SkBits2Float(0x439ecf5d), SkBits2Float(0x43dd3fff));  // 317.62f, 442.5f
7568 path.close();
7569 path.moveTo(SkBits2Float(0x439ecf5d), SkBits2Float(0x43dd3fff));  // 317.62f, 442.5f
7570 path.cubicTo(SkBits2Float(0x439e9c6b), SkBits2Float(0x43dfcb01), SkBits2Float(0x439fbe57), SkBits2Float(0x43e1cc07), SkBits2Float(0x43a05a5f), SkBits2Float(0x43e407ef));  // 317.222f, 447.586f, 319.487f, 451.594f, 320.706f, 456.062f
7571 path.cubicTo(SkBits2Float(0x439fbe57), SkBits2Float(0x43e1cc08), SkBits2Float(0x439e9c6b), SkBits2Float(0x43dfcb01), SkBits2Float(0x439ecf5d), SkBits2Float(0x43dd3fff));  // 319.487f, 451.594f, 317.222f, 447.586f, 317.62f, 442.5f
7572 path.close();
7573 path.moveTo(SkBits2Float(0x439e276d), SkBits2Float(0x43dad105));  // 316.308f, 437.633f
7574 path.cubicTo(SkBits2Float(0x439e4979), SkBits2Float(0x43dba4fd), SkBits2Float(0x439dc375), SkBits2Float(0x43dce915), SkBits2Float(0x439ecf5d), SkBits2Float(0x43dd3fff));  // 316.574f, 439.289f, 315.527f, 441.821f, 317.62f, 442.5f
7575 path.cubicTo(SkBits2Float(0x439dc355), SkBits2Float(0x43dce8f5), SkBits2Float(0x439e4959), SkBits2Float(0x43dba4fd), SkBits2Float(0x439e276d), SkBits2Float(0x43dad105));  // 315.526f, 441.82f, 316.573f, 439.289f, 316.308f, 437.633f
7576 path.close();
7577 }
7578 
joel_15(skiatest::Reporter * reporter,const char * filename)7579 static void joel_15(skiatest::Reporter* reporter, const char* filename) {
7580     SkPath path;
7581     make_joel_15(path);
7582 testSimplify(reporter, path, filename);
7583 }
7584 
joel_15x(skiatest::Reporter * reporter,const char * filename)7585 static void joel_15x(skiatest::Reporter* reporter, const char* filename) {
7586     SkPath path;
7587     path.setFillType(SkPathFillType::kEvenOdd);
7588     make_joel_15(path);
7589 testSimplify(reporter, path, filename);
7590 }
7591 
make_joel_16(SkPath & path)7592 static void make_joel_16(SkPath& path) {
7593 path.moveTo(SkBits2Float(0x420e6c8b), SkBits2Float(0x426bdf3b));  // 35.606f, 58.968f
7594 path.lineTo(SkBits2Float(0x420fcccd), SkBits2Float(0x426c7ef9));  // 35.95f, 59.124f
7595 path.cubicTo(SkBits2Float(0x420fcccd), SkBits2Float(0x426c7ef9), SkBits2Float(0x42093d71), SkBits2Float(0x426c6e97), SkBits2Float(0x42036c8b), SkBits2Float(0x426cbf7c));  // 35.95f, 59.124f, 34.31f, 59.108f, 32.856f, 59.187f
7596 path.cubicTo(SkBits2Float(0x41fb3958), SkBits2Float(0x426d0f5b), SkBits2Float(0x41f076c8), SkBits2Float(0x426d48b3), SkBits2Float(0x41ef47ae), SkBits2Float(0x426d947a));  // 31.403f, 59.265f, 30.058f, 59.321f, 29.91f, 59.395f
7597 path.cubicTo(SkBits2Float(0x41ee1aa0), SkBits2Float(0x426ddf3b), SkBits2Float(0x41ec6041), SkBits2Float(0x426edb22), SkBits2Float(0x41eb1aa0), SkBits2Float(0x426fee97));  // 29.763f, 59.468f, 29.547f, 59.714f, 29.388f, 59.983f
7598 path.cubicTo(SkBits2Float(0x41eb1eb9), SkBits2Float(0x426feb85), SkBits2Float(0x41e9ba5e), SkBits2Float(0x42711eb8), SkBits2Float(0x41e9ba5e), SkBits2Float(0x42711eb8));  // 29.39f, 59.98f, 29.216f, 60.28f, 29.216f, 60.28f
7599 path.lineTo(SkBits2Float(0x41e99999), SkBits2Float(0x42718f5c));  // 29.2f, 60.39f
7600 path.cubicTo(SkBits2Float(0x41ea76c8), SkBits2Float(0x4271a5e3), SkBits2Float(0x4212dd2f), SkBits2Float(0x42707efa), SkBits2Float(0x4212dd2f), SkBits2Float(0x42707efa));  // 29.308f, 60.412f, 36.716f, 60.124f, 36.716f, 60.124f
7601 path.cubicTo(SkBits2Float(0x4212dd2f), SkBits2Float(0x42707efa), SkBits2Float(0x42124395), SkBits2Float(0x42707be8), SkBits2Float(0x42131ba6), SkBits2Float(0x4270b646));  // 36.716f, 60.124f, 36.566f, 60.121f, 36.777f, 60.178f
7602 path.cubicTo(SkBits2Float(0x42131581), SkBits2Float(0x42710000), SkBits2Float(0x42130831), SkBits2Float(0x42711688), SkBits2Float(0x4213072b), SkBits2Float(0x42711688));  // 36.771f, 60.25f, 36.758f, 60.272f, 36.757f, 60.272f
7603 path.cubicTo(SkBits2Float(0x4212fae1), SkBits2Float(0x42711aa1), SkBits2Float(0x42127cee), SkBits2Float(0x42714eda), SkBits2Float(0x42127cee), SkBits2Float(0x42714eda));  // 36.745f, 60.276f, 36.622f, 60.327f, 36.622f, 60.327f
7604 path.cubicTo(SkBits2Float(0x42127ae2), SkBits2Float(0x42714eda), SkBits2Float(0x41c67ae2), SkBits2Float(0x42730f5d), SkBits2Float(0x41c345a2), SkBits2Float(0x427329fd));  // 36.62f, 60.327f, 24.81f, 60.765f, 24.409f, 60.791f
7605 path.cubicTo(SkBits2Float(0x41c247ae), SkBits2Float(0x42733e78), SkBits2Float(0x41c04396), SkBits2Float(0x42738e57), SkBits2Float(0x41bf4bc7), SkBits2Float(0x4273e45b));  // 24.285f, 60.811f, 24.033f, 60.889f, 23.912f, 60.973f
7606 path.cubicTo(SkBits2Float(0x41bf5c29), SkBits2Float(0x4273e042), SkBits2Float(0x41be9db3), SkBits2Float(0x4274322e), SkBits2Float(0x41be9db3), SkBits2Float(0x4274322e));  // 23.92f, 60.969f, 23.827f, 61.049f, 23.827f, 61.049f
7607 path.lineTo(SkBits2Float(0x41be26ea), SkBits2Float(0x42746c8c));  // 23.769f, 61.106f
7608 path.cubicTo(SkBits2Float(0x41be1eb9), SkBits2Float(0x427470a5), SkBits2Float(0x41bde354), SkBits2Float(0x42748313), SkBits2Float(0x41bde354), SkBits2Float(0x42748313));  // 23.765f, 61.11f, 23.736f, 61.128f, 23.736f, 61.128f
7609 path.lineTo(SkBits2Float(0x41bcc083), SkBits2Float(0x42751582));  // 23.594f, 61.271f
7610 path.lineTo(SkBits2Float(0x41bcf3b6), SkBits2Float(0x427526ea));  // 23.619f, 61.288f
7611 path.lineTo(SkBits2Float(0x41bd0e56), SkBits2Float(0x42756979));  // 23.632f, 61.353f
7612 path.lineTo(SkBits2Float(0x41bd7cee), SkBits2Float(0x42758313));  // 23.686f, 61.378f
7613 path.cubicTo(SkBits2Float(0x41be8107), SkBits2Float(0x427572b1), SkBits2Float(0x41bf2d0f), SkBits2Float(0x42754290), SkBits2Float(0x41bfd2f2), SkBits2Float(0x4275147b));  // 23.813f, 61.362f, 23.897f, 61.315f, 23.978f, 61.27f
7614 path.lineTo(SkBits2Float(0x41c0ba5f), SkBits2Float(0x4274da1d));  // 24.091f, 61.213f
7615 path.lineTo(SkBits2Float(0x41c0ef9e), SkBits2Float(0x4274de36));  // 24.117f, 61.217f
7616 path.lineTo(SkBits2Float(0x41c13f7d), SkBits2Float(0x4274d3f9));  // 24.156f, 61.207f
7617 path.cubicTo(SkBits2Float(0x41c13f7d), SkBits2Float(0x4274d3f9), SkBits2Float(0x41c174bc), SkBits2Float(0x4274c18a), SkBits2Float(0x41c17cee), SkBits2Float(0x4274be78));  // 24.156f, 61.207f, 24.182f, 61.189f, 24.186f, 61.186f
7618 path.cubicTo(SkBits2Float(0x41c18107), SkBits2Float(0x4274bf7e), SkBits2Float(0x41c1e561), SkBits2Float(0x4274b022), SkBits2Float(0x41c1e561), SkBits2Float(0x4274b022));  // 24.188f, 61.187f, 24.237f, 61.172f, 24.237f, 61.172f
7619 path.lineTo(SkBits2Float(0x41c45e36), SkBits2Float(0x42746e99));  // 24.546f, 61.108f
7620 path.cubicTo(SkBits2Float(0x41c4624f), SkBits2Float(0x42746e99), SkBits2Float(0x41cf999a), SkBits2Float(0x42743853), SkBits2Float(0x41cf999a), SkBits2Float(0x42743853));  // 24.548f, 61.108f, 25.95f, 61.055f, 25.95f, 61.055f
7621 path.lineTo(SkBits2Float(0x420d126f), SkBits2Float(0x4272b43a));  // 35.268f, 60.676f
7622 path.cubicTo(SkBits2Float(0x420d0938), SkBits2Float(0x4272c084), SkBits2Float(0x420cfcee), SkBits2Float(0x4272c49c), SkBits2Float(0x420cfcee), SkBits2Float(0x4272d917));  // 35.259f, 60.688f, 35.247f, 60.692f, 35.247f, 60.712f
7623 path.lineTo(SkBits2Float(0x420d0938), SkBits2Float(0x4272b43a));  // 35.259f, 60.676f
7624 path.cubicTo(SkBits2Float(0x420c7be8), SkBits2Float(0x42737efb), SkBits2Float(0x420b3128), SkBits2Float(0x42743128), SkBits2Float(0x420a27f0), SkBits2Float(0x4274c18a));  // 35.121f, 60.874f, 34.798f, 61.048f, 34.539f, 61.189f
7625 path.lineTo(SkBits2Float(0x42099eb9), SkBits2Float(0x42750c4b));  // 34.405f, 61.262f
7626 path.cubicTo(SkBits2Float(0x420872b1), SkBits2Float(0x4275b022), SkBits2Float(0x4206fbe8), SkBits2Float(0x42764397), SkBits2Float(0x42054396), SkBits2Float(0x4276c084));  // 34.112f, 61.422f, 33.746f, 61.566f, 33.316f, 61.688f
7627 path.cubicTo(SkBits2Float(0x42028313), SkBits2Float(0x42776b86), SkBits2Float(0x42007be8), SkBits2Float(0x4278de36), SkBits2Float(0x41fe7ae2), SkBits2Float(0x427b0f5d));  // 32.628f, 61.855f, 32.121f, 62.217f, 31.81f, 62.765f
7628 path.cubicTo(SkBits2Float(0x41fe4fe0), SkBits2Float(0x427b21cc), SkBits2Float(0x41fdbe78), SkBits2Float(0x427b8419), SkBits2Float(0x41fdbe78), SkBits2Float(0x427b8419));  // 31.789f, 62.783f, 31.718f, 62.879f, 31.718f, 62.879f
7629 path.cubicTo(SkBits2Float(0x41fdccce), SkBits2Float(0x427b71aa), SkBits2Float(0x41fd1cad), SkBits2Float(0x427c27f0), SkBits2Float(0x41fd1cad), SkBits2Float(0x427c27f0));  // 31.725f, 62.861f, 31.639f, 63.039f, 31.639f, 63.039f
7630 path.lineTo(SkBits2Float(0x41fc1eb9), SkBits2Float(0x427d178e));  // 31.515f, 63.273f
7631 path.lineTo(SkBits2Float(0x41fc7efb), SkBits2Float(0x427d020d));  // 31.562f, 63.252f
7632 path.lineTo(SkBits2Float(0x41fbb647), SkBits2Float(0x427d3646));  // 31.464f, 63.303f
7633 path.lineTo(SkBits2Float(0x41fbe76e), SkBits2Float(0x427d25e4));  // 31.488f, 63.287f
7634 path.lineTo(SkBits2Float(0x41fae149), SkBits2Float(0x427d1fbf));  // 31.36f, 63.281f
7635 path.lineTo(SkBits2Float(0x41fa5812), SkBits2Float(0x427d178e));  // 31.293f, 63.273f
7636 path.cubicTo(SkBits2Float(0x41f88108), SkBits2Float(0x427cf9dc), SkBits2Float(0x41f73541), SkBits2Float(0x427cb646), SkBits2Float(0x41f5d70c), SkBits2Float(0x427c6d92));  // 31.063f, 63.244f, 30.901f, 63.178f, 30.73f, 63.107f
7637 path.lineTo(SkBits2Float(0x41f5999b), SkBits2Float(0x427c6148));  // 30.7f, 63.095f
7638 path.cubicTo(SkBits2Float(0x41f5999b), SkBits2Float(0x427c6148), SkBits2Float(0x41f2d0e7), SkBits2Float(0x427bdc29), SkBits2Float(0x41f2a9fd), SkBits2Float(0x427bd4fe));  // 30.7f, 63.095f, 30.352f, 62.965f, 30.333f, 62.958f
7639 path.cubicTo(SkBits2Float(0x41f28d51), SkBits2Float(0x427bc49c), SkBits2Float(0x41f26667), SkBits2Float(0x427bb021), SkBits2Float(0x41f26667), SkBits2Float(0x427bb021));  // 30.319f, 62.942f, 30.3f, 62.922f, 30.3f, 62.922f
7640 path.lineTo(SkBits2Float(0x41efed92), SkBits2Float(0x427b1db2));  // 29.991f, 62.779f
7641 path.lineTo(SkBits2Float(0x41ec9582), SkBits2Float(0x427a624e));  // 29.573f, 62.596f
7642 path.cubicTo(SkBits2Float(0x41eca1cc), SkBits2Float(0x427a645a), SkBits2Float(0x41eaf9dc), SkBits2Float(0x427a3021), SkBits2Float(0x41eaf9dc), SkBits2Float(0x427a3021));  // 29.579f, 62.598f, 29.372f, 62.547f, 29.372f, 62.547f
7643 path.cubicTo(SkBits2Float(0x41eaf9dc), SkBits2Float(0x427a3021), SkBits2Float(0x41ea126f), SkBits2Float(0x427a1894), SkBits2Float(0x41e9f3b7), SkBits2Float(0x427a1687));  // 29.372f, 62.547f, 29.259f, 62.524f, 29.244f, 62.522f
7644 path.cubicTo(SkBits2Float(0x41e9ccce), SkBits2Float(0x427a072b), SkBits2Float(0x41e99375), SkBits2Float(0x4279f1aa), SkBits2Float(0x41e99375), SkBits2Float(0x4279f1aa));  // 29.225f, 62.507f, 29.197f, 62.486f, 29.197f, 62.486f
7645 path.lineTo(SkBits2Float(0x41e86e98), SkBits2Float(0x4279d604));  // 29.054f, 62.459f
7646 path.lineTo(SkBits2Float(0x41e6147b), SkBits2Float(0x4279a3d7));  // 28.76f, 62.41f
7647 path.cubicTo(SkBits2Float(0x41e00625), SkBits2Float(0x42796b85), SkBits2Float(0x41db49ba), SkBits2Float(0x427a7ae1), SkBits2Float(0x41d62b02), SkBits2Float(0x427bc8b4));  // 28.003f, 62.355f, 27.411f, 62.62f, 26.771f, 62.946f
7648 path.cubicTo(SkBits2Float(0x41d24fdf), SkBits2Float(0x427cba5e), SkBits2Float(0x41cecccd), SkBits2Float(0x427ce872), SkBits2Float(0x41ca0e56), SkBits2Float(0x427c6872));  // 26.289f, 63.182f, 25.85f, 63.227f, 25.257f, 63.102f
7649 path.cubicTo(SkBits2Float(0x41ca0a3d), SkBits2Float(0x427c676c), SkBits2Float(0x41c9353f), SkBits2Float(0x427c570a), SkBits2Float(0x41c9353f), SkBits2Float(0x427c570a));  // 25.255f, 63.101f, 25.151f, 63.085f, 25.151f, 63.085f
7650 path.lineTo(SkBits2Float(0x41c73b64), SkBits2Float(0x427c26e9));  // 24.904f, 63.038f
7651 path.lineTo(SkBits2Float(0x41c774bc), SkBits2Float(0x427c374b));  // 24.932f, 63.054f
7652 path.lineTo(SkBits2Float(0x41c67ef9), SkBits2Float(0x427c0312));  // 24.812f, 63.003f
7653 path.cubicTo(SkBits2Float(0x41c4df3b), SkBits2Float(0x427bc5a1), SkBits2Float(0x41c2a3d6), SkBits2Float(0x427b8d4f), SkBits2Float(0x41c0851e), SkBits2Float(0x427b6978));  // 24.609f, 62.943f, 24.33f, 62.888f, 24.065f, 62.853f
7654 path.cubicTo(SkBits2Float(0x41bf1893), SkBits2Float(0x427b52f1), SkBits2Float(0x41bd2d0e), SkBits2Float(0x427b52f1), SkBits2Float(0x41bc020c), SkBits2Float(0x427b5e34));  // 23.887f, 62.831f, 23.647f, 62.831f, 23.501f, 62.842f
7655 path.lineTo(SkBits2Float(0x41bac6a8), SkBits2Float(0x427b6871));  // 23.347f, 62.852f
7656 path.cubicTo(SkBits2Float(0x41b9db23), SkBits2Float(0x427b72ae), SkBits2Float(0x41b87cee), SkBits2Float(0x427b820b), SkBits2Float(0x41b7fbe7), SkBits2Float(0x427b655f));  // 23.232f, 62.862f, 23.061f, 62.877f, 22.998f, 62.849f
7657 path.cubicTo(SkBits2Float(0x41b7fbe7), SkBits2Float(0x427b5f3a), SkBits2Float(0x41b7dd2f), SkBits2Float(0x427b48b3), SkBits2Float(0x41b7dd2f), SkBits2Float(0x427b48b3));  // 22.998f, 62.843f, 22.983f, 62.821f, 22.983f, 62.821f
7658 path.lineTo(SkBits2Float(0x41b7a5e3), SkBits2Float(0x427b22d0));  // 22.956f, 62.784f
7659 path.cubicTo(SkBits2Float(0x41b7be76), SkBits2Float(0x427b3332), SkBits2Float(0x41b74395), SkBits2Float(0x427aed91), SkBits2Float(0x41b74395), SkBits2Float(0x427aed91));  // 22.968f, 62.8f, 22.908f, 62.732f, 22.908f, 62.732f
7660 path.lineTo(SkBits2Float(0x41b70c49), SkBits2Float(0x427acfdf));  // 22.881f, 62.703f
7661 path.cubicTo(SkBits2Float(0x41b70418), SkBits2Float(0x427ad916), SkBits2Float(0x41b6d70a), SkBits2Float(0x427a9168), SkBits2Float(0x41b6d70a), SkBits2Float(0x427a9168));  // 22.877f, 62.712f, 22.855f, 62.642f, 22.855f, 62.642f
7662 path.lineTo(SkBits2Float(0x41b6bc6a), SkBits2Float(0x427a645a));  // 22.842f, 62.598f
7663 path.lineTo(SkBits2Float(0x41b66e97), SkBits2Float(0x427a75c2));  // 22.804f, 62.615f
7664 path.cubicTo(SkBits2Float(0x41b6872a), SkBits2Float(0x427a71a9), SkBits2Float(0x41b5a9fb), SkBits2Float(0x4279c6a7), SkBits2Float(0x41b5a9fb), SkBits2Float(0x4279c6a7));  // 22.816f, 62.611f, 22.708f, 62.444f, 22.708f, 62.444f
7665 path.lineTo(SkBits2Float(0x41b59580), SkBits2Float(0x4279b645));  // 22.698f, 62.428f
7666 path.lineTo(SkBits2Float(0x41b549b9), SkBits2Float(0x42799fbe));  // 22.661f, 62.406f
7667 path.lineTo(SkBits2Float(0x41b53957), SkBits2Float(0x42799ba5));  // 22.653f, 62.402f
7668 path.cubicTo(SkBits2Float(0x41b52b01), SkBits2Float(0x42798d4f), SkBits2Float(0x41b4a3d6), SkBits2Float(0x427920c4), SkBits2Float(0x41b4a3d6), SkBits2Float(0x427920c4));  // 22.646f, 62.388f, 22.58f, 62.282f, 22.58f, 62.282f
7669 path.lineTo(SkBits2Float(0x41b43126), SkBits2Float(0x4278be76));  // 22.524f, 62.186f
7670 path.lineTo(SkBits2Float(0x41b3ed90), SkBits2Float(0x4278ab01));  // 22.491f, 62.167f
7671 path.lineTo(SkBits2Float(0x41b3be75), SkBits2Float(0x42789ba5));  // 22.468f, 62.152f
7672 path.lineTo(SkBits2Float(0x41b3d0e4), SkBits2Float(0x4278b957));  // 22.477f, 62.181f
7673 path.lineTo(SkBits2Float(0x41b351ea), SkBits2Float(0x42786353));  // 22.415f, 62.097f
7674 path.lineTo(SkBits2Float(0x41b33957), SkBits2Float(0x42786353));  // 22.403f, 62.097f
7675 path.cubicTo(SkBits2Float(0x41b326e8), SkBits2Float(0x42785a1c), SkBits2Float(0x41b2fbe6), SkBits2Float(0x427846a7), SkBits2Float(0x41b2fbe6), SkBits2Float(0x427846a7));  // 22.394f, 62.088f, 22.373f, 62.069f, 22.373f, 62.069f
7676 path.lineTo(SkBits2Float(0x41b2353e), SkBits2Float(0x4277f8d4));  // 22.276f, 61.993f
7677 path.cubicTo(SkBits2Float(0x41b26040), SkBits2Float(0x42780624), SkBits2Float(0x41b16e96), SkBits2Float(0x4277d0e4), SkBits2Float(0x41b16e96), SkBits2Float(0x4277d0e4));  // 22.297f, 62.006f, 22.179f, 61.954f, 22.179f, 61.954f
7678 path.cubicTo(SkBits2Float(0x41b16e96), SkBits2Float(0x4277d0e4), SkBits2Float(0x41b10417), SkBits2Float(0x4277c188), SkBits2Float(0x41b0fffe), SkBits2Float(0x4277c188));  // 22.179f, 61.954f, 22.127f, 61.939f, 22.125f, 61.939f
7679 path.cubicTo(SkBits2Float(0x41b0fffe), SkBits2Float(0x4277bf7c), SkBits2Float(0x41b03f7b), SkBits2Float(0x427778d4), SkBits2Float(0x41b03f7b), SkBits2Float(0x427778d4));  // 22.125f, 61.937f, 22.031f, 61.868f, 22.031f, 61.868f
7680 path.lineTo(SkBits2Float(0x41ae8729), SkBits2Float(0x4276f7ce));  // 21.816f, 61.742f
7681 path.cubicTo(SkBits2Float(0x41adb644), SkBits2Float(0x4276d0e5), SkBits2Float(0x41ad22cf), SkBits2Float(0x42768e55), SkBits2Float(0x41ac8729), SkBits2Float(0x427648b3));  // 21.714f, 61.704f, 21.642f, 61.639f, 21.566f, 61.571f
7682 path.lineTo(SkBits2Float(0x41ab957f), SkBits2Float(0x4275e24d));  // 21.448f, 61.471f
7683 path.cubicTo(SkBits2Float(0x41aa8f5a), SkBits2Float(0x42757df3), SkBits2Float(0x41a9b644), SkBits2Float(0x42751fbe), SkBits2Float(0x41a8a3d5), SkBits2Float(0x42747fff));  // 21.32f, 61.373f, 21.214f, 61.281f, 21.08f, 61.125f
7684 path.cubicTo(SkBits2Float(0x41a6d708), SkBits2Float(0x4273a3d6), SkBits2Float(0x41a645a0), SkBits2Float(0x4272dd2e), SkBits2Float(0x41a58935), SkBits2Float(0x4271b126));  // 20.855f, 60.91f, 20.784f, 60.716f, 20.692f, 60.423f
7685 path.lineTo(SkBits2Float(0x41a5851c), SkBits2Float(0x4271a7ef));  // 20.69f, 60.414f
7686 path.lineTo(SkBits2Float(0x41a56a7c), SkBits2Float(0x42719687));  // 20.677f, 60.397f
7687 path.lineTo(SkBits2Float(0x41a54dd0), SkBits2Float(0x4271820c));  // 20.663f, 60.377f
7688 path.cubicTo(SkBits2Float(0x41a50209), SkBits2Float(0x42711062), SkBits2Float(0x41a4ced6), SkBits2Float(0x42707efa), SkBits2Float(0x41a4be74), SkBits2Float(0x426ff4bc));  // 20.626f, 60.266f, 20.601f, 60.124f, 20.593f, 59.989f
7689 path.cubicTo(SkBits2Float(0x41a51478), SkBits2Float(0x427073b6), SkBits2Float(0x41a576c6), SkBits2Float(0x42710b43), SkBits2Float(0x41a576c6), SkBits2Float(0x42710b43));  // 20.635f, 60.113f, 20.683f, 60.261f, 20.683f, 60.261f
7690 path.cubicTo(SkBits2Float(0x41a71478), SkBits2Float(0x42730418), SkBits2Float(0x41a9df39), SkBits2Float(0x42746666), SkBits2Float(0x41adc6a5), SkBits2Float(0x427526e9));  // 20.885f, 60.754f, 21.234f, 61.1f, 21.722f, 61.288f
7691 path.cubicTo(SkBits2Float(0x41adc499), SkBits2Float(0x427525e3), SkBits2Float(0x41ae47ab), SkBits2Float(0x42754395), SkBits2Float(0x41ae47ab), SkBits2Float(0x42754395));  // 21.721f, 61.287f, 21.785f, 61.316f, 21.785f, 61.316f
7692 path.lineTo(SkBits2Float(0x41afe55d), SkBits2Float(0x4275978d));  // 21.987f, 61.398f
7693 path.cubicTo(SkBits2Float(0x41b27cea), SkBits2Float(0x4275e147), SkBits2Float(0x41b54dd0), SkBits2Float(0x4275d916), SkBits2Float(0x41b772ad), SkBits2Float(0x42758106));  // 22.311f, 61.47f, 22.663f, 61.462f, 22.931f, 61.376f
7694 path.cubicTo(SkBits2Float(0x41b8df38), SkBits2Float(0x42753d70), SkBits2Float(0x41ba1684), SkBits2Float(0x4274d1eb), SkBits2Float(0x41bb4186), SkBits2Float(0x42746979));  // 23.109f, 61.31f, 23.261f, 61.205f, 23.407f, 61.103f
7695 path.lineTo(SkBits2Float(0x41bdbc67), SkBits2Float(0x4273a1cb));  // 23.717f, 60.908f
7696 path.cubicTo(SkBits2Float(0x41c0f1a6), SkBits2Float(0x4272cccd), SkBits2Float(0x41c3cabd), SkBits2Float(0x4272b958), SkBits2Float(0x41c71684), SkBits2Float(0x4272a3d7));  // 24.118f, 60.7f, 24.474f, 60.681f, 24.886f, 60.66f
7697 path.lineTo(SkBits2Float(0x41ca4392), SkBits2Float(0x42728831));  // 25.283f, 60.633f
7698 path.lineTo(SkBits2Float(0x41def9d8), SkBits2Float(0x42723f7d));  // 27.872f, 60.562f
7699 path.cubicTo(SkBits2Float(0x41e15a1a), SkBits2Float(0x42722d0e), SkBits2Float(0x41e4105f), SkBits2Float(0x42723333), SkBits2Float(0x41e60e53), SkBits2Float(0x4271c7ae));  // 28.169f, 60.544f, 28.508f, 60.55f, 28.757f, 60.445f
7700 path.cubicTo(SkBits2Float(0x41e87ceb), SkBits2Float(0x42715810), SkBits2Float(0x41e97ef7), SkBits2Float(0x427077cf), SkBits2Float(0x41ea9165), SkBits2Float(0x426f8a3d));  // 29.061f, 60.336f, 29.187f, 60.117f, 29.321f, 59.885f
7701 path.lineTo(SkBits2Float(0x41ebccc9), SkBits2Float(0x426e8a3d));  // 29.475f, 59.635f
7702 path.cubicTo(SkBits2Float(0x41ebced5), SkBits2Float(0x426e8937), SkBits2Float(0x41ec2d0b), SkBits2Float(0x426e4ccc), SkBits2Float(0x41ec2d0b), SkBits2Float(0x426e4ccc));  // 29.476f, 59.634f, 29.522f, 59.575f, 29.522f, 59.575f
7703 path.lineTo(SkBits2Float(0x41ecae11), SkBits2Float(0x426dde34));  // 29.585f, 59.467f
7704 path.lineTo(SkBits2Float(0x41ecdf38), SkBits2Float(0x426dde34));  // 29.609f, 59.467f
7705 path.lineTo(SkBits2Float(0x41ed26e6), SkBits2Float(0x426dc082));  // 29.644f, 59.438f
7706 path.cubicTo(SkBits2Float(0x41ee1ca9), SkBits2Float(0x426d5a1c), SkBits2Float(0x41eeccc9), SkBits2Float(0x426d1061), SkBits2Float(0x41f01684), SkBits2Float(0x426ce978));  // 29.764f, 59.338f, 29.85f, 59.266f, 30.011f, 59.228f
7707 path.cubicTo(SkBits2Float(0x41f29fbb), SkBits2Float(0x426c8e55), SkBits2Float(0x420cced8), SkBits2Float(0x426bd4fd), SkBits2Float(0x420e6c8a), SkBits2Float(0x426bdf3b));  // 30.328f, 59.139f, 35.202f, 58.958f, 35.606f, 58.968f
7708 path.moveTo(SkBits2Float(0x41b60622), SkBits2Float(0x427adb22));  // 22.753f, 62.714f
7709 path.lineTo(SkBits2Float(0x41b60416), SkBits2Float(0x427ad709));  // 22.752f, 62.71f
7710 path.cubicTo(SkBits2Float(0x41b60416), SkBits2Float(0x427ad603), SkBits2Float(0x41b60416), SkBits2Float(0x427ad915), SkBits2Float(0x41b60622), SkBits2Float(0x427adb22));  // 22.752f, 62.709f, 22.752f, 62.712f, 22.753f, 62.714f
7711 path.moveTo(SkBits2Float(0x41bed2ef), SkBits2Float(0x4274cbc6));  // 23.853f, 61.199f
7712 path.close();
7713 path.moveTo(SkBits2Float(0x41c04fdd), SkBits2Float(0x42746560));  // 24.039f, 61.099f
7714 path.close();
7715 }
7716 
joel_16(skiatest::Reporter * reporter,const char * filename)7717 static void joel_16(skiatest::Reporter* reporter, const char* filename) {
7718     SkPath path;
7719     make_joel_16(path);
7720 testSimplify(reporter, path, filename);
7721 }
7722 
joel_16x(skiatest::Reporter * reporter,const char * filename)7723 static void joel_16x(skiatest::Reporter* reporter, const char* filename) {
7724     SkPath path;
7725     path.setFillType(SkPathFillType::kEvenOdd);
7726     make_joel_16(path);
7727 testSimplify(reporter, path, filename);
7728 }
7729 
coincubics(skiatest::Reporter * reporter,const char * filename)7730 static void coincubics(skiatest::Reporter* reporter, const char* filename) {
7731     SkPath path;
7732     path.moveTo(SkDoubleToScalar(0.00000000000000000), SkDoubleToScalar(0.00000000000000000));
7733     path.cubicTo(SkDoubleToScalar(0.00022939755581319332), SkDoubleToScalar(0.00022927834652364254),
7734         SkDoubleToScalar(0.00022930106206331402), SkDoubleToScalar(0.00022929999977350235),
7735         SkDoubleToScalar(0.00022930069826543331), SkDoubleToScalar(0.00022913678549230099));
7736     path.lineTo(SkDoubleToScalar(0.00022930069826543331), SkDoubleToScalar(0.00022930069826543331));
7737     path.cubicTo(SkDoubleToScalar(0.00011465034913271666), SkDoubleToScalar(0.00011465034913271666),
7738             SkDoubleToScalar(0.00011465061106719077), SkDoubleToScalar(0.00011460937093943357),
7739             SkDoubleToScalar(0.00014331332931760699), SkDoubleToScalar(0.00014325146912597120));
7740 testSimplify(reporter, path, filename);
7741 }
7742 
grshapearc(skiatest::Reporter * reporter,const char * filename)7743 static void grshapearc(skiatest::Reporter* reporter, const char* filename) {
7744     SkPath path;
7745 path.setFillType(SkPathFillType::kWinding);
7746 path.moveTo(25.0098f, 23.1973f);
7747 path.lineTo(25.5689f, 22.3682f);
7748 path.conicTo(26.1281f, 21.5392f, 26.9572f, 22.0984f, 0.707107f);
7749 path.conicTo(27.7862f, 22.6576f, 27.227f, 23.4866f, 0.707107f);
7750 path.lineTo(26.6678f, 24.3156f);
7751 path.conicTo(26.1086f, 25.1447f, 25.2796f, 24.5855f, 0.707107f);
7752 path.conicTo(24.4506f, 24.0263f, 25.0098f, 23.1973f, 0.707107f);
7753 path.close();
7754 path.moveTo(26.6873f, 20.7101f);
7755 path.lineTo(27.2465f, 19.8811f);
7756 path.conicTo(27.8057f, 19.0521f, 28.6348f, 19.6113f, 0.707107f);
7757 path.conicTo(29.4638f, 20.1704f, 28.9046f, 20.9995f, 0.707107f);
7758 path.lineTo(28.3454f, 21.8285f);
7759 path.conicTo(27.7862f, 22.6576f, 26.9572f, 22.0984f, 0.707107f);
7760 path.conicTo(26.1281f, 21.5392f, 26.6873f, 20.7101f, 0.707107f);
7761 path.close();
7762 path.moveTo(28.3649f, 18.223f);
7763 path.lineTo(28.9241f, 17.394f);
7764 path.conicTo(29.4833f, 16.565f, 30.3123f, 17.1241f, 0.707107f);
7765 path.conicTo(31.1414f, 17.6833f, 30.5822f, 18.5124f, 0.707107f);
7766 path.lineTo(30.023f, 19.3414f);
7767 path.conicTo(29.4638f, 20.1704f, 28.6348f, 19.6113f, 0.707107f);
7768 path.conicTo(27.8057f, 19.0521f, 28.3649f, 18.223f, 0.707107f);
7769 path.close();
7770 path.moveTo(30.0425f, 15.7359f);
7771 path.lineTo(30.6017f, 14.9069f);
7772 path.conicTo(31.1609f, 14.0778f, 31.9899f, 14.637f, 0.707107f);
7773 path.conicTo(32.8189f, 15.1962f, 32.2598f, 16.0253f, 0.707107f);
7774 path.lineTo(31.7006f, 16.8543f);
7775 path.conicTo(31.1414f, 17.6833f, 30.3123f, 17.1241f, 0.707107f);
7776 path.conicTo(29.4833f, 16.565f, 30.0425f, 15.7359f, 0.707107f);
7777 path.close();
7778 path.moveTo(31.7201f, 13.2488f);
7779 path.lineTo(32.2793f, 12.4198f);
7780 path.conicTo(32.8385f, 11.5907f, 33.6675f, 12.1499f, 0.707107f);
7781 path.conicTo(34.4965f, 12.7091f, 33.9373f, 13.5381f, 0.707107f);
7782 path.lineTo(33.3781f, 14.3672f);
7783 path.conicTo(32.8189f, 15.1962f, 31.9899f, 14.637f, 0.707107f);
7784 path.conicTo(31.1609f, 14.0778f, 31.7201f, 13.2488f, 0.707107f);
7785 path.close();
7786 path.moveTo(33.3976f, 10.7617f);
7787 path.lineTo(33.9568f, 9.93265f);
7788 path.conicTo(34.516f, 9.10361f, 35.3451f, 9.6628f, 0.707107f);
7789 path.conicTo(36.1741f, 10.222f, 35.6149f, 11.051f, 0.707107f);
7790 path.lineTo(35.0557f, 11.8801f);
7791 path.conicTo(34.4965f, 12.7091f, 33.6675f, 12.1499f, 0.707107f);
7792 path.conicTo(32.8385f, 11.5907f, 33.3976f, 10.7617f, 0.707107f);
7793 path.close();
7794 path.moveTo(35.0752f, 8.27457f);
7795 path.lineTo(35.6344f, 7.44554f);
7796 path.conicTo(36.1936f, 6.6165f, 37.0226f, 7.17569f, 0.707107f);
7797 path.conicTo(37.8517f, 7.73488f, 37.2925f, 8.56392f, 0.707107f);
7798 path.lineTo(36.7333f, 9.39296f);
7799 path.conicTo(36.1741f, 10.222f, 35.3451f, 9.6628f, 0.707107f);
7800 path.conicTo(34.516f, 9.10361f, 35.0752f, 8.27457f, 0.707107f);
7801 path.close();
7802 path.moveTo(36.7528f, 5.78746f);
7803 path.lineTo(37.312f, 4.95842f);
7804 path.conicTo(37.8712f, 4.12939f, 38.7002f, 4.68858f, 0.707107f);
7805 path.conicTo(39.5293f, 5.24777f, 38.9701f, 6.07681f, 0.707107f);
7806 path.lineTo(38.4109f, 6.90585f);
7807 path.conicTo(37.8517f, 7.73488f, 37.0226f, 7.17569f, 0.707107f);
7808 path.conicTo(36.1936f, 6.6165f, 36.7528f, 5.78746f, 0.707107f);
7809 path.close();
7810 path.moveTo(39.9447f, 3.72429f);
7811 path.quadTo(40.3524f, 4.01069f, 40.7489f, 4.31248f);
7812 path.conicTo(41.5445f, 4.9182f, 40.9388f, 5.71387f, 0.707107f);
7813 path.conicTo(40.3331f, 6.50955f, 39.5374f, 5.90383f, 0.707107f);
7814 path.quadTo(39.1714f, 5.62521f, 38.7951f, 5.36088f);
7815 path.conicTo(37.9768f, 4.78608f, 38.5516f, 3.96779f, 0.707107f);
7816 path.conicTo(39.1264f, 3.14949f, 39.9447f, 3.72429f, 0.707107f);
7817 path.close();
7818 path.moveTo(42.3194f, 5.60826f);
7819 path.quadTo(42.707f, 5.95446f, 43.0804f, 6.31583f);
7820 path.conicTo(43.7991f, 7.01122f, 43.1037f, 7.72985f, 0.707107f);
7821 path.conicTo(42.4083f, 8.44848f, 41.6896f, 7.75308f, 0.707107f);
7822 path.quadTo(41.3448f, 7.41944f, 40.9871f, 7.09992f);
7823 path.conicTo(40.2413f, 6.43379f, 40.9074f, 5.68796f, 0.707107f);
7824 path.conicTo(41.5735f, 4.94212f, 42.3194f, 5.60826f, 0.707107f);
7825 path.close();
7826 path.moveTo(44.5406f, 7.84871f);
7827 path.quadTo(44.8959f, 8.25352f, 45.2341f, 8.67266f);
7828 path.conicTo(45.862f, 9.4509f, 45.0838f, 10.0789f, 0.707107f);
7829 path.conicTo(44.3056f, 10.7068f, 43.6776f, 9.9286f, 0.707107f);
7830 path.quadTo(43.3654f, 9.54174f, 43.0374f, 9.16805f);
7831 path.conicTo(42.3778f, 8.41649f, 43.1293f, 7.75682f, 0.707107f);
7832 path.conicTo(43.8809f, 7.09715f, 44.5406f, 7.84871f, 0.707107f);
7833 path.close();
7834 path.moveTo(46.528f, 10.4211f);
7835 path.quadTo(46.815f, 10.8449f, 47.0851f, 11.2796f);
7836 path.conicTo(47.6128f, 12.129f, 46.7633f, 12.6567f, 0.707107f);
7837 path.conicTo(45.9139f, 13.1844f, 45.3862f, 12.335f, 0.707107f);
7838 path.quadTo(45.1369f, 11.9337f, 44.872f, 11.5426f);
7839 path.conicTo(44.3113f, 10.7146f, 45.1393f, 10.1538f, 0.707107f);
7840 path.conicTo(45.9673f, 9.5931f, 46.528f, 10.4211f, 0.707107f);
7841 path.close();
7842 path.moveTo(48.1056f, 13.0782f);
7843 path.quadTo(48.3449f, 13.542f, 48.5654f, 14.015f);
7844 path.conicTo(48.9879f, 14.9213f, 48.0816f, 15.3438f, 0.707107f);
7845 path.conicTo(47.1752f, 15.7663f, 46.7527f, 14.86f, 0.707107f);
7846 path.quadTo(46.5492f, 14.4234f, 46.3283f, 13.9953f);
7847 path.conicTo(45.8698f, 13.1066f, 46.7584f, 12.6481f, 0.707107f);
7848 path.conicTo(47.6471f, 12.1895f, 48.1056f, 13.0782f, 0.707107f);
7849 path.close();
7850 path.moveTo(49.3755f, 15.9538f);
7851 path.quadTo(49.5594f, 16.4493f, 49.7229f, 16.9516f);
7852 path.conicTo(50.0325f, 17.9025f, 49.0816f, 18.2121f, 0.707107f);
7853 path.conicTo(48.1307f, 18.5216f, 47.8212f, 17.5707f, 0.707107f);
7854 path.quadTo(47.6702f, 17.1069f, 47.5005f, 16.6497f);
7855 path.conicTo(47.1526f, 15.7122f, 48.0901f, 15.3642f, 0.707107f);
7856 path.conicTo(49.0276f, 15.0163f, 49.3755f, 15.9538f, 0.707107f);
7857 path.close();
7858 path.moveTo(50.2964f, 18.9923f);
7859 path.quadTo(50.4191f, 19.5089f, 50.5206f, 20.0302f);
7860 path.conicTo(50.7117f, 21.0117f, 49.7302f, 21.2029f, 0.707107f);
7861 path.conicTo(48.7486f, 21.394f, 48.5575f, 20.4125f, 0.707107f);
7862 path.quadTo(48.4638f, 19.9313f, 48.3505f, 19.4544f);
7863 path.conicTo(48.1194f, 18.4815f, 49.0924f, 18.2504f, 0.707107f);
7864 path.conicTo(50.0653f, 18.0193f, 50.2964f, 18.9923f, 0.707107f);
7865 path.close();
7866 path.moveTo(50.8373f, 22.0956f);
7867 path.quadTo(50.8955f, 22.6138f, 50.933f, 23.1341f);
7868 path.conicTo(51.0047f, 24.1315f, 50.0073f, 24.2033f, 0.707107f);
7869 path.conicTo(49.0099f, 24.275f, 48.9381f, 23.2776f, 0.707107f);
7870 path.quadTo(48.9036f, 22.7975f, 48.8498f, 22.3191f);
7871 path.conicTo(48.7381f, 21.3253f, 49.7318f, 21.2136f, 0.707107f);
7872 path.conicTo(50.7255f, 21.1019f, 50.8373f, 22.0956f, 0.707107f);
7873 path.close();
7874 path.moveTo(50.9992f, 25.2099f);
7875 path.quadTo(50.9949f, 25.7358f, 50.9694f, 26.2608f);
7876 path.conicTo(50.9209f, 27.2596f, 49.9221f, 27.2111f, 0.707107f);
7877 path.conicTo(48.9233f, 27.1626f, 48.9718f, 26.1638f, 0.707107f);
7878 path.quadTo(48.9953f, 25.679f, 48.9992f, 25.1938f);
7879 path.conicTo(49.0073f, 24.1938f, 50.0073f, 24.2019f, 0.707107f);
7880 path.conicTo(51.0072f, 24.21f, 50.9992f, 25.2099f, 0.707107f);
7881 path.close();
7882 path.moveTo(50.7839f, 28.3454f);
7883 path.quadTo(50.7172f, 28.8596f, 50.63f, 29.3708f);
7884 path.conicTo(50.4619f, 30.3565f, 49.4761f, 30.1884f, 0.707107f);
7885 path.conicTo(48.4903f, 30.0203f, 48.6584f, 29.0346f, 0.707107f);
7886 path.quadTo(48.7389f, 28.5627f, 48.8005f, 28.088f);
7887 path.conicTo(48.9292f, 27.0963f, 49.9209f, 27.225f, 0.707107f);
7888 path.conicTo(50.9126f, 27.3537f, 50.7839f, 28.3454f, 0.707107f);
7889 path.close();
7890 path.moveTo(50.1906f, 31.437f);
7891 path.quadTo(50.0558f, 31.9646f, 49.899f, 32.4861f);
7892 path.conicTo(49.611f, 33.4438f, 48.6534f, 33.1558f, 0.707107f);
7893 path.conicTo(47.6957f, 32.8679f, 47.9837f, 31.9103f, 0.707107f);
7894 path.quadTo(48.1284f, 31.4289f, 48.2528f, 30.9418f);
7895 path.conicTo(48.5004f, 29.9729f, 49.4693f, 30.2205f, 0.707107f);
7896 path.conicTo(50.4382f, 30.4681f, 50.1906f, 31.437f, 0.707107f);
7897 path.close();
7898 path.moveTo(49.1978f, 34.5114f);
7899 path.quadTo(49.0051f, 35.0016f, 48.7927f, 35.4837f);
7900 path.conicTo(48.3895f, 36.3988f, 47.4744f, 35.9956f, 0.707107f);
7901 path.conicTo(46.5593f, 35.5923f, 46.9625f, 34.6772f, 0.707107f);
7902 path.quadTo(47.1586f, 34.2323f, 47.3364f, 33.7797f);
7903 path.conicTo(47.7023f, 32.849f, 48.6329f, 33.2149f, 0.707107f);
7904 path.conicTo(49.5636f, 33.5807f, 49.1978f, 34.5114f, 0.707107f);
7905 path.close();
7906 path.moveTo(47.8852f, 37.3397f);
7907 path.quadTo(47.6449f, 37.7853f, 47.3876f, 38.2211f);
7908 path.conicTo(46.879f, 39.0821f, 46.018f, 38.5736f, 0.707107f);
7909 path.conicTo(45.1569f, 38.0651f, 45.6655f, 37.204f, 0.707107f);
7910 path.quadTo(45.903f, 36.8018f, 46.1248f, 36.3906f);
7911 path.conicTo(46.5993f, 35.5103f, 47.4796f, 35.9849f, 0.707107f);
7912 path.conicTo(48.3598f, 36.4595f, 47.8852f, 37.3397f, 0.707107f);
7913 path.close();
7914 path.moveTo(46.3154f, 39.8881f);
7915 path.quadTo(46.0303f, 40.2962f, 45.7299f, 40.693f);
7916 path.conicTo(45.1264f, 41.4903f, 44.3291f, 40.8867f, 0.707107f);
7917 path.conicTo(43.5318f, 40.2831f, 44.1353f, 39.4858f, 0.707107f);
7918 path.quadTo(44.4126f, 39.1195f, 44.6757f, 38.7428f);
7919 path.conicTo(45.2483f, 37.923f, 46.0682f, 38.4956f, 0.707107f);
7920 path.conicTo(46.888f, 39.0682f, 46.3154f, 39.8881f, 0.707107f);
7921 path.close();
7922 path.moveTo(44.4398f, 42.2654f);
7923 path.quadTo(44.095f, 42.6536f, 43.7349f, 43.0278f);
7924 path.conicTo(43.0415f, 43.7484f, 42.321f, 43.055f, 0.707107f);
7925 path.conicTo(41.6004f, 42.3616f, 42.2938f, 41.641f, 0.707107f);
7926 path.quadTo(42.6261f, 41.2957f, 42.9444f, 40.9374f);
7927 path.conicTo(43.6084f, 40.1897f, 44.3561f, 40.8537f, 0.707107f);
7928 path.conicTo(45.1038f, 41.5177f, 44.4398f, 42.2654f, 0.707107f);
7929 path.close();
7930 path.moveTo(42.2075f, 44.4911f);
7931 path.quadTo(41.804f, 44.8473f, 41.3862f, 45.1865f);
7932 path.conicTo(40.6098f, 45.8167f, 39.9795f, 45.0403f, 0.707107f);
7933 path.conicTo(39.3493f, 44.2639f, 40.1257f, 43.6336f, 0.707107f);
7934 path.quadTo(40.5114f, 43.3205f, 40.8838f, 42.9918f);
7935 path.conicTo(41.6335f, 42.3299f, 42.2953f, 43.0796f, 0.707107f);
7936 path.conicTo(42.9572f, 43.8292f, 42.2075f, 44.4911f, 0.707107f);
7937 path.close();
7938 path.moveTo(39.6379f, 46.488f);
7939 path.quadTo(39.2151f, 46.776f, 38.7814f, 47.0471f);
7940 path.conicTo(37.9334f, 47.5771f, 37.4034f, 46.7292f, 0.707107f);
7941 path.conicTo(36.8733f, 45.8812f, 37.7213f, 45.3511f, 0.707107f);
7942 path.quadTo(38.1217f, 45.1009f, 38.5119f, 44.835f);
7943 path.conicTo(39.3383f, 44.2721f, 39.9013f, 45.0985f, 0.707107f);
7944 path.conicTo(40.4643f, 45.925f, 39.6379f, 46.488f, 0.707107f);
7945 path.close();
7946 path.moveTo(36.9864f, 48.0722f);
7947 path.quadTo(36.5234f, 48.3127f, 36.0513f, 48.5344f);
7948 path.conicTo(35.1461f, 48.9595f, 34.7211f, 48.0543f, 0.707107f);
7949 path.conicTo(34.296f, 47.1491f, 35.2012f, 46.7241f, 0.707107f);
7950 path.quadTo(35.6371f, 46.5194f, 36.0644f, 46.2974f);
7951 path.conicTo(36.9518f, 45.8364f, 37.4128f, 46.7238f, 0.707107f);
7952 path.conicTo(37.8738f, 47.6112f, 36.9864f, 48.0722f, 0.707107f);
7953 path.close();
7954 path.moveTo(34.1153f, 49.3498f);
7955 path.quadTo(33.6206f, 49.535f, 33.1187f, 49.6999f);
7956 path.conicTo(32.1687f, 50.0122f, 31.8565f, 49.0622f, 0.707107f);
7957 path.conicTo(31.5442f, 48.1122f, 32.4942f, 47.7999f, 0.707107f);
7958 path.quadTo(32.9575f, 47.6477f, 33.4141f, 47.4767f);
7959 path.conicTo(34.3507f, 47.1261f, 34.7012f, 48.0627f, 0.707107f);
7960 path.conicTo(35.0518f, 48.9992f, 34.1153f, 49.3498f, 0.707107f);
7961 path.close();
7962 path.moveTo(31.08f, 50.2791f);
7963 path.quadTo(30.5637f, 50.4033f, 30.0427f, 50.5063f);
7964 path.conicTo(29.0617f, 50.7002f, 28.8678f, 49.7192f, 0.707107f);
7965 path.conicTo(28.6738f, 48.7382f, 29.6548f, 48.5443f, 0.707107f);
7966 path.quadTo(30.1357f, 48.4492f, 30.6122f, 48.3346f);
7967 path.conicTo(31.5845f, 48.1007f, 31.8184f, 49.073f, 0.707107f);
7968 path.conicTo(32.0522f, 50.0453f, 31.08f, 50.2791f, 0.707107f);
7969 path.close();
7970 path.moveTo(27.9769f, 50.829f);
7971 path.quadTo(27.4588f, 50.8887f, 26.9386f, 50.9276f);
7972 path.conicTo(25.9414f, 51.0022f, 25.8668f, 50.005f, 0.707107f);
7973 path.conicTo(25.7923f, 49.0078f, 26.7895f, 48.9332f, 0.707107f);
7974 path.quadTo(27.2696f, 48.8973f, 27.7479f, 48.8422f);
7975 path.conicTo(28.7413f, 48.7277f, 28.8558f, 49.7211f, 0.707107f);
7976 path.conicTo(28.9703f, 50.7145f, 27.9769f, 50.829f, 0.707107f);
7977 path.close();
7978 path.moveTo(24.8625f, 50.9996f);
7979 path.quadTo(24.3373f, 50.9969f, 23.8128f, 50.9729f);
7980 path.conicTo(22.8138f, 50.9272f, 22.8595f, 49.9283f, 0.707107f);
7981 path.conicTo(22.9051f, 48.9293f, 23.9041f, 48.975f, 0.707107f);
7982 path.quadTo(24.3884f, 48.9971f, 24.8731f, 48.9997f);
7983 path.conicTo(25.8731f, 49.005f, 25.8678f, 50.005f, 0.707107f);
7984 path.conicTo(25.8624f, 51.0049f, 24.8625f, 50.9996f, 0.707107f);
7985 path.close();
7986 path.moveTo(21.7268f, 50.7931f);
7987 path.quadTo(21.2121f, 50.7278f, 20.7005f, 50.642f);
7988 path.conicTo(19.7143f, 50.4767f, 19.8796f, 49.4905f, 0.707107f);
7989 path.conicTo(20.045f, 48.5042f, 21.0312f, 48.6696f, 0.707107f);
7990 path.quadTo(21.5036f, 48.7488f, 21.9786f, 48.8091f);
7991 path.conicTo(22.9707f, 48.9349f, 22.8448f, 49.927f, 0.707107f);
7992 path.conicTo(22.7189f, 50.919f, 21.7268f, 50.7931f, 0.707107f);
7993 path.close();
7994 path.moveTo(18.6372f, 50.2094f);
7995 path.quadTo(18.1089f, 50.0761f, 17.5865f, 49.9207f);
7996 path.conicTo(16.628f, 49.6356f, 16.9132f, 48.6771f, 0.707107f);
7997 path.conicTo(17.1983f, 47.7186f, 18.1568f, 48.0037f, 0.707107f);
7998 path.quadTo(18.639f, 48.1472f, 19.1267f, 48.2702f);
7999 path.conicTo(20.0963f, 48.515f, 19.8516f, 49.4846f, 0.707107f);
8000 path.conicTo(19.6068f, 50.4542f, 18.6372f, 50.2094f, 0.707107f);
8001 path.close();
8002 path.moveTo(15.5577f, 49.2248f);
8003 path.quadTo(15.0665f, 49.0334f, 14.5834f, 48.8222f);
8004 path.conicTo(13.6672f, 48.4215f, 14.0678f, 47.5053f, 0.707107f);
8005 path.conicTo(14.4684f, 46.589f, 15.3847f, 46.9897f, 0.707107f);
8006 path.quadTo(15.8306f, 47.1846f, 16.284f, 47.3614f);
8007 path.conicTo(17.2158f, 47.7246f, 16.8526f, 48.6563f, 0.707107f);
8008 path.conicTo(16.4894f, 49.588f, 15.5577f, 49.2248f, 0.707107f);
8009 path.close();
8010 path.moveTo(12.7231f, 47.9189f);
8011 path.quadTo(12.2765f, 47.6797f, 11.8395f, 47.4233f);
8012 path.conicTo(10.9771f, 46.9171f, 11.4833f, 46.0547f, 0.707107f);
8013 path.conicTo(11.9894f, 45.1922f, 12.8519f, 45.6984f, 0.707107f);
8014 path.quadTo(13.2552f, 45.9351f, 13.6675f, 46.156f);
8015 path.conicTo(14.549f, 46.6282f, 14.0768f, 47.5096f, 0.707107f);
8016 path.conicTo(13.6046f, 48.3911f, 12.7231f, 47.9189f, 0.707107f);
8017 path.close();
8018 path.moveTo(10.1686f, 46.3548f);
8019 path.quadTo(9.76024f, 46.0712f, 9.363f, 45.7722f);
8020 path.conicTo(8.56406f, 45.1708f, 9.16549f, 44.3718f, 0.707107f);
8021 path.conicTo(9.76691f, 43.5729f, 10.5658f, 44.1743f, 0.707107f);
8022 path.quadTo(10.9325f, 44.4504f, 11.3095f, 44.7122f);
8023 path.conicTo(12.1308f, 45.2826f, 11.5604f, 46.1039f, 0.707107f);
8024 path.conicTo(10.9899f, 46.9253f, 10.1686f, 46.3548f, 0.707107f);
8025 path.close();
8026 path.moveTo(7.78853f, 44.4876f);
8027 path.quadTo(7.39972f, 44.1442f, 7.02492f, 43.7855f);
8028 path.conicTo(6.3024f, 43.0942f, 6.99374f, 42.3717f, 0.707107f);
8029 path.conicTo(7.68509f, 41.6492f, 8.40761f, 42.3405f, 0.707107f);
8030 path.quadTo(8.7536f, 42.6715f, 9.11249f, 42.9885f);
8031 path.conicTo(9.86201f, 43.6505f, 9.20003f, 44.4f, 0.707107f);
8032 path.conicTo(8.53805f, 45.1496f, 7.78853f, 44.4876f, 0.707107f);
8033 path.close();
8034 path.moveTo(5.55855f, 42.2635f);
8035 path.quadTo(5.20148f, 41.8614f, 4.86131f, 41.4449f);
8036 path.conicTo(4.22883f, 40.6703f, 5.0034f, 40.0378f, 0.707107f);
8037 path.conicTo(5.77797f, 39.4053f, 6.41046f, 40.1799f, 0.707107f);
8038 path.quadTo(6.72443f, 40.5644f, 7.05403f, 40.9356f);
8039 path.conicTo(7.71802f, 41.6833f, 6.97028f, 42.3473f, 0.707107f);
8040 path.conicTo(6.22254f, 43.0113f, 5.55855f, 42.2635f, 0.707107f);
8041 path.close();
8042 path.moveTo(3.55261f, 39.6973f);
8043 path.quadTo(3.26341f, 39.2752f, 2.99107f, 38.8422f);
8044 path.conicTo(2.45867f, 37.9957f, 3.30517f, 37.4633f, 0.707107f);
8045 path.conicTo(4.15167f, 36.9309f, 4.68406f, 37.7774f, 0.707107f);
8046 path.quadTo(4.93548f, 38.1772f, 5.20241f, 38.5667f);
8047 path.conicTo(5.76769f, 39.3916f, 4.94279f, 39.9569f, 0.707107f);
8048 path.conicTo(4.11789f, 40.5222f, 3.55261f, 39.6973f, 0.707107f);
8049 path.close();
8050 path.moveTo(1.96145f, 37.0509f);
8051 path.quadTo(1.71975f, 36.5889f, 1.49677f, 36.1175f);
8052 path.conicTo(1.06917f, 35.2135f, 1.97315f, 34.7859f, 0.707107f);
8053 path.conicTo(2.87712f, 34.3583f, 3.30471f, 35.2623f, 0.707107f);
8054 path.quadTo(3.51053f, 35.6974f, 3.73364f, 36.1239f);
8055 path.conicTo(4.19714f, 37.01f, 3.31105f, 37.4735f, 0.707107f);
8056 path.conicTo(2.42495f, 37.937f, 1.96145f, 37.0509f, 0.707107f);
8057 path.close();
8058 path.moveTo(0.676191f, 34.1844f);
8059 path.quadTo(0.489621f, 33.6902f, 0.323275f, 33.189f);
8060 path.conicTo(0.00831527f, 32.2399f, 0.95742f, 31.9249f, 0.707107f);
8061 path.conicTo(1.90653f, 31.6099f, 2.22149f, 32.559f, 0.707107f);
8062 path.quadTo(2.37504f, 33.0218f, 2.54726f, 33.4779f);
8063 path.conicTo(2.9005f, 34.4134f, 1.96497f, 34.7666f, 0.707107f);
8064 path.conicTo(1.02943f, 35.1199f, 0.676191f, 34.1844f, 0.707107f);
8065 path.close();
8066 path.moveTo(-0.261658f, 31.1521f);
8067 path.quadTo(-0.387304f, 30.6362f, -0.491779f, 30.1156f);
8068 path.conicTo(-0.68853f, 29.1351f, 0.291923f, 28.9384f, 0.707107f);
8069 path.conicTo(1.27238f, 28.7416f, 1.46913f, 29.7221f, 0.707107f);
8070 path.quadTo(1.56557f, 30.2026f, 1.68155f, 30.6789f);
8071 path.conicTo(1.91817f, 31.6505f, 0.946565f, 31.8871f, 0.707107f);
8072 path.conicTo(-0.0250367f, 32.1237f, -0.261658f, 31.1521f, 0.707107f);
8073 path.close();
8074 path.moveTo(-0.820549f, 28.0495f);
8075 path.quadTo(-0.881733f, 27.5314f, -0.922089f, 27.0113f);
8076 path.conicTo(-0.999449f, 26.0143f, -0.00244591f, 25.9369f, 0.707107f);
8077 path.conicTo(0.994557f, 25.8596f, 1.07192f, 26.8566f, 0.707107f);
8078 path.quadTo(1.10917f, 27.3367f, 1.16565f, 27.8149f);
8079 path.conicTo(1.28293f, 28.808f, 0.289834f, 28.9253f, 0.707107f);
8080 path.conicTo(-0.703265f, 29.0426f, -0.820549f, 28.0495f, 0.707107f);
8081 path.close();
8082 path.moveTo(-0.999918f, 24.9349f);
8083 path.quadTo(-0.998605f, 24.4104f, -0.976138f, 23.8863f);
8084 path.conicTo(-0.933305f, 22.8873f, 0.0657772f, 22.9301f, 0.707107f);
8085 path.conicTo(1.06486f, 22.9729f, 1.02203f, 23.972f, 0.707107f);
8086 path.quadTo(1.00129f, 24.4557f, 1.00008f, 24.9399f);
8087 path.conicTo(0.997572f, 25.9399f, -0.0024244f, 25.9374f, 0.707107f);
8088 path.conicTo(-1.00242f, 25.9349f, -0.999918f, 24.9349f, 0.707107f);
8089 path.close();
8090 path.moveTo(-0.802212f, 21.7991f);
8091 path.quadTo(-0.738311f, 21.284f, -0.653903f, 20.7719f);
8092 path.conicTo(-0.491283f, 19.7852f, 0.495406f, 19.9478f, 0.707107f);
8093 path.conicTo(1.48209f, 20.1104f, 1.31948f, 21.0971f, 0.707107f);
8094 path.quadTo(1.24156f, 21.5698f, 1.18257f, 22.0453f);
8095 path.conicTo(1.05946f, 23.0377f, 0.0670681f, 22.9146f, 0.707107f);
8096 path.conicTo(-0.925325f, 22.7915f, -0.802212f, 21.7991f, 0.707107f);
8097 path.close();
8098 path.moveTo(-0.228066f, 18.7115f);
8099 path.quadTo(-0.096172f, 18.1824f, 0.0577899f, 17.6593f);
8100 path.conicTo(0.340124f, 16.7f, 1.29944f, 16.9823f, 0.707107f);
8101 path.conicTo(2.25876f, 17.2646f, 1.97642f, 18.2239f, 0.707107f);
8102 path.quadTo(1.8343f, 18.7068f, 1.71255f, 19.1953f);
8103 path.conicTo(1.47069f, 20.1656f, 0.50038f, 19.9237f, 0.707107f);
8104 path.conicTo(-0.46993f, 19.6819f, -0.228066f, 18.7115f, 0.707107f);
8105 path.close();
8106 path.moveTo(0.74831f, 15.6269f);
8107 path.quadTo(0.938539f, 15.1347f, 1.14857f, 14.6506f);
8108 path.conicTo(1.54662f, 13.7333f, 2.46398f, 14.1313f, 0.707107f);
8109 path.conicTo(3.38135f, 14.5294f, 2.9833f, 15.4467f, 0.707107f);
8110 path.quadTo(2.78942f, 15.8936f, 2.61382f, 16.3479f);
8111 path.conicTo(2.25331f, 17.2806f, 1.32056f, 16.9201f, 0.707107f);
8112 path.conicTo(0.387801f, 16.5596f, 0.74831f, 15.6269f, 0.707107f);
8113 path.close();
8114 path.moveTo(2.04744f, 12.7861f);
8115 path.quadTo(2.28569f, 12.3384f, 2.5412f, 11.9003f);
8116 path.conicTo(3.04504f, 11.0365f, 3.90884f, 11.5403f, 0.707107f);
8117 path.conicTo(4.77264f, 12.0442f, 4.26881f, 12.908f, 0.707107f);
8118 path.quadTo(4.03293f, 13.3123f, 3.81302f, 13.7256f);
8119 path.conicTo(3.34325f, 14.6084f, 2.46046f, 14.1386f, 0.707107f);
8120 path.conicTo(1.57767f, 13.6689f, 2.04744f, 12.7861f, 0.707107f);
8121 path.close();
8122 path.moveTo(3.60589f, 10.2253f);
8123 path.quadTo(3.88812f, 9.81661f, 4.18576f, 9.419f);
8124 path.conicTo(4.78503f, 8.61845f, 5.58558f, 9.21772f, 0.707107f);
8125 path.conicTo(6.38613f, 9.81699f, 5.78686f, 10.6175f, 0.707107f);
8126 path.quadTo(5.51211f, 10.9846f, 5.25159f, 11.3618f);
8127 path.conicTo(4.68333f, 12.1847f, 3.86048f, 11.6164f, 0.707107f);
8128 path.conicTo(3.03763f, 11.0481f, 3.60589f, 10.2253f, 0.707107f);
8129 path.close();
8130 path.moveTo(5.46482f, 7.84259f);
8131 path.quadTo(5.80682f, 7.4532f, 6.16407f, 7.07773f);
8132 path.conicTo(6.85339f, 6.35327f, 7.57785f, 7.04259f, 0.707107f);
8133 path.conicTo(8.30231f, 7.73191f, 7.61299f, 8.45636f, 0.707107f);
8134 path.quadTo(7.28322f, 8.80295f, 6.96752f, 9.16239f);
8135 path.conicTo(6.30762f, 9.91375f, 5.55627f, 9.25385f, 0.707107f);
8136 path.conicTo(4.80492f, 8.59395f, 5.46482f, 7.84259f, 0.707107f);
8137 path.close();
8138 path.moveTo(7.68062f, 5.60827f);
8139 path.quadTo(8.08142f, 5.25031f, 8.49666f, 4.90921f);
8140 path.conicTo(9.26938f, 4.27447f, 9.90412f, 5.04719f, 0.707107f);
8141 path.conicTo(10.5389f, 5.81992f, 9.76614f, 6.45466f, 0.707107f);
8142 path.quadTo(9.38285f, 6.76951f, 9.01289f, 7.09994f);
8143 path.conicTo(8.26705f, 7.76607f, 7.60092f, 7.02024f, 0.707107f);
8144 path.conicTo(6.93479f, 6.2744f, 7.68062f, 5.60827f, 0.707107f);
8145 path.close();
8146 path.moveTo(10.2392f, 3.59627f);
8147 path.quadTo(10.6626f, 3.30433f, 11.0971f, 3.02935f);
8148 path.conicTo(11.9421f, 2.49463f, 12.4768f, 3.33965f, 0.707107f);
8149 path.conicTo(13.0116f, 4.18467f, 12.1666f, 4.7194f, 0.707107f);
8150 path.quadTo(11.7654f, 4.97322f, 11.3747f, 5.24271f);
8151 path.conicTo(10.5515f, 5.81043f, 9.98373f, 4.98721f, 0.707107f);
8152 path.conicTo(9.41601f, 4.16399f, 10.2392f, 3.59627f, 0.707107f);
8153 path.close();
8154 path.moveTo(12.8847f, 1.99524f);
8155 path.quadTo(13.3459f, 1.75234f, 13.8165f, 1.52812f);
8156 path.conicTo(14.7193f, 1.09799f, 15.1494f, 2.00075f, 0.707107f);
8157 path.conicTo(15.5795f, 2.90352f, 14.6768f, 3.33365f, 0.707107f);
8158 path.quadTo(14.2424f, 3.54063f, 13.8166f, 3.76484f);
8159 path.conicTo(12.9318f, 4.23081f, 12.4658f, 3.34601f, 0.707107f);
8160 path.conicTo(11.9999f, 2.46122f, 12.8847f, 1.99524f, 0.707107f);
8161 path.close();
8162 path.moveTo(15.7467f, 0.702339f);
8163 path.quadTo(16.2402f, 0.514409f, 16.7409f, 0.346672f);
8164 path.conicTo(17.6891f, 0.029011f, 18.0067f, 0.977215f, 0.707107f);
8165 path.conicTo(18.3244f, 1.92542f, 17.3762f, 2.24308f, 0.707107f);
8166 path.quadTo(16.914f, 2.39792f, 16.4585f, 2.57139f);
8167 path.conicTo(15.524f, 2.92729f, 15.1681f, 1.99276f, 0.707107f);
8168 path.conicTo(14.8122f, 1.05824f, 15.7467f, 0.702339f, 0.707107f);
8169 path.close();
8170 path.moveTo(18.7758f, -0.24399f);
8171 path.quadTo(19.2913f, -0.371107f, 19.8116f, -0.477061f);
8172 path.conicTo(20.7915f, -0.676608f, 20.9911f, 0.303281f, 0.707107f);
8173 path.conicTo(21.1906f, 1.28317f, 20.2107f, 1.48272f, 0.707107f);
8174 path.quadTo(19.7304f, 1.58052f, 19.2546f, 1.69785f);
8175 path.conicTo(18.2836f, 1.93725f, 18.0443f, 0.966329f, 0.707107f);
8176 path.conicTo(17.8049f, -0.00459272f, 18.7758f, -0.24399f, 0.707107f);
8177 path.close();
8178 path.moveTo(21.878f, -0.811882f);
8179 path.quadTo(22.396f, -0.874528f, 22.916f, -0.916348f);
8180 path.conicTo(23.9128f, -0.996504f, 23.993f, 0.000278629f, 0.707107f);
8181 path.conicTo(24.0731f, 0.997061f, 23.0764f, 1.07722f, 0.707107f);
8182 path.quadTo(22.5963f, 1.11582f, 22.1182f, 1.17365f);
8183 path.conicTo(21.1254f, 1.29372f, 21.0053f, 0.300958f, 0.707107f);
8184 path.conicTo(20.8853f, -0.691807f, 21.878f, -0.811882f, 0.707107f);
8185 path.close();
8186 path.moveTo(24.9926f, -0.999999f);
8187 path.quadTo(25.5166f, -1.00015f, 26.0401f, -0.979188f);
8188 path.conicTo(27.0393f, -0.939179f, 26.9992f, 0.0600199f, 0.707107f);
8189 path.conicTo(26.9592f, 1.05922f, 25.96f, 1.01921f, 0.707107f);
8190 path.quadTo(25.4768f, 0.999863f, 24.9932f, 1);
8191 path.conicTo(23.9932f, 1.00029f, 23.9929f, 0.000287339f, 0.707107f);
8192 path.conicTo(23.9926f, -0.999713f, 24.9926f, -0.999999f, 0.707107f);
8193 path.close();
8194 path.moveTo(28.1286f, -0.811081f);
8195 path.quadTo(28.6441f, -0.748593f, 29.1567f, -0.665572f);
8196 path.conicTo(30.1439f, -0.505698f, 29.984f, 0.48144f, 0.707107f);
8197 path.conicTo(29.8241f, 1.46858f, 28.837f, 1.3087f, 0.707107f);
8198 path.quadTo(28.3638f, 1.23207f, 27.8879f, 1.17439f);
8199 path.conicTo(26.8952f, 1.05406f, 27.0155f, 0.0613233f, 0.707107f);
8200 path.conicTo(27.1359f, -0.931411f, 28.1286f, -0.811081f, 0.707107f);
8201 path.close();
8202 path.moveTo(31.214f, -0.246499f);
8203 path.quadTo(31.7439f, -0.116076f, 32.2679f, 0.0364622f);
8204 path.conicTo(33.228f, 0.315996f, 32.9485f, 1.27613f, 0.707107f);
8205 path.conicTo(32.6689f, 2.23627f, 31.7088f, 1.95673f, 0.707107f);
8206 path.quadTo(31.2252f, 1.81593f, 30.736f, 1.69554f);
8207 path.conicTo(29.765f, 1.45654f, 30.004f, 0.48552f, 0.707107f);
8208 path.conicTo(30.243f, -0.485499f, 31.214f, -0.246499f, 0.707107f);
8209 path.close();
8210 path.moveTo(34.3038f, 0.721629f);
8211 path.quadTo(34.797f, 0.910612f, 35.282f, 1.11946f);
8212 path.conicTo(36.2005f, 1.51493f, 35.805f, 2.43341f, 0.707107f);
8213 path.conicTo(35.4096f, 3.35189f, 34.4911f, 2.95642f, 0.707107f);
8214 path.quadTo(34.0434f, 2.76365f, 33.5881f, 2.5892f);
8215 path.conicTo(32.6543f, 2.23137f, 33.0122f, 1.29758f, 0.707107f);
8216 path.conicTo(33.37f, 0.363796f, 34.3038f, 0.721629f, 0.707107f);
8217 path.close();
8218 path.moveTo(37.1508f, 2.01396f);
8219 path.quadTo(37.5996f, 2.2512f, 38.0388f, 2.50578f);
8220 path.conicTo(38.904f, 3.00727f, 38.4025f, 3.87244f, 0.707107f);
8221 path.conicTo(37.901f, 4.7376f, 37.0358f, 4.23612f, 0.707107f);
8222 path.quadTo(36.6304f, 4.00111f, 36.2161f, 3.78211f);
8223 path.conicTo(35.332f, 3.31476f, 35.7994f, 2.43069f, 0.707107f);
8224 path.conicTo(36.2667f, 1.54661f, 37.1508f, 2.01396f, 0.707107f);
8225 path.close();
8226 path.moveTo(39.718f, 3.56681f);
8227 path.quadTo(40.1269f, 3.84765f, 40.5249f, 4.14392f);
8228 path.conicTo(41.3271f, 4.74104f, 40.73f, 5.54319f, 0.707107f);
8229 path.conicTo(40.1329f, 6.34535f, 39.3307f, 5.74823f, 0.707107f);
8230 path.quadTo(38.9634f, 5.47478f, 38.5858f, 5.21552f);
8231 path.conicTo(37.7615f, 4.64945f, 38.3275f, 3.82509f, 0.707107f);
8232 path.conicTo(38.8936f, 3.00074f, 39.718f, 3.56681f, 0.707107f);
8233 path.close();
8234 path.moveTo(42.1033f, 5.41741f);
8235 path.quadTo(42.4933f, 5.75802f, 42.8694f, 6.11388f);
8236 path.conicTo(43.5958f, 6.80115f, 42.9085f, 7.52755f, 0.707107f);
8237 path.conicTo(42.2212f, 8.25394f, 41.4948f, 7.56667f, 0.707107f);
8238 path.quadTo(41.1476f, 7.23817f, 40.7876f, 6.92375f);
8239 path.conicTo(40.0345f, 6.26593f, 40.6923f, 5.51275f, 0.707107f);
8240 path.conicTo(41.3501f, 4.75958f, 42.1033f, 5.41741f, 0.707107f);
8241 path.close();
8242 path.moveTo(44.3419f, 7.62498f);
8243 path.quadTo(44.7007f, 8.02444f, 45.0428f, 8.43835f);
8244 path.conicTo(45.6797f, 9.20922f, 44.9089f, 9.84622f, 0.707107f);
8245 path.conicTo(44.138f, 10.4832f, 43.501f, 9.71234f, 0.707107f);
8246 path.quadTo(43.1852f, 9.3302f, 42.854f, 8.96151f);
8247 path.conicTo(42.1858f, 8.21759f, 42.9297f, 7.54932f, 0.707107f);
8248 path.conicTo(43.6736f, 6.88106f, 44.3419f, 7.62498f, 0.707107f);
8249 path.close();
8250 path.moveTo(46.3599f, 10.1759f);
8251 path.quadTo(46.6546f, 10.6005f, 46.9322f, 11.0366f);
8252 path.conicTo(47.4693f, 11.8801f, 46.6257f, 12.4172f, 0.707107f);
8253 path.conicTo(45.7822f, 12.9542f, 45.2451f, 12.1107f, 0.707107f);
8254 path.quadTo(44.9889f, 11.7082f, 44.7168f, 11.3162f);
8255 path.conicTo(44.1467f, 10.4947f, 44.9682f, 9.92452f, 0.707107f);
8256 path.conicTo(45.7897f, 9.35435f, 46.3599f, 10.1759f, 0.707107f);
8257 path.close();
8258 path.moveTo(47.9708f, 12.8204f);
8259 path.quadTo(48.2149f, 13.2808f, 48.4403f, 13.7506f);
8260 path.conicTo(48.873f, 14.6521f, 47.9715f, 15.0848f, 0.707107f);
8261 path.conicTo(47.0699f, 15.5174f, 46.6372f, 14.6159f, 0.707107f);
8262 path.quadTo(46.4291f, 14.1822f, 46.2038f, 13.7573f);
8263 path.conicTo(45.7354f, 12.8738f, 46.6188f, 12.4054f, 0.707107f);
8264 path.conicTo(47.5023f, 11.9369f, 47.9708f, 12.8204f, 0.707107f);
8265 path.close();
8266 path.moveTo(49.2713f, 15.6778f);
8267 path.quadTo(49.4606f, 16.1706f, 49.6297f, 16.6708f);
8268 path.conicTo(49.9501f, 17.6181f, 49.0028f, 17.9384f, 0.707107f);
8269 path.conicTo(48.0555f, 18.2588f, 47.7351f, 17.3115f, 0.707107f);
8270 path.quadTo(47.5791f, 16.8499f, 47.4043f, 16.3949f);
8271 path.conicTo(47.0458f, 15.4614f, 47.9793f, 15.1029f, 0.707107f);
8272 path.conicTo(48.9128f, 14.7443f, 49.2713f, 15.6778f, 0.707107f);
8273 path.close();
8274 path.moveTo(50.2261f, 18.7037f);
8275 path.quadTo(50.3547f, 19.2188f, 50.4621f, 19.7388f);
8276 path.conicTo(50.6645f, 20.7182f, 49.6852f, 20.9205f, 0.707107f);
8277 path.conicTo(48.7059f, 21.1229f, 48.5035f, 20.1436f, 0.707107f);
8278 path.quadTo(48.4043f, 19.6636f, 48.2856f, 19.1881f);
8279 path.conicTo(48.0435f, 18.2178f, 49.0137f, 17.9757f, 0.707107f);
8280 path.conicTo(49.984f, 17.7335f, 50.2261f, 18.7037f, 0.707107f);
8281 path.close();
8282 path.moveTo(50.803f, 21.8055f);
8283 path.quadTo(50.8671f, 22.3234f, 50.9104f, 22.8434f);
8284 path.conicTo(50.9934f, 23.8399f, 49.9968f, 23.9229f, 0.707107f);
8285 path.conicTo(49.0002f, 24.0058f, 48.9173f, 23.0093f, 0.707107f);
8286 path.quadTo(48.8773f, 22.5293f, 48.8182f, 22.0513f);
8287 path.conicTo(48.6953f, 21.0588f, 49.6877f, 20.936f, 0.707107f);
8288 path.conicTo(50.6801f, 20.8131f, 50.803f, 21.8055f, 0.707107f);
8289 path.close();
8290 path.moveTo(50.9999f, 24.9202f);
8291 path.quadTo(51.0015f, 25.4434f, 50.982f, 25.9664f);
8292 path.conicTo(50.9449f, 26.9657f, 49.9456f, 26.9286f, 0.707107f);
8293 path.conicTo(48.9463f, 26.8914f, 48.9834f, 25.8921f, 0.707107f);
8294 path.quadTo(49.0014f, 25.4094f, 48.9999f, 24.9263f);
8295 path.conicTo(48.9968f, 23.9263f, 49.9968f, 23.9232f, 0.707107f);
8296 path.conicTo(50.9968f, 23.9202f, 50.9999f, 24.9202f, 0.707107f);
8297 path.close();
8298 path.moveTo(50.8198f, 28.0562f);
8299 path.quadTo(50.7587f, 28.5721f, 50.677f, 29.0852f);
8300 path.conicTo(50.5199f, 30.0728f, 49.5323f, 29.9157f, 0.707107f);
8301 path.conicTo(48.5448f, 29.7586f, 48.7019f, 28.771f, 0.707107f);
8302 path.quadTo(48.7772f, 28.2974f, 48.8336f, 27.8211f);
8303 path.conicTo(48.9512f, 26.8281f, 49.9442f, 26.9456f, 0.707107f);
8304 path.conicTo(50.9373f, 27.0632f, 50.8198f, 28.0562f, 0.707107f);
8305 path.close();
8306 path.moveTo(50.2647f, 31.1395f);
8307 path.quadTo(50.1358f, 31.6701f, 49.9847f, 32.1949f);
8308 path.conicTo(49.7079f, 33.1558f, 48.747f, 32.8791f, 0.707107f);
8309 path.conicTo(47.786f, 32.6024f, 48.0628f, 31.6414f, 0.707107f);
8310 path.quadTo(48.2022f, 31.1571f, 48.3213f, 30.6672f);
8311 path.conicTo(48.5574f, 29.6955f, 49.5291f, 29.9317f, 0.707107f);
8312 path.conicTo(50.5009f, 30.1678f, 50.2647f, 31.1395f, 0.707107f);
8313 path.close();
8314 path.moveTo(49.3049f, 34.2343f);
8315 path.quadTo(49.1171f, 34.7285f, 48.9095f, 35.2145f);
8316 path.conicTo(48.5166f, 36.1341f, 47.597f, 35.7412f, 0.707107f);
8317 path.conicTo(46.6774f, 35.3483f, 47.0703f, 34.4288f, 0.707107f);
8318 path.quadTo(47.262f, 33.9801f, 47.4353f, 33.524f);
8319 path.conicTo(47.7904f, 32.5892f, 48.7252f, 32.9444f, 0.707107f);
8320 path.conicTo(49.66f, 33.2995f, 49.3049f, 34.2343f, 0.707107f);
8321 path.close();
8322 path.moveTo(48.0194f, 37.0875f);
8323 path.quadTo(47.7831f, 37.5374f, 47.5295f, 37.9777f);
8324 path.conicTo(47.0304f, 38.8443f, 46.1638f, 38.3451f, 0.707107f);
8325 path.conicTo(45.2973f, 37.846f, 45.7965f, 36.9795f, 0.707107f);
8326 path.quadTo(46.0306f, 36.5729f, 46.2487f, 36.1577f);
8327 path.conicTo(46.7136f, 35.2723f, 47.5989f, 35.7372f, 0.707107f);
8328 path.conicTo(48.4843f, 36.2021f, 48.0194f, 37.0875f, 0.707107f);
8329 path.close();
8330 path.moveTo(46.4721f, 39.6612f);
8331 path.quadTo(46.1926f, 40.0705f, 45.8977f, 40.4688f);
8332 path.conicTo(45.3028f, 41.2726f, 44.499f, 40.6776f, 0.707107f);
8333 path.conicTo(43.6953f, 40.0827f, 44.2902f, 39.2789f, 0.707107f);
8334 path.quadTo(44.5624f, 38.9112f, 44.8204f, 38.5334f);
8335 path.conicTo(45.3843f, 37.7075f, 46.2101f, 38.2714f, 0.707107f);
8336 path.conicTo(47.036f, 38.8353f, 46.4721f, 39.6612f, 0.707107f);
8337 path.close();
8338 path.moveTo(44.6298f, 42.0491f);
8339 path.quadTo(44.2906f, 42.4396f, 43.9361f, 42.8164f);
8340 path.conicTo(43.2509f, 43.5447f, 42.5226f, 42.8595f, 0.707107f);
8341 path.conicTo(41.7942f, 42.1742f, 42.4795f, 41.4459f, 0.707107f);
8342 path.quadTo(42.8067f, 41.0981f, 43.1198f, 40.7376f);
8343 path.conicTo(43.7756f, 39.9826f, 44.5306f, 40.6383f, 0.707107f);
8344 path.conicTo(45.2856f, 41.2941f, 44.6298f, 42.0491f, 0.707107f);
8345 path.close();
8346 path.moveTo(42.4305f, 44.2919f);
8347 path.quadTo(42.0324f, 44.6516f, 41.6198f, 44.9946f);
8348 path.conicTo(40.8507f, 45.6338f, 40.2115f, 44.8648f, 0.707107f);
8349 path.conicTo(39.5723f, 44.0958f, 40.3413f, 43.4566f, 0.707107f);
8350 path.quadTo(40.7222f, 43.1399f, 41.0897f, 42.8079f);
8351 path.conicTo(41.8317f, 42.1375f, 42.5021f, 42.8795f, 0.707107f);
8352 path.conicTo(43.1725f, 43.6215f, 42.4305f, 44.2919f, 0.707107f);
8353 path.close();
8354 path.moveTo(39.8873f, 46.3159f);
8355 path.quadTo(39.4613f, 46.6134f, 39.0238f, 46.8936f);
8356 path.conicTo(38.1818f, 47.433f, 37.6424f, 46.5909f, 0.707107f);
8357 path.conicTo(37.103f, 45.7489f, 37.9451f, 45.2095f, 0.707107f);
8358 path.quadTo(38.3489f, 44.9508f, 38.7421f, 44.6763f);
8359 path.conicTo(39.5619f, 44.1037f, 40.1345f, 44.9235f, 0.707107f);
8360 path.conicTo(40.7071f, 45.7434f, 39.8873f, 46.3159f, 0.707107f);
8361 path.close();
8362 path.moveTo(37.2437f, 47.9367f);
8363 path.quadTo(36.7842f, 48.182f, 36.3153f, 48.4086f);
8364 path.conicTo(35.415f, 48.8439f, 34.9797f, 47.9435f, 0.707107f);
8365 path.conicTo(34.5445f, 47.0432f, 35.4449f, 46.608f, 0.707107f);
8366 path.quadTo(35.8778f, 46.3987f, 36.3019f, 46.1723f);
8367 path.conicTo(37.1841f, 45.7014f, 37.655f, 46.5836f, 0.707107f);
8368 path.conicTo(38.1259f, 47.4658f, 37.2437f, 47.9367f, 0.707107f);
8369 path.close();
8370 path.moveTo(34.3909f, 49.2448f);
8371 path.quadTo(33.8988f, 49.4354f, 33.3992f, 49.606f);
8372 path.conicTo(32.4528f, 49.929f, 32.1298f, 48.9826f, 0.707107f);
8373 path.conicTo(31.8068f, 48.0362f, 32.7532f, 47.7132f, 0.707107f);
8374 path.quadTo(33.2142f, 47.5558f, 33.6685f, 47.3798f);
8375 path.conicTo(34.601f, 47.0186f, 34.9622f, 47.9511f, 0.707107f);
8376 path.conicTo(35.3234f, 48.8836f, 34.3909f, 49.2448f, 0.707107f);
8377 path.close();
8378 path.moveTo(31.3682f, 50.208f);
8379 path.quadTo(30.8535f, 50.3381f, 30.3338f, 50.447f);
8380 path.conicTo(29.3551f, 50.6521f, 29.15f, 49.6734f, 0.707107f);
8381 path.conicTo(28.9448f, 48.6947f, 29.9236f, 48.4895f, 0.707107f);
8382 path.quadTo(30.4033f, 48.389f, 30.8784f, 48.269f);
8383 path.conicTo(31.8479f, 48.024f, 32.0929f, 48.9936f, 0.707107f);
8384 path.conicTo(32.3378f, 49.9631f, 31.3682f, 50.208f, 0.707107f);
8385 path.close();
8386 path.moveTo(28.2669f, 50.7939f);
8387 path.quadTo(27.7491f, 50.8595f, 27.2292f, 50.9043f);
8388 path.conicTo(26.2329f, 50.99f, 26.1472f, 49.9937f, 0.707107f);
8389 path.conicTo(26.0615f, 48.9973f, 27.0578f, 48.9116f, 0.707107f);
8390 path.quadTo(27.5378f, 48.8703f, 28.0156f, 48.8098f);
8391 path.conicTo(29.0077f, 48.6841f, 29.1334f, 49.6762f, 0.707107f);
8392 path.conicTo(29.259f, 50.6683f, 28.2669f, 50.7939f, 0.707107f);
8393 path.close();
8394 path.moveTo(25.1523f, 50.9996f);
8395 path.quadTo(24.6297f, 51.0026f, 24.1072f, 50.9847f);
8396 path.conicTo(23.1078f, 50.9503f, 23.1422f, 49.9509f, 0.707107f);
8397 path.conicTo(23.1765f, 48.9515f, 24.1759f, 48.9858f, 0.707107f);
8398 path.quadTo(24.658f, 49.0024f, 25.1406f, 48.9996f);
8399 path.conicTo(26.1406f, 48.9937f, 26.1464f, 49.9937f, 0.707107f);
8400 path.conicTo(26.1523f, 50.9937f, 25.1523f, 50.9996f, 0.707107f);
8401 path.close();
8402 path.moveTo(22.0162f, 50.8282f);
8403 path.quadTo(21.4999f, 50.7686f, 20.9863f, 50.6883f);
8404 path.conicTo(19.9983f, 50.5339f, 20.1527f, 49.5459f, 0.707107f);
8405 path.conicTo(20.307f, 48.5579f, 21.295f, 48.7123f, 0.707107f);
8406 path.quadTo(21.7691f, 48.7864f, 22.2457f, 48.8414f);
8407 path.conicTo(23.2391f, 48.9562f, 23.1243f, 49.9496f, 0.707107f);
8408 path.conicTo(23.0096f, 50.943f, 22.0162f, 50.8282f, 0.707107f);
8409 path.close();
8410 path.moveTo(18.9351f, 50.2827f);
8411 path.quadTo(18.4037f, 50.1553f, 17.8782f, 50.0056f);
8412 path.conicTo(16.9164f, 49.7317f, 17.1904f, 48.7699f, 0.707107f);
8413 path.conicTo(17.4643f, 47.8082f, 18.426f, 48.0821f, 0.707107f);
8414 path.quadTo(18.9112f, 48.2203f, 19.4016f, 48.3379f);
8415 path.conicTo(20.374f, 48.5712f, 20.1408f, 49.5436f, 0.707107f);
8416 path.conicTo(19.9075f, 50.516f, 18.9351f, 50.2827f, 0.707107f);
8417 path.close();
8418 path.moveTo(15.8352f, 49.3312f);
8419 path.quadTo(15.3403f, 49.1448f, 14.8531f, 48.9383f);
8420 path.conicTo(13.9324f, 48.548f, 14.3227f, 47.6273f, 0.707107f);
8421 path.conicTo(14.713f, 46.7066f, 15.6337f, 47.0969f, 0.707107f);
8422 path.quadTo(16.0832f, 47.2874f, 16.5402f, 47.4596f);
8423 path.conicTo(17.476f, 47.812f, 17.1235f, 48.7479f, 0.707107f);
8424 path.conicTo(16.771f, 49.6837f, 15.8352f, 49.3312f, 0.707107f);
8425 path.close();
8426 path.moveTo(12.9759f, 48.0526f);
8427 path.quadTo(12.5249f, 47.8173f, 12.0835f, 47.5647f);
8428 path.conicTo(11.2156f, 47.0679f, 11.7124f, 46.2f, 0.707107f);
8429 path.conicTo(12.2092f, 45.3321f, 13.0771f, 45.8289f, 0.707107f);
8430 path.quadTo(13.4846f, 46.0622f, 13.9009f, 46.2793f);
8431 path.conicTo(14.7875f, 46.7418f, 14.325f, 47.6284f, 0.707107f);
8432 path.conicTo(13.8626f, 48.5151f, 12.9759f, 48.0526f, 0.707107f);
8433 path.close();
8434 path.moveTo(10.3957f, 46.5108f);
8435 path.quadTo(9.9861f, 46.2327f, 9.58733f, 45.9392f);
8436 path.conicTo(8.78198f, 45.3464f, 9.37478f, 44.541f, 0.707107f);
8437 path.conicTo(9.96757f, 43.7357f, 10.7729f, 44.3285f, 0.707107f);
8438 path.quadTo(11.141f, 44.5994f, 11.5191f, 44.8561f);
8439 path.conicTo(12.3464f, 45.4178f, 11.7847f, 46.2451f, 0.707107f);
8440 path.conicTo(11.223f, 47.0725f, 10.3957f, 46.5108f, 0.707107f);
8441 path.close();
8442 path.moveTo(8.00525f, 44.6769f);
8443 path.quadTo(7.6141f, 44.339f, 7.23672f, 43.9859f);
8444 path.conicTo(6.50649f, 43.3027f, 7.18969f, 42.5725f, 0.707107f);
8445 path.conicTo(7.87289f, 41.8423f, 8.60312f, 42.5255f, 0.707107f);
8446 path.quadTo(8.95149f, 42.8514f, 9.31254f, 43.1632f);
8447 path.conicTo(10.0693f, 43.8169f, 9.4157f, 44.5737f, 0.707107f);
8448 path.conicTo(8.76206f, 45.3305f, 8.00525f, 44.6769f, 0.707107f);
8449 path.close();
8450 path.moveTo(5.75818f, 42.4858f);
8451 path.quadTo(5.39763f, 42.089f, 5.05371f, 41.6777f);
8452 path.conicTo(4.41226f, 40.9105f, 5.17942f, 40.2691f, 0.707107f);
8453 path.conicTo(5.94658f, 39.6276f, 6.58804f, 40.3948f, 0.707107f);
8454 path.quadTo(6.90548f, 40.7744f, 7.23832f, 41.1407f);
8455 path.conicTo(7.91085f, 41.8808f, 7.17078f, 42.5533f, 0.707107f);
8456 path.conicTo(6.43071f, 43.2258f, 5.75818f, 42.4858f, 0.707107f);
8457 path.close();
8458 path.moveTo(3.72821f, 39.9503f);
8459 path.quadTo(3.42794f, 39.523f, 3.1451f, 39.0842f);
8460 path.conicTo(2.6034f, 38.2436f, 3.44397f, 37.7019f, 0.707107f);
8461 path.conicTo(4.28454f, 37.1602f, 4.82624f, 38.0008f, 0.707107f);
8462 path.quadTo(5.08734f, 38.4059f, 5.3645f, 38.8003f);
8463 path.conicTo(5.93951f, 39.6184f, 5.12137f, 40.1934f, 0.707107f);
8464 path.conicTo(4.30322f, 40.7684f, 3.72821f, 39.9503f, 0.707107f);
8465 path.close();
8466 path.moveTo(2.09762f, 37.3078f);
8467 path.quadTo(1.85114f, 36.8491f, 1.62324f, 36.381f);
8468 path.conicTo(1.18551f, 35.4819f, 2.08461f, 35.0442f, 0.707107f);
8469 path.conicTo(2.98372f, 34.6064f, 3.42145f, 35.5055f, 0.707107f);
8470 path.quadTo(3.63184f, 35.9377f, 3.85934f, 36.361f);
8471 path.conicTo(4.33272f, 37.2419f, 3.45185f, 37.7153f, 0.707107f);
8472 path.conicTo(2.57099f, 38.1886f, 2.09762f, 37.3078f, 0.707107f);
8473 path.close();
8474 path.moveTo(0.781912f, 34.4596f);
8475 path.quadTo(0.589924f, 33.9681f, 0.418029f, 33.4692f);
8476 path.conicTo(0.0922952f, 32.5237f, 1.03776f, 32.198f, 0.707107f);
8477 path.conicTo(1.98322f, 31.8722f, 2.30895f, 32.8177f, 0.707107f);
8478 path.quadTo(2.46761f, 33.2782f, 2.64484f, 33.7319f);
8479 path.conicTo(3.00867f, 34.6634f, 2.07721f, 35.0272f, 0.707107f);
8480 path.conicTo(1.14575f, 35.3911f, 0.781912f, 34.4596f, 0.707107f);
8481 path.close();
8482 path.moveTo(-0.189761f, 31.4402f);
8483 path.quadTo(-0.321263f, 30.9258f, -0.431662f, 30.4065f);
8484 path.conicTo(-0.639608f, 29.4284f, 0.338532f, 29.2205f, 0.707107f);
8485 path.conicTo(1.31667f, 29.0125f, 1.52462f, 29.9906f, 0.707107f);
8486 path.quadTo(1.62653f, 30.47f, 1.74791f, 30.9448f);
8487 path.conicTo(1.99561f, 31.9136f, 1.02677f, 32.1613f, 0.707107f);
8488 path.conicTo(0.0579369f, 32.409f, -0.189761f, 31.4402f, 0.707107f);
8489 path.close();
8490 path.moveTo(-0.784658f, 28.3394f);
8491 path.quadTo(-0.851693f, 27.8218f, -0.897902f, 27.3019f);
8492 path.conicTo(-0.986437f, 26.3058f, 0.00963629f, 26.2173f, 0.707107f);
8493 path.conicTo(1.00571f, 26.1288f, 1.09424f, 27.1248f, 0.707107f);
8494 path.quadTo(1.1369f, 27.6047f, 1.19878f, 28.0825f);
8495 path.conicTo(1.32721f, 29.0742f, 0.335496f, 29.2027f, 0.707107f);
8496 path.conicTo(-0.656222f, 29.3311f, -0.784658f, 28.3394f, 0.707107f);
8497 path.close();
8498 path.moveTo(-0.999031f, 25.2248f);
8499 path.quadTo(-1.00354f, 24.7027f, -0.987098f, 24.1809f);
8500 path.conicTo(-0.955596f, 23.1814f, 0.0439078f, 23.2129f, 0.707107f);
8501 path.conicTo(1.04341f, 23.2444f, 1.01191f, 24.2439f, 0.707107f);
8502 path.quadTo(0.996728f, 24.7256f, 1.00089f, 25.2075f);
8503 path.conicTo(1.00954f, 26.2075f, 0.00957754f, 26.2161f, 0.707107f);
8504 path.conicTo(-0.990385f, 26.2248f, -0.999031f, 25.2248f, 0.707107f);
8505 path.close();
8506 path.moveTo(-0.836492f, 22.0887f);
8507 path.quadTo(-0.778263f, 21.5719f, -0.699419f, 21.0579f);
8508 path.conicTo(-0.5478f, 20.0695f, 0.440639f, 20.2211f, 0.707107f);
8509 path.conicTo(1.42908f, 20.3727f, 1.27746f, 21.3612f, 0.707107f);
8510 path.quadTo(1.20468f, 21.8356f, 1.15093f, 22.3126f);
8511 path.conicTo(1.03896f, 23.3063f, 0.0452449f, 23.1944f, 0.707107f);
8512 path.conicTo(-0.948466f, 23.0824f, -0.836492f, 22.0887f, 0.707107f);
8513 path.close();
8514 path.moveTo(-0.300548f, 19.0098f);
8515 path.quadTo(-0.174573f, 18.4777f, -0.0263361f, 17.9514f);
8516 path.conicTo(0.244762f, 16.9889f, 1.20731f, 17.26f, 0.707107f);
8517 path.conicTo(2.16987f, 17.5311f, 1.89877f, 18.4936f, 0.707107f);
8518 path.quadTo(1.76193f, 18.9794f, 1.64565f, 19.4706f);
8519 path.conicTo(1.41526f, 20.4437f, 0.442159f, 20.2133f, 0.707107f);
8520 path.conicTo(-0.530939f, 19.9829f, -0.300548f, 19.0098f, 0.707107f);
8521 path.close();
8522 path.moveTo(0.642658f, 15.9049f);
8523 path.quadTo(0.827861f, 15.409f, 1.0331f, 14.9209f);
8524 path.conicTo(1.42076f, 13.9991f, 2.34256f, 14.3868f, 0.707107f);
8525 path.conicTo(3.26437f, 14.7744f, 2.87671f, 15.6962f, 0.707107f);
8526 path.quadTo(2.68726f, 16.1467f, 2.5163f, 16.6046f);
8527 path.conicTo(2.16648f, 17.5414f, 1.22967f, 17.1916f, 0.707107f);
8528 path.conicTo(0.292846f, 16.8418f, 0.642658f, 15.9049f, 0.707107f);
8529 path.close();
8530 path.moveTo(1.91434f, 13.0395f);
8531 path.quadTo(2.14856f, 12.5875f, 2.40031f, 12.1449f);
8532 path.conicTo(2.89473f, 11.2757f, 3.76395f, 11.7701f, 0.707107f);
8533 path.conicTo(4.63317f, 12.2645f, 4.13875f, 13.1337f, 0.707107f);
8534 path.quadTo(3.90637f, 13.5423f, 3.69016f, 13.9596f);
8535 path.conicTo(3.23014f, 14.8475f, 2.34223f, 14.3875f, 0.707107f);
8536 path.conicTo(1.45432f, 13.9275f, 1.91434f, 13.0395f, 0.707107f);
8537 path.close();
8538 path.moveTo(3.45073f, 10.4525f);
8539 path.quadTo(3.72744f, 10.0426f, 4.01954f, 9.64356f);
8540 path.conicTo(4.61017f, 8.83661f, 5.41711f, 9.42725f, 0.707107f);
8541 path.conicTo(6.22405f, 10.0179f, 5.63342f, 10.8248f, 0.707107f);
8542 path.quadTo(5.36379f, 11.1932f, 5.10836f, 11.5716f);
8543 path.conicTo(4.54884f, 12.4004f, 3.72003f, 11.8409f, 0.707107f);
8544 path.conicTo(2.89121f, 11.2813f, 3.45073f, 10.4525f, 0.707107f);
8545 path.close();
8546 path.moveTo(5.2763f, 8.05964f);
8547 path.quadTo(5.61273f, 7.66793f, 5.96445f, 7.2899f);
8548 path.conicTo(6.6456f, 6.55776f, 7.37774f, 7.23892f, 0.707107f);
8549 path.conicTo(8.10988f, 7.92008f, 7.42872f, 8.65221f, 0.707107f);
8550 path.quadTo(7.10407f, 9.00116f, 6.79351f, 9.36274f);
8551 path.conicTo(6.14196f, 10.1213f, 5.38336f, 9.46979f, 0.707107f);
8552 path.conicTo(4.62475f, 8.81824f, 5.2763f, 8.05964f, 0.707107f);
8553 path.close();
8554 path.moveTo(7.45913f, 5.80839f);
8555 path.quadTo(7.85457f, 5.44696f, 8.26455f, 5.10214f);
8556 path.conicTo(9.02985f, 4.45847f, 9.67352f, 5.22377f, 0.707107f);
8557 path.conicTo(10.3172f, 5.98907f, 9.5519f, 6.63274f, 0.707107f);
8558 path.quadTo(9.17345f, 6.95105f, 8.80843f, 7.28467f);
8559 path.conicTo(8.07029f, 7.95931f, 7.39564f, 7.22117f, 0.707107f);
8560 path.conicTo(6.72099f, 6.48303f, 7.45913f, 5.80839f, 0.707107f);
8561 path.close();
8562 path.moveTo(9.98688f, 3.77251f);
8563 path.quadTo(10.4153f, 3.46948f, 10.8557f, 3.18397f);
8564 path.conicTo(11.6948f, 2.63996f, 12.2388f, 3.47904f, 0.707107f);
8565 path.conicTo(12.7828f, 4.31812f, 11.9437f, 4.86213f, 0.707107f);
8566 path.quadTo(11.5373f, 5.12566f, 11.1417f, 5.40539f);
8567 path.conicTo(10.3253f, 5.98282f, 9.74787f, 5.16638f, 0.707107f);
8568 path.conicTo(9.17044f, 4.34994f, 9.98688f, 3.77251f, 0.707107f);
8569 path.close();
8570 path.moveTo(12.6283f, 2.13208f);
8571 path.quadTo(13.0861f, 1.88442f, 13.5534f, 1.65529f);
8572 path.conicTo(14.4513f, 1.21504f, 14.8915f, 2.11291f, 0.707107f);
8573 path.conicTo(15.3318f, 3.01078f, 14.4339f, 3.45104f, 0.707107f);
8574 path.quadTo(14.0025f, 3.66255f, 13.58f, 3.89115f);
8575 path.conicTo(12.7005f, 4.36698f, 12.2246f, 3.48744f, 0.707107f);
8576 path.conicTo(11.7488f, 2.60791f, 12.6283f, 2.13208f, 0.707107f);
8577 path.close();
8578 path.moveTo(15.4718f, 0.808815f);
8579 path.quadTo(15.9627f, 0.615476f, 16.461f, 0.442208f);
8580 path.conicTo(17.4055f, 0.113784f, 17.7339f, 1.05831f, 0.707107f);
8581 path.conicTo(18.0624f, 2.00284f, 17.1178f, 2.33127f, 0.707107f);
8582 path.quadTo(16.6578f, 2.49121f, 16.2047f, 2.66968f);
8583 path.conicTo(15.2743f, 3.03614f, 14.9078f, 2.10571f, 0.707107f);
8584 path.conicTo(14.5414f, 1.17528f, 15.4718f, 0.808815f, 0.707107f);
8585 path.close();
8586 path.moveTo(18.4879f, -0.171272f);
8587 path.quadTo(19.0019f, -0.304236f, 19.5208f, -0.416111f);
8588 path.conicTo(20.4984f, -0.62685f, 20.7091f, 0.350692f, 0.707107f);
8589 path.conicTo(20.9198f, 1.32823f, 19.9423f, 1.53897f, 0.707107f);
8590 path.quadTo(19.4633f, 1.64224f, 18.9889f, 1.76498f);
8591 path.conicTo(18.0207f, 2.01544f, 17.7703f, 1.04732f, 0.707107f);
8592 path.conicTo(17.5198f, 0.0791926f, 18.4879f, -0.171272f, 0.707107f);
8593 path.close();
8594 path.moveTo(21.5882f, -0.77517f);
8595 path.quadTo(22.1056f, -0.843665f, 22.6254f, -0.891339f);
8596 path.conicTo(23.6212f, -0.982672f, 23.7126f, 0.0131486f, 0.707107f);
8597 path.conicTo(23.8039f, 1.00897f, 22.8081f, 1.1003f, 0.707107f);
8598 path.quadTo(22.3283f, 1.14431f, 21.8506f, 1.20754f);
8599 path.conicTo(20.8592f, 1.33876f, 20.728f, 0.347405f, 0.707107f);
8600 path.conicTo(20.5968f, -0.643948f, 21.5882f, -0.77517f, 0.707107f);
8601 path.close();
8602 path.moveTo(24.7026f, -0.998301f);
8603 path.quadTo(25.2241f, -1.00426f, 25.7453f, -0.989316f);
8604 path.conicTo(26.7449f, -0.960651f, 26.7162f, 0.0389383f, 0.707107f);
8605 path.conicTo(26.6876f, 1.03853f, 25.688f, 1.00986f, 0.707107f);
8606 path.quadTo(25.2068f, 0.996064f, 24.7255f, 1.00157f);
8607 path.conicTo(23.7256f, 1.013f, 23.7141f, 0.0130688f, 0.707107f);
8608 path.conicTo(23.7027f, -0.986866f, 24.7026f, -0.998301f, 0.707107f);
8609 path.close();
8610 path.moveTo(27.8388f, -0.844563f);
8611 path.quadTo(28.3559f, -0.787759f, 28.8704f, -0.710314f);
8612 path.conicTo(29.8592f, -0.561454f, 29.7104f, 0.427404f, 0.707107f);
8613 path.conicTo(29.5615f, 1.41626f, 28.5726f, 1.2674f, 0.707107f);
8614 path.quadTo(28.0978f, 1.19591f, 27.6204f, 1.14348f);
8615 path.conicTo(26.6264f, 1.0343f, 26.7356f, 0.0402742f, 0.707107f);
8616 path.conicTo(26.8447f, -0.953747f, 27.8388f, -0.844563f, 0.707107f);
8617 path.close();
8618 path.moveTo(30.9153f, -0.318153f);
8619 path.quadTo(31.4481f, -0.193671f, 31.9752f, -0.046875f);
8620 path.conicTo(32.9386f, 0.221405f, 32.6703f, 1.18475f, 0.707107f);
8621 path.conicTo(32.402f, 2.14809f, 31.4387f, 1.87981f, 0.707107f);
8622 path.quadTo(30.9521f, 1.74431f, 30.4603f, 1.6294f);
8623 path.conicTo(29.4865f, 1.40189f, 29.714f, 0.428111f, 0.707107f);
8624 path.conicTo(29.9416f, -0.545664f, 30.9153f, -0.318153f, 0.707107f);
8625 path.close();
8626 path.moveTo(34.0252f, 0.616677f);
8627 path.quadTo(34.5221f, 0.800609f, 35.0111f, 1.00465f);
8628 path.conicTo(35.934f, 1.3897f, 35.549f, 2.31259f, 0.707107f);
8629 path.conicTo(35.1639f, 3.23549f, 34.241f, 2.85044f, 0.707107f);
8630 path.quadTo(33.7896f, 2.66211f, 33.3309f, 2.49232f);
8631 path.conicTo(32.3931f, 2.1452f, 32.7402f, 1.20738f, 0.707107f);
8632 path.conicTo(33.0873f, 0.269559f, 34.0252f, 0.616677f, 0.707107f);
8633 path.close();
8634 path.moveTo(36.8967f, 1.88141f);
8635 path.quadTo(37.3499f, 2.11462f, 37.7936f, 2.3654f);
8636 path.conicTo(38.6641f, 2.85746f, 38.1721f, 3.72802f, 0.707107f);
8637 path.conicTo(37.68f, 4.59858f, 36.8094f, 4.10652f, 0.707107f);
8638 path.quadTo(36.3999f, 3.87504f, 35.9815f, 3.65976f);
8639 path.conicTo(35.0924f, 3.2022f, 35.5499f, 2.31302f, 0.707107f);
8640 path.conicTo(36.0075f, 1.42384f, 36.8967f, 1.88141f, 0.707107f);
8641 path.close();
8642 path.moveTo(39.4914f, 3.413f);
8643 path.lineTo(39.5381f, 3.44439f);
8644 path.quadTo(39.9244f, 3.70494f, 40.3002f, 3.97845f);
8645 path.conicTo(41.1087f, 4.56692f, 40.5202f, 5.37544f, 0.707107f);
8646 path.conicTo(39.9317f, 6.18396f, 39.1232f, 5.59549f, 0.707107f);
8647 path.quadTo(38.7763f, 5.34298f, 38.4215f, 5.10371f);
8648 path.lineTo(38.3749f, 5.07232f);
8649 path.conicTo(37.5452f, 4.51406f, 38.1035f, 3.68439f, 0.707107f);
8650 path.conicTo(38.6618f, 2.85473f, 39.4914f, 3.413f, 0.707107f);
8651 path.close();
8652 path.moveTo(41.8859f, 5.22965f);
8653 path.quadTo(42.2782f, 5.56471f, 42.6568f, 5.91499f);
8654 path.conicTo(43.3908f, 6.5941f, 42.7117f, 7.32814f, 0.707107f);
8655 path.conicTo(42.0326f, 8.06218f, 41.2986f, 7.38308f, 0.707107f);
8656 path.quadTo(40.949f, 7.05968f, 40.587f, 6.75043f);
8657 path.conicTo(39.8266f, 6.10097f, 40.476f, 5.34058f, 0.707107f);
8658 path.conicTo(41.1255f, 4.58018f, 41.8859f, 5.22965f, 0.707107f);
8659 path.close();
8660 path.moveTo(44.1413f, 7.40421f);
8661 path.quadTo(44.5035f, 7.79829f, 44.8493f, 8.20695f);
8662 path.conicTo(45.4952f, 8.97038f, 44.7317f, 9.61627f, 0.707107f);
8663 path.conicTo(43.9683f, 10.2622f, 43.3224f, 9.49874f, 0.707107f);
8664 path.quadTo(43.0033f, 9.1215f, 42.6689f, 8.75773f);
8665 path.conicTo(41.9921f, 8.02152f, 42.7283f, 7.34476f, 0.707107f);
8666 path.conicTo(43.4645f, 6.668f, 44.1413f, 7.40421f, 0.707107f);
8667 path.close();
8668 path.moveTo(46.183f, 9.9242f);
8669 path.quadTo(46.4888f, 10.3539f, 46.777f, 10.7957f);
8670 path.conicTo(47.3233f, 11.6332f, 46.4857f, 12.1796f, 0.707107f);
8671 path.conicTo(45.6482f, 12.7259f, 45.1018f, 11.8883f, 0.707107f);
8672 path.quadTo(44.8358f, 11.4805f, 44.5535f, 11.0839f);
8673 path.conicTo(43.9737f, 10.2691f, 44.7884f, 9.6893f, 0.707107f);
8674 path.conicTo(45.6032f, 9.10947f, 46.183f, 9.9242f, 0.707107f);
8675 path.close();
8676 path.moveTo(47.8333f, 12.5645f);
8677 path.quadTo(48.0821f, 13.0214f, 48.3125f, 13.4879f);
8678 path.conicTo(48.7552f, 14.3845f, 47.8586f, 14.8273f, 0.707107f);
8679 path.conicTo(46.962f, 15.2701f, 46.5192f, 14.3734f, 0.707107f);
8680 path.quadTo(46.3065f, 13.9428f, 46.0769f, 13.5211f);
8681 path.conicTo(45.5986f, 12.6429f, 46.4768f, 12.1646f, 0.707107f);
8682 path.conicTo(47.355f, 11.6863f, 47.8333f, 12.5645f, 0.707107f);
8683 path.close();
8684 path.moveTo(49.1641f, 15.4033f);
8685 path.quadTo(49.3588f, 15.8935f, 49.5334f, 16.3912f);
8686 path.conicTo(49.8645f, 17.3348f, 48.9209f, 17.6659f, 0.707107f);
8687 path.conicTo(47.9773f, 17.997f, 47.6462f, 17.0534f, 0.707107f);
8688 path.quadTo(47.485f, 16.5939f, 47.3053f, 16.1415f);
8689 path.conicTo(46.9362f, 15.2121f, 47.8656f, 14.843f, 0.707107f);
8690 path.conicTo(48.795f, 14.4739f, 49.1641f, 15.4033f, 0.707107f);
8691 path.close();
8692 path.moveTo(50.1526f, 18.4161f);
8693 path.quadTo(50.287f, 18.9296f, 50.4003f, 19.4482f);
8694 path.conicTo(50.6139f, 20.4252f, 49.6369f, 20.6387f, 0.707107f);
8695 path.conicTo(48.66f, 20.8522f, 48.4465f, 19.8753f, 0.707107f);
8696 path.quadTo(48.3419f, 19.3966f, 48.2178f, 18.9225f);
8697 path.conicTo(47.9645f, 17.9551f, 48.9319f, 17.7019f, 0.707107f);
8698 path.conicTo(49.8993f, 17.4487f, 50.1526f, 18.4161f, 0.707107f);
8699 path.close();
8700 path.moveTo(50.7655f, 21.5157f);
8701 path.quadTo(50.8354f, 22.033f, 50.8846f, 22.5528f);
8702 path.conicTo(50.9787f, 23.5483f, 49.9831f, 23.6425f, 0.707107f);
8703 path.conicTo(48.9876f, 23.7366f, 48.8935f, 22.741f, 0.707107f);
8704 path.quadTo(48.8481f, 22.2613f, 48.7835f, 21.7837f);
8705 path.conicTo(48.6495f, 20.7928f, 49.6405f, 20.6587f, 0.707107f);
8706 path.conicTo(50.6315f, 20.5247f, 50.7655f, 21.5157f, 0.707107f);
8707 path.close();
8708 path.moveTo(50.9974f, 24.6301f);
8709 path.quadTo(51.0048f, 25.1509f, 50.9913f, 25.6715f);
8710 path.conicTo(50.9655f, 26.6712f, 49.9658f, 26.6454f, 0.707107f);
8711 path.conicTo(48.9662f, 26.6196f, 48.992f, 25.6199f, 0.707107f);
8712 path.quadTo(49.0044f, 25.1393f, 48.9976f, 24.6585f);
8713 path.conicTo(48.9834f, 23.6586f, 49.9833f, 23.6444f, 0.707107f);
8714 path.conicTo(50.9832f, 23.6302f, 50.9974f, 24.6301f, 0.707107f);
8715 path.close();
8716 path.moveTo(50.8524f, 27.7662f);
8717 path.quadTo(50.7971f, 28.2837f, 50.721f, 28.7986f);
8718 path.conicTo(50.5749f, 29.7879f, 49.5856f, 29.6418f, 0.707107f);
8719 path.conicTo(48.5963f, 29.4957f, 48.7425f, 28.5064f, 0.707107f);
8720 path.quadTo(48.8127f, 28.0311f, 48.8638f, 27.5534f);
8721 path.conicTo(48.9702f, 26.5591f, 49.9645f, 26.6655f, 0.707107f);
8722 path.conicTo(50.9588f, 26.7718f, 50.8524f, 27.7662f, 0.707107f);
8723 path.close();
8724 path.moveTo(50.3355f, 30.8404f);
8725 path.quadTo(50.2125f, 31.3739f, 50.0672f, 31.9018f);
8726 path.conicTo(49.8018f, 32.8659f, 48.8376f, 32.6005f, 0.707107f);
8727 path.conicTo(47.8735f, 32.335f, 48.139f, 31.3709f, 0.707107f);
8728 path.quadTo(48.2731f, 30.8836f, 48.3867f, 30.3912f);
8729 path.conicTo(48.6113f, 29.4167f, 49.5857f, 29.6413f, 0.707107f);
8730 path.conicTo(50.5602f, 29.866f, 50.3355f, 30.8404f, 0.707107f);
8731 path.close();
8732 path.moveTo(49.4091f, 33.9552f);
8733 path.quadTo(49.2264f, 34.4531f, 49.0236f, 34.9431f);
8734 path.conicTo(48.6412f, 35.8671f, 47.7172f, 35.4846f, 0.707107f);
8735 path.conicTo(46.7932f, 35.1022f, 47.1757f, 34.1782f, 0.707107f);
8736 path.quadTo(47.3629f, 33.7259f, 47.5315f, 33.2663f);
8737 path.conicTo(47.8759f, 32.3275f, 48.8147f, 32.672f, 0.707107f);
8738 path.conicTo(49.7535f, 33.0164f, 49.4091f, 33.9552f, 0.707107f);
8739 path.close();
8740 path.moveTo(48.1514f, 36.8328f);
8741 path.quadTo(47.9191f, 37.2871f, 47.6694f, 37.7318f);
8742 path.conicTo(47.1797f, 38.6038f, 46.3078f, 38.1141f, 0.707107f);
8743 path.conicTo(45.4359f, 37.6244f, 45.9256f, 36.7525f, 0.707107f);
8744 path.quadTo(46.1562f, 36.3418f, 46.3705f, 35.9226f);
8745 path.conicTo(46.8256f, 35.0321f, 47.716f, 35.4872f, 0.707107f);
8746 path.conicTo(48.6065f, 35.9423f, 48.1514f, 36.8328f, 0.707107f);
8747 path.close();
8748 path.moveTo(46.6245f, 39.4354f);
8749 path.lineTo(46.5563f, 39.537f);
8750 path.quadTo(46.3146f, 39.8955f, 46.0624f, 40.2438f);
8751 path.conicTo(45.4761f, 41.0539f, 44.666f, 40.4676f, 0.707107f);
8752 path.conicTo(43.8559f, 39.8813f, 44.4422f, 39.0712f, 0.707107f);
8753 path.quadTo(44.6749f, 38.7498f, 44.8955f, 38.4226f);
8754 path.lineTo(44.9637f, 38.3211f);
8755 path.conicTo(45.5209f, 37.4907f, 46.3513f, 38.0479f, 0.707107f);
8756 path.conicTo(47.1817f, 38.605f, 46.6245f, 39.4354f, 0.707107f);
8757 path.close();
8758 path.moveTo(44.8168f, 41.8314f);
8759 path.quadTo(44.4832f, 42.2241f, 44.1342f, 42.6034f);
8760 path.conicTo(43.4572f, 43.3394f, 42.7212f, 42.6623f, 0.707107f);
8761 path.conicTo(41.9853f, 41.9853f, 42.6623f, 41.2494f, 0.707107f);
8762 path.quadTo(42.9845f, 40.8992f, 43.2924f, 40.5366f);
8763 path.conicTo(43.9398f, 39.7745f, 44.702f, 40.4218f, 0.707107f);
8764 path.conicTo(45.4642f, 41.0692f, 44.8168f, 41.8314f, 0.707107f);
8765 path.close();
8766 path.moveTo(42.6505f, 44.0908f);
8767 path.quadTo(42.2577f, 44.454f, 41.8504f, 44.8006f);
8768 path.conicTo(41.0888f, 45.4487f, 40.4408f, 44.6871f, 0.707107f);
8769 path.conicTo(39.7927f, 43.9256f, 40.5542f, 43.2775f, 0.707107f);
8770 path.quadTo(40.9302f, 42.9575f, 41.2928f, 42.6223f);
8771 path.conicTo(42.027f, 41.9434f, 42.7059f, 42.6777f, 0.707107f);
8772 path.conicTo(43.3848f, 43.412f, 42.6505f, 44.0908f, 0.707107f);
8773 path.close();
8774 path.moveTo(40.1383f, 46.1384f);
8775 path.quadTo(39.7073f, 46.4471f, 39.2641f, 46.7378f);
8776 path.conicTo(38.4281f, 47.2865f, 37.8795f, 46.4504f, 0.707107f);
8777 path.conicTo(37.3308f, 45.6143f, 38.1669f, 45.0657f, 0.707107f);
8778 path.quadTo(38.576f, 44.7972f, 38.9738f, 44.5124f);
8779 path.conicTo(39.7868f, 43.9301f, 40.369f, 44.7432f, 0.707107f);
8780 path.conicTo(40.9513f, 45.5562f, 40.1383f, 46.1384f, 0.707107f);
8781 path.close();
8782 path.moveTo(37.4991f, 47.7985f);
8783 path.quadTo(37.0431f, 48.0485f, 36.5775f, 48.2801f);
8784 path.conicTo(35.6821f, 48.7254f, 35.2368f, 47.83f, 0.707107f);
8785 path.conicTo(34.7915f, 46.9346f, 35.6869f, 46.4893f, 0.707107f);
8786 path.quadTo(36.1167f, 46.2755f, 36.5376f, 46.0448f);
8787 path.conicTo(37.4145f, 45.5641f, 37.8952f, 46.4409f, 0.707107f);
8788 path.conicTo(38.376f, 47.3178f, 37.4991f, 47.7985f, 0.707107f);
8789 path.close();
8790 path.moveTo(34.6651f, 49.1368f);
8791 path.quadTo(34.1756f, 49.3328f, 33.6785f, 49.5089f);
8792 path.conicTo(32.7358f, 49.8427f, 32.402f, 48.9f, 0.707107f);
8793 path.conicTo(32.0682f, 47.9574f, 33.0109f, 47.6236f, 0.707107f);
8794 path.quadTo(33.4697f, 47.4611f, 33.9216f, 47.2801f);
8795 path.conicTo(34.85f, 46.9084f, 35.2217f, 47.8368f, 0.707107f);
8796 path.conicTo(35.5934f, 48.7651f, 34.6651f, 49.1368f, 0.707107f);
8797 path.close();
8798 path.moveTo(31.6557f, 50.1337f);
8799 path.quadTo(31.1425f, 50.2696f, 30.6243f, 50.3844f);
8800 path.conicTo(29.648f, 50.6007f, 29.4317f, 49.6244f, 0.707107f);
8801 path.conicTo(29.2153f, 48.6481f, 30.1917f, 48.4317f, 0.707107f);
8802 path.quadTo(30.6701f, 48.3257f, 31.1437f, 48.2003f);
8803 path.conicTo(32.1104f, 47.9443f, 32.3664f, 48.911f, 0.707107f);
8804 path.conicTo(32.6223f, 49.8777f, 31.6557f, 50.1337f, 0.707107f);
8805 path.close();
8806 path.moveTo(28.5567f, 50.7556f);
8807 path.quadTo(28.0395f, 50.827f, 27.5198f, 50.8776f);
8808 path.conicTo(26.5245f, 50.9745f, 26.4276f, 49.9792f, 0.707107f);
8809 path.conicTo(26.3307f, 48.9839f, 27.326f, 48.887f, 0.707107f);
8810 path.quadTo(27.8056f, 48.8403f, 28.2831f, 48.7744f);
8811 path.conicTo(29.2737f, 48.6376f, 29.4105f, 49.6282f, 0.707107f);
8812 path.conicTo(29.5473f, 50.6188f, 28.5567f, 50.7556f, 0.707107f);
8813 path.close();
8814 path.moveTo(25.4424f, 50.9962f);
8815 path.quadTo(24.9222f, 51.0051f, 24.4022f, 50.9931f);
8816 path.conicTo(23.4025f, 50.9701f, 23.4255f, 49.9704f, 0.707107f);
8817 path.conicTo(23.4485f, 48.9707f, 24.4482f, 48.9937f, 0.707107f);
8818 path.quadTo(24.9283f, 49.0047f, 25.4084f, 48.9965f);
8819 path.conicTo(26.4083f, 48.9795f, 26.4253f, 49.9794f, 0.707107f);
8820 path.conicTo(26.4423f, 50.9792f, 25.4424f, 50.9962f, 0.707107f);
8821 path.close();
8822 path.moveTo(22.3065f, 50.8601f);
8823 path.quadTo(21.7885f, 50.8062f, 21.2732f, 50.7315f);
8824 path.conicTo(20.2835f, 50.5882f, 20.4268f, 49.5985f, 0.707107f);
8825 path.conicTo(20.5702f, 48.6088f, 21.5599f, 48.7522f, 0.707107f);
8826 path.quadTo(22.0355f, 48.8211f, 22.5136f, 48.8709f);
8827 path.conicTo(23.5083f, 48.9745f, 23.4047f, 49.9691f, 0.707107f);
8828 path.conicTo(23.3011f, 50.9637f, 22.3065f, 50.8601f, 0.707107f);
8829 path.close();
8830 path.moveTo(19.2346f, 50.3527f);
8831 path.quadTo(18.7003f, 50.2312f, 18.1717f, 50.0873f);
8832 path.conicTo(17.2068f, 49.8247f, 17.4694f, 48.8598f, 0.707107f);
8833 path.conicTo(17.732f, 47.8949f, 18.6969f, 48.1575f, 0.707107f);
8834 path.quadTo(19.185f, 48.2904f, 19.6781f, 48.4025f);
8835 path.conicTo(20.6532f, 48.6243f, 20.4314f, 49.5994f, 0.707107f);
8836 path.conicTo(20.2097f, 50.5745f, 19.2346f, 50.3527f, 0.707107f);
8837 path.close();
8838 path.moveTo(16.1149f, 49.4347f);
8839 path.quadTo(15.6161f, 49.2533f, 15.1251f, 49.0517f);
8840 path.conicTo(14.2f, 48.6719f, 14.5798f, 47.7469f, 0.707107f);
8841 path.conicTo(14.9596f, 46.8218f, 15.8847f, 47.2016f, 0.707107f);
8842 path.quadTo(16.3379f, 47.3877f, 16.7984f, 47.5551f);
8843 path.conicTo(17.7382f, 47.8969f, 17.3964f, 48.8366f, 0.707107f);
8844 path.conicTo(17.0547f, 49.7764f, 16.1149f, 49.4347f, 0.707107f);
8845 path.close();
8846 path.moveTo(13.2313f, 48.184f);
8847 path.quadTo(12.776f, 47.9529f, 12.33f, 47.704f);
8848 path.conicTo(11.4568f, 47.2167f, 11.9441f, 46.3434f, 0.707107f);
8849 path.conicTo(12.4314f, 45.4702f, 13.3046f, 45.9575f, 0.707107f);
8850 path.quadTo(13.7162f, 46.1872f, 14.1365f, 46.4006f);
8851 path.conicTo(15.0282f, 46.8532f, 14.5756f, 47.7449f, 0.707107f);
8852 path.conicTo(14.123f, 48.6366f, 13.2313f, 48.184f, 0.707107f);
8853 path.close();
8854 path.moveTo(10.6208f, 46.6619f);
8855 path.lineTo(10.4641f, 46.5571f);
8856 path.quadTo(10.1333f, 46.334f, 9.81253f, 46.1031f);
8857 path.conicTo(9.00087f, 45.519f, 9.585f, 44.7073f, 0.707107f);
8858 path.conicTo(10.1691f, 43.8957f, 10.9808f, 44.4798f, 0.707107f);
8859 path.quadTo(11.2769f, 44.6929f, 11.5763f, 44.8948f);
8860 path.lineTo(11.7329f, 44.9996f);
8861 path.conicTo(12.564f, 45.5557f, 12.008f, 46.3868f, 0.707107f);
8862 path.conicTo(11.4519f, 47.2179f, 10.6208f, 46.6619f, 0.707107f);
8863 path.close();
8864 path.moveTo(8.22326f, 44.8631f);
8865 path.quadTo(7.82986f, 44.5308f, 7.44999f, 44.1833f);
8866 path.conicTo(6.71217f, 43.5082f, 7.38718f, 42.7704f, 0.707107f);
8867 path.conicTo(8.06219f, 42.0326f, 8.8f, 42.7076f, 0.707107f);
8868 path.quadTo(9.15066f, 43.0284f, 9.51375f, 43.3351f);
8869 path.conicTo(10.2777f, 43.9804f, 9.63248f, 44.7443f, 0.707107f);
8870 path.conicTo(8.98724f, 45.5083f, 8.22326f, 44.8631f, 0.707107f);
8871 path.close();
8872 path.moveTo(5.95972f, 42.705f);
8873 path.quadTo(5.59577f, 42.3136f, 5.24823f, 41.9076f);
8874 path.conicTo(4.59793f, 41.148f, 5.3576f, 40.4977f, 0.707107f);
8875 path.conicTo(6.11728f, 39.8473f, 6.76758f, 40.607f, 0.707107f);
8876 path.quadTo(7.08843f, 40.9818f, 7.42436f, 41.3431f);
8877 path.conicTo(8.10532f, 42.0754f, 7.373f, 42.7564f, 0.707107f);
8878 path.conicTo(6.64068f, 43.4373f, 5.95972f, 42.705f, 0.707107f);
8879 path.close();
8880 path.moveTo(3.90635f, 40.2006f);
8881 path.quadTo(3.59492f, 39.7684f, 3.30147f, 39.3239f);
8882 path.conicTo(2.75055f, 38.4893f, 3.58511f, 37.9384f, 0.707107f);
8883 path.conicTo(4.41967f, 37.3875f, 4.97059f, 38.222f, 0.707107f);
8884 path.quadTo(5.24148f, 38.6324f, 5.52894f, 39.0313f);
8885 path.conicTo(6.11358f, 39.8426f, 5.30228f, 40.4272f, 0.707107f);
8886 path.conicTo(4.49099f, 41.0119f, 3.90635f, 40.2006f, 0.707107f);
8887 path.close();
8888 path.moveTo(2.23643f, 37.5626f);
8889 path.quadTo(1.98525f, 37.1075f, 1.75248f, 36.6427f);
8890 path.conicTo(1.30469f, 35.7486f, 2.19883f, 35.3008f, 0.707107f);
8891 path.conicTo(3.09296f, 34.853f, 3.54076f, 35.7471f, 0.707107f);
8892 path.quadTo(3.75563f, 36.1762f, 3.98747f, 36.5963f);
8893 path.conicTo(4.47065f, 37.4718f, 3.59513f, 37.955f, 0.707107f);
8894 path.conicTo(2.71961f, 38.4382f, 2.23643f, 37.5626f, 0.707107f);
8895 path.close();
8896 path.moveTo(0.890647f, 34.7334f);
8897 path.quadTo(0.69328f, 34.2445f, 0.515902f, 33.7481f);
8898 path.conicTo(0.179435f, 32.8064f, 1.12113f, 32.4699f, 0.707107f);
8899 path.conicTo(2.06282f, 32.1335f, 2.39929f, 33.0752f, 0.707107f);
8900 path.quadTo(2.56303f, 33.5334f, 2.74521f, 33.9847f);
8901 path.conicTo(3.11957f, 34.912f, 2.19229f, 35.2863f, 0.707107f);
8902 path.conicTo(1.26501f, 35.6607f, 0.890647f, 34.7334f, 0.707107f);
8903 path.close();
8904 path.moveTo(-0.114587f, 31.7274f);
8905 path.quadTo(-0.251922f, 31.2147f, -0.368218f, 30.6968f);
8906 path.conicTo(-0.587327f, 29.7211f, 0.388373f, 29.502f, 0.707107f);
8907 path.conicTo(1.36407f, 29.2829f, 1.58318f, 30.2586f, 0.707107f);
8908 path.quadTo(1.69053f, 30.7366f, 1.8173f, 31.2099f);
8909 path.conicTo(2.07605f, 32.1758f, 1.1101f, 32.4346f, 0.707107f);
8910 path.conicTo(0.144159f, 32.6933f, -0.114587f, 31.7274f, 0.707107f);
8911 path.close();
8912 path.moveTo(-0.745485f, 28.6291f);
8913 path.quadTo(-0.818367f, 28.112f, -0.870432f, 27.5925f);
8914 path.conicTo(-0.970142f, 26.5974f, 0.0248742f, 26.4977f, 0.707107f);
8915 path.conicTo(1.01989f, 26.398f, 1.1196f, 27.393f, 0.707107f);
8916 path.quadTo(1.16766f, 27.8726f, 1.23494f, 28.3499f);
8917 path.conicTo(1.37452f, 29.3401f, 0.384305f, 29.4797f, 0.707107f);
8918 path.conicTo(-0.605905f, 29.6193f, -0.745485f, 28.6291f, 0.707107f);
8919 path.close();
8920 path.moveTo(-0.994901f, 25.515f);
8921 path.quadTo(-1.00519f, 24.9955f, -0.994722f, 24.4761f);
8922 path.conicTo(-0.97457f, 23.4763f, 0.0252273f, 23.4964f, 0.707107f);
8923 path.conicTo(1.02502f, 23.5166f, 1.00487f, 24.5164f, 0.707107f);
8924 path.quadTo(0.995207f, 24.9959f, 1.00471f, 25.4754f);
8925 path.conicTo(1.02451f, 26.4752f, 0.0247103f, 26.495f, 0.707107f);
8926 path.conicTo(-0.975093f, 26.5148f, -0.994901f, 25.515f, 0.707107f);
8927 path.close();
8928 path.moveTo(-0.867571f, 22.3792f);
8929 path.quadTo(-0.81506f, 21.8609f, -0.741825f, 21.3451f);
8930 path.conicTo(-0.60125f, 20.355f, 0.38882f, 20.4956f, 0.707107f);
8931 path.conicTo(1.37889f, 20.6361f, 1.23831f, 21.6262f, 0.707107f);
8932 path.quadTo(1.17071f, 22.1023f, 1.12224f, 22.5807f);
8933 path.conicTo(1.02144f, 23.5757f, 0.026537f, 23.4749f, 0.707107f);
8934 path.conicTo(-0.96837f, 23.3741f, -0.867571f, 22.3792f, 0.707107f);
8935 path.close();
8936 path.moveTo(-0.369678f, 19.3097f);
8937 path.quadTo(-0.249693f, 18.7748f, -0.107265f, 18.2453f);
8938 path.conicTo(0.152529f, 17.2797f, 1.11819f, 17.5395f, 0.707107f);
8939 path.conicTo(2.08386f, 17.7993f, 1.82406f, 18.7649f, 0.707107f);
8940 path.quadTo(1.69259f, 19.2536f, 1.58184f, 19.7474f);
8941 path.conicTo(1.36298f, 20.7232f, 0.387221f, 20.5043f, 0.707107f);
8942 path.conicTo(-0.588536f, 20.2855f, -0.369678f, 19.3097f, 0.707107f);
8943 path.close();
8944 path.moveTo(0.539863f, 16.1851f);
8945 path.quadTo(0.719962f, 15.6854f, 0.920307f, 15.1934f);
8946 path.conicTo(1.29748f, 14.2673f, 2.22362f, 14.6445f, 0.707107f);
8947 path.conicTo(3.14976f, 15.0216f, 2.7726f, 15.9478f, 0.707107f);
8948 path.quadTo(2.58765f, 16.4019f, 2.42141f, 16.8632f);
8949 path.conicTo(2.08237f, 17.804f, 1.1416f, 17.4649f, 0.707107f);
8950 path.conicTo(0.200823f, 17.1259f, 0.539863f, 16.1851f, 0.707107f);
8951 path.close();
8952 path.moveTo(1.78353f, 13.2955f);
8953 path.quadTo(2.01364f, 12.8391f, 2.26151f, 12.392f);
8954 path.conicTo(2.74643f, 11.5175f, 3.62099f, 12.0024f, 0.707107f);
8955 path.conicTo(4.49555f, 12.4873f, 4.01063f, 13.3618f, 0.707107f);
8956 path.quadTo(3.78183f, 13.7745f, 3.56941f, 14.1958f);
8957 path.conicTo(3.11923f, 15.0888f, 2.22629f, 14.6386f, 0.707107f);
8958 path.conicTo(1.33336f, 14.1884f, 1.78353f, 13.2955f, 0.707107f);
8959 path.close();
8960 path.moveTo(3.30083f, 10.6771f);
8961 path.lineTo(3.44218f, 10.4652f);
8962 path.quadTo(3.6466f, 10.1621f, 3.85641f, 9.86895f);
8963 path.conicTo(4.43837f, 9.05574f, 5.25159f, 9.6377f, 0.707107f);
8964 path.conicTo(6.0648f, 10.2197f, 5.48284f, 11.0329f, 0.707107f);
8965 path.quadTo(5.28917f, 11.3035f, 5.10592f, 11.5752f);
8966 path.lineTo(4.96457f, 11.787f);
8967 path.conicTo(4.4096f, 12.6189f, 3.57773f, 12.0639f, 0.707107f);
8968 path.conicTo(2.74586f, 11.509f, 3.30083f, 10.6771f, 0.707107f);
8969 path.close();
8970 path.moveTo(5.0909f, 8.27793f);
8971 path.quadTo(5.42174f, 7.88403f, 5.76791f, 7.50353f);
8972 path.conicTo(6.44085f, 6.76383f, 7.18054f, 7.43678f, 0.707107f);
8973 path.conicTo(7.92024f, 8.10972f, 7.24729f, 8.84942f, 0.707107f);
8974 path.quadTo(6.92775f, 9.20065f, 6.62237f, 9.56424f);
8975 path.conicTo(5.97921f, 10.33f, 5.21348f, 9.68682f, 0.707107f);
8976 path.conicTo(4.44774f, 9.04367f, 5.0909f, 8.27793f, 0.707107f);
8977 path.close();
8978 path.moveTo(7.24064f, 6.0104f);
8979 path.quadTo(7.63069f, 5.64561f, 8.03537f, 5.29717f);
8980 path.conicTo(8.79318f, 4.64469f, 9.44566f, 5.40249f, 0.707107f);
8981 path.conicTo(10.0981f, 6.16029f, 9.34034f, 6.81278f, 0.707107f);
8982 path.quadTo(8.96678f, 7.13442f, 8.60675f, 7.47113f);
8983 path.conicTo(7.87638f, 8.15419f, 7.19332f, 7.42382f, 0.707107f);
8984 path.conicTo(6.51027f, 6.69345f, 7.24064f, 6.0104f, 0.707107f);
8985 path.close();
8986 path.moveTo(9.73726f, 3.95128f);
8987 path.quadTo(10.1706f, 3.63704f, 10.6165f, 3.34092f);
8988 path.conicTo(11.4496f, 2.78771f, 12.0028f, 3.62075f, 0.707107f);
8989 path.conicTo(12.556f, 4.4538f, 11.7229f, 5.007f, 0.707107f);
8990 path.quadTo(11.3113f, 5.28035f, 10.9113f, 5.57041f);
8991 path.conicTo(10.1018f, 6.15744f, 9.51472f, 5.34787f, 0.707107f);
8992 path.conicTo(8.92769f, 4.53831f, 9.73726f, 3.95128f, 0.707107f);
8993 path.close();
8994 path.moveTo(12.374f, 2.27153f);
8995 path.quadTo(12.8282f, 2.01921f, 13.2921f, 1.78522f);
8996 path.conicTo(14.185f, 1.33492f, 14.6353f, 2.22779f, 0.707107f);
8997 path.conicTo(15.0856f, 3.12067f, 14.1927f, 3.57097f, 0.707107f);
8998 path.quadTo(13.7645f, 3.78696f, 13.3452f, 4.01988f);
8999 path.conicTo(12.471f, 4.5055f, 11.9854f, 3.63132f, 0.707107f);
9000 path.conicTo(11.4998f, 2.75715f, 12.374f, 2.27153f, 0.707107f);
9001 path.close();
9002 path.moveTo(15.1984f, 0.918296f);
9003 path.quadTo(15.6866f, 0.719602f, 16.1824f, 0.540851f);
9004 path.conicTo(17.1231f, 0.20171f, 17.4623f, 1.14245f, 0.707107f);
9005 path.conicTo(17.8014f, 2.08318f, 16.8607f, 2.42232f, 0.707107f);
9006 path.quadTo(16.403f, 2.58733f, 15.9524f, 2.77074f);
9007 path.conicTo(15.0261f, 3.14772f, 14.6492f, 2.2215f, 0.707107f);
9008 path.conicTo(14.2722f, 1.29528f, 15.1984f, 0.918296f, 0.707107f);
9009 path.close();
9010 path.moveTo(18.201f, -0.0952874f);
9011 path.quadTo(18.7132f, -0.234075f, 19.2308f, -0.351842f);
9012 path.conicTo(20.2058f, -0.573734f, 20.4277f, 0.401338f, 0.707107f);
9013 path.conicTo(20.6496f, 1.37641f, 19.6745f, 1.5983f, 0.707107f);
9014 path.quadTo(19.1968f, 1.70701f, 18.724f, 1.83512f);
9015 path.conicTo(17.7588f, 2.09662f, 17.4973f, 1.13142f, 0.707107f);
9016 path.conicTo(17.2358f, 0.166216f, 18.201f, -0.0952874f, 0.707107f);
9017 path.close();
9018 path.moveTo(21.2986f, -0.73518f);
9019 path.quadTo(21.8155f, -0.809526f, 22.3349f, -0.863052f);
9020 path.conicTo(23.3297f, -0.965552f, 23.4322f, 0.029181f, 0.707107f);
9021 path.conicTo(23.5347f, 1.02391f, 22.5399f, 1.12641f, 0.707107f);
9022 path.quadTo(22.0604f, 1.17582f, 21.5833f, 1.24445f);
9023 path.conicTo(20.5935f, 1.38681f, 20.4511f, 0.397f, 0.707107f);
9024 path.conicTo(20.3088f, -0.592814f, 21.2986f, -0.73518f, 0.707107f);
9025 path.close();
9026 path.moveTo(24.4124f, -0.993361f);
9027 path.quadTo(24.9312f, -1.00509f, 25.4501f, -0.996107f);
9028 path.conicTo(26.4499f, -0.978799f, 26.4326f, 0.0210512f, 0.707107f);
9029 path.conicTo(26.4153f, 1.0209f, 25.4155f, 1.00359f, 0.707107f);
9030 path.quadTo(24.9365f, 0.995302f, 24.4576f, 1.00613f);
9031 path.conicTo(23.4578f, 1.02873f, 23.4352f, 0.0289853f, 0.707107f);
9032 path.conicTo(23.4126f, -0.970759f, 24.4124f, -0.993361f, 0.707107f);
9033 path.close();
9034 path.moveTo(27.5481f, -0.87484f);
9035 path.quadTo(28.0668f, -0.823762f, 28.583f, -0.75194f);
9036 path.conicTo(29.5734f, -0.614138f, 29.4356f, 0.376322f, 0.707107f);
9037 path.conicTo(29.2978f, 1.36678f, 28.3074f, 1.22898f, 0.707107f);
9038 path.quadTo(27.8309f, 1.16268f, 27.3521f, 1.11553f);
9039 path.conicTo(26.3569f, 1.01753f, 26.4549f, 0.0223428f, 0.707107f);
9040 path.conicTo(26.5529f, -0.972843f, 27.5481f, -0.87484f, 0.707107f);
9041 path.close();
9042 path.moveTo(30.6151f, -0.386432f);
9043 path.quadTo(31.1507f, -0.267954f, 31.6809f, -0.126991f);
9044 path.conicTo(32.6473f, 0.129965f, 32.3904f, 1.09639f, 0.707107f);
9045 path.conicTo(32.1334f, 2.06281f, 31.167f, 1.80585f, 0.707107f);
9046 path.quadTo(30.6776f, 1.67574f, 30.1832f, 1.56637f);
9047 path.conicTo(29.2068f, 1.35041f, 29.4227f, 0.374005f, 0.707107f);
9048 path.conicTo(29.6387f, -0.602396f, 30.6151f, -0.386432f, 0.707107f);
9049 path.close();
9050 path.moveTo(33.7445f, 0.514616f);
9051 path.quadTo(34.2452f, 0.693421f, 34.7381f, 0.892536f);
9052 path.conicTo(35.6653f, 1.26708f, 35.2908f, 2.19429f, 0.707107f);
9053 path.conicTo(34.9162f, 3.1215f, 33.989f, 2.74696f, 0.707107f);
9054 path.quadTo(33.534f, 2.56316f, 33.0718f, 2.3981f);
9055 path.conicTo(32.1301f, 2.06177f, 32.4664f, 1.12003f, 0.707107f);
9056 path.conicTo(32.8027f, 0.178285f, 33.7445f, 0.514616f, 0.707107f);
9057 path.close();
9058 path.moveTo(36.6402f, 1.7512f);
9059 path.quadTo(37.0977f, 1.98026f, 37.5458f, 2.22715f);
9060 path.conicTo(38.4217f, 2.70968f, 37.9392f, 3.58556f, 0.707107f);
9061 path.conicTo(37.4566f, 4.46144f, 36.5808f, 3.97891f, 0.707107f);
9062 path.quadTo(36.1671f, 3.75102f, 35.7448f, 3.53956f);
9063 path.conicTo(34.8506f, 3.09185f, 35.2983f, 2.19767f, 0.707107f);
9064 path.conicTo(35.746f, 1.30349f, 36.6402f, 1.7512f, 0.707107f);
9065 path.close();
9066 path.moveTo(39.2611f, 3.26012f);
9067 path.quadTo(39.4005f, 3.35159f, 39.539f, 3.44501f);
9068 path.quadTo(39.8091f, 3.62717f, 40.0746f, 3.81611f);
9069 path.conicTo(40.8893f, 4.3959f, 40.3096f, 5.21067f, 0.707107f);
9070 path.conicTo(39.7298f, 6.02543f, 38.915f, 5.44564f, 0.707107f);
9071 path.quadTo(38.67f, 5.2713f, 38.4206f, 5.10309f);
9072 path.quadTo(38.293f, 5.017f, 38.164f, 4.9324f);
9073 path.conicTo(37.3279f, 4.38388f, 37.8764f, 3.54775f, 0.707107f);
9074 path.conicTo(38.4249f, 2.71161f, 39.2611f, 3.26012f, 0.707107f);
9075 path.close();
9076 path.moveTo(41.6673f, 5.04503f);
9077 path.quadTo(42.0618f, 5.37449f, 42.4428f, 5.71927f);
9078 path.conicTo(43.1844f, 6.39015f, 42.5135f, 7.13171f, 0.707107f);
9079 path.conicTo(41.8426f, 7.87327f, 41.1011f, 7.20239f, 0.707107f);
9080 path.quadTo(40.7493f, 6.88414f, 40.3852f, 6.58004f);
9081 path.conicTo(39.6177f, 5.93899f, 40.2588f, 5.17149f, 0.707107f);
9082 path.conicTo(40.8998f, 4.40399f, 41.6673f, 5.04503f, 0.707107f);
9083 path.close();
9084 path.moveTo(43.9388f, 7.1865f);
9085 path.quadTo(44.3044f, 7.57519f, 44.6538f, 7.97856f);
9086 path.conicTo(45.3084f, 8.73448f, 44.5525f, 9.38914f, 0.707107f);
9087 path.conicTo(43.7966f, 10.0438f, 43.1419f, 9.28789f, 0.707107f);
9088 path.quadTo(42.8195f, 8.91555f, 42.482f, 8.55677f);
9089 path.conicTo(41.7969f, 7.82836f, 42.5253f, 7.14322f, 0.707107f);
9090 path.conicTo(43.2537f, 6.45808f, 43.9388f, 7.1865f, 0.707107f);
9091 path.close();
9092 path.moveTo(46.0036f, 9.6753f);
9093 path.quadTo(46.3207f, 10.1098f, 46.6195f, 10.5571f);
9094 path.conicTo(47.175f, 11.3886f, 46.3435f, 11.9441f, 0.707107f);
9095 path.conicTo(45.5119f, 12.4996f, 44.9564f, 11.6681f, 0.707107f);
9096 path.quadTo(44.6806f, 11.2552f, 44.388f, 10.8541f);
9097 path.conicTo(43.7986f, 10.0463f, 44.6064f, 9.45688f, 0.707107f);
9098 path.conicTo(45.4142f, 8.86747f, 46.0036f, 9.6753f, 0.707107f);
9099 path.close();
9100 path.moveTo(47.6932f, 12.3107f);
9101 path.quadTo(47.9467f, 12.764f, 48.1819f, 13.2271f);
9102 path.conicTo(48.6347f, 14.1187f, 47.7431f, 14.5715f, 0.707107f);
9103 path.conicTo(46.8514f, 15.0243f, 46.3986f, 14.1327f, 0.707107f);
9104 path.quadTo(46.1816f, 13.7053f, 45.9476f, 13.2868f);
9105 path.conicTo(45.4595f, 12.414f, 46.3323f, 11.9259f, 0.707107f);
9106 path.conicTo(47.2051f, 11.4379f, 47.6932f, 12.3107f, 0.707107f);
9107 path.close();
9108 path.moveTo(49.0539f, 15.1303f);
9109 path.quadTo(49.2539f, 15.6178f, 49.434f, 16.113f);
9110 path.conicTo(49.7758f, 17.0527f, 48.836f, 17.3946f, 0.707107f);
9111 path.conicTo(47.8963f, 17.7364f, 47.5545f, 16.7966f, 0.707107f);
9112 path.quadTo(47.3882f, 16.3395f, 47.2036f, 15.8895f);
9113 path.conicTo(46.824f, 14.9643f, 47.7491f, 14.5847f, 0.707107f);
9114 path.conicTo(48.6743f, 14.2051f, 49.0539f, 15.1303f, 0.707107f);
9115 path.close();
9116 path.moveTo(50.0758f, 18.1294f);
9117 path.quadTo(50.216f, 18.6412f, 50.3352f, 19.1584f);
9118 path.conicTo(50.5599f, 20.1328f, 49.5855f, 20.3575f, 0.707107f);
9119 path.conicTo(48.6111f, 20.5821f, 48.3864f, 19.6077f, 0.707107f);
9120 path.quadTo(48.2763f, 19.1304f, 48.1469f, 18.6579f);
9121 path.conicTo(47.8826f, 17.6935f, 48.8471f, 17.4292f, 0.707107f);
9122 path.conicTo(49.8115f, 17.165f, 50.0758f, 18.1294f, 0.707107f);
9123 path.close();
9124 path.moveTo(50.7247f, 21.2262f);
9125 path.quadTo(50.8005f, 21.743f, 50.8555f, 22.2623f);
9126 path.conicTo(50.9607f, 23.2568f, 49.9663f, 23.3621f, 0.707107f);
9127 path.conicTo(48.9719f, 23.4673f, 48.8666f, 22.4729f, 0.707107f);
9128 path.quadTo(48.8158f, 21.9935f, 48.7458f, 21.5165f);
9129 path.conicTo(48.6007f, 20.5271f, 49.5901f, 20.382f, 0.707107f);
9130 path.conicTo(50.5795f, 20.2368f, 50.7247f, 21.2262f, 0.707107f);
9131 path.close();
9132 path.moveTo(50.9916f, 24.3398f);
9133 path.quadTo(51.0048f, 24.858f, 50.9973f, 25.3762f);
9134 path.conicTo(50.9828f, 26.3761f, 49.9829f, 26.3616f, 0.707107f);
9135 path.conicTo(48.983f, 26.3472f, 48.9975f, 25.3473f, 0.707107f);
9136 path.quadTo(49.0044f, 24.8687f, 48.9923f, 24.3906f);
9137 path.conicTo(48.9669f, 23.3909f, 49.9665f, 23.3655f, 0.707107f);
9138 path.conicTo(50.9662f, 23.3401f, 50.9916f, 24.3398f, 0.707107f);
9139 path.close();
9140 path.moveTo(50.8819f, 27.4753f);
9141 path.quadTo(50.8323f, 27.9943f, 50.7618f, 28.511f);
9142 path.conicTo(50.6268f, 29.5018f, 49.636f, 29.3668f, 0.707107f);
9143 path.conicTo(48.6451f, 29.2317f, 48.7802f, 28.2409f, 0.707107f);
9144 path.quadTo(48.8452f, 27.7641f, 48.891f, 27.2849f);
9145 path.conicTo(48.9862f, 26.2894f, 49.9816f, 26.3846f, 0.707107f);
9146 path.conicTo(50.9771f, 26.4798f, 50.8819f, 27.4753f, 0.707107f);
9147 path.close();
9148 path.moveTo(50.4023f, 30.5429f);
9149 path.quadTo(50.2856f, 31.0775f, 50.1465f, 31.607f);
9150 path.conicTo(49.8924f, 32.5742f, 48.9252f, 32.3201f, 0.707107f);
9151 path.conicTo(47.9581f, 32.066f, 48.2122f, 31.0988f, 0.707107f);
9152 path.quadTo(48.3405f, 30.6102f, 48.4483f, 30.1165f);
9153 path.conicTo(48.6614f, 29.1395f, 49.6385f, 29.3527f, 0.707107f);
9154 path.conicTo(50.6155f, 29.5659f, 50.4023f, 30.5429f, 0.707107f);
9155 path.close();
9156 path.moveTo(49.5104f, 33.674f);
9157 path.quadTo(49.3329f, 34.1756f, 49.1351f, 34.6695f);
9158 path.conicTo(48.7632f, 35.5977f, 47.8349f, 35.2258f, 0.707107f);
9159 path.conicTo(46.9066f, 34.854f, 47.2785f, 33.9257f, 0.707107f);
9160 path.quadTo(47.4612f, 33.4697f, 47.625f, 33.0067f);
9161 path.conicTo(47.9587f, 32.064f, 48.9014f, 32.3977f, 0.707107f);
9162 path.conicTo(49.8441f, 32.7313f, 49.5104f, 33.674f, 0.707107f);
9163 path.close();
9164 path.moveTo(48.281f, 36.5756f);
9165 path.quadTo(48.053f, 37.0342f, 47.8071f, 37.4835f);
9166 path.conicTo(47.3269f, 38.3607f, 46.4497f, 37.8805f, 0.707107f);
9167 path.conicTo(45.5725f, 37.4004f, 46.0527f, 36.5232f, 0.707107f);
9168 path.quadTo(46.2797f, 36.1085f, 46.4901f, 35.6852f);
9169 path.conicTo(46.9353f, 34.7898f, 47.8307f, 35.235f, 0.707107f);
9170 path.conicTo(48.7262f, 35.6802f, 48.281f, 36.5756f, 0.707107f);
9171 path.close();
9172 path.moveTo(46.7777f, 39.2033f);
9173 path.quadTo(46.6677f, 39.3719f, 46.555f, 39.539f);
9174 path.quadTo(46.3865f, 39.7888f, 46.2121f, 40.0349f);
9175 path.conicTo(45.6338f, 40.8507f, 44.818f, 40.2724f, 0.707107f);
9176 path.conicTo(44.0021f, 39.6942f, 44.5804f, 38.8783f, 0.707107f);
9177 path.quadTo(44.7413f, 38.6513f, 44.8969f, 38.4206f);
9178 path.quadTo(45.0008f, 38.2665f, 45.1025f, 38.1107f);
9179 path.conicTo(45.6488f, 37.2731f, 46.4864f, 37.8194f, 0.707107f);
9180 path.conicTo(47.324f, 38.3657f, 46.7777f, 39.2033f, 0.707107f);
9181 path.close();
9182 path.moveTo(44.9527f, 41.6701f);
9183 path.quadTo(44.6177f, 42.0709f, 44.267f, 42.458f);
9184 path.conicTo(43.5955f, 43.1991f, 42.8545f, 42.5276f, 0.707107f);
9185 path.conicTo(42.1135f, 41.8561f, 42.7849f, 41.1151f, 0.707107f);
9186 path.quadTo(43.1087f, 40.7578f, 43.4178f, 40.3878f);
9187 path.conicTo(44.059f, 39.6203f, 44.8264f, 40.2615f, 0.707107f);
9188 path.conicTo(45.5938f, 40.9027f, 44.9527f, 41.6701f, 0.707107f);
9189 path.close();
9190 path.moveTo(42.7884f, 43.9624f);
9191 path.quadTo(42.4083f, 44.319f, 42.014f, 44.6602f);
9192 path.conicTo(41.2578f, 45.3146f, 40.6034f, 44.5585f, 0.707107f);
9193 path.conicTo(39.949f, 43.8023f, 40.7052f, 43.1479f, 0.707107f);
9194 path.quadTo(41.0691f, 42.833f, 41.4201f, 42.5037f);
9195 path.conicTo(42.1494f, 41.8196f, 42.8336f, 42.5489f, 0.707107f);
9196 path.conicTo(43.5178f, 43.2782f, 42.7884f, 43.9624f, 0.707107f);
9197 path.close();
9198 path.moveTo(40.3892f, 45.9564f);
9199 path.quadTo(39.9683f, 46.2655f, 39.5354f, 46.5574f);
9200 path.conicTo(38.7062f, 47.1165f, 38.1472f, 46.2873f, 0.707107f);
9201 path.conicTo(37.5881f, 45.4582f, 38.4173f, 44.8992f, 0.707107f);
9202 path.quadTo(38.8169f, 44.6297f, 39.2054f, 44.3444f);
9203 path.conicTo(40.0114f, 43.7525f, 40.6033f, 44.5585f, 0.707107f);
9204 path.conicTo(41.1952f, 45.3645f, 40.3892f, 45.9564f, 0.707107f);
9205 path.close();
9206 path.moveTo(37.7543f, 47.6568f);
9207 path.quadTo(37.2977f, 47.9138f, 36.8312f, 48.1522f);
9208 path.conicTo(35.9407f, 48.6072f, 35.4857f, 47.7167f, 0.707107f);
9209 path.conicTo(35.0306f, 46.8263f, 35.9211f, 46.3712f, 0.707107f);
9210 path.quadTo(36.3518f, 46.1511f, 36.7732f, 45.9139f);
9211 path.conicTo(37.6446f, 45.4234f, 38.1351f, 46.2948f, 0.707107f);
9212 path.conicTo(38.6257f, 47.1662f, 37.7543f, 47.6568f, 0.707107f);
9213 path.close();
9214 path.moveTo(34.9311f, 49.0286f);
9215 path.quadTo(34.4488f, 49.2279f, 33.9589f, 49.4077f);
9216 path.conicTo(33.0202f, 49.7523f, 32.6756f, 48.8136f, 0.707107f);
9217 path.conicTo(32.331f, 47.8748f, 33.2698f, 47.5302f, 0.707107f);
9218 path.quadTo(33.722f, 47.3642f, 34.1672f, 47.1802f);
9219 path.conicTo(35.0914f, 46.7983f, 35.4733f, 47.7224f, 0.707107f);
9220 path.conicTo(35.8553f, 48.6466f, 34.9311f, 49.0286f, 0.707107f);
9221 path.close();
9222 path.moveTo(31.9824f, 50.0449f);
9223 path.quadTo(31.4774f, 50.1857f, 30.9668f, 50.3061f);
9224 path.conicTo(29.9935f, 50.5355f, 29.764f, 49.5622f, 0.707107f);
9225 path.conicTo(29.5346f, 48.5889f, 30.5079f, 48.3594f, 0.707107f);
9226 path.quadTo(30.9789f, 48.2484f, 31.4453f, 48.1184f);
9227 path.conicTo(32.4086f, 47.8498f, 32.6771f, 48.8131f, 0.707107f);
9228 path.conicTo(32.9457f, 49.7763f, 31.9824f, 50.0449f, 0.707107f);
9229 path.close();
9230 path.moveTo(28.899f, 50.706f);
9231 path.quadTo(28.3834f, 50.7842f, 27.8652f, 50.8416f);
9232 path.conicTo(26.8713f, 50.9518f, 26.7611f, 49.9579f, 0.707107f);
9233 path.conicTo(26.6509f, 48.964f, 27.6448f, 48.8538f, 0.707107f);
9234 path.quadTo(28.1231f, 48.8008f, 28.599f, 48.7286f);
9235 path.conicTo(29.5877f, 48.5786f, 29.7377f, 49.5673f, 0.707107f);
9236 path.conicTo(29.8877f, 50.556f, 28.899f, 50.706f, 0.707107f);
9237 path.close();
9238 path.moveTo(25.8106f, 50.9874f);
9239 path.quadTo(25.6321f, 50.9929f, 25.4537f, 50.996f);
9240 path.conicTo(24.4539f, 51.0135f, 24.4365f, 50.0136f, 0.707115f);
9241 path.lineTo(24.4251f, 49.3638f);
9242 path.conicTo(24.4077f, 48.364f, 25.4075f, 48.3465f, 0.707107f);
9243 path.conicTo(26.4073f, 48.3291f, 26.4248f, 49.3289f, 0.707107f);
9244 path.lineTo(26.4361f, 49.9787f);
9245 path.lineTo(25.4363f, 49.9962f);
9246 path.lineTo(25.4189f, 48.9963f);
9247 path.quadTo(25.5836f, 48.9935f, 25.7482f, 48.9883f);
9248 path.conicTo(26.7477f, 48.9571f, 26.7789f, 49.9567f, 0.707107f);
9249 path.conicTo(26.8101f, 50.9562f, 25.8106f, 50.9874f, 0.707107f);
9250 path.close();
9251 path.moveTo(24.3902f, 47.3641f);
9252 path.lineTo(24.3728f, 46.3643f);
9253 path.conicTo(24.3553f, 45.3645f, 25.3551f, 45.347f, 0.707107f);
9254 path.conicTo(26.355f, 45.3295f, 26.3724f, 46.3294f, 0.707107f);
9255 path.lineTo(26.3899f, 47.3292f);
9256 path.conicTo(26.4074f, 48.3291f, 25.4075f, 48.3465f, 0.707107f);
9257 path.conicTo(24.4077f, 48.364f, 24.3902f, 47.3641f, 0.707107f);
9258 path.close();
9259 path.moveTo(24.3378f, 44.3646f);
9260 path.lineTo(24.3204f, 43.3648f);
9261 path.conicTo(24.3029f, 42.3649f, 25.3028f, 42.3475f, 0.707107f);
9262 path.conicTo(26.3026f, 42.33f, 26.3201f, 43.3298f, 0.707107f);
9263 path.lineTo(26.3375f, 44.3297f);
9264 path.conicTo(26.355f, 45.3295f, 25.3551f, 45.347f, 0.707107f);
9265 path.conicTo(24.3553f, 45.3645f, 24.3378f, 44.3646f, 0.707107f);
9266 path.close();
9267 path.moveTo(24.2855f, 41.3651f);
9268 path.lineTo(24.268f, 40.3652f);
9269 path.conicTo(24.2506f, 39.3654f, 25.2504f, 39.3479f, 0.707107f);
9270 path.conicTo(26.2503f, 39.3305f, 26.2677f, 40.3303f, 0.707107f);
9271 path.lineTo(26.2852f, 41.3302f);
9272 path.conicTo(26.3026f, 42.33f, 25.3028f, 42.3475f, 0.707107f);
9273 path.conicTo(24.3029f, 42.3649f, 24.2855f, 41.3651f, 0.707107f);
9274 path.close();
9275 path.moveTo(24.2331f, 38.3655f);
9276 path.lineTo(24.2157f, 37.3657f);
9277 path.conicTo(24.1982f, 36.3658f, 25.1981f, 36.3484f, 0.707107f);
9278 path.conicTo(26.1979f, 36.3309f, 26.2154f, 37.3308f, 0.707107f);
9279 path.lineTo(26.2328f, 38.3306f);
9280 path.conicTo(26.2503f, 39.3305f, 25.2504f, 39.3479f, 0.707107f);
9281 path.conicTo(24.2506f, 39.3654f, 24.2331f, 38.3655f, 0.707107f);
9282 path.close();
9283 path.moveTo(24.1808f, 35.366f);
9284 path.lineTo(24.1633f, 34.3661f);
9285 path.conicTo(24.1459f, 33.3663f, 25.1457f, 33.3488f, 0.707107f);
9286 path.conicTo(26.1456f, 33.3314f, 26.163f, 34.3312f, 0.707107f);
9287 path.lineTo(26.1805f, 35.3311f);
9288 path.conicTo(26.1979f, 36.3309f, 25.1981f, 36.3484f, 0.707107f);
9289 path.conicTo(24.1982f, 36.3658f, 24.1808f, 35.366f, 0.707107f);
9290 path.close();
9291 path.moveTo(24.1284f, 32.3664f);
9292 path.lineTo(24.111f, 31.3666f);
9293 path.conicTo(24.0935f, 30.3667f, 25.0934f, 30.3493f, 0.707107f);
9294 path.conicTo(26.0932f, 30.3318f, 26.1107f, 31.3317f, 0.707107f);
9295 path.lineTo(26.1281f, 32.3315f);
9296 path.conicTo(26.1456f, 33.3314f, 25.1457f, 33.3488f, 0.707107f);
9297 path.conicTo(24.1459f, 33.3663f, 24.1284f, 32.3664f, 0.707107f);
9298 path.close();
9299 path.moveTo(24.0761f, 29.3669f);
9300 path.lineTo(24.0586f, 28.367f);
9301 path.conicTo(24.0412f, 27.3672f, 25.041f, 27.3497f, 0.707107f);
9302 path.conicTo(26.0409f, 27.3323f, 26.0583f, 28.3321f, 0.707107f);
9303 path.lineTo(26.0758f, 29.332f);
9304 path.conicTo(26.0932f, 30.3318f, 25.0934f, 30.3493f, 0.707107f);
9305 path.conicTo(24.0935f, 30.3667f, 24.0761f, 29.3669f, 0.707107f);
9306 path.close();
9307 path.moveTo(24.0237f, 26.3673f);
9308 path.lineTo(24.0063f, 25.3675f);
9309 path.conicTo(23.9888f, 24.3676f, 24.9887f, 24.3502f, 0.707107f);
9310 path.conicTo(25.9885f, 24.3327f, 26.006f, 25.3326f, 0.707107f);
9311 path.lineTo(26.0234f, 26.3324f);
9312 path.conicTo(26.0409f, 27.3323f, 25.041f, 27.3497f, 0.707107f);
9313 path.conicTo(24.0412f, 27.3672f, 24.0237f, 26.3673f, 0.707107f);
9314 path.close();
9315 testSimplifyFail(reporter, path, filename);
9316 }
9317 
bug8249(skiatest::Reporter * reporter,const char * filename)9318 static void bug8249(skiatest::Reporter* reporter, const char* filename) {
9319 SkPath path;
9320 path.setFillType(SkPathFillType::kWinding);
9321 path.moveTo(SkBits2Float(0x43310000), SkBits2Float(0x43810000));  // 177, 258
9322 path.lineTo(SkBits2Float(0x43480000), SkBits2Float(0x43868000));  // 200, 269
9323 path.cubicTo(SkBits2Float(0x43480000), SkBits2Float(0x43b20000), SkBits2Float(0x437a0000), SkBits2Float(0x43cd0000), SkBits2Float(0x43c80000), SkBits2Float(0x43cd0000));  // 200, 356, 250, 410, 400, 410
9324 path.cubicTo(SkBits2Float(0x44098000), SkBits2Float(0x43cd0000), SkBits2Float(0x44160000), SkBits2Float(0x43b20000), SkBits2Float(0x44160000), SkBits2Float(0x43868000));  // 550, 410, 600, 356, 600, 269
9325 path.lineTo(SkBits2Float(0x44160000), SkBits2Float(0x43808000));  // 600, 257
9326 path.cubicTo(SkBits2Float(0x44160000), SkBits2Float(0x43330000), SkBits2Float(0x44110000), SkBits2Float(0x429c0000), SkBits2Float(0x43cd0000), SkBits2Float(0x429c0000));  // 600, 179, 580, 78, 410, 78
9327 path.cubicTo(SkBits2Float(0x43700000), SkBits2Float(0x429c0000), SkBits2Float(0x43480000), SkBits2Float(0x431f0000), SkBits2Float(0x43480000), SkBits2Float(0x438a8000));  // 240, 78, 200, 159, 200, 277
9328 path.lineTo(SkBits2Float(0x43480000), SkBits2Float(0x4401c000));  // 200, 519
9329 path.cubicTo(SkBits2Float(0x43480000), SkBits2Float(0x441f0000), SkBits2Float(0x43660000), SkBits2Float(0x44340000), SkBits2Float(0x43c80000), SkBits2Float(0x44340000));  // 200, 636, 230, 720, 400, 720
9330 path.cubicTo(SkBits2Float(0x4404c000), SkBits2Float(0x44340000), SkBits2Float(0x440d0000), SkBits2Float(0x442b8000), SkBits2Float(0x44118000), SkBits2Float(0x4416c000));  // 531, 720, 564, 686, 582, 603
9331 path.lineTo(SkBits2Float(0x442cc000), SkBits2Float(0x441c8000));  // 691, 626
9332 path.cubicTo(SkBits2Float(0x44260000), SkBits2Float(0x443d4000), SkBits2Float(0x44114000), SkBits2Float(0x444a8000), SkBits2Float(0x43c88000), SkBits2Float(0x444a8000));  // 664, 757, 581, 810, 401, 810
9333 path.cubicTo(SkBits2Float(0x43350000), SkBits2Float(0x444a8000), SkBits2Float(0x42c80000), SkBits2Float(0x442e0000), SkBits2Float(0x42c80000), SkBits2Float(0x4401c000));  // 181, 810, 100, 696, 100, 519
9334 path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x438a8000));  // 100, 277
9335 path.cubicTo(SkBits2Float(0x42c80000), SkBits2Float(0x42cc0000), SkBits2Float(0x433e0000), SkBits2Float(0xc1200000), SkBits2Float(0x43cd0000), SkBits2Float(0xc1200000));  // 100, 102, 190, -10, 410, -10
9336 path.cubicTo(SkBits2Float(0x441d8000), SkBits2Float(0xc1200000), SkBits2Float(0x442f0000), SkBits2Float(0x42e60000), SkBits2Float(0x442f0000), SkBits2Float(0x437a0000));  // 630, -10, 700, 115, 700, 250
9337 path.lineTo(SkBits2Float(0x442f0000), SkBits2Float(0x43880000));  // 700, 272
9338 path.cubicTo(SkBits2Float(0x442f0000), SkBits2Float(0x43d18000), SkBits2Float(0x44164000), SkBits2Float(0x43fa0000), SkBits2Float(0x43c88000), SkBits2Float(0x43fa0000));  // 700, 419, 601, 500, 401, 500
9339 path.cubicTo(SkBits2Float(0x43490000), SkBits2Float(0x43fa0000), SkBits2Float(0x43160000), SkBits2Float(0x43d00000), SkBits2Float(0x43160000), SkBits2Float(0x43868000));  // 201, 500, 150, 416, 150, 269
9340 path.lineTo(SkBits2Float(0x43310000), SkBits2Float(0x43810000));  // 177, 258
9341 path.close();
9342 testSimplify(reporter, path, filename);
9343 }
9344 
bug8290(skiatest::Reporter * reporter,const char * filename)9345 static void bug8290(skiatest::Reporter* reporter, const char* filename) {
9346     SkPath path;
9347     path.setFillType(SkPathFillType::kEvenOdd);
9348     path.moveTo(-1e+09, -1e+09);
9349     path.lineTo(1e+09, -1e+09);
9350     path.lineTo(1e+09, 1e+09);
9351     path.lineTo(-1e+09, 1e+09);
9352     path.lineTo(-1e+09, -1e+09);
9353     path.close();
9354     path.moveTo(0, 45);
9355     path.lineTo(270, 45);
9356     path.lineTo(270, 45.381f);
9357     path.lineTo(0, 45.381f);
9358     path.lineTo(0, 45);
9359     path.close();
9360     path.moveTo(0, 90.381f);
9361     path.lineTo(270, 90.381f);
9362     path.lineTo(270, 90.7619f);
9363     path.lineTo(0, 90.7619f);
9364     path.lineTo(0, 90.381f);
9365     path.close();
9366     path.moveTo(0, 135.762f);
9367     path.lineTo(270, 135.762f);
9368     path.lineTo(270, 136.143f);
9369     path.lineTo(0, 136.143f);
9370     path.lineTo(0, 135.762f);
9371     path.close();
9372     path.moveTo(0, 181.143f);
9373     path.lineTo(270, 181.143f);
9374     path.lineTo(270, 181.524f);
9375     path.lineTo(0, 181.524f);
9376     path.lineTo(0, 181.143f);
9377     path.close();
9378     path.moveTo(0, 226.524f);
9379     path.lineTo(270, 226.524f);
9380     path.lineTo(270, 226.905f);
9381     path.lineTo(0, 226.905f);
9382     path.lineTo(0, 226.524f);
9383     path.close();
9384     path.moveTo(0, 271.905f);
9385     path.lineTo(270, 271.905f);
9386     path.lineTo(270, 272.286f);
9387     path.lineTo(0, 272.286f);
9388     path.lineTo(0, 271.905f);
9389     path.close();
9390     path.moveTo(0, 317.286f);
9391     path.lineTo(270, 317.286f);
9392     path.lineTo(270, 317.667f);
9393     path.lineTo(0, 317.667f);
9394     path.lineTo(0, 317.286f);
9395     path.close();
9396     SkMatrix matrix = SkMatrix::MakeAll(
9397             2.625,	0,	186,
9398             0,	2.625,	620,
9399             0,	0,	1);
9400     path.transform(matrix);
9401     testSimplify(reporter, path, filename);
9402 }
9403 
bug11958_a(skiatest::Reporter * reporter,const char * filename)9404 static void bug11958_a(skiatest::Reporter* reporter, const char* filename) {
9405     SkPath path;
9406     path.setFillType(SkPathFillType::kWinding);
9407     path.moveTo(SkBits2Float(0x44099d81), SkBits2Float(0x00000000));  // 550.461f, 0
9408     path.lineTo(SkBits2Float(0x44099d81), SkBits2Float(0x43b7276d));  // 550.461f, 366.308f
9409     path.lineTo(SkBits2Float(0x44324ea8), SkBits2Float(0x43b7276d));  // 713.229f, 366.308f
9410     path.lineTo(SkBits2Float(0x44324ea8), SkBits2Float(0x00000000));  // 713.229f, 0
9411     path.lineTo(SkBits2Float(0x44099d81), SkBits2Float(0x00000000));  // 550.461f, 0
9412     path.close();
9413     path.moveTo(SkBits2Float(0x440f9d71), SkBits2Float(0x00000000));  // 574.46f, 0
9414     path.lineTo(SkBits2Float(0x440f9d71), SkBits2Float(0x438a1d91));  // 574.46f, 276.231f
9415     path.lineTo(SkBits2Float(0x44387127), SkBits2Float(0x438a1d91));  // 737.768f, 276.231f
9416     path.quadTo(SkBits2Float(0x444d04cd), SkBits2Float(0x438a1d91), SkBits2Float(0x4456f396), SkBits2Float(0x4372a76c));  // 820.075f, 276.231f, 859.806f, 242.654f
9417     path.quadTo(SkBits2Float(0x4460e25e), SkBits2Float(0x435113b6), SkBits2Float(0x4460e25e), SkBits2Float(0x4310276d));  // 899.537f, 209.077f, 899.537f, 144.154f
9418     path.quadTo(SkBits2Float(0x4460e25e), SkBits2Float(0x429e0000), SkBits2Float(0x44555d70), SkBits2Float(0x421e0000));  // 899.537f, 79, 853.46f, 39.5f
9419     path.quadTo(SkBits2Float(0x4449d883), SkBits2Float(0x00000000), SkBits2Float(0x44321883), SkBits2Float(0x00000000));  // 807.383f, 0, 712.383f, 0
9420     path.lineTo(SkBits2Float(0x440f9d71), SkBits2Float(0x00000000));  // 574.46f, 0
9421     path.close();
9422 
9423     // TODO(skbug:11958) - This should not fail to simplify
9424     testSimplifyFail(reporter, path, filename);
9425 }
9426 
bug11958_b(skiatest::Reporter * reporter,const char * filename)9427 static void bug11958_b(skiatest::Reporter* reporter, const char* filename) {
9428     SkPath path;
9429 
9430     path.setFillType(SkPathFillType::kWinding);
9431     path.moveTo(SkBits2Float(0x42240000), SkBits2Float(0x43420000));  // 41, 194
9432     path.quadTo(SkBits2Float(0x42240000), SkBits2Float(0x43928000), SkBits2Float(0x42930000), SkBits2Float(0x43b38000));  // 41, 293, 73.5f, 359
9433     path.quadTo(SkBits2Float(0x42d40000), SkBits2Float(0x43d48000), SkBits2Float(0x43240000), SkBits2Float(0x43e58000));  // 106, 425, 164, 459
9434     path.quadTo(SkBits2Float(0x435e0000), SkBits2Float(0x43f68000), SkBits2Float(0x43958000), SkBits2Float(0x43f68000));  // 222, 493, 299, 493
9435     path.quadTo(SkBits2Float(0x43ab0000), SkBits2Float(0x43f68000), SkBits2Float(0x43bd0000), SkBits2Float(0x43f2c000));  // 342, 493, 378, 485.5f
9436     path.quadTo(SkBits2Float(0x43cf0000), SkBits2Float(0x43ef0000), SkBits2Float(0x43df8000), SkBits2Float(0x43e80000));  // 414, 478, 447, 464
9437     path.quadTo(SkBits2Float(0x43f00000), SkBits2Float(0x43e10000), SkBits2Float(0x43ff8000), SkBits2Float(0x43d70000));  // 480, 450, 511, 430
9438     path.lineTo(SkBits2Float(0x43f78000), SkBits2Float(0x43cc0000));  // 495, 408
9439     path.quadTo(SkBits2Float(0x43e90000), SkBits2Float(0x43d58000), SkBits2Float(0x43d9c000), SkBits2Float(0x43dc4000));  // 466, 427, 435.5f, 440.5f
9440     path.quadTo(SkBits2Float(0x43ca8000), SkBits2Float(0x43e30000), SkBits2Float(0x43b9c000), SkBits2Float(0x43e68000));  // 405, 454, 371.5f, 461
9441     path.quadTo(SkBits2Float(0x43a90000), SkBits2Float(0x43ea0000), SkBits2Float(0x43958000), SkBits2Float(0x43ea0000));  // 338, 468, 299, 468
9442     path.quadTo(SkBits2Float(0x43650000), SkBits2Float(0x43ea0000), SkBits2Float(0x43308000), SkBits2Float(0x43da4000));  // 229, 468, 176.5f, 436.5f
9443     path.quadTo(SkBits2Float(0x42f80000), SkBits2Float(0x43ca8000), SkBits2Float(0x42c00000), SkBits2Float(0x43ac0000));  // 124, 405, 96, 344
9444     path.quadTo(SkBits2Float(0x42880000), SkBits2Float(0x438d8000), SkBits2Float(0x42880000), SkBits2Float(0x43420000));  // 68, 283, 68, 194
9445     path.lineTo(SkBits2Float(0x42240000), SkBits2Float(0x43420000));  // 41, 194
9446     path.close();
9447     path.moveTo(SkBits2Float(0x43ddd958), SkBits2Float(0x440e8000));  // 443.698f, 570
9448     path.quadTo(SkBits2Float(0x43ddd958), SkBits2Float(0x44094000), SkBits2Float(0x43da5958), SkBits2Float(0x4404c000));  // 443.698f, 549, 436.698f, 531
9449     path.quadTo(SkBits2Float(0x43d6d958), SkBits2Float(0x44004000), SkBits2Float(0x43cfd958), SkBits2Float(0x43f98000));  // 429.698f, 513, 415.698f, 499
9450     path.quadTo(SkBits2Float(0x43c75958), SkBits2Float(0x43f18000), SkBits2Float(0x43ba9958), SkBits2Float(0x43ee0000));  // 398.698f, 483, 373.198f, 476
9451     path.quadTo(SkBits2Float(0x43add958), SkBits2Float(0x43ea8000), SkBits2Float(0x4396d958), SkBits2Float(0x43ea8000));  // 347.698f, 469, 301.698f, 469
9452     path.lineTo(SkBits2Float(0x436cb2b0), SkBits2Float(0x43ea8000));  // 236.698f, 469
9453     path.lineTo(SkBits2Float(0x436cb2b0), SkBits2Float(0x43f68000));  // 236.698f, 493
9454     path.lineTo(SkBits2Float(0x43955958), SkBits2Float(0x43f68000));  // 298.698f, 493
9455     path.quadTo(SkBits2Float(0x43a8d958), SkBits2Float(0x43f68000), SkBits2Float(0x43b3d958), SkBits2Float(0x43f90000));  // 337.698f, 493, 359.698f, 498
9456     path.quadTo(SkBits2Float(0x43bed958), SkBits2Float(0x43fb8000), SkBits2Float(0x43c55958), SkBits2Float(0x4400c000));  // 381.698f, 503, 394.698f, 515
9457     path.quadTo(SkBits2Float(0x43cb5958), SkBits2Float(0x44030000), SkBits2Float(0x43cdd958), SkBits2Float(0x4406a000));  // 406.698f, 524, 411.698f, 538.5f
9458     path.quadTo(SkBits2Float(0x43d05958), SkBits2Float(0x440a4000), SkBits2Float(0x43d05958), SkBits2Float(0x440e8000));  // 416.698f, 553, 416.698f, 570
9459     path.lineTo(SkBits2Float(0x43ddd958), SkBits2Float(0x440e8000));  // 443.698f, 570
9460     path.close();
9461 
9462     testSimplify(reporter, path, filename);
9463 }
9464 
bug11958_c(skiatest::Reporter * reporter,const char * filename)9465 static void bug11958_c(skiatest::Reporter* reporter, const char* filename) {
9466     SkPath path;
9467 
9468     path.setFillType(SkPathFillType::kWinding);
9469     path.moveTo(200.f, 200.f);
9470     path.lineTo(164.f, 459.f);
9471     path.quadTo(222.f, 493.f, 299.f, 493.f);
9472     path.quadTo(342.f, 493.f, 378.f, 485.f);
9473     path.close();
9474 
9475     path.moveTo(415.698f, 499.f);
9476     path.lineTo(236.698f, 469.f);
9477     path.lineTo(236.698f, 493.f);
9478     path.lineTo(298.698f, 493.f);
9479     path.quadTo(337.698f, 493.f, 359.698f, 498.f);
9480     path.close();
9481 
9482     testSimplify(reporter, path, filename);
9483 }
9484 
9485 static void (*skipTest)(skiatest::Reporter* , const char* filename) = nullptr;
9486 static void (*firstTest)(skiatest::Reporter* , const char* filename) = nullptr;
9487 static void (*stopTest)(skiatest::Reporter* , const char* filename) = nullptr;
9488 
9489 static TestDesc tests[] = {
9490     TEST(bug8290),
9491     TEST(bug8249),
9492     TEST(bug11958_a),
9493     TEST(bug11958_b),
9494     TEST(bug11958_c),
9495     TEST(grshapearc),
9496     TEST(coincubics),
9497     TEST(joel_16x),
9498     TEST(joel_16),
9499     TEST(joel_15x),
9500     TEST(joel_15),
9501     TEST(joel_14x),
9502     TEST(joel_14),
9503     TEST(joel_13x),
9504     TEST(joel_13),
9505     TEST(joel_12x),
9506     TEST(joel_12),
9507     TEST(joel_11),
9508     TEST(joel_10),
9509     TEST(joel_9),
9510     TEST(joel_8),
9511     TEST(joel_7),
9512     TEST(joel_6),
9513     TEST(joel_5),
9514     TEST(joel_4),
9515     TEST(joel_3),
9516     TEST(joel_2),
9517     TEST(joel_1),
9518     TEST(simplifyTest_1),
9519     TEST(carsvg_1),
9520     TEST(tiger8_393),
9521     TEST(bug5169),
9522     TEST(testQuads73),
9523     TEST(testQuads72),
9524     TEST(testQuads71),
9525     TEST(testQuads70),
9526     TEST(testQuads69),
9527     TEST(testQuads68),
9528     TEST(testQuads67),
9529     TEST(testQuads66),
9530     TEST(dean4),
9531     TEST(fuzz763_4713_b),
9532     TEST(fuzz_twister2),
9533     TEST(fuzz_twister),
9534     TEST(fuzz994s_3414),
9535     TEST(fuzz994s_11),
9536     TEST(cr514118),
9537     TEST(fuzz864a),
9538     TEST(testQuads65),
9539     TEST(testIssue3838_3),
9540     TEST(testIssue3838),
9541     TEST(testArc),
9542     TEST(testTriangle2),
9543     TEST(testTriangle1),
9544     TEST(testQuads64),
9545     TEST(testQuads63),
9546     TEST(testQuads62),
9547     TEST(testRect4),
9548     TEST(testRect3),
9549     TEST(testQuadralateral10),
9550     TEST(testQuads61),
9551     TEST(testQuads60),
9552     TEST(testQuads59),
9553     TEST(testQuads58),
9554     TEST(testQuads57),
9555     TEST(testQuads56),
9556     TEST(testQuads54),
9557     TEST(testQuads53),
9558     TEST(testQuads52),
9559     TEST(testQuads51),
9560     TEST(testQuads50),
9561     TEST(testQuads49),
9562     TEST(testQuads48),
9563     TEST(testQuads47),
9564     TEST(testQuads46x),
9565     TEST(testQuads45),
9566     TEST(testQuads44),
9567     TEST(testQuads43),
9568     TEST(testQuads42),
9569     TEST(testQuads41),
9570     TEST(testQuads36),
9571     TEST(testQuads37),
9572     TEST(testQuads38),
9573     TEST(testQuads39),
9574     TEST(testQuads40),
9575     TEST(testQuads16),
9576     TEST(testQuads17),
9577     TEST(testQuads18),
9578     TEST(testQuads19),
9579     TEST(testQuads20),
9580     TEST(testQuads21),
9581     TEST(testQuads22),
9582     TEST(testQuads23),
9583     TEST(testQuads24),
9584     TEST(testQuads25),
9585     TEST(testQuads26),
9586     TEST(testQuads27),
9587     TEST(testQuads28),
9588     TEST(testQuads29),
9589     TEST(testQuads30),
9590     TEST(testQuads31),
9591     TEST(testQuads32),
9592     TEST(testQuads33),
9593     TEST(testQuads34),
9594     TEST(testQuads35),
9595     TEST(testDegenerates1),
9596     TEST(testQuad13),
9597     TEST(testQuad14),
9598     TEST(testQuad15),
9599     TEST(testQuadratic56),
9600     TEST(testQuadralateral4),
9601     TEST(testQuadralateral3),
9602     TEST(testDegenerate5),
9603     TEST(testQuad12),
9604     TEST(testQuadratic51),
9605     TEST(testQuad8),
9606     TEST(testQuad11),
9607     TEST(testQuad10),
9608     TEST(testQuad9),
9609     TEST(testTriangles4x),
9610     TEST(testTriangles3x),
9611     TEST(testRect2s),
9612     TEST(testRect1s),
9613     TEST(tooCloseTest),
9614     TEST(skphealth_com76s),
9615     TEST(testQuadLineIntersect1),
9616     TEST(testQuadLineIntersect2),
9617     TEST(testQuadLineIntersect3),
9618     TEST(testQuad7),
9619     TEST(testQuad6),
9620     TEST(testQuad5),
9621     TEST(testQuad4),
9622     TEST(testQuad3),
9623     TEST(testQuad2),
9624     TEST(testAddTCoincident2),
9625     TEST(testAddTCoincident1),
9626     TEST(testTriangles2),
9627     TEST(testTriangles1),
9628     TEST(testQuadratic97),
9629     TEST(testQuadratic96),
9630     TEST(testQuadratic95),
9631     TEST(testQuadratic94),
9632     TEST(testQuadralateral2),
9633     TEST(testQuad1),
9634     TEST(testCubic2),
9635     TEST(testCubic1),
9636     TEST(testQuadralateral1),
9637     TEST(testLine85),
9638     TEST(testLine84),
9639     TEST(testLine84x),
9640     TEST(testLine83),
9641     TEST(testLine82h),
9642     TEST(testLine82g),
9643     TEST(testLine82f),
9644     TEST(testLine82e),
9645     TEST(testLine82d),
9646     TEST(testLine82c),
9647     TEST(testLine82b),
9648     TEST(testLine82a),
9649     TEST(testLine82),
9650     TEST(testQuadratic93),
9651     TEST(testQuadratic92x),
9652     TEST(testQuadratic91),
9653     TEST(testQuadratic90x),
9654     TEST(testQuadratic89x),
9655     TEST(testQuadratic88),
9656     TEST(testQuadratic87),
9657     TEST(testQuadratic86),
9658     TEST(testQuadratic85),
9659     TEST(testQuadratic84),
9660     TEST(testQuadratic83),
9661     TEST(testQuadratic82),
9662     TEST(testQuadratic81),
9663     TEST(testQuadratic80),
9664     TEST(testEight1),
9665     TEST(testEight2),
9666     TEST(testEight3),
9667     TEST(testEight4),
9668     TEST(testEight5),
9669     TEST(testEight6),
9670     TEST(testEight7),
9671     TEST(testEight8),
9672     TEST(testEight9),
9673     TEST(testEight10),
9674     TEST(testQuadratic79),
9675     TEST(testQuadratic78),
9676     TEST(testQuadratic77),
9677     TEST(testQuadratic76),
9678     TEST(testQuadratic75),
9679     TEST(testQuadratic74),
9680     TEST(testQuadratic73),
9681     TEST(testQuadratic72),
9682     TEST(testQuadratic71),
9683     TEST(testQuadratic70x),
9684     TEST(testQuadratic69),
9685     TEST(testQuadratic68),
9686     TEST(testQuadratic67x),
9687     TEST(testQuadratic65),
9688     TEST(testQuadratic64),
9689     TEST(testQuadratic63),
9690     TEST(testLine1a),
9691     TEST(testQuadratic59),
9692     TEST(testQuadratic59x),
9693     TEST(testQuadratic58),
9694     TEST(testQuadratic55),
9695     TEST(testQuadratic53),
9696     TEST(testQuadratic38),
9697     TEST(testQuadratic37),
9698     TEST(testQuadratic36),
9699     TEST(testQuadratic35),
9700     TEST(testQuadratic34),
9701     TEST(testQuadratic33),
9702     TEST(testQuadratic32),
9703     TEST(testQuadratic31),
9704     TEST(testQuadratic30),
9705     TEST(testQuadratic29),
9706     TEST(testQuadratic28),
9707     TEST(testQuadratic27),
9708     TEST(testQuadratic26),
9709     TEST(testQuadratic25),
9710     TEST(testQuadratic24),
9711     TEST(testQuadratic23),
9712     TEST(testQuadratic22),
9713     TEST(testQuadratic21),
9714     TEST(testQuadratic20),
9715     TEST(testQuadratic19),
9716     TEST(testQuadratic18),
9717     TEST(testQuadratic17x),
9718     TEST(testQuadratic15),
9719     TEST(testQuadratic14),
9720     TEST(testQuadratic9),
9721     TEST(testQuadratic8),
9722     TEST(testQuadratic7),
9723     TEST(testQuadratic6),
9724     TEST(testQuadratic5),
9725     TEST(testQuadratic4x),
9726     TEST(testQuadratic3x),
9727     TEST(testQuadratic2x),
9728     TEST(testQuadratic1x),
9729     TEST(testQuadratic4),
9730     TEST(testQuadratic3),
9731     TEST(testQuadratic2),
9732     TEST(testQuadratic1),
9733     TEST(testLine4ax),
9734     TEST(testLine3aax),
9735     TEST(testLine2ax),
9736     TEST(testLine1ax),
9737     TEST(testQuadralateral9x),
9738     TEST(testQuadralateral8x),
9739     TEST(testQuadralateral7x),
9740     TEST(testQuadralateral6x),
9741     TEST(testQuadralateral6ax),
9742     TEST(testQuadralateral9),
9743     TEST(testQuadralateral8),
9744     TEST(testQuadralateral7),
9745     TEST(testQuadralateral6),
9746     TEST(testQuadralateral6a),
9747     TEST(testFauxQuadralateral6dx),
9748     TEST(testFauxQuadralateral6cx),
9749     TEST(testFauxQuadralateral6bx),
9750     TEST(testFauxQuadralateral6ax),
9751     TEST(testFauxQuadralateral6x),
9752     TEST(testFauxQuadralateral6d),
9753     TEST(testFauxQuadralateral6c),
9754     TEST(testFauxQuadralateral6b),
9755     TEST(testFauxQuadralateral6a),
9756     TEST(testFauxQuadralateral6),
9757     TEST(testQuadralateral5x),
9758     TEST(testQuadralateral5),
9759     TEST(testNondegenerate4x),
9760     TEST(testNondegenerate3x),
9761     TEST(testNondegenerate2x),
9762     TEST(testNondegenerate1x),
9763     TEST(testNondegenerate4),
9764     TEST(testNondegenerate3),
9765     TEST(testNondegenerate2),
9766     TEST(testNondegenerate1),
9767     TEST(testDegenerate4x),
9768     TEST(testDegenerate3x),
9769     TEST(testDegenerate2x),
9770     TEST(testDegenerate1x),
9771     TEST(testDegenerate4),
9772     TEST(testDegenerate3),
9773     TEST(testDegenerate2),
9774     TEST(testDegenerate1),
9775     TEST(testLine79x),
9776     TEST(testLine78x),
9777     TEST(testLine77x),
9778     TEST(testLine76x),
9779     TEST(testLine75x),
9780     TEST(testLine74x),
9781     TEST(testLine73x),
9782     TEST(testLine72x),
9783     TEST(testLine71x),
9784     TEST(testLine70x),
9785     TEST(testLine69x),
9786     TEST(testLine68hx),
9787     TEST(testLine68gx),
9788     TEST(testLine68fx),
9789     TEST(testLine68ex),
9790     TEST(testLine68dx),
9791     TEST(testLine68cx),
9792     TEST(testLine68bx),
9793     TEST(testLine68ax),
9794     TEST(testLine67x),
9795     TEST(testLine66x),
9796     TEST(testLine65x),
9797     TEST(testLine64x),
9798     TEST(testLine63x),
9799     TEST(testLine62x),
9800     TEST(testLine61x),
9801     TEST(testLine60x),
9802     TEST(testLine59x),
9803     TEST(testLine58x),
9804     TEST(testLine57x),
9805     TEST(testLine56x),
9806     TEST(testLine55x),
9807     TEST(testLine54x),
9808     TEST(testLine53x),
9809     TEST(testLine52x),
9810     TEST(testLine51x),
9811     TEST(testLine50x),
9812     TEST(testLine49x),
9813     TEST(testLine48x),
9814     TEST(testLine47x),
9815     TEST(testLine46x),
9816     TEST(testLine45x),
9817     TEST(testLine44x),
9818     TEST(testLine43x),
9819     TEST(testLine42x),
9820     TEST(testLine41x),
9821     TEST(testLine40x),
9822     TEST(testLine38x),
9823     TEST(testLine37x),
9824     TEST(testLine36x),
9825     TEST(testLine35x),
9826     TEST(testLine34x),
9827     TEST(testLine33x),
9828     TEST(testLine32x),
9829     TEST(testLine31x),
9830     TEST(testLine30x),
9831     TEST(testLine29x),
9832     TEST(testLine28x),
9833     TEST(testLine27x),
9834     TEST(testLine26x),
9835     TEST(testLine25x),
9836     TEST(testLine24ax),
9837     TEST(testLine24x),
9838     TEST(testLine23x),
9839     TEST(testLine22x),
9840     TEST(testLine21x),
9841     TEST(testLine20x),
9842     TEST(testLine19x),
9843     TEST(testLine18x),
9844     TEST(testLine17x),
9845     TEST(testLine16x),
9846     TEST(testLine15x),
9847     TEST(testLine14x),
9848     TEST(testLine13x),
9849     TEST(testLine12x),
9850     TEST(testLine11x),
9851     TEST(testLine10ax),
9852     TEST(testLine10x),
9853     TEST(testLine9x),
9854     TEST(testLine8x),
9855     TEST(testLine7bx),
9856     TEST(testLine7ax),
9857     TEST(testLine7x),
9858     TEST(testLine6x),
9859     TEST(testLine5x),
9860     TEST(testLine4x),
9861     TEST(testLine3bx),
9862     TEST(testLine3ax),
9863     TEST(testLine3x),
9864     TEST(testLine2x),
9865     TEST(testLine1x),
9866     TEST(testLine81),
9867     TEST(testLine80),
9868     TEST(testLine79),
9869     TEST(testLine78),
9870     TEST(testLine77),
9871     TEST(testLine76),
9872     TEST(testLine75),
9873     TEST(testLine74),
9874     TEST(testLine73),
9875     TEST(testLine72),
9876     TEST(testLine71),
9877     TEST(testLine70),
9878     TEST(testLine69),
9879     TEST(testLine68h),
9880     TEST(testLine68g),
9881     TEST(testLine68f),
9882     TEST(testLine68e),
9883     TEST(testLine68d),
9884     TEST(testLine68c),
9885     TEST(testLine68b),
9886     TEST(testLine68a),
9887     TEST(testLine67),
9888     TEST(testLine66),
9889     TEST(testLine65),
9890     TEST(testLine64),
9891     TEST(testLine63),
9892     TEST(testLine62),
9893     TEST(testLine61),
9894     TEST(testLine60),
9895     TEST(testLine59),
9896     TEST(testLine58),
9897     TEST(testLine57),
9898     TEST(testLine56),
9899     TEST(testLine55),
9900     TEST(testLine54),
9901     TEST(testLine53),
9902     TEST(testLine52),
9903     TEST(testLine51),
9904     TEST(testLine50),
9905     TEST(testLine49),
9906     TEST(testLine48),
9907     TEST(testLine47),
9908     TEST(testLine46),
9909     TEST(testLine45),
9910     TEST(testLine44),
9911     TEST(testLine43),
9912     TEST(testLine42),
9913     TEST(testLine41),
9914     TEST(testLine40),
9915     TEST(testLine38),
9916     TEST(testLine37),
9917     TEST(testLine36),
9918     TEST(testLine35),
9919     TEST(testLine34),
9920     TEST(testLine33),
9921     TEST(testLine32),
9922     TEST(testLine31),
9923     TEST(testLine30),
9924     TEST(testLine29),
9925     TEST(testLine28),
9926     TEST(testLine27),
9927     TEST(testLine26),
9928     TEST(testLine25),
9929     TEST(testLine24a),
9930     TEST(testLine24),
9931     TEST(testLine23),
9932     TEST(testLine22),
9933     TEST(testLine21),
9934     TEST(testLine20),
9935     TEST(testLine19),
9936     TEST(testLine18),
9937     TEST(testLine17),
9938     TEST(testLine16),
9939     TEST(testLine15),
9940     TEST(testLine14),
9941     TEST(testLine13),
9942     TEST(testLine12),
9943     TEST(testLine11),
9944     TEST(testLine10a),
9945     TEST(testLine10),
9946     TEST(testLine9),
9947     TEST(testLine8),
9948     TEST(testLine7b),
9949     TEST(testLine7a),
9950     TEST(testLine7),
9951     TEST(testLine6),
9952     TEST(testLine5),
9953     TEST(testLine4),
9954     TEST(testLine3b),
9955     TEST(testLine3a),
9956     TEST(testLine3),
9957     TEST(testLine2),
9958     TEST(testLine1),
9959     TEST(testDegenerates),
9960 };
9961 
9962 static const size_t testCount = std::size(tests);
9963 
9964 static TestDesc subTests[] = {
9965     TEST(fuzz994s_3414),
9966     TEST(fuzz994s_11),
9967 };
9968 
9969 static const size_t subTestCount = std::size(subTests);
9970 
9971 static void (*firstSubTest)(skiatest::Reporter* , const char* filename) = nullptr;
9972 
9973 static bool runSubTests = false;
9974 static bool runSubTestsFirst = false;
9975 static bool runReverse = false;
9976 
DEF_TEST(PathOpsSimplify,reporter)9977 DEF_TEST(PathOpsSimplify, reporter) {
9978     if (runSubTests && runSubTestsFirst) {
9979         RunTestSet(reporter, subTests, subTestCount, firstSubTest, nullptr, stopTest, runReverse);
9980     }
9981     RunTestSet(reporter, tests, testCount, firstTest, skipTest, stopTest, runReverse);
9982     if (runSubTests && !runSubTestsFirst) {
9983         RunTestSet(reporter, subTests, subTestCount, firstSubTest, nullptr, stopTest, runReverse);
9984     }
9985 }
9986