From 64e4d52625ad1a85b4801715452dc12688d8296b Mon Sep 17 00:00:00 2001 From: Craig Date: Sun, 26 Nov 2023 12:13:41 +0000 Subject: [PATCH] add 2018/11 and 2018/18 --- README.md | 4 +- src/.template/index.test.ts | 48 +- src/.template/index.ts | 18 +- src/2018/11/index.test.ts | 39 + src/2018/11/index.ts | 108 ++ src/2018/18/index.test.ts | 38 + src/2018/18/index.ts | 219 ++++ src/2018/18/puzzleInput.txt | 2164 +++++++++++++++++++++++++++++++++++ src/2018/18/simpleInput.txt | 8 + src/2022/01/index.ts | 2 +- src/helpers/types.ts | 8 + 11 files changed, 2635 insertions(+), 21 deletions(-) create mode 100644 src/2018/11/index.test.ts create mode 100644 src/2018/11/index.ts create mode 100644 src/2018/18/index.test.ts create mode 100644 src/2018/18/index.ts create mode 100644 src/2018/18/puzzleInput.txt create mode 100644 src/2018/18/simpleInput.txt create mode 100644 src/helpers/types.ts diff --git a/README.md b/README.md index 2997bbc..469c3fc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

Advent of Code [2022] 👋

+

Advent of Code 👋

Version @@ -6,7 +6,7 @@

-> My hopefully clean-ish complete 2022 solutions to Advent of Code using Typescript with a datastructures library and ramda +> My hopefully clean-ish complete solutions to Advent of Code using Typescript with ramda ## What is Advent of Code? diff --git a/src/.template/index.test.ts b/src/.template/index.test.ts index d5b1177..344e454 100644 --- a/src/.template/index.test.ts +++ b/src/.template/index.test.ts @@ -1,21 +1,39 @@ -import { solvePart1, solvePart2 } from "./index"; -import { InputType, readInput } from "../../helpers/readInput"; - -describe.skip("Day __", () => { - describe.each<[InputType, number, number]>([ - ["simpleInput", 0, 0], - // ["puzzleInput", 0, 0] - ])("%s", (filename, expectedPart1, expectedPart2) => { - it("should solve part 1", async () => { - const input = await readInput(__dirname, filename); - - expect(solvePart1(input)).toBe(expectedPart1); +import { day } from "./index"; + +describe("2023/__", () => { + describe("part 1", () => { + it("should solve the simple input", async () => { + const input = await day.getSimpleInput(); + + const output = day.solvePart1(input); + + expect(output).toBe(-1); + }); + + it("should solve the puzzle input", async () => { + const input = await day.getPuzzleInput(); + + const output = day.solvePart1(input); + + expect(output).toBe(-1); }); + }); + + describe("part 2", () => { + it("should solve the simple input", async () => { + const input = await day.getSimpleInput(); + + const output = day.solvePart2(input); + + expect(output).toBe(-1); + }); + + it("should solve the puzzle input", async () => { + const input = await day.getPuzzleInput(); - it("should solve part 2", async () => { - const input = await readInput(__dirname, filename); + const output = day.solvePart2(input); - expect(solvePart2(input)).toBe(expectedPart2); + expect(output).toBe(-1); }); }); }); diff --git a/src/.template/index.ts b/src/.template/index.ts index d9d874f..53eadd6 100644 --- a/src/.template/index.ts +++ b/src/.template/index.ts @@ -1,6 +1,18 @@ +import { readInput } from "../helpers/readInput"; +import { Day } from "../helpers/types"; + const parseInput = (input: string) => input; -const solve = (input: string) => input; +const solve = (input: string) => input.length; + +const solvePart1 = (input: string) => solve(parseInput(input)); +const solvePart2 = (input: string) => solve(parseInput(input)); -export const solvePart1 = (input: string) => solve(parseInput(input)); -export const solvePart2 = (input: string) => solve(parseInput(input)); +export const day: Day = { + day: 0, + year: 2023, + getSimpleInput: () => readInput(__dirname, "simpleInput"), + getPuzzleInput: () => readInput(__dirname, "puzzleInput"), + solvePart1, + solvePart2, +}; diff --git a/src/2018/11/index.test.ts b/src/2018/11/index.test.ts new file mode 100644 index 0000000..42f5582 --- /dev/null +++ b/src/2018/11/index.test.ts @@ -0,0 +1,39 @@ +import { chronalCharge } from "./index"; + +describe("2023/11", () => { + describe("part 1", () => { + it("should solve the simple input", async () => { + const input = await chronalCharge.getSimpleInput(); + + const output = chronalCharge.solvePart1(input); + + expect(output).toBe("21,61"); + }); + + it("should solve the puzzle input", async () => { + const input = await chronalCharge.getPuzzleInput(); + + const output = chronalCharge.solvePart1(input); + + expect(output).toBe("20,43"); + }); + }); + + describe("part 2", () => { + it("should solve the simple input", async () => { + const input = await chronalCharge.getSimpleInput(); + + const output = chronalCharge.solvePart2(input); + + expect(output).toBe("232,251,12"); + }); + + it("should solve the puzzle input", async () => { + const input = await chronalCharge.getPuzzleInput(); + + const output = chronalCharge.solvePart2(input); + + expect(output).toBe("233,271,13"); + }); + }); +}); diff --git a/src/2018/11/index.ts b/src/2018/11/index.ts new file mode 100644 index 0000000..53b7387 --- /dev/null +++ b/src/2018/11/index.ts @@ -0,0 +1,108 @@ +import { Position } from "../../helpers/Position"; +import { Day } from "../../helpers/types"; + +const calculatePowerLevel = ( + { x, y }: Position, + gridSerialNumber: number, +): number => { + const rackId = x + 1 + 10; + const power = (rackId * (y + 1) + gridSerialNumber) * rackId; + const hundredsValue = ((power % 1000) - (power % 100)) / 100; + + return hundredsValue - 5; +}; + +const calculateMaxFixedGrid = (gridSerialNumber: number) => { + const fuelCells = Array.from({ length: 300 }, (_, y) => + Array.from({ length: 300 }, (__, x) => + calculatePowerLevel({ x, y }, gridSerialNumber), + ), + ); + + const size = 3; + let maxPowerLevel = -Infinity; + let position: Position = { x: -1, y: -1 }; + + for (let y = 0; y <= fuelCells.length - size; y += 1) { + for (let x = 0; x <= fuelCells[y].length - size; x += 1) { + let powerLevel = 0; + + for (let yDiff = 0; yDiff < size; yDiff += 1) + for (let xDiff = 0; xDiff < size; xDiff += 1) + powerLevel += fuelCells[y + yDiff][x + xDiff]; + + if (powerLevel > maxPowerLevel) { + position = { x, y }; + maxPowerLevel = powerLevel; + } + + maxPowerLevel = Math.max(maxPowerLevel, powerLevel); + } + } + + return `${position.x + 1},${position.y + 1}`; +}; + +const calculateMaxVariableGrid = (gridSerialNumber: number) => { + const gridSize = 300; + const maxSquareSize = 20; + const sumsToRightAndBelow = Array.from({ length: gridSize }, (_, y) => + Array.from({ length: gridSize }, (__, x) => + calculatePowerLevel({ x, y }, gridSerialNumber), + ), + ); + + for (let diff = gridSize - 2; diff >= 0; diff -= 1) { + sumsToRightAndBelow[diff][gridSize - 1] += + sumsToRightAndBelow[diff + 1][gridSize - 1]; + sumsToRightAndBelow[gridSize - 1][diff] += + sumsToRightAndBelow[gridSize - 1][diff + 1]; + } + + for (let y = gridSize - 2; y >= 0; y -= 1) + for (let x = gridSize - 2; x >= 0; x -= 1) + sumsToRightAndBelow[y][x] += + sumsToRightAndBelow[y + 1][x] + + sumsToRightAndBelow[y][x + 1] - + sumsToRightAndBelow[y + 1][x + 1]; + + let maxPowerLevel = -Infinity; + let bestPosition: Position = { x: -1, y: -1 }; + let bestSize = -1; + + for (let y = 0; y < gridSize; y += 1) + for (let x = 0; x < gridSize; x += 1) + for ( + let size = 1; + size < Math.min(maxSquareSize, gridSize - x, gridSize - y); + size += 1 + ) { + const powerLevel = + sumsToRightAndBelow[y][x] - + sumsToRightAndBelow[y + size][x] - + sumsToRightAndBelow[y][x + size] + + sumsToRightAndBelow[y + size][x + size]; + + if (powerLevel > maxPowerLevel) { + bestPosition = { x, y }; + maxPowerLevel = powerLevel; + bestSize = size; + } + } + + return `${bestPosition.x + 1},${bestPosition.y + 1},${bestSize}`; +}; + +const solvePart1 = (gridSerialNumber: number) => + calculateMaxFixedGrid(gridSerialNumber); +const solvePart2 = (gridSerialNumber: number) => + calculateMaxVariableGrid(gridSerialNumber); + +export const chronalCharge: Day = { + day: 13, + year: 2018, + getSimpleInput: async () => 42, + getPuzzleInput: async () => 1309, + solvePart1, + solvePart2, +}; diff --git a/src/2018/18/index.test.ts b/src/2018/18/index.test.ts new file mode 100644 index 0000000..cfd7a97 --- /dev/null +++ b/src/2018/18/index.test.ts @@ -0,0 +1,38 @@ +import { reservoirResearch } from "./index"; + +describe("2018/18", () => { + describe("part 1", () => { + it("should solve the simple input", async () => { + const input = await reservoirResearch.getSimpleInput(); + + const output = reservoirResearch.solvePart1(input); + + expect(output).toBe(57); + }); + + it("should solve the puzzle input", async () => { + const input = await reservoirResearch.getPuzzleInput(); + + const output = reservoirResearch.solvePart1(input); + + expect(output).toBe(39_367); + }); + }); + + describe("part 2", () => { + it("should solve the simple input", async () => { + const input = await reservoirResearch.getSimpleInput(); + + const output = reservoirResearch.solvePart2(input); + + expect(output).toBe(29); + }); + it("should solve the puzzle input", async () => { + const input = await reservoirResearch.getPuzzleInput(); + + const output = reservoirResearch.solvePart2(input); + + expect(output).toBe(33_061); + }); + }); +}); diff --git a/src/2018/18/index.ts b/src/2018/18/index.ts new file mode 100644 index 0000000..b34fbdc --- /dev/null +++ b/src/2018/18/index.ts @@ -0,0 +1,219 @@ +import { add, count } from "ramda"; +import { Position } from "../../helpers/Position"; +import { parseLines, parseNumber } from "../../helpers/parsers"; +import { readInput } from "../../helpers/readInput"; +import { Day } from "../../helpers/types"; + +type Tile = "wall" | "rest" | "flowing"; + +type ResevoirRepository = { + get: (position: Position) => Tile | null; + set: (position: Position, tile: Tile) => void; + getWater: (includeFlowing: boolean) => number; +}; + +const getBelow = ({ x, y }: Position): Position => ({ x, y: y + 1 }); + +type HorizontalVein = { + type: "horizontal"; + minX: number; + maxX: number; + y: number; +}; + +type VertivalVein = { + type: "vertical"; + x: number; + minY: number; + maxY: number; +}; + +type Vein = HorizontalVein | VertivalVein; + +const parseInput = (input: string): ResevoirRepository => { + const lines = parseLines(input); + + const veins: Vein[] = lines.map((line) => { + const verticalMatch = line.match(/x=(\d+), y=(\d+)..(\d+)/); + const horizontalMatch = line.match(/y=(\d+), x=(\d+)..(\d+)/); + + if (verticalMatch) { + const [, xString, yString1, yString2] = verticalMatch; + return { + type: "vertical", + x: parseNumber(xString), + minY: Math.min(parseNumber(yString1), parseNumber(yString2)), + maxY: Math.max(parseNumber(yString1), parseNumber(yString2)), + }; + } + + if (horizontalMatch) { + const [, yString, xString1, xString2] = horizontalMatch; + return { + type: "horizontal", + minX: Math.min(parseNumber(xString1), parseNumber(xString2)), + maxX: Math.max(parseNumber(xString1), parseNumber(xString2)), + y: parseNumber(yString), + }; + } + + throw new Error(`failed to parse line ${line}`); + }); + + const minX = Math.min( + ...veins.map((vein) => (vein.type === "horizontal" ? vein.minX : vein.x)), + ); + + const maxX = Math.max( + ...veins.map((vein) => (vein.type === "horizontal" ? vein.maxX : vein.x)), + ); + + const minY = Math.min( + ...veins.map((vein) => (vein.type === "vertical" ? vein.minY : vein.y)), + ); + + const maxY = Math.max( + ...veins.map((vein) => (vein.type === "vertical" ? vein.maxY : vein.y)), + ); + + const arr: (Tile | null)[][] = Array.from({ length: maxY + 2 }, () => + Array.from({ length: maxX - minX + 5 }, () => null), + ); + + veins.forEach((vein) => { + if (vein.type === "horizontal") { + for (let x = vein.minX; x <= vein.maxX; x += 1) { + arr[vein.y][x - minX + 2] = "wall"; + } + } else { + for (let y = vein.minY; y <= vein.maxY; y += 1) { + arr[y][vein.x - minX + 2] = "wall"; + } + } + }); + + for (let x = 0; x < arr[0].length; x += 1) { + arr.at(-1)![x] = "flowing"; + } + + return { + get: ({ x, y }) => arr[y][x - minX + 2], + set: ({ x, y }, tile) => { + arr[y][x - minX + 2] = tile; + }, + getWater: (includeFlowing) => + arr + .filter((_, y) => y >= minY && y <= maxY) + .map( + count( + (tile) => (includeFlowing && tile === "flowing") || tile === "rest", + ), + ) + .reduce(add), + }; +}; + +const isWallToSide = ( + reservoirRepository: ResevoirRepository, + startingPosition: Position, + side: -1 | 1, +): { is: boolean; x: number; tile: Tile | null } => { + let currentPosition = { ...startingPosition }; + let nextPosition = { x: currentPosition.x + side, y: currentPosition.y }; + + while ( + reservoirRepository.get(nextPosition) === null && + ["wall", "rest"].includes( + reservoirRepository.get(getBelow(currentPosition)) ?? "", + ) + ) { + currentPosition = nextPosition; + nextPosition = { x: nextPosition.x + side, y: nextPosition.y }; + } + + return { + is: reservoirRepository.get(nextPosition) !== null, + tile: reservoirRepository.get(nextPosition), + x: nextPosition.x, + }; +}; + +const flow = ( + reservoirRepository: ResevoirRepository, + startingPosition: Position, +): Position[] => { + let currentPosition = { ...startingPosition }; + + while (reservoirRepository.get(getBelow(currentPosition)) === null) { + currentPosition = { x: currentPosition.x, y: currentPosition.y + 1 }; + } + + if (reservoirRepository.get(getBelow(currentPosition)) === "flowing") { + reservoirRepository.set(currentPosition, "flowing"); + + return []; + } + + const wallToLeft = isWallToSide(reservoirRepository, currentPosition, -1); + const wallToRight = isWallToSide(reservoirRepository, currentPosition, 1); + + if (wallToLeft.is && wallToRight.is) { + const isFlowing = + wallToLeft.tile === "flowing" || wallToRight.tile === "flowing"; + for (let x = wallToLeft.x + 1; x < wallToRight.x; x += 1) { + reservoirRepository.set( + { x, y: currentPosition.y }, + isFlowing ? "flowing" : "rest", + ); + } + + return []; + } + const arr: Position[] = []; + if (!wallToRight.is) { + arr.push({ x: wallToRight.x - 1, y: currentPosition.y }); + } + if (!wallToLeft.is) { + arr.push({ x: wallToLeft.x + 1, y: currentPosition.y }); + } + + return arr; +}; + +const solve = ( + resevoirRepository: ResevoirRepository, + includeFlowing: boolean, +): number => { + const spring: Position = { x: 500, y: 0 }; + let arr: Position[] = [spring]; + + while (resevoirRepository.get(spring) === null) { + const nextArr: Position[] = [spring]; + const seen = new Set(); + + arr.forEach((position) => { + const key = `${position.x}_${position.y}`; + + if (!seen.has(key)) { + seen.add(key); + nextArr.push(...flow(resevoirRepository, position)); + } + }); + + arr = nextArr; + } + + return resevoirRepository.getWater(includeFlowing); +}; + +const solvePart1 = (input: string) => solve(parseInput(input), true); +const solvePart2 = (input: string) => solve(parseInput(input), false); + +export const reservoirResearch: Day = { + day: 18, + year: 2018, + getSimpleInput: () => readInput(__dirname, "simpleInput"), + getPuzzleInput: () => readInput(__dirname, "puzzleInput"), + solvePart1, + solvePart2, +}; diff --git a/src/2018/18/puzzleInput.txt b/src/2018/18/puzzleInput.txt new file mode 100644 index 0000000..3de9fca --- /dev/null +++ b/src/2018/18/puzzleInput.txt @@ -0,0 +1,2164 @@ +x=466, y=1429..1435 +y=360, x=485..506 +x=480, y=345..358 +x=270, y=972..997 +x=205, y=1423..1437 +x=535, y=1376..1399 +x=413, y=1421..1439 +y=1610, x=208..228 +x=534, y=408..420 +y=499, x=270..272 +x=518, y=367..376 +y=1316, x=521..538 +x=460, y=1715..1725 +x=394, y=1284..1293 +x=419, y=1201..1204 +y=977, x=387..389 +y=1636, x=302..329 +x=537, y=877..899 +x=482, y=325..336 +y=986, x=227..255 +y=350, x=341..363 +y=1494, x=542..551 +y=1548, x=239..410 +x=462, y=281..291 +x=281, y=810..815 +x=387, y=1155..1165 +x=520, y=180..183 +x=183, y=1573..1588 +x=425, y=265..280 +x=227, y=966..986 +x=331, y=1306..1319 +y=1062, x=443..454 +x=182, y=275..283 +x=447, y=487..495 +x=513, y=1039..1043 +x=209, y=1152..1155 +y=392, x=341..350 +x=418, y=1742..1745 +x=306, y=1556..1564 +x=508, y=1377..1399 +x=307, y=1200..1205 +x=440, y=1346..1348 +x=160, y=274..283 +y=104, x=444..462 +x=279, y=466..490 +x=517, y=1109..1123 +x=377, y=819..833 +y=1209, x=348..369 +y=953, x=504..514 +y=1116, x=312..335 +y=929, x=328..415 +x=553, y=1138..1155 +x=525, y=1529..1534 +x=315, y=119..129 +x=349, y=713..719 +y=855, x=231..242 +x=326, y=1177..1190 +y=1389, x=521..524 +x=444, y=675..688 +y=64, x=355..382 +x=488, y=659..686 +x=331, y=420..423 +x=331, y=159..166 +x=402, y=496..510 +x=451, y=368..382 +y=1783, x=360..363 +x=292, y=1334..1336 +y=683, x=431..433 +x=549, y=1349..1364 +x=218, y=1717..1721 +x=356, y=1604..1612 +y=102, x=505..507 +y=1291, x=269..276 +y=704, x=245..269 +y=913, x=253..264 +x=170, y=7..19 +y=977, x=167..189 +y=397, x=399..406 +x=414, y=1004..1012 +y=1347, x=343..367 +x=396, y=80..83 +x=260, y=841..867 +x=176, y=1755..1765 +x=321, y=385..396 +y=1780, x=180..182 +x=236, y=1532..1548 +x=373, y=224..234 +x=363, y=788..790 +y=231, x=543..548 +y=155, x=277..287 +x=407, y=1345..1350 +x=412, y=881..890 +x=229, y=1194..1210 +y=1205, x=305..307 +x=325, y=88..91 +x=432, y=1258..1264 +y=1503, x=241..261 +y=1609, x=159..179 +x=491, y=241..254 +y=325, x=296..302 +y=634, x=365..367 +x=440, y=1109..1116 +x=520, y=1280..1284 +x=267, y=55..64 +x=431, y=1002..1010 +y=1596, x=319..338 +y=1533, x=165..169 +x=502, y=238..249 +y=1155, x=261..269 +y=617, x=404..441 +x=185, y=1327..1338 +x=208, y=883..896 +y=555, x=455..461 +y=1754, x=223..231 +x=510, y=176..186 +x=502, y=552..575 +y=833, x=377..394 +x=551, y=1415..1440 +y=87, x=391..407 +x=245, y=186..188 +y=473, x=175..199 +y=1251, x=336..340 +x=471, y=1001..1002 +x=539, y=1732..1734 +y=1060, x=368..390 +x=383, y=1706..1722 +y=725, x=290..297 +x=514, y=945..953 +y=1290, x=403..408 +y=818, x=274..293 +y=544, x=330..341 +x=230, y=1359..1361 +y=1116, x=438..440 +y=1256, x=220..243 +y=1708, x=177..198 +x=296, y=315..325 +x=340, y=363..376 +y=152, x=163..165 +x=165, y=1509..1533 +y=1180, x=424..439 +y=202, x=221..225 +x=169, y=394..403 +x=195, y=1069..1071 +x=207, y=1050..1061 +x=525, y=1766..1789 +y=1306, x=420..432 +x=436, y=1671..1696 +x=377, y=1369..1396 +x=264, y=902..913 +x=288, y=1495..1507 +y=815, x=209..213 +x=537, y=575..603 +x=207, y=1101..1103 +x=413, y=20..22 +y=867, x=245..260 +x=371, y=699..708 +x=490, y=1062..1071 +x=353, y=985..996 +y=882, x=362..380 +x=197, y=1523..1533 +y=1679, x=299..304 +x=319, y=1585..1596 +x=535, y=1174..1201 +y=698, x=189..193 +x=205, y=1248..1251 +x=524, y=243..253 +x=163, y=130..152 +x=311, y=1267..1270 +x=400, y=527..531 +x=391, y=485..507 +x=257, y=1278..1282 +x=483, y=1750..1762 +x=246, y=1305..1325 +x=209, y=1491..1504 +x=495, y=197..211 +y=1704, x=188..192 +x=224, y=298..323 +x=162, y=613..620 +x=399, y=451..465 +y=1767, x=182..195 +y=1302, x=305..315 +x=443, y=1059..1062 +y=454, x=365..382 +x=277, y=146..155 +y=1017, x=366..391 +x=337, y=326..344 +x=233, y=156..172 +x=328, y=1340..1350 +x=279, y=1555..1564 +y=755, x=252..265 +x=189, y=698..701 +x=256, y=803..807 +x=212, y=1090..1092 +x=446, y=1508..1511 +x=371, y=739..750 +x=281, y=311..338 +y=1236, x=320..337 +x=239, y=1448..1466 +x=520, y=979..981 +x=339, y=250..273 +x=262, y=967..975 +y=1001, x=234..236 +x=241, y=1145..1147 +y=1419, x=424..439 +y=438, x=197..202 +x=371, y=1686..1691 +x=284, y=1579..1582 +y=1251, x=205..208 +x=344, y=696..701 +x=304, y=1538..1544 +x=463, y=1510..1518 +y=1761, x=284..304 +x=312, y=716..721 +x=202, y=420..438 +y=973, x=180..183 +x=290, y=774..782 +x=404, y=900..910 +x=414, y=542..555 +x=511, y=1597..1613 +x=407, y=203..220 +x=294, y=1081..1093 +x=247, y=780..786 +y=1564, x=279..306 +x=550, y=267..271 +y=696, x=251..263 +y=1137, x=359..363 +x=417, y=203..220 +y=1326, x=462..476 +x=436, y=987..993 +x=324, y=141..147 +y=1591, x=467..475 +x=326, y=1769..1773 +x=231, y=1260..1263 +y=1725, x=456..460 +x=304, y=1672..1679 +x=170, y=1713..1722 +x=159, y=227..237 +x=424, y=471..482 +x=483, y=738..750 +x=276, y=1286..1291 +x=447, y=1646..1648 +y=1449, x=173..190 +y=1147, x=238..241 +x=243, y=89..96 +y=1765, x=236..240 +y=228, x=453..471 +x=521, y=528..530 +x=496, y=668..671 +x=228, y=403..406 +x=351, y=1127..1141 +y=1500, x=394..397 +y=721, x=312..329 +x=367, y=630..634 +x=547, y=448..462 +x=428, y=1258..1264 +x=331, y=1174..1184 +x=426, y=1341..1366 +x=382, y=57..64 +x=393, y=1689..1707 +x=398, y=80..83 +x=511, y=153..163 +x=465, y=1009..1037 +x=484, y=1106..1114 +x=365, y=436..454 +x=248, y=1059..1077 +y=526, x=472..490 +y=1605, x=213..217 +y=499, x=413..415 +y=1066, x=318..323 +x=378, y=1132..1145 +y=725, x=418..426 +x=443, y=863..871 +x=403, y=1304..1314 +y=620, x=398..449 +x=532, y=1224..1230 +x=491, y=1372..1385 +x=363, y=277..286 +x=432, y=525..528 +x=202, y=1205..1210 +x=219, y=1117..1139 +y=1722, x=168..170 +x=190, y=1439..1449 +x=369, y=1426..1437 +y=1495, x=249..251 +x=322, y=888..895 +x=397, y=1688..1707 +x=158, y=99..121 +x=424, y=287..288 +x=393, y=1092..1094 +y=1103, x=205..207 +y=314, x=354..358 +y=1239, x=253..257 +x=355, y=265..271 +x=401, y=943..948 +x=382, y=592..601 +y=1685, x=504..532 +x=189, y=861..869 +x=411, y=1589..1600 +y=570, x=314..338 +x=553, y=1016..1022 +y=186, x=241..245 +y=1612, x=342..356 +x=187, y=861..869 +y=1544, x=304..365 +x=167, y=998..1022 +y=767, x=510..520 +y=1707, x=393..397 +x=260, y=441..447 +x=468, y=880..906 +x=304, y=1737..1761 +x=288, y=920..935 +y=1085, x=219..232 +y=1285, x=194..198 +x=286, y=116..132 +x=382, y=817..829 +y=1776, x=227..230 +y=507, x=391..393 +x=229, y=1018..1034 +y=734, x=196..205 +y=537, x=388..411 +y=211, x=432..445 +x=521, y=1305..1316 +x=164, y=1737..1748 +x=459, y=394..396 +y=1800, x=252..259 +y=603, x=242..246 +x=217, y=1018..1034 +x=344, y=713..719 +x=336, y=1248..1251 +x=411, y=1031..1038 +y=1028, x=196..212 +y=1193, x=195..201 +x=273, y=1495..1507 +x=283, y=1333..1336 +y=106, x=499..515 +x=338, y=564..570 +y=1456, x=312..345 +x=238, y=393..415 +x=253, y=455..480 +x=415, y=1283..1293 +y=1359, x=230..235 +y=783, x=171..181 +y=1778, x=227..230 +y=1753, x=446..468 +x=520, y=1175..1201 +y=526, x=282..289 +x=176, y=1128..1145 +x=387, y=975..977 +y=769, x=377..380 +y=1155, x=209..213 +y=1377, x=310..335 +x=208, y=1599..1610 +y=1139, x=195..219 +y=1071, x=488..490 +x=224, y=1354..1364 +x=432, y=1280..1306 +y=1101, x=353..375 +y=338, x=232..240 +x=416, y=855..858 +y=1667, x=325..339 +x=541, y=1349..1364 +x=257, y=1420..1426 +x=436, y=1616..1620 +x=417, y=474..486 +x=325, y=1641..1667 +y=1257, x=324..346 +x=249, y=781..786 +y=470, x=186..189 +x=369, y=761..773 +y=145, x=456..461 +x=288, y=467..490 +y=1202, x=430..438 +x=489, y=1711..1727 +x=274, y=770..791 +x=501, y=79..81 +y=64, x=473..501 +y=60, x=248..250 +x=521, y=1782..1784 +y=1797, x=466..478 +x=380, y=899..910 +x=221, y=424..438 +y=632, x=180..204 +x=425, y=1566..1593 +x=363, y=324..350 +x=375, y=1088..1101 +x=542, y=1050..1054 +x=185, y=216..240 +x=544, y=1772..1779 +x=427, y=1105..1128 +x=355, y=57..64 +x=424, y=567..576 +x=286, y=185..206 +y=940, x=428..444 +x=192, y=834..852 +y=1475, x=402..415 +x=435, y=1525..1536 +y=756, x=516..528 +x=243, y=1255..1256 +x=549, y=876..899 +x=377, y=759..769 +y=1160, x=500..505 +x=547, y=936..941 +x=552, y=12..31 +y=975, x=260..262 +y=101, x=454..456 +x=170, y=1758..1762 +y=569, x=288..295 +x=185, y=1267..1288 +y=1338, x=178..185 +y=1290, x=452..463 +x=216, y=994..1009 +x=261, y=1580..1592 +x=464, y=702..704 +x=180, y=1780..1782 +y=1074, x=292..305 +x=269, y=308..310 +x=489, y=1527..1553 +x=443, y=1773..1774 +x=289, y=499..526 +y=1141, x=351..371 +y=1394, x=330..335 +x=356, y=782..793 +x=465, y=306..320 +x=241, y=1277..1282 +x=546, y=855..859 +x=446, y=265..268 +y=1783, x=311..339 +y=394, x=167..169 +y=339, x=508..522 +x=382, y=693..707 +x=346, y=1271..1273 +y=490, x=279..288 +x=474, y=327..340 +x=311, y=1766..1783 +x=203, y=1010..1023 +y=549, x=381..399 +y=896, x=208..234 +y=1061, x=207..235 +y=1366, x=426..430 +y=899, x=537..549 +y=945, x=177..180 +x=379, y=1667..1669 +x=407, y=630..642 +x=424, y=1404..1419 +x=204, y=627..632 +x=406, y=395..397 +x=234, y=55..70 +x=444, y=144..156 +x=187, y=291..303 +y=355, x=471..474 +y=249, x=416..443 +y=400, x=436..520 +y=1600, x=390..411 +y=1075, x=375..377 +y=327, x=349..353 +x=377, y=1067..1075 +y=514, x=232..239 +x=346, y=1245..1257 +y=993, x=344..347 +x=399, y=542..549 +x=342, y=1003..1017 +x=343, y=1762..1790 +x=510, y=432..443 +y=1237, x=157..160 +x=397, y=880..894 +x=367, y=1342..1347 +x=212, y=1002..1028 +x=517, y=1186..1212 +x=530, y=552..575 +x=278, y=769..791 +x=188, y=1702..1704 +x=244, y=1260..1263 +x=342, y=550..559 +y=240, x=185..201 +y=1201, x=520..535 +x=377, y=979..990 +x=301, y=662..687 +x=317, y=750..758 +y=654, x=226..236 +y=1454, x=312..345 +y=1702, x=188..192 +y=80, x=396..398 +y=1581, x=174..176 +x=366, y=1009..1017 +y=1597, x=269..280 +x=305, y=1200..1205 +x=542, y=1481..1494 +y=859, x=546..548 +x=263, y=693..696 +y=1717, x=353..355 +x=261, y=1470..1482 +x=455, y=487..495 +x=325, y=1341..1350 +x=487, y=860..863 +y=132, x=273..286 +y=121, x=158..161 +y=482, x=424..427 +x=333, y=1499..1509 +x=536, y=136..147 +x=456, y=119..145 +x=270, y=497..499 +x=504, y=1677..1685 +y=718, x=213..241 +y=1215, x=412..427 +y=1435, x=466..480 +x=235, y=1049..1061 +y=664, x=191..215 +x=304, y=813..821 +x=252, y=1557..1569 +x=443, y=1508..1511 +y=935, x=288..314 +x=382, y=714..728 +x=522, y=333..339 +x=519, y=1782..1784 +x=249, y=1141..1155 +x=265, y=753..755 +y=953, x=312..328 +x=227, y=1678..1690 +x=321, y=1792..1797 +x=171, y=938..954 +x=290, y=708..725 +x=312, y=385..396 +y=910, x=380..404 +x=485, y=349..360 +x=394, y=651..664 +y=1728, x=296..320 +y=803, x=505..507 +x=247, y=1450..1455 +y=91, x=305..325 +y=55, x=224..226 +x=192, y=1702..1704 +x=274, y=801..818 +y=906, x=468..492 +y=1682, x=288..310 +x=530, y=1281..1284 +y=973, x=321..338 +x=415, y=499..502 +y=97, x=470..475 +y=1211, x=274..289 +x=373, y=178..184 +x=363, y=1577..1594 +x=161, y=1469..1473 +x=350, y=1387..1397 +y=88, x=495..513 +y=1169, x=195..200 +x=273, y=311..338 +x=180, y=626..632 +x=319, y=120..129 +x=248, y=1410..1430 +x=495, y=292..294 +y=1790, x=343..351 +x=504, y=897..902 +x=470, y=86..97 +y=642, x=343..346 +y=415, x=159..175 +y=1297, x=362..379 +x=493, y=1754..1758 +y=268, x=311..323 +x=438, y=520..534 +x=426, y=1152..1154 +y=599, x=410..435 +y=1426, x=257..259 +x=480, y=1430..1435 +x=220, y=1254..1256 +x=305, y=89..91 +x=507, y=113..120 +x=274, y=1206..1211 +x=337, y=706..709 +x=431, y=1069..1081 +x=192, y=747..751 +x=353, y=1708..1717 +x=552, y=156..163 +y=1493, x=498..501 +x=508, y=1597..1613 +x=312, y=705..709 +y=770, x=219..241 +x=499, y=238..249 +y=48, x=210..219 +x=424, y=1611..1627 +x=215, y=650..664 +y=1589, x=224..249 +x=289, y=82..99 +x=468, y=1741..1753 +x=170, y=1128..1145 +x=365, y=276..286 +x=246, y=589..603 +x=372, y=591..601 +x=195, y=1118..1139 +x=266, y=1410..1430 +x=226, y=46..55 +x=272, y=1448..1459 +x=470, y=1128..1148 +y=1653, x=375..384 +x=536, y=246..250 +y=563, x=173..201 +y=461, x=367..377 +x=307, y=813..821 +y=1670, x=214..234 +y=29, x=159..180 +x=495, y=1088..1103 +y=1208, x=465..472 +x=171, y=1072..1095 +y=924, x=504..520 +x=433, y=672..683 +x=383, y=1070..1081 +y=1784, x=519..521 +y=1440, x=548..551 +x=547, y=1224..1230 +y=251, x=386..407 +x=529, y=53..63 +x=183, y=967..973 +y=704, x=459..464 +y=791, x=274..278 +y=954, x=171..187 +x=252, y=710..718 +y=786, x=247..249 +x=484, y=325..336 +x=320, y=1703..1728 +x=386, y=1570..1582 +x=461, y=119..145 +x=341, y=382..392 +y=1485, x=201..203 +x=365, y=1624..1628 +y=306, x=526..532 +x=434, y=408..422 +y=156, x=418..444 +x=515, y=96..106 +x=463, y=1270..1290 +y=643, x=433..451 +y=1533, x=182..197 +x=188, y=1775..1785 +y=1244, x=253..257 +y=271, x=355..369 +x=508, y=11..21 +y=206, x=513..518 +x=335, y=491..517 +x=444, y=1346..1348 +y=852, x=192..198 +y=271, x=540..550 +x=534, y=1049..1054 +x=472, y=519..526 +y=828, x=296..314 +y=1385, x=491..502 +y=1423, x=395..404 +y=105, x=518..528 +y=1797, x=305..321 +x=554, y=340..349 +x=528, y=134..142 +y=1745, x=418..422 +x=203, y=1571..1589 +y=308, x=395..406 +y=1620, x=498..517 +x=322, y=727..744 +x=176, y=49..64 +x=382, y=1578..1594 +x=241, y=1490..1503 +x=310, y=1661..1682 +y=1165, x=343..387 +x=438, y=1497..1519 +x=547, y=340..349 +y=31, x=539..552 +y=1078, x=313..337 +x=436, y=389..400 +x=193, y=698..701 +y=1527, x=251..395 +x=237, y=1306..1325 +x=501, y=217..229 +x=175, y=460..473 +x=282, y=1406..1418 +x=394, y=1490..1500 +x=451, y=631..643 +x=198, y=1283..1285 +x=341, y=678..685 +x=412, y=1005..1012 +x=314, y=565..570 +y=509, x=348..354 +x=176, y=69..92 +y=1748, x=164..206 +y=728, x=471..487 +x=538, y=246..250 +y=824, x=209..213 +x=331, y=1500..1509 +x=461, y=544..555 +y=1466, x=213..239 +x=459, y=1000..1002 +x=463, y=346..358 +x=315, y=468..495 +y=291, x=330..346 +x=539, y=13..31 +x=300, y=584..600 +x=295, y=1645..1649 +y=1038, x=411..431 +x=166, y=1774..1785 +x=412, y=1373..1380 +x=520, y=389..400 +x=201, y=1069..1071 +x=219, y=1732..1742 +x=430, y=1342..1366 +x=416, y=1344..1350 +y=46, x=230..244 +x=397, y=527..531 +x=545, y=243..253 +y=1628, x=365..372 +x=201, y=215..240 +x=410, y=1420..1439 +x=322, y=1343..1357 +x=334, y=1265..1278 +x=286, y=77..87 +y=804, x=262..271 +x=304, y=1344..1357 +x=548, y=856..859 +x=201, y=1010..1023 +x=414, y=855..858 +x=362, y=882..885 +y=171, x=523..528 +x=293, y=802..818 +x=510, y=1456..1473 +y=704, x=183..206 +y=855, x=414..416 +y=941, x=547..553 +y=1171, x=181..188 +y=1396, x=368..377 +y=1210, x=229..238 +y=1155, x=531..553 +x=251, y=27..32 +x=323, y=241..268 +x=475, y=1587..1591 +x=459, y=1197..1213 +x=517, y=115..127 +x=347, y=1296..1304 +y=1185, x=469..481 +y=303, x=187..195 +x=349, y=327..342 +x=395, y=13..27 +x=439, y=1694..1713 +x=271, y=437..449 +x=187, y=939..954 +x=224, y=524..528 +x=255, y=156..172 +x=259, y=1794..1800 +x=219, y=1657..1667 +y=1690, x=188..227 +x=326, y=1109..1112 +x=341, y=530..544 +y=807, x=236..256 +x=219, y=804..827 +y=499, x=200..209 +x=409, y=1672..1696 +x=251, y=1513..1527 +x=353, y=1088..1101 +x=220, y=453..477 +y=1228, x=393..395 +y=20, x=409..413 +x=276, y=1667..1682 +y=1116, x=379..381 +y=1240, x=498..507 +x=543, y=1200..1220 +y=709, x=312..337 +x=329, y=716..721 +y=869, x=404..423 +x=199, y=460..473 +x=306, y=390..397 +x=360, y=1771..1783 +x=287, y=146..155 +x=344, y=792..796 +x=420, y=1281..1306 +y=831, x=172..174 +x=239, y=510..514 +y=1518, x=463..472 +x=315, y=1275..1302 +x=438, y=1787..1791 +y=1509, x=331..333 +y=38, x=513..517 +x=399, y=341..344 +y=1536, x=432..435 +x=197, y=1638..1650 +x=386, y=1744..1757 +y=1282, x=241..257 +y=486, x=417..434 +x=445, y=406..419 +y=21, x=488..508 +y=1208, x=294..316 +y=1804, x=246..272 +x=245, y=687..704 +y=640, x=443..445 +y=1648, x=429..447 +y=1774, x=443..453 +x=236, y=999..1001 +y=1455, x=247..268 +y=1010, x=421..431 +x=201, y=1475..1485 +x=468, y=1335..1363 +x=371, y=712..725 +x=181, y=1163..1171 +x=312, y=940..953 +x=362, y=1284..1297 +x=182, y=984..991 +x=524, y=628..651 +x=477, y=286..297 +x=365, y=608..626 +x=368, y=981..984 +y=1092, x=205..212 +x=178, y=1327..1338 +x=484, y=1010..1037 +x=300, y=181..189 +x=329, y=1109..1112 +y=483, x=306..309 +x=359, y=946..951 +x=268, y=1450..1455 +x=404, y=996..1001 +x=252, y=1794..1800 +x=169, y=1508..1533 +x=430, y=1200..1202 +y=1141, x=157..159 +x=443, y=1798..1800 +x=224, y=45..55 +x=544, y=628..651 +y=207, x=334..340 +x=213, y=423..438 +y=510, x=402..430 +y=407, x=265..283 +x=273, y=116..132 +x=204, y=803..827 +y=439, x=498..500 +y=1806, x=176..196 +x=417, y=47..48 +y=1779, x=544..551 +y=219, x=307..324 +x=210, y=1386..1388 +x=379, y=1283..1297 +x=325, y=583..600 +x=295, y=436..449 +x=270, y=1711..1730 +y=144, x=220..228 +x=407, y=249..251 +y=858, x=414..416 +x=299, y=774..782 +x=335, y=1367..1377 +x=370, y=1108..1122 +x=178, y=308..334 +x=359, y=158..167 +x=309, y=483..485 +x=163, y=1168..1191 +y=688, x=426..444 +y=872, x=203..209 +x=501, y=1749..1762 +x=373, y=788..790 +x=343, y=1155..1165 +y=827, x=204..219 +x=505, y=1333..1359 +x=155, y=1755..1765 +y=237, x=159..168 +x=474, y=1642..1646 +x=480, y=609..632 +x=180, y=4..29 +x=434, y=1338..1351 +x=177, y=799..809 +y=1012, x=412..414 +x=449, y=607..620 +x=223, y=1739..1754 +x=511, y=220..232 +x=517, y=1594..1620 +x=491, y=328..340 +y=286, x=363..365 +y=750, x=371..483 +x=376, y=698..708 +x=502, y=1371..1385 +y=487, x=447..455 +y=693, x=251..263 +x=348, y=507..509 +y=1649, x=290..295 +y=1583, x=268..278 +y=288, x=406..424 +x=533, y=575..603 +y=503, x=441..466 +y=1108, x=195..215 +y=671, x=496..498 +y=274, x=512..557 +x=418, y=189..196 +y=796, x=344..347 +x=377, y=1029..1038 +y=1304, x=347..351 +x=167, y=70..92 +x=489, y=1585..1595 +y=1758, x=490..493 +x=234, y=1659..1670 +x=377, y=458..461 +y=1118, x=379..381 +x=441, y=614..617 +y=292, x=495..500 +x=523, y=28..42 +x=242, y=471..488 +x=450, y=1466..1471 +x=463, y=1489..1505 +y=204, x=513..518 +y=1071, x=195..201 +x=507, y=94..102 +x=309, y=285..290 +x=253, y=901..913 +x=452, y=17..33 +x=161, y=99..121 +y=773, x=369..389 +x=396, y=966..985 +x=251, y=693..696 +x=191, y=48..64 +x=404, y=849..869 +y=83, x=396..398 +y=1023, x=201..203 +x=267, y=28..32 +x=235, y=710..714 +x=456, y=1716..1725 +x=230, y=1175..1176 +x=328, y=920..929 +x=439, y=1176..1180 +y=87, x=261..286 +y=1128, x=427..447 +y=22, x=409..413 +x=495, y=1281..1289 +x=373, y=406..429 +y=1123, x=517..532 +x=398, y=1131..1145 +x=516, y=743..756 +y=913, x=425..431 +y=659, x=449..454 +x=182, y=504..527 +x=355, y=1707..1717 +y=528, x=197..224 +x=225, y=108..116 +x=239, y=1709..1737 +x=398, y=801..811 +x=211, y=298..323 +x=497, y=898..902 +x=238, y=1194..1210 +y=933, x=164..172 +x=415, y=919..929 +x=262, y=781..804 +x=511, y=874..883 +y=708, x=371..376 +x=242, y=841..855 +x=314, y=920..935 +y=1364, x=541..549 +y=724, x=476..479 +x=501, y=1491..1493 +y=449, x=271..295 +x=320, y=364..376 +y=1750, x=374..376 +x=196, y=70..95 +y=127, x=501..517 +y=1210, x=202..207 +y=397, x=304..306 +y=1175, x=479..493 +x=320, y=284..290 +x=295, y=544..569 +x=490, y=1754..1758 +x=285, y=236..253 +y=984, x=368..370 +x=532, y=1693..1709 +x=363, y=1125..1137 +x=472, y=368..382 +x=422, y=970..986 +y=166, x=331..346 +x=210, y=43..48 +y=174, x=376..399 +y=1588, x=498..507 +y=184, x=347..373 +x=506, y=350..360 +y=211, x=334..340 +y=981, x=517..520 +x=466, y=1461..1473 +x=508, y=333..339 +x=446, y=1741..1753 +y=1437, x=205..233 +x=321, y=963..973 +x=389, y=1470..1482 +y=1097, x=378..402 +y=1473, x=466..469 +y=1361, x=230..235 +x=334, y=848..851 +x=510, y=1066..1079 +y=1519, x=432..435 +x=338, y=964..973 +x=242, y=1686..1701 +y=403, x=167..169 +y=1037, x=465..484 +y=200, x=189..213 +x=236, y=1751..1765 +x=346, y=159..166 +x=498, y=1236..1240 +x=318, y=35..49 +x=456, y=1128..1148 +x=176, y=1577..1581 +x=390, y=798..805 +x=225, y=187..202 +y=1145, x=170..176 +y=1524, x=312..343 +x=532, y=1676..1685 +x=330, y=286..291 +x=439, y=1405..1419 +x=213, y=1447..1466 +y=406, x=228..232 +x=189, y=195..200 +x=320, y=938..950 +x=236, y=804..807 +y=338, x=273..281 +x=312, y=1454..1456 +y=27, x=395..422 +x=221, y=354..380 +x=406, y=297..308 +x=529, y=1311..1313 +x=220, y=558..565 +x=354, y=289..314 +x=323, y=1038..1066 +x=383, y=840..850 +x=459, y=1335..1363 +y=438, x=213..221 +y=234, x=351..373 +x=509, y=240..254 +y=1730, x=270..282 +y=1340, x=523..526 +y=1721, x=211..218 +x=224, y=1586..1589 +y=1586, x=224..249 +x=391, y=68..87 +y=1521, x=312..343 +x=234, y=999..1001 +x=368, y=1369..1396 +y=349, x=547..554 +y=1627, x=424..447 +x=465, y=1205..1208 +y=985, x=501..528 +x=205, y=718..734 +x=233, y=1422..1437 +x=365, y=629..634 +x=501, y=116..127 +x=520, y=763..767 +x=174, y=815..831 +x=430, y=1788..1791 +x=280, y=1592..1597 +x=304, y=1217..1224 +y=1511, x=443..446 +x=284, y=1737..1761 +y=1409, x=164..185 +x=461, y=1584..1595 +y=1233, x=385..402 +y=991, x=295..297 +x=369, y=302..320 +x=343, y=1176..1190 +y=710, x=228..235 +x=180, y=941..945 +x=354, y=695..701 +x=210, y=1581..1592 +y=396, x=459..481 +x=453, y=1110..1113 +y=229, x=498..501 +y=1588, x=166..183 +x=251, y=1667..1682 +y=340, x=474..491 +x=429, y=1734..1750 +y=833, x=248..275 +x=188, y=1679..1690 +y=495, x=293..315 +x=432, y=1491..1519 +x=517, y=137..147 +y=1071, x=436..440 +x=344, y=990..993 +y=1291, x=369..372 +y=1785, x=166..188 +y=147, x=324..339 +x=339, y=1767..1783 +x=305, y=1060..1074 +x=504, y=914..924 +x=471, y=693..707 +x=310, y=1367..1377 +x=510, y=408..420 +y=1081, x=431..449 +x=382, y=1667..1669 +x=300, y=1011..1027 +x=361, y=1706..1709 +x=462, y=87..104 +y=1022, x=167..191 +x=422, y=651..664 +x=296, y=1387..1397 +y=534, x=423..438 +x=219, y=1149..1162 +x=347, y=990..993 +x=234, y=884..896 +x=518, y=468..489 +x=471, y=252..254 +x=328, y=941..953 +x=193, y=800..809 +y=811, x=379..398 +x=200, y=491..499 +y=420, x=510..534 +x=432, y=543..555 +x=381, y=1428..1440 +x=337, y=1200..1214 +x=263, y=455..480 +y=1076, x=436..440 +x=231, y=227..237 +x=436, y=84..91 +x=459, y=702..704 +x=343, y=1521..1524 +x=368, y=1048..1060 +y=1594, x=363..382 +x=236, y=628..654 +x=314, y=661..687 +x=364, y=1406..1418 +y=895, x=308..322 +y=651, x=524..544 +x=391, y=1244..1257 +y=489, x=518..546 +x=182, y=1523..1533 +x=350, y=381..392 +y=701, x=189..193 +x=555, y=223..234 +x=481, y=1282..1289 +x=494, y=1404..1420 +x=239, y=1535..1548 +x=518, y=285..297 +x=371, y=1128..1141 +x=372, y=1625..1628 +x=532, y=301..306 +x=167, y=394..403 +x=245, y=841..867 +y=250, x=536..538 +y=1800, x=429..443 +x=167, y=959..977 +x=159, y=1134..1141 +x=246, y=1791..1804 +y=32, x=251..267 +x=230, y=19..46 +x=387, y=278..291 +x=201, y=655..660 +x=429, y=1647..1648 +x=317, y=938..950 +x=232, y=559..565 +x=191, y=999..1022 +x=176, y=692..710 +y=675, x=513..534 +x=284, y=1075..1084 +x=492, y=1117..1134 +y=1145, x=378..398 +x=437, y=1149..1161 +x=523, y=1336..1340 +y=247, x=452..467 +x=250, y=60..62 +x=275, y=823..833 +x=342, y=879..892 +x=259, y=1420..1426 +x=299, y=1672..1679 +y=1002, x=459..471 +x=435, y=1492..1519 +x=499, y=97..106 +y=1399, x=508..535 +x=417, y=882..890 +x=246, y=1235..1247 +x=400, y=1200..1214 +y=237, x=231..237 +y=1154, x=426..429 +x=183, y=683..704 +y=1742, x=214..219 +x=500, y=429..439 +y=1212, x=502..517 +y=1569, x=224..252 +y=1439, x=410..413 +y=1669, x=379..382 +y=1722, x=375..383 +x=455, y=544..555 +y=1388, x=199..210 +x=159, y=3..29 +y=1284, x=520..530 +x=536, y=368..376 +y=1354, x=314..316 +y=850, x=369..383 +y=1273, x=346..350 +x=486, y=1729..1730 +y=290, x=309..320 +y=758, x=307..317 +x=415, y=1472..1475 +x=339, y=142..147 +x=211, y=1615..1624 +x=489, y=610..632 +x=393, y=608..626 +x=532, y=1333..1359 +y=1534, x=497..525 +x=346, y=287..291 +x=363, y=715..728 +x=300, y=1578..1582 +y=1001, x=394..404 +x=540, y=267..271 +x=498, y=429..439 +x=293, y=468..495 +x=403, y=1288..1290 +y=49, x=297..318 +y=220, x=407..417 +y=1597, x=395..402 +x=353, y=327..342 +x=386, y=798..805 +x=425, y=888..913 +x=505, y=1147..1160 +y=1387, x=521..524 +x=170, y=1168..1191 +x=438, y=1201..1202 +y=660, x=201..208 +y=1092, x=391..393 +y=1184, x=331..334 +x=366, y=1069..1081 +x=449, y=654..659 +y=297, x=477..518 +x=208, y=1249..1251 +y=1289, x=481..495 +x=232, y=326..338 +y=1724, x=302..307 +x=265, y=387..407 +x=228, y=710..714 +y=32, x=513..517 +y=1696, x=409..436 +x=195, y=1310..1312 +y=1765, x=155..176 +x=502, y=1186..1212 +x=463, y=650..663 +x=211, y=1716..1721 +y=1698, x=470..498 +x=438, y=1109..1116 +x=369, y=1281..1291 +x=444, y=934..940 +x=466, y=1794..1797 +y=710, x=170..176 +x=214, y=1638..1650 +x=495, y=75..88 +x=504, y=946..953 +y=725, x=371..375 +x=386, y=817..829 +x=526, y=302..306 +x=314, y=810..828 +x=534, y=661..675 +y=714, x=228..235 +x=263, y=235..253 +x=469, y=1180..1185 +x=399, y=279..291 +y=1155, x=223..249 +x=213, y=1615..1624 +y=422, x=434..453 +x=538, y=1017..1022 +x=374, y=1662..1672 +x=223, y=1141..1155 +x=171, y=1641..1668 +x=417, y=1201..1204 +x=174, y=7..19 +x=446, y=281..291 +x=340, y=1248..1251 +x=513, y=32..38 +x=332, y=679..685 +x=375, y=1707..1722 +y=555, x=414..432 +x=357, y=137..147 +y=1682, x=251..276 +x=531, y=1138..1155 +x=282, y=186..206 +y=1017, x=342..363 +y=1628, x=206..225 +y=1376, x=197..216 +x=413, y=499..502 +x=195, y=1765..1767 +x=357, y=859..871 +x=214, y=1660..1670 +y=728, x=363..382 +x=467, y=1587..1591 +x=231, y=841..855 +x=173, y=1438..1449 +y=1671, x=439..464 +x=391, y=1092..1094 +x=489, y=412..437 +y=1380, x=410..412 +y=1336, x=283..292 +x=317, y=1370..1372 +x=185, y=155..168 +x=360, y=978..990 +x=518, y=87..105 +x=538, y=1304..1316 +y=428, x=160..181 +x=271, y=780..804 +x=320, y=1223..1236 +x=241, y=759..770 +y=1232, x=327..329 +x=198, y=1697..1708 +x=405, y=1492..1505 +x=179, y=1605..1609 +y=1032, x=251..259 +x=526, y=1336..1340 +x=335, y=326..344 +x=370, y=981..984 +x=316, y=1181..1208 +y=310, x=253..269 +y=642, x=386..407 +y=234, x=537..555 +y=1613, x=508..511 +x=402, y=1593..1597 +x=493, y=219..232 +y=1357, x=480..491 +x=423, y=849..869 +x=260, y=967..975 +x=492, y=1105..1114 +y=869, x=187..189 +x=410, y=189..196 +x=231, y=1739..1754 +x=476, y=713..724 +y=1054, x=534..542 +x=498, y=1491..1493 +y=809, x=177..193 +x=296, y=1704..1728 +x=369, y=264..271 +x=508, y=1484..1496 +x=339, y=1641..1667 +x=195, y=1172..1193 +y=167, x=356..359 +y=979, x=517..520 +y=1737, x=523..551 +y=1364, x=224..242 +y=1112, x=326..329 +x=187, y=612..620 +x=495, y=786..811 +y=1293, x=394..415 +x=405, y=124..134 +x=322, y=1326..1335 +x=335, y=1392..1394 +y=951, x=359..361 +y=1270, x=287..311 +y=298, x=233..257 +x=450, y=1339..1351 +y=1762, x=483..501 +x=365, y=1092..1097 +y=517, x=335..360 +y=48, x=417..434 +x=356, y=157..167 +x=402, y=1471..1475 +y=724, x=500..525 +y=344, x=399..422 +x=159, y=387..415 +x=308, y=889..895 +x=442, y=1695..1713 +y=1346, x=440..444 +y=1314, x=385..403 +x=422, y=1742..1745 +y=1737, x=239..255 +y=1595, x=461..489 +x=458, y=864..871 +y=1773, x=326..329 +y=686, x=488..504 +x=208, y=655..660 +x=512, y=265..274 +y=1496, x=493..508 +x=234, y=1174..1176 +x=528, y=158..171 +x=504, y=658..686 +x=334, y=1174..1184 +y=1264, x=428..432 +y=70, x=234..256 +x=488, y=1062..1071 +y=793, x=356..379 +x=453, y=219..228 +y=495, x=447..455 +x=427, y=1199..1215 +x=160, y=1227..1237 +x=320, y=1370..1372 +y=632, x=480..489 +x=380, y=965..985 +y=718, x=252..256 +x=334, y=207..211 +y=172, x=233..255 +y=559, x=342..355 +x=429, y=1152..1154 +x=390, y=1661..1672 +x=263, y=1236..1247 +y=991, x=174..182 +x=208, y=1644..1647 +x=492, y=1527..1553 +y=687, x=301..314 +x=261, y=1489..1503 +x=410, y=1374..1380 +y=216, x=329..348 +x=492, y=879..906 +y=349, x=385..390 +x=258, y=1059..1077 +x=249, y=1586..1589 +x=189, y=467..470 +x=471, y=220..228 +x=221, y=1657..1667 +x=447, y=406..419 +x=176, y=1641..1668 +x=500, y=292..294 +y=147, x=357..367 +x=247, y=1687..1701 +x=440, y=1071..1076 +x=282, y=498..526 +y=528, x=428..432 +x=170, y=691..710 +x=426, y=715..725 +y=1538, x=304..365 +x=205, y=1091..1092 +x=429, y=1798..1800 +x=269, y=1285..1291 +y=1505, x=463..486 +x=387, y=1109..1122 +x=461, y=859..863 +y=1370, x=406..416 +y=91, x=428..436 +x=428, y=934..940 +x=432, y=193..211 +x=397, y=1490..1500 +x=209, y=851..872 +x=213, y=454..477 +x=307, y=1722..1724 +x=328, y=1328..1332 +x=251, y=1487..1495 +x=417, y=1243..1257 +x=379, y=1116..1118 +x=409, y=20..22 +y=1288, x=185..212 +y=1034, x=217..229 +y=565, x=220..232 +x=406, y=1369..1370 +x=375, y=712..725 +x=376, y=1448..1459 +x=452, y=1271..1290 +x=498, y=217..229 +x=551, y=1773..1779 +x=472, y=1511..1518 +y=1482, x=261..389 +x=160, y=419..428 +x=390, y=339..349 +x=418, y=145..156 +y=986, x=422..428 +x=287, y=1268..1270 +x=369, y=841..850 +y=253, x=263..285 +y=815, x=281..286 +x=513, y=786..811 +y=129, x=315..319 +x=313, y=1149..1165 +x=221, y=188..202 +y=1593, x=425..439 +x=422, y=12..27 +y=1713, x=439..442 +x=538, y=52..63 +x=295, y=973..991 +y=480, x=253..263 +y=253, x=524..545 +y=744, x=322..340 +y=1148, x=456..470 +y=1437, x=369..374 +x=486, y=1490..1505 +x=235, y=1359..1361 +y=403, x=228..232 +x=157, y=1226..1237 +y=336, x=482..484 +y=358, x=463..480 +x=192, y=1572..1589 +x=428, y=971..986 +x=476, y=1403..1420 +x=277, y=1218..1224 +x=347, y=808..813 +x=551, y=1726..1737 +x=372, y=1281..1291 +y=334, x=176..178 +x=351, y=225..234 +x=330, y=529..544 +x=404, y=944..948 +x=191, y=651..664 +x=248, y=60..62 +x=296, y=809..828 +y=64, x=176..191 +y=485, x=538..540 +y=527, x=180..182 +x=177, y=941..945 +y=1263, x=231..244 +x=281, y=972..997 +y=376, x=320..340 +x=302, y=314..325 +x=278, y=1498..1503 +x=360, y=112..119 +y=1519, x=438..454 +y=92, x=167..176 +y=63, x=529..538 +y=314, x=531..542 +x=220, y=130..144 +x=555, y=157..163 +x=165, y=129..152 +x=190, y=1491..1504 +x=385, y=1222..1233 +x=273, y=81..83 +x=540, y=476..485 +x=340, y=207..211 +x=272, y=497..499 +y=95, x=180..196 +x=487, y=715..728 +x=543, y=529..530 +x=521, y=1387..1389 +y=1230, x=532..547 +y=1672, x=374..390 +x=180, y=71..95 +x=412, y=1198..1215 +x=434, y=473..486 +x=189, y=959..977 +x=285, y=339..353 +x=395, y=1593..1597 +y=1791, x=430..438 +x=364, y=1429..1440 +y=1782, x=180..182 +x=379, y=783..793 +y=81, x=501..507 +x=350, y=1271..1273 +x=400, y=1750..1770 +y=626, x=365..393 +y=576, x=389..411 +x=365, y=1538..1544 +x=323, y=420..423 +x=433, y=630..643 +y=648, x=352..371 +x=367, y=406..429 +x=427, y=124..134 +y=1152, x=426..429 +y=254, x=471..486 +x=300, y=83..99 +x=351, y=1296..1304 +x=537, y=197..211 +x=517, y=979..981 +x=337, y=1222..1236 +x=269, y=687..704 +y=344, x=335..337 +y=1220, x=541..543 +x=359, y=1125..1137 +y=1430, x=248..266 +y=1325, x=237..246 +x=380, y=882..885 +y=254, x=491..509 +x=348, y=204..216 +x=213, y=815..824 +x=164, y=905..933 +x=528, y=176..186 +x=203, y=851..872 +y=1224, x=277..304 +y=186, x=510..528 +y=163, x=509..511 +x=538, y=476..485 +x=478, y=793..815 +x=434, y=46..48 +y=902, x=497..504 +x=248, y=824..833 +x=475, y=86..97 +x=557, y=264..274 +x=432, y=1616..1620 +x=476, y=1305..1326 +x=443, y=628..640 +y=1750, x=403..429 +x=452, y=241..247 +x=299, y=1771..1787 +x=159, y=1606..1609 +x=186, y=467..470 +x=288, y=1770..1787 +y=863, x=461..487 +y=576, x=424..441 +x=517, y=155..166 +y=1582, x=284..300 +x=486, y=412..437 +x=428, y=84..91 +x=169, y=1469..1473 +x=232, y=403..406 +y=1313, x=529..532 +y=1276, x=379..402 +x=479, y=18..33 +x=394, y=820..833 +y=1114, x=484..492 +x=548, y=1416..1440 +x=374, y=1748..1750 +x=391, y=1010..1017 +x=206, y=1644..1647 +x=197, y=420..438 +x=230, y=1776..1778 +y=134, x=405..427 +x=454, y=1497..1519 +x=253, y=1239..1244 +x=213, y=196..200 +y=283, x=160..182 +y=1043, x=513..533 +x=473, y=51..64 +y=530, x=521..543 +x=195, y=292..303 +x=329, y=1220..1232 +x=380, y=759..769 +y=1471, x=428..450 +y=168, x=181..185 +y=1038, x=329..377 +x=477, y=1111..1113 +x=318, y=1736..1751 +x=354, y=507..509 +y=624, x=470..476 +x=213, y=1597..1605 +y=782, x=290..299 +y=1587, x=467..475 +x=445, y=628..640 +x=513, y=76..88 +y=1093, x=294..301 +x=251, y=181..191 +x=288, y=1662..1682 +x=472, y=1205..1208 +y=1336, x=523..526 +x=355, y=549..559 +x=454, y=654..659 +x=501, y=969..985 +x=499, y=156..166 +x=243, y=995..1009 +y=871, x=443..458 +x=388, y=520..537 +y=1650, x=197..214 +y=575, x=502..530 +x=436, y=1071..1076 +x=294, y=1180..1208 +x=164, y=1401..1409 +y=890, x=412..417 +x=168, y=227..237 +x=491, y=1712..1727 +y=211, x=495..537 +x=166, y=1574..1588 +x=277, y=54..64 +x=209, y=260..268 +x=222, y=1771..1781 +x=543, y=220..231 +x=367, y=138..147 +y=273, x=336..339 +x=157, y=1133..1141 +y=1350, x=325..328 +y=1709, x=532..545 +y=142, x=526..528 +x=439, y=1668..1671 +x=216, y=1352..1376 +x=181, y=155..168 +y=376, x=518..536 +x=431, y=888..913 +x=361, y=945..951 +x=498, y=1117..1134 +x=174, y=984..991 +x=428, y=525..528 +x=286, y=810..815 +x=507, y=1566..1588 +y=42, x=495..523 +x=382, y=437..454 +y=894, x=397..408 +x=177, y=1715..1725 +x=213, y=695..718 +y=1319, x=303..331 +y=1312, x=175..195 +x=396, y=1325..1335 +x=445, y=192..211 +x=297, y=35..49 +y=191, x=236..251 +x=427, y=471..482 +y=1247, x=246..263 +y=1122, x=370..387 +x=352, y=642..648 +y=1191, x=163..170 +x=416, y=1368..1370 +x=475, y=794..815 +y=1084, x=268..284 +y=788, x=363..373 +x=181, y=420..428 +x=453, y=1772..1774 +x=533, y=1040..1043 +x=385, y=1305..1314 +x=212, y=1268..1288 +x=302, y=1629..1636 +x=289, y=1206..1211 +x=402, y=1086..1097 +y=1473, x=161..169 +x=199, y=1385..1388 +x=518, y=873..883 +x=379, y=859..871 +y=813, x=324..347 +y=685, x=332..341 +x=537, y=1732..1734 +x=306, y=483..485 +x=406, y=286..288 +y=1624, x=211..213 +y=206, x=282..286 +x=553, y=936..941 +y=1491, x=498..501 +x=418, y=715..725 +y=1095, x=171..173 +x=255, y=1710..1737 +y=188, x=241..245 +x=241, y=186..188 +x=517, y=32..38 +x=381, y=1116..1118 +y=883, x=511..518 +y=1730, x=481..486 +x=369, y=1204..1209 +x=404, y=1419..1423 +x=488, y=11..21 +x=204, y=1150..1162 +x=173, y=555..563 +x=430, y=497..510 +y=990, x=360..377 +x=346, y=616..642 +y=96, x=222..243 +x=478, y=1196..1213 +x=224, y=1557..1569 +x=519, y=1065..1079 +y=1691, x=351..371 +x=219, y=1075..1085 +x=507, y=1235..1240 +x=498, y=1595..1620 +y=1646, x=474..497 +x=312, y=1100..1116 +x=402, y=1266..1276 +x=269, y=1591..1597 +x=167, y=1758..1762 +x=194, y=748..751 +x=493, y=1156..1175 +x=390, y=1569..1582 +x=532, y=1109..1123 +y=1647, x=206..208 +x=493, y=1485..1496 +y=1701, x=242..247 +x=507, y=801..803 +x=395, y=1219..1228 +x=305, y=1793..1797 +x=363, y=1003..1017 +x=348, y=1204..1209 +x=257, y=281..298 +x=197, y=1352..1376 +x=214, y=1731..1742 +x=237, y=442..447 +x=395, y=296..308 +x=180, y=967..973 +x=275, y=1011..1027 +y=147, x=517..536 +x=462, y=1306..1326 +x=252, y=753..755 +x=435, y=587..599 +y=1762, x=167..170 +x=206, y=1736..1748 +x=390, y=1048..1060 +y=985, x=380..396 +x=168, y=1713..1722 +y=267, x=540..550 +y=701, x=344..354 +y=1204, x=417..419 +y=1397, x=296..350 +x=219, y=43..48 +y=1787, x=288..299 +x=384, y=1625..1653 +x=481, y=394..396 +x=449, y=1068..1081 +x=497, y=1529..1534 +x=385, y=1328..1332 +x=314, y=1341..1354 +x=276, y=81..83 +x=302, y=1722..1724 +x=340, y=728..744 +x=232, y=509..514 +x=493, y=431..443 +x=185, y=1402..1409 +y=1161, x=413..437 +x=237, y=228..237 +x=337, y=1070..1078 +x=397, y=1749..1770 +x=540, y=320..346 +x=311, y=241..268 +x=372, y=1706..1709 +x=219, y=760..770 +y=1507, x=273..288 +x=489, y=306..320 +y=1348, x=440..444 +y=1332, x=328..385 +y=1103, x=495..510 +y=62, x=248..250 +y=1548, x=212..236 +x=500, y=1146..1160 +y=380, x=202..221 +y=1734, x=537..539 +x=528, y=743..756 +x=222, y=88..96 +x=518, y=204..206 +x=426, y=674..688 +x=196, y=719..734 +x=386, y=249..251 +y=246, x=536..538 +y=1214, x=337..400 +x=320, y=1150..1165 +x=413, y=1149..1161 +x=491, y=1336..1357 +x=374, y=1426..1437 +x=393, y=484..507 +x=335, y=1099..1116 +x=253, y=308..310 +x=367, y=459..461 +x=301, y=1081..1093 +x=375, y=1067..1075 +y=342, x=349..353 +y=382, x=451..472 +x=217, y=1597..1605 +x=336, y=249..273 +y=1113, x=453..477 +x=196, y=1795..1806 +x=545, y=1694..1709 +y=1751, x=318..338 +x=194, y=1283..1285 +x=329, y=1630..1636 +x=196, y=1002..1028 +x=357, y=1265..1278 +x=261, y=1150..1155 +x=410, y=587..599 +x=240, y=1770..1781 +x=289, y=339..353 +x=391, y=879..892 +x=495, y=29..42 +x=329, y=1769..1773 +y=1503, x=278..281 +x=324, y=807..813 +x=399, y=394..397 +x=371, y=641..648 +x=507, y=79..81 +x=174, y=1577..1581 +x=324, y=1244..1257 +y=268, x=209..226 +x=539, y=1765..1789 +x=238, y=1145..1147 +x=177, y=1697..1708 +y=871, x=357..379 +x=513, y=661..675 +x=180, y=504..527 +y=1757, x=369..386 +x=479, y=713..724 +y=33, x=452..479 +x=338, y=1735..1751 +x=343, y=615..642 +y=620, x=162..187 +x=392, y=303..320 +x=341, y=323..350 +x=255, y=967..986 +x=399, y=165..174 +y=600, x=300..325 +y=996, x=332..353 +x=347, y=793..796 +x=524, y=1387..1389 +y=488, x=228..242 +y=1094, x=391..393 +x=498, y=1566..1588 +x=249, y=1487..1495 +y=1351, x=434..450 +y=291, x=446..462 +x=202, y=353..380 +y=829, x=382..386 +y=1278, x=334..357 +x=259, y=1008..1032 +x=447, y=1105..1128 +y=1709, x=361..372 +x=297, y=973..991 +x=256, y=54..70 +x=389, y=762..773 +x=292, y=1060..1074 +x=268, y=1579..1583 +x=490, y=520..526 +x=379, y=1266..1276 +x=349, y=111..119 +x=548, y=220..231 +x=376, y=165..174 +y=502, x=413..415 +x=281, y=1498..1503 +y=99, x=289..300 +y=885, x=362..380 +x=313, y=1071..1078 +x=379, y=800..811 +x=381, y=543..549 +x=402, y=1221..1233 +x=510, y=1088..1103 +x=532, y=1311..1313 +x=278, y=1579..1583 +x=523, y=159..171 +y=805, x=386..390 +x=195, y=1097..1108 +y=892, x=342..391 +y=320, x=369..392 +x=395, y=1513..1527 +y=1504, x=190..209 +y=603, x=533..537 +x=447, y=1612..1627 +x=176, y=309..334 +y=346, x=531..540 +x=523, y=1727..1737 +x=342, y=1605..1612 +x=233, y=281..298 +y=1213, x=459..478 +y=707, x=382..471 +y=119, x=349..360 +x=453, y=409..422 +y=1667, x=219..221 +y=751, x=192..194 +x=332, y=984..996 +x=479, y=1156..1175 +x=447, y=757..777 +x=498, y=668..671 +x=498, y=1686..1698 +y=437, x=486..489 +y=948, x=401..404 +x=188, y=1162..1171 +x=376, y=1748..1750 +x=212, y=1533..1548 +y=821, x=304..307 +x=520, y=1457..1473 +y=1505, x=389..405 +x=290, y=1645..1649 +y=663, x=444..463 +y=811, x=495..513 +y=462, x=419..547 +y=993, x=436..461 +x=232, y=1076..1085 +x=407, y=67..87 +x=307, y=199..219 +x=520, y=914..924 +y=294, x=495..500 +x=305, y=1275..1302 +x=220, y=394..415 +y=1363, x=459..468 +y=1459, x=272..376 +y=1781, x=222..240 +x=423, y=521..534 +y=477, x=213..220 +x=528, y=86..105 +y=1257, x=391..417 +x=431, y=1031..1038 +x=471, y=716..728 +x=416, y=225..249 +x=369, y=1745..1757 +x=171, y=763..783 +y=1420, x=476..494 +x=411, y=563..576 +x=172, y=814..831 +x=467, y=241..247 +x=257, y=1239..1244 +x=201, y=555..563 +x=469, y=1462..1473 +x=268, y=1076..1084 +x=329, y=204..216 +x=497, y=1641..1646 +x=424, y=1176..1180 +x=390, y=111..124 +y=702, x=459..464 +y=280, x=410..425 +y=1668, x=171..176 +x=272, y=1791..1804 +x=458, y=266..268 +y=1162, x=204..219 +y=1789, x=525..539 +y=815, x=475..478 +y=1190, x=326..343 +x=240, y=1750..1765 +x=297, y=708..725 +x=398, y=607..620 +x=209, y=815..824 +y=116, x=225..234 +x=454, y=1058..1062 +x=408, y=879..894 +x=411, y=519..537 +x=228, y=1600..1610 +x=355, y=847..851 +y=465, x=397..399 +x=209, y=491..499 +x=251, y=1007..1032 +x=195, y=1164..1169 +x=537, y=222..234 +x=360, y=490..517 +y=443, x=493..510 +y=19, x=170..174 +x=551, y=1482..1494 +y=183, x=520..522 +y=719, x=344..349 +y=1009, x=216..243 +x=410, y=1534..1548 +x=175, y=388..415 +x=431, y=672..683 +x=531, y=312..314 +x=303, y=1307..1319 +x=351, y=1687..1691 +x=389, y=1493..1505 +x=466, y=479..503 +x=541, y=1200..1220 +y=1359, x=505..532 +x=288, y=543..569 +x=227, y=1776..1778 +y=423, x=323..331 +x=441, y=479..503 +x=363, y=1772..1783 +x=501, y=52..64 +y=124, x=376..390 +x=389, y=564..576 +y=323, x=211..224 +x=500, y=716..724 +x=358, y=290..314 +y=1134, x=492..498 +x=469, y=23..27 +y=291, x=387..399 +x=182, y=1780..1782 +y=447, x=237..260 +y=1418, x=282..364 +x=304, y=389..397 +y=1372, x=317..320 +y=419, x=445..447 +x=404, y=614..617 +x=478, y=1794..1797 +y=1748, x=374..376 +x=531, y=321..346 +x=205, y=1101..1103 +x=474, y=343..355 +x=386, y=630..642 +x=476, y=602..624 +x=525, y=716..724 +x=329, y=1028..1038 +x=244, y=20..46 +x=419, y=449..462 +x=422, y=758..777 +x=546, y=468..489 +x=505, y=94..102 +x=175, y=1309..1312 +y=1165, x=313..320 +y=189, x=300..312 +x=432, y=1526..1536 +x=443, y=225..249 +x=470, y=1685..1698 +y=664, x=394..422 +y=120, x=507..511 +x=522, y=180..183 +y=777, x=422..447 +y=196, x=410..418 +x=240, y=326..338 +y=1350, x=407..416 +y=485, x=306..309 +x=324, y=199..219 +x=444, y=650..663 +y=166, x=499..517 +y=163, x=552..555 +x=441, y=566..576 +x=172, y=906..933 +x=234, y=108..116 +x=343, y=1343..1347 +x=378, y=1087..1097 +x=198, y=833..852 +y=1440, x=364..381 +x=393, y=1219..1228 +y=531, x=397..400 +y=950, x=317..320 +y=1097, x=362..365 +x=481, y=1728..1730 +y=268, x=446..458 +x=312, y=1521..1524 +y=1589, x=192..203 +x=241, y=695..718 +y=1081, x=366..383 +x=236, y=182..191 +x=461, y=986..993 +y=1592, x=210..261 +x=256, y=709..718 +x=307, y=749..758 +y=1620, x=432..436 +x=390, y=1590..1600 +x=464, y=1667..1671 +y=1742, x=418..422 +y=353, x=285..289 +x=242, y=1353..1364 +x=470, y=603..624 +x=505, y=801..803 +x=201, y=1173..1193 +x=526, y=134..142 +x=226, y=628..654 +x=408, y=1288..1290 +x=471, y=343..355 +y=1335, x=322..396 +x=226, y=260..268 +x=510, y=763..767 +x=197, y=524..528 +x=213, y=1152..1155 +x=173, y=1072..1095 +y=1357, x=304..322 +y=1553, x=489..492 +x=513, y=204..206 +x=454, y=99..101 +x=206, y=1618..1628 +x=345, y=1454..1456 +y=232, x=493..511 +y=1582, x=386..390 +x=362, y=1092..1097 +y=790, x=363..373 +y=614, x=404..441 +x=509, y=153..163 +x=439, y=1567..1593 +x=456, y=99..101 +x=330, y=1392..1394 +y=1176, x=230..234 +x=444, y=88..104 +x=327, y=1220..1232 +x=376, y=111..124 +y=1727, x=489..491 +x=347, y=177..184 +y=1473, x=510..520 +x=228, y=471..488 +x=207, y=1205..1210 +y=1022, x=538..553 +x=282, y=1712..1730 +x=395, y=1418..1423 +x=511, y=113..120 +x=428, y=1467..1471 +x=338, y=1584..1596 +x=242, y=588..603 +x=283, y=387..407 +x=486, y=252..254 +x=472, y=23..27 +x=206, y=684..704 +y=1725, x=157..177 +x=410, y=266..280 +x=157, y=1716..1725 +y=851, x=334..355 +x=421, y=1002..1010 +y=64, x=267..277 +x=215, y=1096..1108 +x=397, y=450..465 +x=394, y=996..1001 +x=200, y=1164..1169 +x=481, y=1180..1185 +x=228, y=130..144 +x=385, y=340..349 +y=396, x=312..321 +y=320, x=465..489 +y=83, x=273..276 +x=176, y=1795..1806 +y=1370, x=317..320 +x=225, y=1617..1628 +x=316, y=1341..1354 +x=269, y=1149..1155 +y=415, x=220..238 +x=403, y=1734..1750 +y=1420, x=257..259 +y=1288, x=403..408 +y=249, x=499..502 +y=997, x=270..281 +x=422, y=340..344 +x=318, y=1039..1066 +x=181, y=764..783 +x=480, y=1337..1357 +y=27, x=469..472 +y=1027, x=275..300 +x=542, y=311..314 +x=261, y=77..87 +x=528, y=969..985 +y=1079, x=510..519 +y=1077, x=248..258 +y=1770, x=397..400 +x=389, y=975..977 +y=429, x=367..373 +x=182, y=1765..1767 +x=351, y=1762..1790 +x=203, y=1474..1485 +x=375, y=1626..1653 +y=601, x=372..382 +x=312, y=181..189 diff --git a/src/2018/18/simpleInput.txt b/src/2018/18/simpleInput.txt new file mode 100644 index 0000000..293b5af --- /dev/null +++ b/src/2018/18/simpleInput.txt @@ -0,0 +1,8 @@ +x=495, y=2..7 +y=7, x=495..501 +x=501, y=3..7 +x=498, y=2..4 +x=506, y=1..2 +x=498, y=10..13 +x=504, y=10..13 +y=13, x=498..504 diff --git a/src/2022/01/index.ts b/src/2022/01/index.ts index f919266..3fe5ac6 100644 --- a/src/2022/01/index.ts +++ b/src/2022/01/index.ts @@ -8,7 +8,7 @@ const sumMaxCalories = (numberOfElves: number) => sortBy(negate), map(sum), map(parseNumbers), - split("\n\n") + split("\n\n"), ); export const solvePart1 = sumMaxCalories(1); diff --git a/src/helpers/types.ts b/src/helpers/types.ts new file mode 100644 index 0000000..ea75e90 --- /dev/null +++ b/src/helpers/types.ts @@ -0,0 +1,8 @@ +export type Day = { + day: number; + year: number; + getSimpleInput: () => Promise; + getPuzzleInput: () => Promise; + solvePart1: (input: Input) => Output; + solvePart2: (input: Input) => Output; +};