Skip to content

Instantly share code, notes, and snippets.

@madig
Created November 1, 2019 17:38
Show Gist options
  • Save madig/998ec05ef8a496f984aaa86aeceda6fc to your computer and use it in GitHub Desktop.
Save madig/998ec05ef8a496f984aaa86aeceda6fc to your computer and use it in GitHub Desktop.
pyclipper contour order different depending on platform, reproducer
import pyclipper
_operationMap = {
"union": pyclipper.CT_UNION,
"intersection": pyclipper.CT_INTERSECTION,
"difference": pyclipper.CT_DIFFERENCE,
"xor": pyclipper.CT_XOR,
}
_fillTypeMap = {
"evenOdd": pyclipper.PFT_EVENODD,
"nonZero": pyclipper.PFT_NONZERO,
# we keep the misspelling for compatibility with earlier versions
"noneZero": pyclipper.PFT_NONZERO,
}
def clipExecute(
subjectContours,
clipContours,
operation,
subjectFillType="nonZero",
clipFillType="nonZero",
):
pc = pyclipper.Pyclipper()
for i, subjectContour in enumerate(subjectContours):
try:
pc.AddPath(subjectContour, pyclipper.PT_SUBJECT)
except pyclipper.ClipperException:
# skip invalid paths with no area
if pyclipper.Area(subjectContour) != 0:
raise InvalidSubjectContourError(
"contour %d is invalid for clipping" % i
)
for j, clipContour in enumerate(clipContours):
try:
pc.AddPath(clipContour, pyclipper.PT_CLIP)
except pyclipper.ClipperException:
# skip invalid paths with no area
if pyclipper.Area(clipContour) == 0:
raise InvalidClippingContourError(
"contour %d is invalid for clipping" % j
)
bounds = pc.GetBounds()
if (bounds.bottom, bounds.left, bounds.top, bounds.right) == (0, 0, 0, 0):
# do nothing if there are no paths
return []
try:
solution = pc.Execute(
_operationMap[operation],
_fillTypeMap[subjectFillType],
_fillTypeMap[clipFillType],
)
except pyclipper.ClipperException as exc:
raise ExecutionError(exc)
return [[tuple(p) for p in path] for path in solution]
SUBJECT_CONTOURS = [
[
(5373952, 77725696),
(12451840, 77725696),
(12451840, 90046464),
(24772608, 90046464),
(24772608, 97124352),
(5373952, 97124352),
],
[
(107610112, 90046464),
(120061952, 90046464),
(120061952, 77725696),
(127008768, 77725696),
(127008768, 97124352),
(107610112, 97124352),
],
[
(5373952, -24510464),
(24772608, -24510464),
(24772608, -17563648),
(12451840, -17563648),
(12451840, -5111808),
(5373952, -5111808),
],
[
(107610112, -24510464),
(127008768, -24510464),
(127008768, -5111808),
(120061952, -5111808),
(120061952, -17563648),
(107610112, -17563648),
],
[
(82575360, -24510464),
(100007936, -24510464),
(100007936, -17563648),
(82575360, -17563648),
],
[
(32505856, -24510464),
(49807360, -24510464),
(49807360, -17563648),
(32505856, -17563648),
],
[
(32505856, 90046464),
(49807360, 90046464),
(49807360, 97124352),
(32505856, 97124352),
],
[
(127008768, 2490368),
(127008768, 19791872),
(120061952, 19791872),
(120061952, 2490368),
],
[
(127008768, 52690944),
(127008768, 69992448),
(120061952, 69992448),
(120061952, 52690944),
],
[
(57540608, -24510464),
(74973184, -24510464),
(74973184, -17563648),
(57540608, -17563648),
],
[
(12451840, 2490368),
(12451840, 19791872),
(5373952, 19791872),
(5373952, 2490368),
],
[
(57540608, 90046464),
(74973184, 90046464),
(74973184, 97124352),
(57540608, 97124352),
],
[
(82575360, 90046464),
(100007936, 90046464),
(100007936, 97124352),
(82575360, 97124352),
],
[
(12451840, 27525120),
(12451840, 44957696),
(5373952, 44957696),
(5373952, 27525120),
],
[
(12451840, 52690944),
(12451840, 69992448),
(5373952, 69992448),
(5373952, 52690944),
],
[
(127008768, 27525120),
(127008768, 44957696),
(120061952, 44957696),
(120061952, 27525120),
],
[
(39351631, 20984725),
(40146606, 21024127),
(40920178, 21089401),
(41672434, 21180227),
(42403460, 21296282),
(43113342, 21437243),
(43802165, 21602788),
(44470016, 21792595),
(45116980, 22006341),
(45743144, 22243704),
(46348594, 22504362),
(46933415, 22787993),
(47497693, 23094273),
(48041515, 23422881),
(48564966, 23773494),
(49068132, 24145790),
(49551099, 24539447),
(50013954, 24954142),
(50456782, 25389553),
(50879669, 25845357),
(51282701, 26321233),
(51665964, 26816857),
(52029544, 27331908),
(52373527, 27866063),
(52697999, 28419000),
(53003046, 28990396),
(53288754, 29579929),
(53555208, 30187277),
(53802495, 30812118),
(54030701, 31454128),
(54239912, 32112986),
(54430213, 32788370),
(54601691, 33479956),
(54754432, 34187423),
(54888521, 34910448),
(55004044, 35648709),
(55101088, 36401884),
(55179739, 37169650),
(55240081, 37951685),
(55282202, 38747666),
(55306188, 39557272),
(55312384, 40239104),
(55303398, 41067945),
(55276381, 41882589),
(55231249, 42682748),
(55167915, 43468132),
(55086294, 44238452),
(54986300, 44993419),
(54867848, 45732744),
(54730851, 46456136),
(54575224, 47163307),
(54400881, 47853968),
(54207737, 48527829),
(53995706, 49184601),
(53764701, 49823994),
(53514638, 50445720),
(53245431, 51049489),
(52956994, 51635012),
(52649241, 52201999),
(52322086, 52750162),
(51975444, 53279210),
(51609229, 53788855),
(51223356, 54278807),
(50817738, 54748778),
(50392290, 55198477),
(49946926, 55627616),
(49481561, 56035904),
(48996109, 56423054),
(48490483, 56788775),
(47964599, 57132779),
(47418371, 57454775),
(46851712, 57754475),
(46264538, 58031590),
(45656762, 58285830),
(45028299, 58516905),
(44379063, 58724528),
(43708968, 58908407),
(43017929, 59068254),
(42305860, 59203781),
(41572675, 59314696),
(40818289, 59400712),
(40042615, 59461538),
(39245568, 59496886),
(38535168, 59506688),
(37719470, 59493727),
(36925219, 59455035),
(36152330, 59390903),
(35400716, 59301619),
(34670294, 59187474),
(33960976, 59048755),
(33272676, 58885753),
(32605310, 58698757),
(31958792, 58488056),
(31333035, 58253939),
(30727954, 57996695),
(30143464, 57716615),
(29579478, 57413987),
(29035911, 57089100),
(28512678, 56742244),
(28009691, 56373708),
(27526867, 55983782),
(27064118, 55572754),
(26621360, 55140914),
(26198507, 54688552),
(25795472, 54215955),
(25412171, 53723415),
(25048517, 53211220),
(24704424, 52679659),
(24379808, 52129022),
(24074582, 51559598),
(23788661, 50971676),
(23521958, 50365546),
(23274389, 49741496),
(23045867, 49099817),
(22836307, 48440797),
(22645623, 47764726),
(22473729, 47071893),
(22320540, 46362587),
(22185969, 45637097),
(22069932, 44895714),
(21972342, 44138726),
(21893114, 43366422),
(21832162, 42579092),
(21789400, 41777025),
(21764743, 40960510),
(21757952, 40239104),
(21766956, 39418439),
(21794023, 38611131),
(21839242, 37817502),
(21902696, 37037875),
(21984473, 36272571),
(22084658, 35521914),
(22203338, 34786225),
(22340597, 34065826),
(22496523, 33361041),
(22671200, 32672192),
(22864716, 31999600),
(23077156, 31343588),
(23308605, 30704479),
(23559151, 30082595),
(23828878, 29478259),
(24117874, 28891791),
(24426223, 28323516),
(24754012, 27773755),
(25101326, 27242831),
(25468252, 26731066),
(25854876, 26238782),
(26261284, 25766302),
(26687561, 25313949),
(27133793, 24882043),
(27600067, 24470908),
(28086469, 24080867),
(28593084, 23712241),
(29119998, 23365352),
(29667297, 23040524),
(30235068, 22738079),
(30823396, 22458338),
(31432368, 22201624),
(32062068, 21968261),
(32712584, 21758569),
(33384000, 21572871),
(34076404, 21411490),
(34789880, 21274748),
(35524516, 21162967),
(36280397, 21076470),
(37057608, 21015579),
(37856236, 20980617),
(38535168, 20971520),
],
[
(37838645, 27678994),
(37172508, 27746991),
(36536603, 27859569),
(35930777, 28016113),
(35354876, 28216010),
(34808747, 28458645),
(34292236, 28743403),
(33805189, 29069671),
(33347453, 29436835),
(32918875, 29844279),
(32519301, 30291391),
(32148577, 30777555),
(31806550, 31302157),
(31493066, 31864584),
(31207971, 32464221),
(30951113, 33100454),
(30722337, 33772669),
(30521491, 34480250),
(30348419, 35222585),
(30202970, 35999059),
(30084989, 36809058),
(29994323, 37651967),
(29930818, 38527172),
(29894320, 39434059),
(29884416, 40239104),
(29897803, 41172755),
(29938065, 42075252),
(30005356, 42945981),
(30099830, 43784328),
(30221640, 44589679),
(30370940, 45361420),
(30547883, 46098935),
(30752623, 46801612),
(30985314, 47468835),
(31246109, 48099991),
(31535161, 48694466),
(31852624, 49251644),
(32198652, 49770912),
(32573398, 50251656),
(32977016, 50693262),
(33409660, 51095115),
(33871482, 51456600),
(34362636, 51777105),
(34883277, 52056014),
(35433557, 52292714),
(36013630, 52486589),
(36623650, 52637027),
(37263771, 52743412),
(37934145, 52805131),
(38535168, 52822016),
(39244776, 52799311),
(39921746, 52731603),
(40566384, 52619502),
(41178993, 52463618),
(41759880, 52264562),
(42309350, 52022944),
(42827708, 51739374),
(43315259, 51414463),
(43772307, 51048820),
(44199159, 50643057),
(44596120, 50197783),
(44963493, 49713609),
(45301586, 49191145),
(45610702, 48631001),
(45891148, 48033787),
(46143227, 47400115),
(46367246, 46730594),
(46563509, 46025834),
(46732321, 45286446),
(46873988, 44513040),
(46988816, 43706226),
(47077108, 42866615),
(47139170, 41994817),
(47175307, 41091442),
(47185920, 40239104),
(47173199, 39307416),
(47134831, 38406748),
(47070513, 37537709),
(46979939, 36700910),
(46862802, 35896961),
(46718800, 35126472),
(46547626, 34390055),
(46348974, 33688318),
(46122541, 33021872),
(45868021, 32391329),
(45585109, 31797297),
(45273499, 31240387),
(44932886, 30721210),
(44562966, 30240375),
(44163433, 29798494),
(43733982, 29396176),
(43274307, 29034032),
(42784105, 28712671),
(42263069, 28432705),
(41710894, 28194743),
(41127276, 27999396),
(40511909, 27847275),
(39864488, 27738988),
(39184707, 27675147),
(38535168, 27656192),
],
[
(60686336, 58982400),
(60686336, 21495808),
(73924608, 21495808),
(74784068, 21511837),
(75619084, 21559671),
(76429090, 21638935),
(77213522, 21749250),
(77971812, 21890239),
(78703395, 22061525),
(79407706, 22262732),
(80084179, 22493481),
(80732247, 22753396),
(81351346, 23042099),
(81940908, 23359213),
(82500369, 23704361),
(83029163, 24077166),
(83526723, 24477251),
(83992485, 24904238),
(84425882, 25357750),
(84826348, 25837410),
(85193317, 26342840),
(85526225, 26873665),
(85824505, 27429506),
(86087591, 28009986),
(86314917, 28614727),
(86505918, 29243354),
(86660028, 29895488),
(86776681, 30570753),
(86855311, 31268771),
(86895352, 31989165),
(86900736, 32374784),
(86871767, 33345528),
(86786511, 34242683),
(86647443, 35069306),
(86457039, 35828457),
(86217775, 36523193),
(85932125, 37156572),
(85602567, 37731653),
(85231575, 38251492),
(84821624, 38719150),
(84375191, 39137683),
(83894752, 39510150),
(83382781, 39839608),
(82841754, 40129117),
(82274148, 40381734),
(81682437, 40600516),
(81069097, 40788523),
(80436604, 40948813),
(80084992, 41025536),
(80084992, 41549824),
(80781318, 41707407),
(81436816, 41922982),
(82050620, 42194598),
(82621862, 42520304),
(83149675, 42898151),
(83633194, 43326189),
(84071551, 43802466),
(84463880, 44325033),
(84809313, 44891939),
(85106984, 45501234),
(85356026, 46150968),
(85555573, 46839191),
(85704756, 47563952),
(85802711, 48323301),
(85848570, 49115288),
(85852160, 49414144),
(85833812, 50151284),
(85778838, 50854242),
(85687345, 51523583),
(85559437, 52159871),
(85395221, 52763671),
(85194803, 53335546),
(84958289, 53876061),
(84685783, 54385781),
(84377393, 54865269),
(84033224, 55315091),
(83653381, 55735810),
(83237971, 56127991),
(82787099, 56492198),
(82300871, 56828996),
(81779393, 57138949),
(81222771, 57422620),
(80631111, 57680575),
(80004518, 57913379),
(79343098, 58121594),
(78646957, 58305786),
(77916202, 58466519),
(77150936, 58604357),
(76351268, 58719865),
(75517301, 58813606),
(74649143, 58886146),
(73746898, 58938049),
(72810673, 58969879),
(71840574, 58982199),
(71696384, 58982400),
],
[
(68550656, 44171264),
(68550656, 52428800),
(72351744, 52428800),
(73327343, 52401695),
(74203915, 52319000),
(74983528, 52178646),
(75668251, 51978566),
(76260152, 51716691),
(76761301, 51390953),
(77173764, 50999282),
(77499612, 50539610),
(77740912, 50009869),
(77899733, 49407991),
(77978143, 48731906),
(77987840, 48365568),
(77955341, 47657477),
(77854075, 47013065),
(77678388, 46432897),
(77422626, 45917538),
(77081134, 45467554),
(76648260, 45083510),
(76118350, 44765972),
(75485748, 44515505),
(74744802, 44332674),
(73889857, 44218045),
(72915260, 44172183),
(72744960, 44171264),
],
[
(68550656, 37879808),
(73007104, 37879808),
(74031421, 37841552),
(74937193, 37729312),
(75730315, 37546875),
(76416680, 37298032),
(77002183, 36986570),
(77492718, 36616279),
(77894179, 36190949),
(78212459, 35714367),
(78453453, 35190324),
(78623054, 34622608),
(78727158, 34015008),
(78771657, 33371313),
(78774272, 33161216),
(78748229, 32428325),
(78666864, 31743281),
(78525327, 31108512),
(78318766, 30526443),
(78042328, 29999500),
(77691163, 29530109),
(77260418, 29120694),
(76745242, 28773684),
(76140783, 28491502),
(75442189, 28276575),
(74644610, 28131330),
(73743192, 28058190),
(73269248, 28049408),
(68550656, 28049408),
],
[
(90812112, 21606974),
(91372323, 21472076),
(91989241, 21355162),
(92662865, 21258135),
(93393197, 21182898),
(94180236, 21131355),
(95023981, 21105409),
(95420416, 21102592),
(96180988, 21116042),
(96925111, 21156562),
(97652056, 21224406),
(98361093, 21319826),
(99051494, 21443078),
(99722528, 21594413),
(100373467, 21774087),
(101003581, 21982353),
(101612140, 22219464),
(102198417, 22485674),
(102761681, 22781236),
(103301204, 23106405),
(103816255, 23461434),
(104306105, 23846577),
(104770026, 24262087),
(105207289, 24708218),
(105617162, 25185224),
(105998919, 25693358),
(106351828, 26232875),
(106675162, 26804026),
(106968190, 27407068),
(107230184, 28042252),
(107460413, 28709833),
(107658150, 29410064),
(107822664, 30143199),
(107953226, 30909492),
(108049107, 31709196),
(108109578, 32542565),
(108133909, 33409853),
(108134400, 33554432),
(108134400, 58982400),
(100139008, 58982400),
(100139008, 33292288),
(100097281, 32342975),
(99975024, 31501402),
(99776621, 30762087),
(99506457, 30119550),
(99168916, 29568310),
(98768382, 29102888),
(98309241, 28717801),
(97795876, 28407570),
(97232671, 28166714),
(96624013, 27989753),
(95974284, 27871206),
(95287869, 27805591),
(94633984, 27787264),
(93848794, 27806124),
(93113845, 27858477),
(92419627, 27937985),
(91756633, 28038308),
(91115355, 28153109),
(90486284, 28276048),
(90308608, 28311552),
(90308608, 21757952),
],
]
resultContours = clipExecute(SUBJECT_CONTOURS, [], "union")
assert resultContours == [
[
(12451840, 90046464),
(24772608, 90046464),
(24772608, 97124352),
(5373952, 97124352),
(5373952, 77725696),
(12451840, 77725696),
],
[
(127008768, 97124352),
(107610112, 97124352),
(107610112, 90046464),
(120061952, 90046464),
(120061952, 77725696),
(127008768, 77725696),
],
[
(49807360, 97124352),
(32505856, 97124352),
(32505856, 90046464),
(49807360, 90046464),
],
[
(74973184, 97124352),
(57540608, 97124352),
(57540608, 90046464),
(74973184, 90046464),
],
[
(100007936, 97124352),
(82575360, 97124352),
(82575360, 90046464),
(100007936, 90046464),
],
[
(127008768, 69992448),
(120061952, 69992448),
(120061952, 52690944),
(127008768, 52690944),
],
[
(12451840, 69992448),
(5373952, 69992448),
(5373952, 52690944),
(12451840, 52690944),
],
[
(39351631, 20984725),
(40146606, 21024127),
(40920178, 21089401),
(41672434, 21180227),
(42403460, 21296282),
(43113342, 21437243),
(43802165, 21602788),
(44470016, 21792595),
(45116980, 22006341),
(45743144, 22243704),
(46348594, 22504362),
(46933415, 22787993),
(47497693, 23094273),
(48041515, 23422881),
(48564966, 23773494),
(49068132, 24145790),
(49551099, 24539447),
(50013954, 24954142),
(50456782, 25389553),
(50879669, 25845357),
(51282701, 26321233),
(51665964, 26816857),
(52029544, 27331908),
(52373527, 27866063),
(52697999, 28419000),
(53003046, 28990396),
(53288754, 29579929),
(53555208, 30187277),
(53802495, 30812118),
(54030701, 31454128),
(54239912, 32112986),
(54430213, 32788370),
(54601691, 33479956),
(54754432, 34187423),
(54888521, 34910448),
(55004044, 35648709),
(55101088, 36401884),
(55179739, 37169650),
(55240081, 37951685),
(55282202, 38747666),
(55306188, 39557272),
(55312384, 40239104),
(55303398, 41067945),
(55276381, 41882589),
(55231249, 42682748),
(55167915, 43468132),
(55086294, 44238452),
(54986300, 44993419),
(54867848, 45732744),
(54730851, 46456136),
(54575224, 47163307),
(54400881, 47853968),
(54207737, 48527829),
(53995706, 49184601),
(53764701, 49823994),
(53514638, 50445720),
(53245431, 51049489),
(52956994, 51635012),
(52649241, 52201999),
(52322086, 52750162),
(51975444, 53279210),
(51609229, 53788855),
(51223356, 54278807),
(50817738, 54748778),
(50392290, 55198477),
(49946926, 55627616),
(49481561, 56035904),
(48996109, 56423054),
(48490483, 56788775),
(47964599, 57132779),
(47418371, 57454775),
(46851712, 57754475),
(46264538, 58031590),
(45656762, 58285830),
(45028299, 58516905),
(44379063, 58724528),
(43708968, 58908407),
(43017929, 59068254),
(42305860, 59203781),
(41572675, 59314696),
(40818289, 59400712),
(40042615, 59461538),
(39245568, 59496886),
(38535168, 59506688),
(37719470, 59493727),
(36925219, 59455035),
(36152330, 59390903),
(35400716, 59301619),
(34670294, 59187474),
(33960976, 59048755),
(33272676, 58885753),
(32605310, 58698757),
(31958792, 58488056),
(31333035, 58253939),
(30727954, 57996695),
(30143464, 57716615),
(29579478, 57413987),
(29035911, 57089100),
(28512678, 56742244),
(28009691, 56373708),
(27526867, 55983782),
(27064118, 55572754),
(26621360, 55140914),
(26198507, 54688552),
(25795472, 54215955),
(25412171, 53723415),
(25048517, 53211220),
(24704424, 52679659),
(24379808, 52129022),
(24074582, 51559598),
(23788661, 50971676),
(23521958, 50365546),
(23274389, 49741496),
(23045867, 49099817),
(22836307, 48440797),
(22645623, 47764726),
(22473729, 47071893),
(22320540, 46362587),
(22185969, 45637097),
(22069932, 44895714),
(21972342, 44138726),
(21893114, 43366422),
(21832162, 42579092),
(21789400, 41777025),
(21764743, 40960510),
(21757952, 40239104),
(21766956, 39418439),
(21794023, 38611131),
(21839242, 37817502),
(21902696, 37037875),
(21984473, 36272571),
(22084658, 35521914),
(22203338, 34786225),
(22340597, 34065826),
(22496523, 33361041),
(22671200, 32672192),
(22864716, 31999600),
(23077156, 31343588),
(23308605, 30704479),
(23559151, 30082595),
(23828878, 29478259),
(24117874, 28891791),
(24426223, 28323516),
(24754012, 27773755),
(25101326, 27242831),
(25468252, 26731066),
(25854876, 26238782),
(26261284, 25766302),
(26687561, 25313949),
(27133793, 24882043),
(27600067, 24470908),
(28086469, 24080867),
(28593084, 23712241),
(29119998, 23365352),
(29667297, 23040524),
(30235068, 22738079),
(30823396, 22458338),
(31432368, 22201624),
(32062068, 21968261),
(32712584, 21758569),
(33384000, 21572871),
(34076404, 21411490),
(34789880, 21274748),
(35524516, 21162967),
(36280397, 21076470),
(37057608, 21015579),
(37856236, 20980617),
(38535168, 20971520),
],
[
(74784068, 21511837),
(75619084, 21559671),
(76429090, 21638935),
(77213522, 21749250),
(77971812, 21890239),
(78703395, 22061525),
(79407706, 22262732),
(80084179, 22493481),
(80732247, 22753396),
(81351346, 23042099),
(81940908, 23359213),
(82500369, 23704361),
(83029163, 24077166),
(83526723, 24477251),
(83992485, 24904238),
(84425882, 25357750),
(84826348, 25837410),
(85193317, 26342840),
(85526225, 26873665),
(85824505, 27429506),
(86087591, 28009986),
(86314917, 28614727),
(86505918, 29243354),
(86660028, 29895488),
(86776681, 30570753),
(86855311, 31268771),
(86895352, 31989165),
(86900736, 32374784),
(86871767, 33345528),
(86786511, 34242683),
(86647443, 35069306),
(86457039, 35828457),
(86217775, 36523193),
(85932125, 37156572),
(85602567, 37731653),
(85231575, 38251492),
(84821624, 38719150),
(84375191, 39137683),
(83894752, 39510150),
(83382781, 39839608),
(82841754, 40129117),
(82274148, 40381734),
(81682437, 40600516),
(81069097, 40788523),
(80436604, 40948813),
(80084992, 41025536),
(80084992, 41549824),
(80781318, 41707407),
(81436816, 41922982),
(82050620, 42194598),
(82621862, 42520304),
(83149675, 42898151),
(83633194, 43326189),
(84071551, 43802466),
(84463880, 44325033),
(84809313, 44891939),
(85106984, 45501234),
(85356026, 46150968),
(85555573, 46839191),
(85704756, 47563952),
(85802711, 48323301),
(85848570, 49115288),
(85852160, 49414144),
(85833812, 50151284),
(85778838, 50854242),
(85687345, 51523583),
(85559437, 52159871),
(85395221, 52763671),
(85194803, 53335546),
(84958289, 53876061),
(84685783, 54385781),
(84377393, 54865269),
(84033224, 55315091),
(83653381, 55735810),
(83237971, 56127991),
(82787099, 56492198),
(82300871, 56828996),
(81779393, 57138949),
(81222771, 57422620),
(80631111, 57680575),
(80004518, 57913379),
(79343098, 58121594),
(78646957, 58305786),
(77916202, 58466519),
(77150936, 58604357),
(76351268, 58719865),
(75517301, 58813606),
(74649143, 58886146),
(73746898, 58938049),
(72810673, 58969879),
(71840574, 58982199),
(71696384, 58982400),
(60686336, 58982400),
(60686336, 21495808),
(73924608, 21495808),
],
[
(96180988, 21116042),
(96925111, 21156562),
(97652056, 21224406),
(98361093, 21319826),
(99051494, 21443078),
(99722528, 21594413),
(100373467, 21774087),
(101003581, 21982353),
(101612140, 22219464),
(102198417, 22485674),
(102761681, 22781236),
(103301204, 23106405),
(103816255, 23461434),
(104306105, 23846577),
(104770026, 24262087),
(105207289, 24708218),
(105617162, 25185224),
(105998919, 25693358),
(106351828, 26232875),
(106675162, 26804026),
(106968190, 27407068),
(107230184, 28042252),
(107460413, 28709833),
(107658150, 29410064),
(107822664, 30143199),
(107953226, 30909492),
(108049107, 31709196),
(108109578, 32542565),
(108133909, 33409853),
(108134400, 33554432),
(108134400, 58982400),
(100139008, 58982400),
(100139008, 33292288),
(100097281, 32342975),
(99975024, 31501402),
(99776621, 30762087),
(99506457, 30119550),
(99168916, 29568310),
(98768382, 29102888),
(98309241, 28717801),
(97795876, 28407570),
(97232671, 28166714),
(96624013, 27989753),
(95974284, 27871206),
(95287869, 27805591),
(94633984, 27787264),
(93848794, 27806124),
(93113845, 27858477),
(92419627, 27937985),
(91756633, 28038308),
(91115355, 28153109),
(90486284, 28276048),
(90308608, 28311552),
(90308608, 21757952),
(90812112, 21606974),
(91372323, 21472076),
(91989241, 21355162),
(92662865, 21258135),
(93393197, 21182898),
(94180236, 21131355),
(95023981, 21105409),
(95420416, 21102592),
],
[
(37838645, 27678994),
(37172508, 27746991),
(36536603, 27859569),
(35930777, 28016113),
(35354876, 28216010),
(34808747, 28458645),
(34292236, 28743403),
(33805189, 29069671),
(33347453, 29436835),
(32918875, 29844279),
(32519301, 30291391),
(32148577, 30777555),
(31806550, 31302157),
(31493066, 31864584),
(31207971, 32464221),
(30951113, 33100454),
(30722337, 33772669),
(30521491, 34480250),
(30348419, 35222585),
(30202970, 35999059),
(30084989, 36809058),
(29994323, 37651967),
(29930818, 38527172),
(29894320, 39434059),
(29884416, 40239104),
(29897803, 41172755),
(29938065, 42075252),
(30005356, 42945981),
(30099830, 43784328),
(30221640, 44589679),
(30370940, 45361420),
(30547883, 46098935),
(30752623, 46801612),
(30985314, 47468835),
(31246109, 48099991),
(31535161, 48694466),
(31852624, 49251644),
(32198652, 49770912),
(32573398, 50251656),
(32977016, 50693262),
(33409660, 51095115),
(33871482, 51456600),
(34362636, 51777105),
(34883277, 52056014),
(35433557, 52292714),
(36013630, 52486589),
(36623650, 52637027),
(37263771, 52743412),
(37934145, 52805131),
(38535168, 52822016),
(39244776, 52799311),
(39921746, 52731603),
(40566384, 52619502),
(41178993, 52463618),
(41759880, 52264562),
(42309350, 52022944),
(42827708, 51739374),
(43315259, 51414463),
(43772307, 51048820),
(44199159, 50643057),
(44596120, 50197783),
(44963493, 49713609),
(45301586, 49191145),
(45610702, 48631001),
(45891148, 48033787),
(46143227, 47400115),
(46367246, 46730594),
(46563509, 46025834),
(46732321, 45286446),
(46873988, 44513040),
(46988816, 43706226),
(47077108, 42866615),
(47139170, 41994817),
(47175307, 41091442),
(47185920, 40239104),
(47173199, 39307416),
(47134831, 38406748),
(47070513, 37537709),
(46979939, 36700910),
(46862802, 35896961),
(46718800, 35126472),
(46547626, 34390055),
(46348974, 33688318),
(46122541, 33021872),
(45868021, 32391329),
(45585109, 31797297),
(45273499, 31240387),
(44932886, 30721210),
(44562966, 30240375),
(44163433, 29798494),
(43733982, 29396176),
(43274307, 29034032),
(42784105, 28712671),
(42263069, 28432705),
(41710894, 28194743),
(41127276, 27999396),
(40511909, 27847275),
(39864488, 27738988),
(39184707, 27675147),
(38535168, 27656192),
],
[
(68550656, 44171264),
(68550656, 52428800),
(72351744, 52428800),
(73327343, 52401695),
(74203915, 52319000),
(74983528, 52178646),
(75668251, 51978566),
(76260152, 51716691),
(76761301, 51390953),
(77173764, 50999282),
(77499612, 50539610),
(77740912, 50009869),
(77899733, 49407991),
(77978143, 48731906),
(77987840, 48365568),
(77955341, 47657477),
(77854075, 47013065),
(77678388, 46432897),
(77422626, 45917538),
(77081134, 45467554),
(76648260, 45083510),
(76118350, 44765972),
(75485748, 44515505),
(74744802, 44332674),
(73889857, 44218045),
(72915260, 44172183),
(72744960, 44171264),
],
[
(12451840, 44957696),
(5373952, 44957696),
(5373952, 27525120),
(12451840, 27525120),
],
[
(127008768, 44957696),
(120061952, 44957696),
(120061952, 27525120),
(127008768, 27525120),
],
[
(68550656, 28049408),
(68550656, 37879808),
(73007104, 37879808),
(74031421, 37841552),
(74937193, 37729312),
(75730315, 37546875),
(76416680, 37298032),
(77002183, 36986570),
(77492718, 36616279),
(77894179, 36190949),
(78212459, 35714367),
(78453453, 35190324),
(78623054, 34622608),
(78727158, 34015008),
(78771657, 33371313),
(78774272, 33161216),
(78748229, 32428325),
(78666864, 31743281),
(78525327, 31108512),
(78318766, 30526443),
(78042328, 29999500),
(77691163, 29530109),
(77260418, 29120694),
(76745242, 28773684),
(76140783, 28491502),
(75442189, 28276575),
(74644610, 28131330),
(73743192, 28058190),
(73269248, 28049408),
],
[
(127008768, 19791872),
(120061952, 19791872),
(120061952, 2490368),
(127008768, 2490368),
],
[
(12451840, 19791872),
(5373952, 19791872),
(5373952, 2490368),
(12451840, 2490368),
],
[
(24772608, -17563648),
(12451840, -17563648),
(12451840, -5111808),
(5373952, -5111808),
(5373952, -24510464),
(24772608, -24510464),
],
[
(127008768, -5111808),
(120061952, -5111808),
(120061952, -17563648),
(107610112, -17563648),
(107610112, -24510464),
(127008768, -24510464),
],
[
(100007936, -17563648),
(82575360, -17563648),
(82575360, -24510464),
(100007936, -24510464),
],
[
(49807360, -17563648),
(32505856, -17563648),
(32505856, -24510464),
(49807360, -24510464),
],
[
(74973184, -17563648),
(57540608, -17563648),
(57540608, -24510464),
(74973184, -24510464),
],
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment