From 97a4330bc0000e92b3a751f967652ee065d52c6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Geoffrey=20=E2=80=9CFrogeye=E2=80=9D=20Preud=27homme?= <geoffrey@frogeye.fr> Date: Wed, 25 Dec 2024 12:58:02 +0100 Subject: [PATCH] Initial commit --- .gitignore | 7 + 2023/1/obfuscated.py | 5 + 2023/1/script.py | 30 ++++ 2023/2/one.py | 28 ++++ 2023/2/two.py | 24 +++ 2023/24/one.py | 16 ++ 2023/3/one.py | 41 ++++++ 2023/3/two.py | 42 ++++++ 2024/1/one.py | 26 ++++ 2024/1/two.py | 25 ++++ 2024/10/one.py | 61 ++++++++ 2024/10/two.py | 64 ++++++++ 2024/11/one.py | 30 ++++ 2024/11/two.py | 121 +++++++++++++++ 2024/12/one.py | 83 +++++++++++ 2024/12/reddit_test | 5 + 2024/12/two.py | 136 +++++++++++++++++ 2024/13/Notes.xopp | Bin 0 -> 266872 bytes 2024/13/demog | 12 ++ 2024/13/one.py | 78 ++++++++++ 2024/13/two.py | 223 ++++++++++++++++++++++++++++ 2024/13/two_clean.py | 123 ++++++++++++++++ 2024/13/two_reddit.py | 64 ++++++++ 2024/13/two_simpy.py | 82 +++++++++++ 2024/14/one.py | 88 +++++++++++ 2024/14/two.py | 95 ++++++++++++ 2024/14/two_extra.py | 96 ++++++++++++ 2024/15/demog | 6 + 2024/15/one.py | 75 ++++++++++ 2024/15/two.py | 110 ++++++++++++++ 2024/16/:w | 4 + 2024/16/README.md | 23 +++ 2024/16/demog | 15 ++ 2024/16/demog0 | 4 + 2024/16/networkx_test.py | 86 +++++++++++ 2024/16/numpy_test.py | 135 +++++++++++++++++ 2024/16/one.py | 86 +++++++++++ 2024/16/one_opti.py | 93 ++++++++++++ 2024/16/reddit_edge_case | 27 ++++ 2024/16/reddit_open_maze | 14 ++ 2024/16/two.py | 105 +++++++++++++ 2024/16/two2.py | 95 ++++++++++++ 2024/16/two_opti.py | 111 ++++++++++++++ 2024/17/Notes.xopp | Bin 0 -> 28997 bytes 2024/17/README.md | 4 + 2024/17/demog | 5 + 2024/17/one.py | 69 +++++++++ 2024/17/two.py | 202 +++++++++++++++++++++++++ 2024/17/two_bf.py | 125 ++++++++++++++++ 2024/17/two_dfs.py | 83 +++++++++++ 2024/17/two_fixed.py | 78 ++++++++++ 2024/18/one.py | 109 ++++++++++++++ 2024/18/two.py | 121 +++++++++++++++ 2024/19/.gitignore | 1 + 2024/19/colors.py | 8 + 2024/19/one.py | 28 ++++ 2024/19/two.py | 32 ++++ 2024/2/one.py | 26 ++++ 2024/2/two.py | 37 +++++ 2024/20/README.md | 2 + 2024/20/demog | 4 + 2024/20/demog2 | 32 ++++ 2024/20/demog3 | 5 + 2024/20/one.py | 129 ++++++++++++++++ 2024/20/reddit_part3 | 41 ++++++ 2024/20/reddit_part3g | 41 ++++++ 2024/20/two.py | 153 +++++++++++++++++++ 2024/20/two_correct.py | 212 +++++++++++++++++++++++++++ 2024/20/two_fast.py | 172 ++++++++++++++++++++++ 2024/21/Notes.xopp | Bin 0 -> 85933 bytes 2024/21/Spreadsheet.ods | Bin 0 -> 21560 bytes 2024/21/demog | 1 + 2024/21/one.py | 98 +++++++++++++ 2024/21/onet.py | 97 ++++++++++++ 2024/21/two.py | 281 +++++++++++++++++++++++++++++++++++ 2024/21/two_fast.py | 64 ++++++++ 2024/22/README.md | 20 +++ 2024/22/one.py | 29 ++++ 2024/22/two.py | 121 +++++++++++++++ 2024/22/two_bf.py | 87 +++++++++++ 2024/22/two_fast.py | 112 ++++++++++++++ 2024/23/both_networkx.py | 65 +++++++++ 2024/23/one.py | 36 +++++ 2024/23/two.py | 55 +++++++ 2024/24/one.py | 47 ++++++ 2024/24/two.py | 161 ++++++++++++++++++++ 2024/24/two_test.py | 163 +++++++++++++++++++++ 2024/25/one.py | 45 ++++++ 2024/3/one.py | 19 +++ 2024/3/two.py | 26 ++++ 2024/4/one.py | 59 ++++++++ 2024/4/two.py | 27 ++++ 2024/5/one.py | 41 ++++++ 2024/5/two.py | 57 ++++++++ 2024/6/one.py | 47 ++++++ 2024/6/two.py | 67 +++++++++ 2024/7/one.py | 34 +++++ 2024/7/two.py | 37 +++++ 2024/8/one.py | 38 +++++ 2024/8/two.py | 49 +++++++ 2024/9/one.py | 55 +++++++ 2024/9/two.py | 64 ++++++++ 2024/X/one.py | 11 ++ 2024/X/two.py | 0 2024/times.escape | 33 +++++ LICENSE.EUPLv1.2 | 153 +++++++++++++++++++ LICENSE.Unlicense | 24 +++ README.md | 32 ++++ times.csv | 30 ++++ times.py | 308 +++++++++++++++++++++++++++++++++++++++ 110 files changed, 7006 insertions(+) create mode 100644 .gitignore create mode 100644 2023/1/obfuscated.py create mode 100644 2023/1/script.py create mode 100644 2023/2/one.py create mode 100644 2023/2/two.py create mode 100644 2023/24/one.py create mode 100644 2023/3/one.py create mode 100644 2023/3/two.py create mode 100644 2024/1/one.py create mode 100644 2024/1/two.py create mode 100644 2024/10/one.py create mode 100644 2024/10/two.py create mode 100644 2024/11/one.py create mode 100644 2024/11/two.py create mode 100644 2024/12/one.py create mode 100644 2024/12/reddit_test create mode 100644 2024/12/two.py create mode 100644 2024/13/Notes.xopp create mode 100644 2024/13/demog create mode 100644 2024/13/one.py create mode 100644 2024/13/two.py create mode 100644 2024/13/two_clean.py create mode 100644 2024/13/two_reddit.py create mode 100644 2024/13/two_simpy.py create mode 100644 2024/14/one.py create mode 100644 2024/14/two.py create mode 100644 2024/14/two_extra.py create mode 100644 2024/15/demog create mode 100644 2024/15/one.py create mode 100644 2024/15/two.py create mode 100644 2024/16/:w create mode 100644 2024/16/README.md create mode 100644 2024/16/demog create mode 100644 2024/16/demog0 create mode 100644 2024/16/networkx_test.py create mode 100644 2024/16/numpy_test.py create mode 100644 2024/16/one.py create mode 100644 2024/16/one_opti.py create mode 100644 2024/16/reddit_edge_case create mode 100644 2024/16/reddit_open_maze create mode 100644 2024/16/two.py create mode 100644 2024/16/two2.py create mode 100644 2024/16/two_opti.py create mode 100644 2024/17/Notes.xopp create mode 100644 2024/17/README.md create mode 100644 2024/17/demog create mode 100644 2024/17/one.py create mode 100644 2024/17/two.py create mode 100644 2024/17/two_bf.py create mode 100644 2024/17/two_dfs.py create mode 100644 2024/17/two_fixed.py create mode 100644 2024/18/one.py create mode 100644 2024/18/two.py create mode 100644 2024/19/.gitignore create mode 100644 2024/19/colors.py create mode 100644 2024/19/one.py create mode 100644 2024/19/two.py create mode 100644 2024/2/one.py create mode 100644 2024/2/two.py create mode 100644 2024/20/README.md create mode 100644 2024/20/demog create mode 100644 2024/20/demog2 create mode 100644 2024/20/demog3 create mode 100644 2024/20/one.py create mode 100644 2024/20/reddit_part3 create mode 100644 2024/20/reddit_part3g create mode 100644 2024/20/two.py create mode 100644 2024/20/two_correct.py create mode 100644 2024/20/two_fast.py create mode 100644 2024/21/Notes.xopp create mode 100644 2024/21/Spreadsheet.ods create mode 100644 2024/21/demog create mode 100644 2024/21/one.py create mode 100644 2024/21/onet.py create mode 100644 2024/21/two.py create mode 100644 2024/21/two_fast.py create mode 100644 2024/22/README.md create mode 100644 2024/22/one.py create mode 100644 2024/22/two.py create mode 100644 2024/22/two_bf.py create mode 100644 2024/22/two_fast.py create mode 100644 2024/23/both_networkx.py create mode 100644 2024/23/one.py create mode 100644 2024/23/two.py create mode 100644 2024/24/one.py create mode 100644 2024/24/two.py create mode 100644 2024/24/two_test.py create mode 100644 2024/25/one.py create mode 100644 2024/3/one.py create mode 100644 2024/3/two.py create mode 100644 2024/4/one.py create mode 100644 2024/4/two.py create mode 100644 2024/5/one.py create mode 100644 2024/5/two.py create mode 100644 2024/6/one.py create mode 100644 2024/6/two.py create mode 100644 2024/7/one.py create mode 100644 2024/7/two.py create mode 100644 2024/8/one.py create mode 100644 2024/8/two.py create mode 100644 2024/9/one.py create mode 100644 2024/9/two.py create mode 100644 2024/X/one.py create mode 100644 2024/X/two.py create mode 100644 2024/times.escape create mode 100644 LICENSE.EUPLv1.2 create mode 100644 LICENSE.Unlicense create mode 100644 README.md create mode 100644 times.csv create mode 100755 times.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3923250 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# Don't include prompts and inputs as they're not free to copy +**/input* +**/prompt +# Demos are also part of the prompt... +**/demo* +# ... except when I wrote those myself +!**/demog* diff --git a/2023/1/obfuscated.py b/2023/1/obfuscated.py new file mode 100644 index 0000000..b7ea355 --- /dev/null +++ b/2023/1/obfuscated.py @@ -0,0 +1,5 @@ +import re +d="zero|one|two|three|four|five|six|seven|eight|nine|\\d)" +def f(l,p): + m=re.search(p,l)[1];return str(d.split("|").index(m)) if m in d else m +print(sum(map(lambda l:int(f(l,f"({d}.*")+f(l,".*("+d)),open(0).readlines()))) diff --git a/2023/1/script.py b/2023/1/script.py new file mode 100644 index 0000000..6514aa3 --- /dev/null +++ b/2023/1/script.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + +import re + +digits = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] +group = "|".join(digits + ["[0-9]"]) + +tot = 0 +with open("lines.txt") as lines: + for line in lines.readlines(): + print() + line = line.rstrip() + print(line) + last = re.search(rf"^.*({group})", line) + first = re.search(rf"({group}).*$", line) + print(first, last) + f = first[1] + l = last[1] + print(f, l) + if f in digits: + f = str(digits.index(f)) + if l in digits: + l = str(digits.index(l)) + print(f, l) + numb = int(f + l) + tot += numb + print(numb) +print() + +print(tot) diff --git a/2023/2/one.py b/2023/2/one.py new file mode 100644 index 0000000..cdf394c --- /dev/null +++ b/2023/2/one.py @@ -0,0 +1,28 @@ +maxs = {"red": 12, "green": 13, "blue": 14} + +gid = 0 +possible_gid_sum = 0 + +with open("input") as lines: + for line in lines.readlines(): + gid += 1 + line = line.rstrip() + game_full, sets = line.split(":") + game, gid_str = game_full.split(" ") + assert int(gid_str) == gid + possible = True + for seet in sets.split(";"): + gcs = {"red": 0, "green": 0, "blue": 0} + for color in seet.split(","): + amount_str, color = color.strip().split(" ") + amount = int(amount_str) + gcs[color] += amount + for color, amount in gcs.items(): + max = maxs[color] + if amount > max: + possible = False + if possible: + possible_gid_sum += gid + print(gid, possible) + +print(possible_gid_sum) diff --git a/2023/2/two.py b/2023/2/two.py new file mode 100644 index 0000000..16443bb --- /dev/null +++ b/2023/2/two.py @@ -0,0 +1,24 @@ +maxs = {"red": 12, "green": 13, "blue": 14} + +gid = 0 +power_sum = 0 + +with open("input") as lines: + for line in lines.readlines(): + gid += 1 + line = line.rstrip() + game_full, sets = line.split(":") + game, gid_str = game_full.split(" ") + assert int(gid_str) == gid + possible = True + gcs = {"red": 0, "green": 0, "blue": 0} + for seet in sets.split(";"): + for color in seet.split(","): + amount_str, color = color.strip().split(" ") + amount = int(amount_str) + gcs[color] = max(amount, gcs[color]) + power = gcs["red"] * gcs["green"] * gcs["blue"] + print(gid, power) + power_sum += power + +print(power_sum) diff --git a/2023/24/one.py b/2023/24/one.py new file mode 100644 index 0000000..5deaaf0 --- /dev/null +++ b/2023/24/one.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +hailstones = [] + +with open(input_file) as fd: + for line in fd.readlines(): + line = line.rstrip() + line.replace("@", ",") + hailstone = [int(h) for h in line.split(",")] + hailstones.append(hailstone) + + diff --git a/2023/3/one.py b/2023/3/one.py new file mode 100644 index 0000000..e9d18ab --- /dev/null +++ b/2023/3/one.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +sum = 0 +for i in range(height): + line = lines[i] + pn_str = "" + for j in range(width): + c = line[j] + # print(19, c) + if c.isnumeric(): + if not pn_str: + left = j + pn_str += c + # print(20, c, pn_str) + if pn_str and (j == width - 1 or not line[j + 1].isnumeric()): + print(25, pn_str) + adj = False + for ii in range(max(i - 1, 0), min(i + 1, height - 1) + 1): + for jj in range(max(left - 1, 0), min(j + 1, width - 1) + 1): + cc = lines[ii][jj] + print(ii, jj, cc) + if not cc.isnumeric() and cc != ".": + print("!") + adj = True + # print(pn_str, adj) + if adj: + pn = int(pn_str) + sum += pn + pn_str = "" + +print(sum) diff --git a/2023/3/two.py b/2023/3/two.py new file mode 100644 index 0000000..69193b1 --- /dev/null +++ b/2023/3/two.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +gears = dict() + +sum = 0 +for i in range(height): + line = lines[i] + pn_str = "" + for j in range(width): + c = line[j] + # print(19, c) + if c.isnumeric(): + if not pn_str: + left = j + pn_str += c + # print(20, c, pn_str) + if pn_str and (j == width - 1 or not line[j + 1].isnumeric()): + for ii in range(max(i - 1, 0), min(i + 1, height - 1) + 1): + for jj in range(max(left - 1, 0), min(j + 1, width - 1) + 1): + cc = lines[ii][jj] + # print(ii, jj, cc) + if cc == "*": + gears.setdefault((ii, jj), list()) + gears[(ii, jj)].append(int(pn_str)) + pn_str = "" +for gear_numbers in gears.values(): + if len(gear_numbers) != 2: + continue + gear_ratio = gear_numbers[0] * gear_numbers[1] + sum += gear_ratio + +print(sum) diff --git a/2024/1/one.py b/2024/1/one.py new file mode 100644 index 0000000..f8f782a --- /dev/null +++ b/2024/1/one.py @@ -0,0 +1,26 @@ + +listl = [] +listr = [] +with open("input") as lines: + for line in lines.readlines(): + line = line.rstrip() + print(line) + spli = line.split(" ") + listl.append(int(spli[0])) + listr.append(int(spli[-1])) + +assert len(listl) == len(listr) + +listl.sort() +listr.sort() + +dtot = 0 + +for i in range(len(listl)): + l = listl[i] + r = listr[i] + d = abs(l-r) + dtot += d + print(l, r, d) + +print(dtot) diff --git a/2024/1/two.py b/2024/1/two.py new file mode 100644 index 0000000..5f3e8c3 --- /dev/null +++ b/2024/1/two.py @@ -0,0 +1,25 @@ + +listl = [] +listr = [] +with open("input") as lines: + for line in lines.readlines(): + line = line.rstrip() + print(line) + spli = line.split(" ") + listl.append(int(spli[0])) + listr.append(int(spli[-1])) + +assert len(listl) == len(listr) + +listl.sort() +listr.sort() + +dtot = 0 + +for i in range(len(listl)): + l = listl[i] + d = listr.count(l) * l + dtot += d + print(l, d) + +print(dtot) diff --git a/2024/10/one.py b/2024/10/one.py new file mode 100644 index 0000000..3fb0210 --- /dev/null +++ b/2024/10/one.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +tmap: list[list[int]] = [[int(a) for a in line] for line in lines] + +directions = [ + (0, 1), + (0, -1), + (1, 0), + (-1, 0), +] + + +def print_path(path: list[tuple[int, int]]) -> None: + viz = [["."] * width for _ in range(height)] + for c, pos in enumerate(path): + i, j = pos + viz[i][j] = str(c) + for line in viz: + print("".join(line)) + print() + + +def score(pos: tuple[int, int], path: list[tuple[int, int]]) -> set[tuple[int, int]]: + path = path + [pos] + i, j = pos + c = tmap[i][j] + if c == 9: + return {pos} + reachable = set() + for direction in directions: + ii, jj = i + direction[0], j + direction[1] + if ii not in range(height) or jj not in range(width): + continue + cc = tmap[ii][jj] + if cc != c + 1: + continue + reachable |= score((ii, jj), path) + return reachable + + +tscore = 0 +for i in range(height): + for j in range(width): + c = tmap[i][j] + if c != 0: + continue + cscore = len(score((i, j), [])) + # print(i, j, cscore) + tscore += cscore + +print(tscore) diff --git a/2024/10/two.py b/2024/10/two.py new file mode 100644 index 0000000..b95cbe1 --- /dev/null +++ b/2024/10/two.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +tmap: list[list[int]] = [[int(a) for a in line] for line in lines] + +directions = [ + (0, 1), + (0, -1), + (1, 0), + (-1, 0), +] + + +def print_path(path: list[tuple[int, int]]) -> None: + viz = [["."] * width for _ in range(height)] + for c, pos in enumerate(path): + i, j = pos + viz[i][j] = str(c) + for line in viz: + print("".join(line)) + print() + + +def score(pos: tuple[int, int], path: list[tuple[int, int]]) -> int: + path = path + [pos] + i, j = pos + c = tmap[i][j] + if c == 9: + # print_path(path) + return 1 + cscore = 0 + for direction in directions: + ii, jj = i + direction[0], j + direction[1] + if ii not in range(height) or jj not in range(width): + continue + cc = tmap[ii][jj] + if cc != c + 1: + continue + cscore += score((ii, jj), path) + return cscore + + +tscore = 0 +for i in range(height): + for j in range(width): + c = tmap[i][j] + if c != 0: + continue + cscore = score((i, j), []) + print(i, j, cscore) + tscore += cscore + # break + # break + +print(tscore) diff --git a/2024/11/one.py b/2024/11/one.py new file mode 100644 index 0000000..bbbfd0e --- /dev/null +++ b/2024/11/one.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +stones = [int(stone) for stone in lines[0].split()] + +for _ in range(25): + new_stones = [] + for stone in stones: + stone_str = str(stone) + if stone == 0: + new_stones.append(1) + elif len(stone_str) % 2 == 0: + mid = int(len(stone_str) / 2) + new_stones.append(int(stone_str[:mid])) + new_stones.append(int(stone_str[mid:])) + else: + new_stones.append(stone * 2024) + stones = new_stones + # print(" ".join(str(stone) for stone in stones)) + +print(len(stones)) diff --git a/2024/11/two.py b/2024/11/two.py new file mode 100644 index 0000000..09ef476 --- /dev/null +++ b/2024/11/two.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 + +import bisect +import sys +import time +import functools + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +start = time.time() + +stones = [int(stone) for stone in lines[0].split()] + +# for i in range(75): +# print(i, time.time() - start, len(stones)) +# # for s, stone in enumerate(stones): +# # if stone == 0: +# # stones[s] = 1 +# # continue +# # stone_str = str(stone) +# # if len(stone_str) % 2 == 0: +# # mid = int(len(stone_str) / 2) +# # stones[s] = int(stone_str[:mid]) +# # stones.insert(s, int(stone_str[mid:])) +# # else: +# # stones[s] *= 2024 +# new_stones = [] +# for stone in stones: +# stone_str = str(stone) +# if stone == 0: +# new_stones.append(1) +# elif len(stone_str) % 2 == 0: +# mid = int(len(stone_str) / 2) +# new_stones.append(int(stone_str[:mid])) +# new_stones.append(int(stone_str[mid:])) +# else: +# new_stones.append(stone * 2024) +# stones = new_stones + +target = int(sys.argv[2]) + +its = [0] * len(stones) + +start_stones = stones.copy() + + +pow10 = list() +for i in range(25): + pow10.append(10**i) + + +def num_digits(a: int) -> int: + # for i, p in enumerate(pow10): + # if a < p: + # # assert len(str(a)) == i + # return i + # raise NotImplementedError + # return bisect.bisect(pow10, a) + # # nb = bisect.bisect(pow10, a) + num = 0 + while a > 0: + num += 1 + a //= 10 + # assert nb == num + return num + + +# lstones = 0 +# for e, sstone in enumerate(start_stones): +# print(f"47 {e}/{len(start_stones)} {time.time() - start}") +# stones = [sstone] +# while stones: +# stone = stones.pop(0) +# it = its.pop(0) +# lstones += 1 +# if stone == 0: +# stone = 1 +# it += 1 +# nd = num_digits(stone) +# for i in range(it, target): +# print(stone) +# if nd % 2 == 0: +# mid = nd // 2 +# left, right = divmod(stone, pow10[mid]) +# # left, right = divmod(stone, 10**mid) +# stone = left +# stones.insert(0, right) +# its.insert(0, i + 1) +# nd = mid +# else: +# stone *= 2024 +# nd = num_digits(stone) +# # print(f"64 {stone}") + +# @functools.lru_cache(maxsize=1024) +@functools.cache +def proc(stone: int, target: int) -> int: + if target == 0: + return 1 + target -= 1 + if stone == 0: + return proc(1, target) + nd = num_digits(stone) + if nd % 2 == 0: + mid = nd // 2 + left, right = divmod(stone, pow10[mid]) + return proc(left, target) + proc(right, target) + else: + return proc(stone * 2024, target) + + +lstones = 0 +for e, stone in enumerate(stones): + print(f"47 {e}/{len(stones)} {time.time() - start}") + lstones += proc(stone, target) + +print(f"{target=}") +print(lstones) diff --git a/2024/12/one.py b/2024/12/one.py new file mode 100644 index 0000000..506ec1d --- /dev/null +++ b/2024/12/one.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +visited: set[tuple[int, int]] = set() + +directions = [ + (0, 1), + (0, -1), + (1, 0), + (-1, 0), +] + + +def get_region( + pos: tuple[int, int], region: set[tuple[int, int]] +) -> set[tuple[int, int]]: + region.add(pos) + i, j = pos + ochar = lines[i][j] + for direction in directions: + i, j = pos[0] + direction[0], pos[1] + direction[1] + if i not in range(height) or j not in range(width): + continue + if (i, j) in region: + continue + char = lines[i][j] + if char != ochar: + continue + region |= get_region((i, j), region) + return region + + +def get_perimeter(region: set[tuple[int, int]]) -> int: + peri = 0 + for axis in (0, 1): + oaxis = 0 if axis else 1 + iss = set([pos[axis] for pos in region]) + print(47, iss, peri) + for i in iss: + line = [pos[oaxis] for pos in region if pos[axis] == i] + line.sort() + last_j = None + for j in line: + if last_j is None: + peri += 1 + elif last_j == j - 1: + pass + else: + peri += 2 + last_j = j + if last_j is not None: + peri += 1 + print(62, i, peri, line) + return peri + + +tprice = 0 +for i in range(height): + for j in range(width): + pos = i, j + if pos in visited: + continue + region = get_region(pos, set()) + visited |= region + + area = len(region) + peri = get_perimeter(region) + price = area * peri + tprice += price + + char = lines[i][j] + print(f"{char}: {area} × {peri} = {price}$") + +print(tprice) diff --git a/2024/12/reddit_test b/2024/12/reddit_test new file mode 100644 index 0000000..eeb664d --- /dev/null +++ b/2024/12/reddit_test @@ -0,0 +1,5 @@ +AAXXX +AAXAX +AAAAX +AAXAX +AAXXX diff --git a/2024/12/two.py b/2024/12/two.py new file mode 100644 index 0000000..ac1b48f --- /dev/null +++ b/2024/12/two.py @@ -0,0 +1,136 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +visited: set[tuple[int, int]] = set() + +directions = [ + (0, 1), + (0, -1), + (1, 0), + (-1, 0), +] + + +def get_region( + pos: tuple[int, int], region: set[tuple[int, int]] +) -> set[tuple[int, int]]: + region.add(pos) + i, j = pos + ochar = lines[i][j] + for direction in directions: + i, j = pos[0] + direction[0], pos[1] + direction[1] + if i not in range(height) or j not in range(width): + continue + if (i, j) in region: + continue + char = lines[i][j] + if char != ochar: + continue + region |= get_region((i, j), region) + return region + + +# def get_sides(region: set[tuple[int, int]]) -> int: +# peri = 0 +# for axis in (0, 1): +# oaxis = 0 if axis else 1 +# iss = set([pos[axis] for pos in region]) +# sta: set[int] = set() +# sto: set[int] = set() +# for i in iss: +# line = [pos[oaxis] for pos in region if pos[axis] == i] +# line.sort() +# last_j = None +# for j in line: +# if last_j is None: +# sta.add(j) +# elif last_j == j - 1: +# pass +# else: +# sta.add(j) +# sto.add(last_j) +# last_j = j +# if last_j is not None: +# sto.add(last_j) +# peri += len(sta) + len(sto) +# return peri + +def get_perimeter(region: set[tuple[int, int]]) -> int: + peri = 0 + for axis in (0, 1): + oaxis = 0 if axis else 1 + iss = set([pos[axis] for pos in region]) + for dire in (-1, 1): + print(47, axis, dire, iss, peri) + for i in iss: + oi = i + dire + line = [pos[oaxis] for pos in region if pos[axis] == i] + line.sort() + # last_j = None + for j in line: + if not axis: + opos = oi, j + else: + opos = j, oi + if opos in region: + continue + peri += 1 + return peri + + +def get_sides(region: set[tuple[int, int]]) -> int: + peri = 0 + for axis in (0, 1): + oaxis = 0 if axis else 1 + iss = set([pos[axis] for pos in region]) + for dire in (-1, 1): + print(47, axis, dire, iss, peri) + for i in iss: + oi = i + dire + line = [pos[oaxis] for pos in region if pos[axis] == i] + line.sort() + last_j = None + for j in line: + if not axis: + opos = oi, j + else: + opos = j, oi + if opos in region: + last_j = None + continue + if last_j == j - 1: + pass + else: + peri += 1 + + last_j = j + return peri + + +tprice = 0 +for i in range(height): + for j in range(width): + pos = i, j + if pos in visited: + continue + region = get_region(pos, set()) + visited |= region + + area = len(region) + sides = get_sides(region) + price = area * sides + tprice += price + + char = lines[i][j] + print(f"{char}: {area} × {sides} = {price}$") + +print(tprice) diff --git a/2024/13/Notes.xopp b/2024/13/Notes.xopp new file mode 100644 index 0000000000000000000000000000000000000000..9f67c2385636f98f0c354592284fe4de63785494 GIT binary patch literal 266872 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®&=Sep@1}F!c=|yxWZ8;*hxZEi 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 literal 0 HcmV?d00001 diff --git a/2024/13/demog b/2024/13/demog new file mode 100644 index 0000000..008e6f3 --- /dev/null +++ b/2024/13/demog @@ -0,0 +1,12 @@ +Button A: X+3, Y+1 +Button B: X+4, Y+2 +Prize: X=17, Y=7 + +Button A: X+1, Y+1 +Button B: X+3, Y+3 +Prize: X=7, Y=7 + +Button A: X+3, Y+3 +Button B: X+1, Y+1 +Prize: X=7, Y=7 + diff --git a/2024/13/one.py b/2024/13/one.py new file mode 100644 index 0000000..c13b92a --- /dev/null +++ b/2024/13/one.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 + +import functools +import re +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +coords = tuple[int, int] +prizes: list[coords] = list() +buttons: list[tuple[coords, coords]] = list() + +for li, line in enumerate(lines): + machine = li // 4 + offset = li % 4 + if offset == 0: + match = re.match(r"^Button A: X\+([0-9]+), Y\+([0-9]+)$", line) + assert match + button_a = int(match[1]), int(match[2]) + elif offset == 1: + match = re.match(r"^Button B: X\+([0-9]+), Y\+([0-9]+)$", line) + assert match + button_b = int(match[1]), int(match[2]) + buttons.append((button_a, button_b)) + elif offset == 2: + match = re.match("^Prize: X=([0-9]+), Y=([0-9]+)$", line) + assert match + prize = int(match[1]), int(match[2]) + prizes.append(prize) + +assert len(prizes) == len(buttons) + +ttoks = 0 +for arcade, prize in enumerate(prizes): + butts = buttons[arcade] + button_a, button_b = butts + + @functools.lru_cache(4096) + def fun(x: int, y: int, rem_a: int, rem_b: int) -> int | None: + if (x, y) == prize: + return 0 + if x > prize[0] or y > prize[1]: + return None + ba = ( + fun(x + button_a[0], y + button_a[1], rem_a - 1, rem_b) + if rem_a > 0 + else None + ) + bb = ( + fun(x + button_b[0], y + button_b[1], rem_a, rem_b - 1) + if rem_b > 0 + else None + ) + if ba is not None: + ba += 3 + if bb is not None: + bb += 1 + if ba is None: + if bb is None: + return None + else: + return bb + else: + if bb is None or ba < bb: + return ba + else: + return bb + + toks = fun(0, 0, 100, 100) + print(43, arcade, toks) + if toks is not None: + ttoks += toks + # break + +print(ttoks) diff --git a/2024/13/two.py b/2024/13/two.py new file mode 100644 index 0000000..d8f655e --- /dev/null +++ b/2024/13/two.py @@ -0,0 +1,223 @@ +#!/usr/bin/env python3 + +import math +import re +import sys + +import rich.progress + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +coords = tuple[int, int] +prizes: list[coords] = list() +buttons: list[tuple[coords, coords]] = list() + +for li, line in enumerate(lines): + machine = li // 4 + offset = li % 4 + if offset == 0: + match = re.match(r"^Button A: X\+([0-9]+), Y\+([0-9]+)$", line) + assert match + button_a = int(match[1]), int(match[2]) + elif offset == 1: + match = re.match(r"^Button B: X\+([0-9]+), Y\+([0-9]+)$", line) + assert match + button_b = int(match[1]), int(match[2]) + buttons.append((button_a, button_b)) + elif offset == 2: + match = re.match("^Prize: X=([0-9]+), Y=([0-9]+)$", line) + assert match + prize = int(match[1]), int(match[2]) + prize = prize[0] + 10000000000000, prize[1] + 10000000000000 + prizes.append(prize) + +assert len(prizes) == len(buttons) + + +def slope(point: coords) -> float: + return point[1] / point[0] + + +def norm(point: coords) -> float: + return math.sqrt(math.pow(point[1], 2) + math.pow(point[0], 2)) + + +# +# def in_range(p: coords, a: coords, b: coords) -> bool: +# slope_a = slope(button_a) +# slope_b = slope(button_b) +# slope_p = slope(p) +# slope_but_min = min(slope_a, slope_b) +# slope_but_max = max(slope_a, slope_b) +# return not (slope_p < slope_but_min or slope_p > slope_but_max) + + +ttoks = 0 +token_a, token_b = 3, 1 +for arcade, prize in enumerate(prizes): + butts = buttons[arcade] + button_a, button_b = butts + + print(43, prize, button_a, button_b) + toks = None + + max_a_x = int(math.ceil(prize[0] / button_a[0])) + max_a_y = int(math.ceil(prize[1] / button_a[1])) + max_a = min(max_a_x, max_a_y) + max_b_x = int(math.ceil(prize[0] / button_b[0])) + max_b_y = int(math.ceil(prize[1] / button_b[1])) + max_b = min(max_b_x, max_b_y) + + slope_a = slope(button_a) + slope_b = slope(button_b) + slope_prize = slope(prize) + slope_but_min = min(slope_a, slope_b) + slope_but_max = max(slope_a, slope_b) + print(57, slope_but_min, slope_prize, slope_but_max) + if slope_prize < slope_but_min or slope_prize > slope_but_max: + print("Not in range") + continue + + norm_a = norm(button_a) + norm_b = norm(button_b) + speed_a = norm_a / 3 + speed_b = norm_b / 1 + + if speed_a > speed_b: + button_fastest, button_slowest = button_a, button_b + token_fastest, token_slowest = token_a, token_b + max_fastest, max_slowest = max_a, max_b + # slope_fastest, slope_slowes = slope_a, slope_b + # norm_fastest, norm_slowest = norm_a, norm_b + else: + button_fastest, button_slowest = button_b, button_a + token_fastest, token_slowest = token_b, token_a + max_fastest, max_slowest = max_b, max_a + # slope_fastest, slope_slowes = slope_b, slope_a + # norm_fastest, norm_slowest = norm_b, norm_a + toks = 0 + + # pri_x, pri_y = prize + # slope_pri = slope((pri_x, pri_y)) + # while slope_pri >= slope_but_min and slope_pri <= slope_but_max: + # toks += token_fastest + # pri_x -= button_fastest[0] + # pri_y -= button_fastest[1] + # slope_pri = slope((pri_x, pri_y)) + # # print(98, pri_x, pri_y, slope_pri, toks) + # pri_x += button_fastest[0] + # pri_y += button_fastest[1] + # toks -= token_fastest + # print(100, token_fastest, toks / token_fastest, toks) + + min_presses_fastest = 0 + max_presses_fastest = max_fastest + while min_presses_fastest + 1 < max_presses_fastest: + presses_fastest = int( + math.floor((min_presses_fastest + max_presses_fastest) / 2) + ) + print(120, min_presses_fastest, max_presses_fastest, presses_fastest) + pri_x, pri_y = ( + prize[0] - button_fastest[0] * presses_fastest, + prize[1] - button_fastest[1] * presses_fastest, + ) + slope_pri = slope((pri_x, pri_y)) + if slope_pri >= slope_but_min and slope_pri <= slope_but_max: + min_presses_fastest = presses_fastest + else: + max_presses_fastest = presses_fastest + + presses_fastest = max_presses_fastest + pri_x, pri_y = ( + prize[0] - button_fastest[0] * presses_fastest, + prize[1] - button_fastest[1] * presses_fastest, + ) + pri_x += button_fastest[0] + pri_y += button_fastest[1] + toks = presses_fastest * token_fastest + toks -= token_fastest + + print(101, token_fastest, toks / token_fastest, toks) + + # while pri_x > 0 and pri_y > 0: + # toks += token_slowest + # pri_x -= button_slowest[0] + # pri_y -= button_slowest[1] + # print(103, token_slowest, toks) + # if (pri_x, pri_y) != (0, 0): + # toks = None + + presses_slowest, remainder = divmod(pri_x, button_slowest[0]) + if remainder == 0 and (pri_y == presses_slowest * button_slowest[1]): + toks += presses_slowest * token_slowest + else: + toks = None + # dist = norm((pri_x, pri_y)) + # rem_presses, remainder = divmod(dist, norm_slowest) + # presses_slowest = dist / norm_slowest + # if remainder == 0: + # toks += rem_presses * token_slowest + # else: + # toks = None + + # + # with rich.progress.Progress() as progress: + # nb_a = max_a + # nb_b = 0 + # task_a = progress.add_task("Button A", total=max_a) + # task_b = progress.add_task("Button B", total=max_b) + # x = nb_a * button_a[0] + nb_b * button_b[0] + # while nb_a > 0 or x < prize[0]: + # # print(54, nb_a, nb_b) + # if x == prize[0]: + # y = nb_a * button_a[1] + nb_b * button_b[1] + # if y == prize[1]: + # tok = 3 * nb_a + 1 * nb_b + # if toks is None or tok < toks: + # toks = tok + # if x >= prize[0]: + # # print(67) + # nb_a -= 1 + # # progress.update(task_a, advance=1) + # elif x < prize[0]: + # nb_b += 1 + # # print(71) + # # progress.update(task_b, advance=1) + # if nb_b > max_b: + # break + # x = nb_a * button_a[0] + nb_b * button_b[0] + + # @functools.lru_cache(4096) + # def fun(x: int, y: int) -> int | None: + # if (x, y) == prize: + # return 0 + # if x > prize[0] or y > prize[1]: + # return None + # ba = fun(x + button_a[0], y + button_a[1]) + # bb = fun(x + button_b[0], y + button_b[1]) + # if ba is not None: + # ba += 3 + # if bb is not None: + # bb += 1 + # if ba is None: + # if bb is None: + # return None + # else: + # return bb + # else: + # if bb is None or ba < bb: + # return ba + # else: + # return bb + # + # toks = fun(0, 0) + + print(43, arcade, toks) + if toks is not None: + ttoks += toks + # break + +print(ttoks) diff --git a/2024/13/two_clean.py b/2024/13/two_clean.py new file mode 100644 index 0000000..8a719c3 --- /dev/null +++ b/2024/13/two_clean.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 + +import math +import re +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +coords = tuple[int, int] +prizes: list[coords] = list() +buttons: list[tuple[coords, coords]] = list() + +for li, line in enumerate(lines): + machine = li // 4 + offset = li % 4 + if offset == 0: + match = re.match(r"^Button A: X\+([0-9]+), Y\+([0-9]+)$", line) + assert match + button_a = int(match[1]), int(match[2]) + elif offset == 1: + match = re.match(r"^Button B: X\+([0-9]+), Y\+([0-9]+)$", line) + assert match + button_b = int(match[1]), int(match[2]) + buttons.append((button_a, button_b)) + elif offset == 2: + match = re.match("^Prize: X=([0-9]+), Y=([0-9]+)$", line) + assert match + prize = int(match[1]), int(match[2]) + # prize = prize[0] + 10000000000000, prize[1] + 10000000000000 + prizes.append(prize) + +assert len(prizes) == len(buttons) + + +def slope(point: coords) -> float: + return point[1] / point[0] + + +def norm(point: coords) -> float: + return math.sqrt(math.pow(point[1], 2) + math.pow(point[0], 2)) + + +ttoks = 0 +token_a, token_b = 3, 1 +for arcade, prize in enumerate(prizes): + butts = buttons[arcade] + button_a, button_b = butts + + print(43, prize, button_a, button_b) + toks = None + + max_a_x = int(math.ceil(prize[0] / button_a[0])) + max_a_y = int(math.ceil(prize[1] / button_a[1])) + max_a = min(max_a_x, max_a_y) + max_b_x = int(math.ceil(prize[0] / button_b[0])) + max_b_y = int(math.ceil(prize[1] / button_b[1])) + max_b = min(max_b_x, max_b_y) + + slope_a = slope(button_a) + slope_b = slope(button_b) + slope_prize = slope(prize) + slope_but_min = min(slope_a, slope_b) + slope_but_max = max(slope_a, slope_b) + if slope_prize < slope_but_min or slope_prize > slope_but_max: + print("Not in range") + continue + + norm_a = norm(button_a) + norm_b = norm(button_b) + speed_a = norm_a / 3 + speed_b = norm_b / 1 + + if speed_a > speed_b: + button_fastest, button_slowest = button_a, button_b + token_fastest, token_slowest = token_a, token_b + max_fastest = max_a + else: + button_fastest, button_slowest = button_b, button_a + token_fastest, token_slowest = token_b, token_a + max_fastest = max_b + toks = 0 + + min_presses_fastest = 0 + max_presses_fastest = max_fastest + while min_presses_fastest + 1 < max_presses_fastest: + presses_fastest = int( + math.floor((min_presses_fastest + max_presses_fastest) / 2) + ) + pri_x, pri_y = ( + prize[0] - button_fastest[0] * presses_fastest, + prize[1] - button_fastest[1] * presses_fastest, + ) + slope_pri = slope((pri_x, pri_y)) + if slope_pri >= slope_but_min and slope_pri <= slope_but_max: + min_presses_fastest = presses_fastest + else: + max_presses_fastest = presses_fastest + + presses_fastest = max_presses_fastest + pri_x, pri_y = ( + prize[0] - button_fastest[0] * presses_fastest, + prize[1] - button_fastest[1] * presses_fastest, + ) + pri_x += button_fastest[0] + pri_y += button_fastest[1] + toks = presses_fastest * token_fastest + toks -= token_fastest + + + presses_slowest, remainder = divmod(pri_x, button_slowest[0]) + if remainder == 0 and (pri_y == presses_slowest * button_slowest[1]): + toks += presses_slowest * token_slowest + else: + toks = None + + print(76, toks) + if toks is not None: + ttoks += toks + +print(ttoks) diff --git a/2024/13/two_reddit.py b/2024/13/two_reddit.py new file mode 100644 index 0000000..b44f0e6 --- /dev/null +++ b/2024/13/two_reddit.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 + +""" +Implementing: +https://www.reddit.com/r/adventofcode/comments/1hd7irq/2024_day_13_an_explanation_of_the_mathematics/ +""" + +import re +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +coords = tuple[int, int] +prizes: list[coords] = list() +buttons: list[tuple[coords, coords]] = list() + +for li, line in enumerate(lines): + machine = li // 4 + offset = li % 4 + if offset == 0: + match = re.match(r"^Button A: X\+([0-9]+), Y\+([0-9]+)$", line) + assert match + button_a = int(match[1]), int(match[2]) + elif offset == 1: + match = re.match(r"^Button B: X\+([0-9]+), Y\+([0-9]+)$", line) + assert match + button_b = int(match[1]), int(match[2]) + buttons.append((button_a, button_b)) + elif offset == 2: + match = re.match("^Prize: X=([0-9]+), Y=([0-9]+)$", line) + assert match + prize = int(match[1]), int(match[2]) + # prize = prize[0] + 10000000000000, prize[1] + 10000000000000 + prizes.append(prize) + +assert len(prizes) == len(buttons) + +ttoks = 0 +token_a, token_b = 3, 1 +for arcade, prize in enumerate(prizes): + butts = buttons[arcade] + button_a, button_b = butts + + print(43, prize, button_a, button_b) + p_x, p_y = prize + a_x, a_y = button_a + b_x, b_y = button_b + + denom = a_x * b_y - a_y * b_x + a = (p_x * b_y - p_y * b_x) / denom + b = (a_x * p_y - a_y * p_x) / denom + + if not a.is_integer() or not b.is_integer(): + print(76, None) + continue + + toks = int(a) * token_a + int(b) * token_b + print(76, toks) + ttoks += toks + +print(ttoks) diff --git a/2024/13/two_simpy.py b/2024/13/two_simpy.py new file mode 100644 index 0000000..cbce3d6 --- /dev/null +++ b/2024/13/two_simpy.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python3 + +""" +Someone mentionned sympy on reddit, wanted to see what I could do with it. +""" + +import re +import sys + +import sympy + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +coords = tuple[int, int] +prizes: list[coords] = list() +buttons: list[tuple[coords, coords]] = list() + +for li, line in enumerate(lines): + machine = li // 4 + offset = li % 4 + if offset == 0: + match = re.match(r"^Button A: X\+([0-9]+), Y\+([0-9]+)$", line) + assert match + button_a = int(match[1]), int(match[2]) + elif offset == 1: + match = re.match(r"^Button B: X\+([0-9]+), Y\+([0-9]+)$", line) + assert match + button_b = int(match[1]), int(match[2]) + buttons.append((button_a, button_b)) + elif offset == 2: + match = re.match("^Prize: X=([0-9]+), Y=([0-9]+)$", line) + assert match + prize = int(match[1]), int(match[2]) + # prize = prize[0] + 10000000000000, prize[1] + 10000000000000 + prizes.append(prize) + +assert len(prizes) == len(buttons) + +sympy.init_printing() + +a, b, Ax, Ay, Bx, By, Px, Py = sympy.symbols( + "a b Ax Ay Bx By Px Py", positive=True, integer=True +) +x_eq = sympy.Eq(a * Ax + b * Bx, Px) +y_eq = sympy.Eq(a * Ay + b * By, Py) +tokens = 3 * a + 1 * b +sols = sympy.solve([x_eq, y_eq], a, b, dict=True) +# In that case, should use linsolve directly (solve ain't great) +# Would allow to .subs the whole solution set at once. + +ttoks = sympy.Integer(0) +for arcade, prize in enumerate(prizes): + button_a, button_b = buttons[arcade] + + print(43, prize, button_a, button_b) + + vars = { + Ax: button_a[0], + Ay: button_a[1], + Bx: button_b[0], + By: button_b[1], + Px: prize[0], + Py: prize[1], + } + toks = None + for sol in sols: + a_presses, b_presses = sol[a].subs(vars), sol[b].subs(vars) + if not a_presses.is_integer or not b_presses.is_integer: + continue + ntoks = tokens.subs({a: a_presses, b: b_presses}) + if toks is None or ntoks < toks: + toks = ntoks + + print(76, toks) + if toks is not None: + ttoks += toks + +assert ttoks.is_integer +print(int(ttoks.evalf())) diff --git a/2024/14/one.py b/2024/14/one.py new file mode 100644 index 0000000..fc1c0f9 --- /dev/null +++ b/2024/14/one.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python3 + + +import functools +import re +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +vec = tuple[int, int] +poss: list[vec] = list() +vits: list[vec] = list() + +for line in lines: + match = re.findall(r"(-?\d+)", line) + assert match + pos = int(match[0]), int(match[1]) + vit = int(match[2]), int(match[3]) + poss.append(pos) + vits.append(vit) + +print(poss, vits) + + +def print_poss(poss: list[vec]) -> None: + viz = [[0] * width for _ in range(height)] + for pos in poss: + px, py = pos + viz[py][px] += 1 + for line in viz: + print("".join([(str(c) if c > 0 else ".") for c in line])) + print() + + +# x→ y↓ +if input_file == "input": + width = 101 + height = 103 +else: + width = 11 + height = 7 +if input_file == "demo1": + secs = 5 +else: + secs = 100 + +print_poss(poss) + +for s in range(secs): + for r, vit in enumerate(vits): + px, py = poss[r] + px += vit[0] + py += vit[1] + while px >= width: + px -= width + while py >= height: + py -= height + while px < 0: + px += width + while py < 0: + py += height + poss[r] = px, py + print(s) + print_poss(poss) + + +half_width = width // 2 +half_height = height // 2 +# <<<<<|>>>>> +# <= first quadrant + +quadrants = [0, 0, 0, 0] +for pos in poss: + px, py = pos + q = 0 + if px == half_width or py == half_height: + continue + if px > half_width: + q += 1 + if py > half_height: + q += 2 + quadrants[q] += 1 + +print(quadrants) +print(functools.reduce(int.__mul__, quadrants)) diff --git a/2024/14/two.py b/2024/14/two.py new file mode 100644 index 0000000..360ded0 --- /dev/null +++ b/2024/14/two.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python3 + + +import functools +import re +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +vec = tuple[int, int] +poss: list[vec] = list() +vits: list[vec] = list() + +for line in lines: + match = re.findall(r"(-?\d+)", line) + assert match + pos = int(match[0]), int(match[1]) + vit = int(match[2]), int(match[3]) + poss.append(pos) + vits.append(vit) + +print(poss, vits) + + +def print_poss(poss: list[vec]) -> None: + stop = True + viz = [[0] * width for _ in range(height)] + for pos in poss: + px, py = pos + if viz[py][px] > 0: + stop = False + viz[py][px] += 1 + if stop: + for line in viz: + print("".join([(str(c) if c > 0 else ".") for c in line])) + input() + + +# x→ y↓ +if input_file == "input": + width = 101 + height = 103 +else: + width = 11 + height = 7 +if input_file == "demo1": + secs = 5 +else: + secs = 100 + +print_poss(poss) + +# for s in range(secs): +s = 0 +while True: + s += 1 + for r, vit in enumerate(vits): + px, py = poss[r] + px += vit[0] + py += vit[1] + while px >= width: + px -= width + while py >= height: + py -= height + while px < 0: + px += width + while py < 0: + py += height + poss[r] = px, py + print(s) + print_poss(poss) +# +# +# half_width = width // 2 +# half_height = height // 2 +# # <<<<<|>>>>> +# # <= first quadrant +# +# quadrants = [0, 0, 0, 0] +# for pos in poss: +# px, py = pos +# q = 0 +# if px == half_width or py == half_height: +# continue +# if px > half_width: +# q += 1 +# if py > half_height: +# q += 2 +# quadrants[q] += 1 +# +# print(quadrants) +# print(functools.reduce(int.__mul__, quadrants)) diff --git a/2024/14/two_extra.py b/2024/14/two_extra.py new file mode 100644 index 0000000..75f7e7f --- /dev/null +++ b/2024/14/two_extra.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 + + +import functools +import re +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +vec = tuple[int, int] +poss: list[vec] = list() +vits: list[vec] = list() + +for line in lines: + match = re.findall(r"(-?\d+)", line) + assert match + pos = int(match[0]), int(match[1]) + vit = int(match[2]), int(match[3]) + poss.append(pos) + vits.append(vit) + +print(poss, vits) + + +def print_poss(poss: list[vec]) -> None: + stop = False + viz = [[0] * width for _ in range(height)] + for pos in poss: + px, py = pos + viz[py][px] += 1 + for line in viz: + lin = "".join([(str(c) if c > 0 else ".") for c in line]) + print(lin) + if "111111111" in lin: + stop = True + if stop: + input() + + +# x→ y↓ +if input_file.startswith("input"): + width = 101 + height = 103 +else: + width = 11 + height = 7 +if input_file == "demo1": + secs = 5 +else: + secs = 100 + +print_poss(poss) + +# for s in range(secs): +s = 0 +while True: + s += 1 + for r, vit in enumerate(vits): + px, py = poss[r] + px += vit[0] + py += vit[1] + while px >= width: + px -= width + while py >= height: + py -= height + while px < 0: + px += width + while py < 0: + py += height + poss[r] = px, py + print(s) + print_poss(poss) +# +# +# half_width = width // 2 +# half_height = height // 2 +# # <<<<<|>>>>> +# # <= first quadrant +# +# quadrants = [0, 0, 0, 0] +# for pos in poss: +# px, py = pos +# q = 0 +# if px == half_width or py == half_height: +# continue +# if px > half_width: +# q += 1 +# if py > half_height: +# q += 2 +# quadrants[q] += 1 +# +# print(quadrants) +# print(functools.reduce(int.__mul__, quadrants)) diff --git a/2024/15/demog b/2024/15/demog new file mode 100644 index 0000000..6493017 --- /dev/null +++ b/2024/15/demog @@ -0,0 +1,6 @@ +####### +#...O.. +#...... +#...@.. + +> diff --git a/2024/15/one.py b/2024/15/one.py new file mode 100644 index 0000000..334e3ed --- /dev/null +++ b/2024/15/one.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +coords = tuple[int, int] + +pos: coords +box = list() +moves: list[coords] = list() + +directions = { + "^": (-1, 0), # ^ + ">": (0, 1), # > + "v": (1, 0), # v + "<": (0, -1), # < +} + +boxing = True +for i, line in enumerate(lines): + if not line: + boxing = False + elif boxing: + bline = list(line) + if "@" in bline: + j = bline.index("@") + pos = i, j + # bline[j] = "." + box.append(bline) + else: + for c in line: + direction = directions[c] + moves.append(direction) + + +def print_box() -> None: + for bline in box: + print("".join(bline)) + print() + + +print_box() +for move in moves: + first = pos[0] + move[0], pos[1] + move[1] + last = first + possible = True + while True: + c = box[last[0]][last[1]] + # print(c) + if c == ".": + break + elif c == "#": + possible = False + break + last = last[0] + move[0], last[1] + move[1] + if possible: + if first != last: + box[last[0]][last[1]] = "O" + box[pos[0]][pos[1]] = "." + box[first[0]][first[1]] = "@" + pos = first + print(move, possible, pos, first, last) + print_box() + + +score = 0 +for i, bline in enumerate(box): + for j, char in enumerate(bline): + if char == "O": + score += 100 * i + j +print(score) diff --git a/2024/15/two.py b/2024/15/two.py new file mode 100644 index 0000000..4c8c001 --- /dev/null +++ b/2024/15/two.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +vec = tuple[int, int] + +pos: vec +box = list() +moves: list[vec] = list() + +directions = { + "^": (-1, 0), # ^ + ">": (0, 1), # > + "v": (1, 0), # v + "<": (0, -1), # < +} + +sub = { + "#": "##", + "O": "[]", + ".": "..", + "@": "@.", +} + +boxing = True +for i, line in enumerate(lines): + if not line: + boxing = False + elif boxing: + bline = list() + for char in line: + bline += list(sub[char]) + if "@" in bline: + j = bline.index("@") + pos = i, j + # bline[j] = "." + box.append(bline) + else: + for c in line: + direction = directions[c] + moves.append(direction) + + +def print_box() -> None: + for bline in box: + print("".join(bline)) + print() + + +print_box() +for move in moves: + + def do(i: int, j: int) -> None | set[vec]: + ii, jj = i + move[0], j + move[1] + char = box[ii][jj] + moving = {(i, j)} + if char == "#": + return None + elif char == ".": + return moving + else: + r = do(ii, jj) + if r is None: + return None + moving |= r + if char == "[": + npos = (ii, jj + 1) + if npos not in moving: + r = do(npos[0], npos[1]) + if r is None: + return None + moving |= r + elif char == "]": + npos = (ii, jj - 1) + if npos not in moving: + r = do(npos[0], npos[1]) + if r is None: + return None + moving |= r + return moving + + moving = do(pos[0], pos[1]) + if moving is None: + continue + olc: list[str] = list() + for i, j in moving: + olc.append(box[i][j]) + box[i][j] = "." + print(82, moving) + print(83, olc) + for i, j in moving: + ii, jj = i + move[0], j + move[1] + box[ii][jj] = olc.pop(0) + # box[pos[0]][pos[1]] = "." + pos = pos[0] + move[0], pos[1] + move[1] + print(move, pos) + # print_box() + + +score = 0 +for i, bline in enumerate(box): + for j, char in enumerate(bline): + if char == "[": + score += 100 * i + j +print(score) diff --git a/2024/16/:w b/2024/16/:w new file mode 100644 index 0000000..5494d1e --- /dev/null +++ b/2024/16/:w @@ -0,0 +1,4 @@ +#### +#.E# +#S## +#### diff --git a/2024/16/README.md b/2024/16/README.md new file mode 100644 index 0000000..ba6d8f6 --- /dev/null +++ b/2024/16/README.md @@ -0,0 +1,23 @@ +Oh boy. My first time in a while doing something with mazes. +I decided to go with a filling thing. +I realized I need to put the direction as a dimension in the table of visited scores. +So basically it would go up to the very last tile, and then be like "op, what if I went back to the start?", although I did not know that at the time. +I did exhaust Python call stack, so I increased it, again and again. +But I thought that surely, even with this dumb of an algorithm it should be able to do, so I decided to look for a bug. +I used the depth variable (initally only used to indent print statements) as my own call stack limit that would still print the maze. +I realized that even at 1000 depth, the maze was already filled, which puzzled me. +I submitted the answer... and it was correct x) + +For part 2 I first implemented something that would print only one best path. +Then I realized my mistake, and then did something that would work if not for the fact that I optimized out +2 paths arriving with the same score. A <= changed to < later and it was fixed. +The optimisation didn't cost much, the "allocating a list every recursion", very much so. + +Since it was taking a long time to compute I realized maybe I could do something clever with only considering crossways, +since there's quite a lot of corridors. +But I decided to instead firsrt code two2.py, which would add the position to the set of best places only when the recursion hit the best score, +which was hardcoded from part 1 (it took 48s to run alone, sooo). +I tried it on demo, got None as answer to part 1 and 0 as answer to part 2, completly overlooked that, and let it cook on the real input. +In the end, the first iteration of two.py ended up being cooked first, 11 minutes after, with the right answer. + +...a win is a win I guess diff --git a/2024/16/demog b/2024/16/demog new file mode 100644 index 0000000..7aed542 --- /dev/null +++ b/2024/16/demog @@ -0,0 +1,15 @@ +################ +############..E# +###########..#.# +##########..##.# +#########..###.# +########..##...# +#######..###.### +######..####...# +#####..#######.# +####..##.......# +###..###.####### +##..####.......# +#..###########.# +#S.............# +################ diff --git a/2024/16/demog0 b/2024/16/demog0 new file mode 100644 index 0000000..2f01db5 --- /dev/null +++ b/2024/16/demog0 @@ -0,0 +1,4 @@ +#### +#.E# +#S.# +#### diff --git a/2024/16/networkx_test.py b/2024/16/networkx_test.py new file mode 100644 index 0000000..6e8151e --- /dev/null +++ b/2024/16/networkx_test.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 + +import sys +import typing + +import matplotlib.pyplot as plt +import networkx as nx + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +directions = [ + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] + +# Parse input +g = nx.DiGraph() +for i in range(height): + for j in range(width): + char = lines[i][j] + if char == "#": + continue + for d, direction in enumerate(directions): + cur = (i, j, d) + # Start/end + if char == "E": + g.add_edge(cur, "end", weight=0) + elif char == "S" and d == 1: + g.add_edge("start", cur, weight=0) + # Rotate + g.add_edge(cur, (i, j, (d + 1) % len(directions)), weight=1000) + g.add_edge(cur, (i, j, (d - 1) % len(directions)), weight=1000) + # Advance + ii, jj = i + direction[0], j + direction[1] + if lines[ii][jj] == "#": + continue + g.add_edge(cur, (ii, jj, d), weight=1) + +# Part 1 +score = nx.shortest_path_length(g, "start", "end", weight="weight") +print(f"{score=}") + +# Part 2 +paths = nx.all_shortest_paths(g, "start", "end", weight="weight") +best_orientations = set() +for path in paths: + best_orientations |= set(path) +path_edges = list(zip(path, path[1:])) # Will be one random best path +best_places = set(bo[:2] for bo in best_orientations - {"start", "end"}) +print(f"{len(best_places)=}") + +# Draw graph +if len(g.nodes) > 1000: + sys.exit(0) + +node_colors = ["blue" if node in best_orientations else "cyan" for node in g.nodes()] +edge_colors = ["red" if edge in path_edges else "black" for edge in g.edges()] +node_pos: dict[typing.Any, tuple[float, float]] = dict() +for node in g.nodes(): + pos: tuple[float, float] + if node == "start": + pos = height - 1, 0 + elif node == "end": + pos = 0, width - 1 + else: + i, j, d = node + direction = directions[d] + pos = i + direction[0] / 3, j + direction[1] / 3 + node_pos[node] = pos[1], pos[0] * -1 + +nx.draw_networkx_nodes(g, node_pos, node_color=node_colors) +nx.draw_networkx_edges(g, node_pos, edge_color=edge_colors) +# nx.draw_networkx_labels(g, node_pos) +# nx.draw_networkx_edge_labels( +# g, node_pos, edge_labels={(u, v): d["weight"] for u, v, d in g.edges(data=True)} +# ) + +plt.show() diff --git a/2024/16/numpy_test.py b/2024/16/numpy_test.py new file mode 100644 index 0000000..0b723fd --- /dev/null +++ b/2024/16/numpy_test.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python3 + +import sys + +import numpy as np +import scipy as sp + +dtype = np.int32 + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) +start = height - 2, 1 +stop = 1, width - 2 + +directions = [ + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] +directions_keys = ("^", ">", "v", "<") + +walls = np.zeros((height, width), dtype) +for i in range(height): + for j in range(width): + if lines[i][j] == "#": + walls[i, j] = 1 +invwalls = 1 - walls + +# print("Walls") +# print(walls) + +# TEST 4 + +scores = np.zeros((height, width, len(directions)), dtype) +scores[start[0], start[1], 1] = 1 + +for i in range(1000): + print("Step", i) + oldscores = scores.copy() + for od, odir in enumerate(directions): + for nd, ndir in enumerate(directions): + score = scores[:, :, nd] + moved = sp.ndimage.shift(oldscores[:, :, od], ndir) + increment = 1 if nd == od else 1001 + moved = (moved + increment) * (moved > 0) + moved = moved * invwalls + mask = (moved > 0) & ((score == 0) | (score > moved)) + scores[:, :, nd] = (score * ~mask) + (moved * mask) + + # for d, dir in enumerate(directions): + # print("Direction", directions_keys[d]) + # print(scores[:, :, d]) + + if (scores == oldscores).all(): + break +else: + print("Limit!") + +end_score = min(filter(lambda d: d > 0, scores[stop])) - 1 +print(f"{end_score=}") + +# TEST 3 + +# scores = [np.zeros((height, width), dtype) for _ in directions] +# scores[1][start] = 1 +# +# for i in range(100): +# print("Step", i) +# for od, odir in enumerate(directions): +# oldscore = scores[od].copy() +# for nd, ndir in enumerate(directions): +# score = scores[nd] +# moved = sp.ndimage.shift(oldscore, ndir) +# increment = 1 if nd == od else 1001 +# moved = (moved + increment) * (moved > 0) +# moved = moved * invwalls +# mask = (moved > 0) & ((score == 0) | (score > moved)) +# scores[nd] = (score * ~mask) + (moved * mask) +# +# final_score = None +# for d, dir in enumerate(directions): +# print("Direction", directions_keys[d]) +# print(scores[d]) +# end_score = scores[d][stop] +# if end_score > 0: +# if final_score is None or end_score < final_score: +# final_score = end_score +# +# if final_score: +# final_score -= 1 +# print(f"{final_score=}") +# break +# else: +# print("Limit!") + + +# TEST 2 + +# score = np.zeros((height, width), dtype) +# score[start] = 1 +# +# for i in range(10): +# print("Step", i) +# oldscore = score.copy() +# for nd, ndir in enumerate(directions): +# moved = sp.ndimage.shift(oldscore, ndir) +# moved = (moved + 1) * (moved > 0) +# moved = moved * invwalls +# mask = (moved > 0) & ((score == 0) | (score > moved)) +# score = (score * ~mask) + (moved * mask) +# print(score) + +# TEST 1 + +# directions = np.array([[0, 1, 0], [1, 1, 1], [0, 1, 0]], dtype) +# +# visited = np.zeros((height, width), dtype) +# visited[start] = 1 +# +# for i in range(1000): +# print("Step", i) +# new = sp.signal.convolve2d(visited, directions, mode="same") +# visited = (((new > 0) - walls) > 0) +# print(visited * 1) +# if visited[stop]: +# break +# else: +# print("Limit!") +# print(i) diff --git a/2024/16/one.py b/2024/16/one.py new file mode 100644 index 0000000..de41b0b --- /dev/null +++ b/2024/16/one.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 + +import pprint +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +vec = tuple[int, int] + +directions = [ + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] + +directions_keys = ("^", ">", "v", "<") + +min_scores: list[list[list[None | int]]] = list() +for _ in range(height): + line: list[list[None | int]] = list() + for _ in range(width): + cell: list[None | int] = [None] * len(directions) + line.append(cell) + min_scores.append(line) + +start = height - 2, 1 + + +def walk(pos: vec, dir: int, score: int, depth: int = 0) -> int | None: + i, j = pos + char = lines[i][j] + + if depth > 1000: + return None + + # print("-" * depth, 28, pos, char, directions_keys[dir], score) + if char == "E": + return score + elif char == "#": + return None + + min_score = min_scores[i][j][dir] + if min_score is not None and score >= min_score: + # print("-" * depth, f" 32 already taken {score} >= {min_score}") + return None + min_scores[i][j][dir] = score + + mscore = None + for ndir, direction in enumerate(directions): + ii, jj = i + direction[0], j + direction[1] + price = 1 if dir == ndir else 1001 + nscore = walk((ii, jj), ndir, score + price, depth+1) + if nscore is None: + continue + if mscore is None or nscore < mscore: + mscore = nscore + return mscore + +sys.setrecursionlimit(9000) +tot_score = walk(start, 1, 0) + +# Viz +for i in range(height): + cline = "" + for j in range(width): + char = lines[i][j] + min_score = None + for d in range(len(directions)): + score = min_scores[i][j][d] + if score is None: + continue + if min_score is None or score < min_score: + char = directions_keys[d] + min_score = score + cline += char + print(cline) +print() + +print(tot_score) diff --git a/2024/16/one_opti.py b/2024/16/one_opti.py new file mode 100644 index 0000000..23e70ed --- /dev/null +++ b/2024/16/one_opti.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python3 + +import pprint +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +vec = tuple[int, int] + +directions = [ + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] + +directions_keys = ("^", ">", "v", "<") + +min_scores: list[list[list[None | int]]] = list() +for _ in range(height): + line: list[list[None | int]] = list() + for _ in range(width): + cell: list[None | int] = [None] * len(directions) + line.append(cell) + min_scores.append(line) + +start = height - 2, 1 + + +def walk(pos: vec, dir: int, score: int, depth: int = 0) -> int | None: + i, j = pos + char = lines[i][j] + + if depth > 1000: + return None + + # print("-" * depth, 28, pos, char, directions_keys[dir], score) + if char == "E": + return score + elif char == "#": + return None + + min_score = min_scores[i][j][dir] + for d, min_score in enumerate(min_scores[i][j]): + if min_score is None: + continue + if d == dir: + if score >= min_score: + return None + else: + if score >= min_score + 1000: + return None + min_scores[i][j][dir] = score + + mscore = None + for ndir, direction in enumerate(directions): + ii, jj = i + direction[0], j + direction[1] + price = 1 if dir == ndir else 1001 + nscore = walk((ii, jj), ndir, score + price, depth + 1) + if nscore is None: + continue + if mscore is None or nscore < mscore: + mscore = nscore + return mscore + + +sys.setrecursionlimit(3000) +tot_score = walk(start, 1, 0) + +# Viz +for i in range(height): + cline = "" + for j in range(width): + char = lines[i][j] + min_score = None + for d in range(len(directions)): + score = min_scores[i][j][d] + if score is None: + continue + if min_score is None or score < min_score: + char = directions_keys[d] + min_score = score + cline += char + print(cline) +print() + +print(tot_score) diff --git a/2024/16/reddit_edge_case b/2024/16/reddit_edge_case new file mode 100644 index 0000000..00cc512 --- /dev/null +++ b/2024/16/reddit_edge_case @@ -0,0 +1,27 @@ +########################### +#######################..E# +######################..#.# +#####################..##.# +####################..###.# +###################..##...# +##################..###.### +#################..####...# +################..#######.# +###############..##.......# +##############..###.####### +#############..####.......# +############..###########.# +###########..##...........# +##########..###.########### +#########..####...........# +########..###############.# +#######..##...............# +######..###.############### +#####..####...............# +####..###################.# +###..##...................# +##..###.################### +#..####...................# +#.#######################.# +#S........................# +########################### diff --git a/2024/16/reddit_open_maze b/2024/16/reddit_open_maze new file mode 100644 index 0000000..74fc386 --- /dev/null +++ b/2024/16/reddit_open_maze @@ -0,0 +1,14 @@ +#################################################### +#......................................#..........E# +#......................................#...........# +#....................#.................#...........# +#....................#.................#...........# +#....................#.................#...........# +#....................#.................#...........# +#....................#.................#...........# +#....................#.................#...........# +#....................#.................#...........# +#....................#.................#...........# +#....................#.............................# +#S...................#.............................# +#################################################### diff --git a/2024/16/two.py b/2024/16/two.py new file mode 100644 index 0000000..cbf5b91 --- /dev/null +++ b/2024/16/two.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python3 + +import pprint +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +vec = tuple[int, int] + +directions = [ + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] + +directions_keys = ("^", ">", "v", "<") + +min_scores: list[list[list[None | int]]] = list() +for _ in range(height): + line: list[list[None | int]] = list() + for _ in range(width): + cell: list[None | int] = [None] * len(directions) + line.append(cell) + min_scores.append(line) + +start = height - 2, 1 + +valid_paths: list[tuple[int, set[vec]]] = list() + + +def walk(pos: vec, dir: int, score: int, path: list[vec]) -> int | None: + i, j = pos + char = lines[i][j] + + depth = len(path) + path = path + [pos] + + if depth > 1000: + return None + + # print("-" * depth, 28, pos, char, directions_keys[dir], score) + if char == "E": + valid_paths.append((score, set(path))) + return score + elif char == "#": + return None + + min_score = min_scores[i][j][dir] + if min_score is not None and score > min_score: + # print("-" * depth, f" 32 already taken {score} >= {min_score}") + return None + min_scores[i][j][dir] = score + + mscore = None + for ndir, direction in enumerate(directions): + ii, jj = i + direction[0], j + direction[1] + price = 1 if dir == ndir else 1001 + nscore = walk((ii, jj), ndir, score + price, path) + if nscore is None: + continue + if mscore is None or nscore < mscore: + mscore = nscore + return mscore + + +sys.setrecursionlimit(9000) +tot_score = walk(start, 1, 0, []) + +print(76, len(valid_paths)) +all_best: set[vec] = set() +for s, path in valid_paths: + if s != tot_score: + continue + print(81, "BEST") + all_best |= path + +# Viz +for i in range(height): + cline = "" + for j in range(width): + char = lines[i][j] + pos = i, j + if pos in all_best: + min_score = None + for d in range(len(directions)): + score = min_scores[i][j][d] + if score is None: + continue + if min_score is None or score < min_score: + char = directions_keys[d] + min_score = score + cline += char + print(cline) +print() + + +print(tot_score) +print(len(all_best)) diff --git a/2024/16/two2.py b/2024/16/two2.py new file mode 100644 index 0000000..117693f --- /dev/null +++ b/2024/16/two2.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python3 + +import pprint +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +vec = tuple[int, int] + +directions = [ + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] + +directions_keys = ("^", ">", "v", "<") + +min_scores: list[list[list[None | int]]] = list() +for _ in range(height): + line: list[list[None | int]] = list() + for _ in range(width): + cell: list[None | int] = [None] * len(directions) + line.append(cell) + min_scores.append(line) + +start = height - 2, 1 + +best: set[vec] = set() + +def walk(pos: vec, dir: int, score: int, depth: int) -> int | None: + i, j = pos + char = lines[i][j] + + if depth > 1000: + return None + + # print("-" * depth, 28, pos, char, directions_keys[dir], score) + if char == "E": + if score == 90440: + return score + else: + return None + elif char == "#": + return None + + min_score = min_scores[i][j][dir] + if min_score is not None and score > min_score: + # print("-" * depth, f" 32 already taken {score} >= {min_score}") + return None + min_scores[i][j][dir] = score + + mscore = None + for ndir, direction in enumerate(directions): + ii, jj = i + direction[0], j + direction[1] + price = 1 if dir == ndir else 1001 + nscore = walk((ii, jj), ndir, score + price, depth + 1) + if nscore is None: + continue + best.add((ii, jj)) + # if mscore is None or nscore < mscore: + # mscore = nscore + return mscore + + +sys.setrecursionlimit(9000) +tot_score = walk(start, 1, 0, 0) + +# Viz +for i in range(height): + cline = "" + for j in range(width): + char = lines[i][j] + pos = i, j + min_score = None + for d in range(len(directions)): + score = min_scores[i][j][d] + if score is None: + continue + if min_score is None or score < min_score: + char = directions_keys[d] + min_score = score + cline += char + print(cline) +print() + + +print(tot_score) +print(len(best)) diff --git a/2024/16/two_opti.py b/2024/16/two_opti.py new file mode 100644 index 0000000..904f525 --- /dev/null +++ b/2024/16/two_opti.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python3 + +import pprint +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +vec = tuple[int, int] + +directions = [ + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] + +directions_keys = ("^", ">", "v", "<") + +min_scores: list[list[list[None | int]]] = list() +for _ in range(height): + line: list[list[None | int]] = list() + for _ in range(width): + cell: list[None | int] = [None] * len(directions) + line.append(cell) + min_scores.append(line) + +start = height - 2, 1 + +valid_paths: list[tuple[int, set[vec]]] = list() + + +def walk(pos: vec, dir: int, score: int, path: list[vec]) -> int | None: + i, j = pos + char = lines[i][j] + + depth = len(path) + path = path + [pos] + + if depth > 1000: + return None + + # print("-" * depth, 28, pos, char, directions_keys[dir], score) + if char == "E": + valid_paths.append((score, set(path))) + return score + elif char == "#": + return None + + min_score = min_scores[i][j][dir] + for d, min_score in enumerate(min_scores[i][j]): + if min_score is None: + continue + if d == dir: + if score > min_score: + return None + else: + if score > min_score + 1000: + return None + min_scores[i][j][dir] = score + + mscore = None + for ndir, direction in enumerate(directions): + ii, jj = i + direction[0], j + direction[1] + price = 1 if dir == ndir else 1001 + nscore = walk((ii, jj), ndir, score + price, path) + if nscore is None: + continue + if mscore is None or nscore < mscore: + mscore = nscore + return mscore + + +sys.setrecursionlimit(9000) +tot_score = walk(start, 1, 0, []) + +print(76, len(valid_paths)) +all_best: set[vec] = set() +for s, path in valid_paths: + if s != tot_score: + continue + print(81, "BEST") + all_best |= path + +# Viz +for i in range(height): + cline = "" + for j in range(width): + char = lines[i][j] + pos = i, j + if pos in all_best: + min_score = None + for d in range(len(directions)): + score = min_scores[i][j][d] + if score is None: + continue + if min_score is None or score < min_score: + char = directions_keys[d] + min_score = score + cline += char + print(cline) +print() + + +print(tot_score) +print(len(all_best)) diff --git a/2024/17/Notes.xopp b/2024/17/Notes.xopp new file mode 100644 index 0000000000000000000000000000000000000000..b5931ef36663d1d8a7c37fdcacca745dc41f1f95 GIT binary patch literal 28997 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 literal 0 HcmV?d00001 diff --git a/2024/17/README.md b/2024/17/README.md new file mode 100644 index 0000000..7da08d3 --- /dev/null +++ b/2024/17/README.md @@ -0,0 +1,4 @@ +two.py and two_bf.py were written before I got the 2 stars. + +First fails on demo2, seconds takes 23 years (literally). + diff --git a/2024/17/demog b/2024/17/demog new file mode 100644 index 0000000..556168c --- /dev/null +++ b/2024/17/demog @@ -0,0 +1,5 @@ +Register A: 41644071 +Register B: 0 +Register C: 0 + +Program: 2,4,1,2,0,3,5,5,3,0 diff --git a/2024/17/one.py b/2024/17/one.py new file mode 100644 index 0000000..7529642 --- /dev/null +++ b/2024/17/one.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +# program 3 bits numbers +# registers A, B, C: any int +# instruction 3 bits, operand 3 bits +# literal operand, combo operand: 0-3 literal, 4-6: register A,B,C +# instruction pointer starts at 0 + +# 0 adv: truncated division, numerator = A, denominator 2**combo operand -> A +# 1 bxl: bitwise XOR, B ^ literal operand -> B +# 2 bst: combo operand % 8 -> B +# 3 jnz: { A = 0: nothing; A != 0: literal operand -> IP } # no increase there! +# 4 bxc: bitwise XOR, B ^ C -> B # operand ignored +# 5 out: combo operand % 8 -> output +# 6 bdv: truncated division, numerator = A, denominator 2**combo operand -> B +# 7 cdv: truncated division, numerator = A, denominator 2**combo operand -> C + +A = int(lines[0].split(":")[1]) +B = int(lines[1].split(":")[1]) +C = int(lines[2].split(":")[1]) + +program = [int(p) for p in lines[4].split(":")[1].split(",")] + +output: list[int] = list() + +ip = 0 +while ip in range(len(program)): + inst = program[ip] + liop = program[ip + 1] + coop = liop + if liop == 4: + coop = A + elif liop == 5: + coop = B + elif liop == 6: + coop = C + trunc_div = A // 2**coop + + if inst == 0: + A = trunc_div + elif inst == 1: + B = B ^ liop + elif inst == 2: + B = coop % 8 + elif inst == 3: + if A != 0: + ip = liop + continue + elif inst == 4: + B = B ^ C + elif inst == 5: + output.append(coop % 8) + elif inst == 6: + B = trunc_div + elif inst == 7: + C = trunc_div + else: + raise NotImplementedError() + + ip += 2 + +print(",".join([str(o) for o in output])) diff --git a/2024/17/two.py b/2024/17/two.py new file mode 100644 index 0000000..57ba257 --- /dev/null +++ b/2024/17/two.py @@ -0,0 +1,202 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +# program 3 bits numbers +# registers A, B, C: any int +# instruction 3 bits, operand 3 bits +# literal operand, combo operand: 0-3 literal, 4-6: register A,B,C +# instruction pointer starts at 0 + +# 0 adv: truncated division, numerator = A, denominator 2**combo operand -> A +# 1 bxl: bitwise XOR, B ^ literal operand -> B +# 2 bst: combo operand % 8 -> B +# 3 jnz: { A = 0: nothing; A != 0: literal operand -> IP } # no increase there! +# 4 bxc: bitwise XOR, B ^ C -> B # operand ignored +# 5 out: combo operand % 8 -> output +# 6 bdv: truncated division, numerator = A, denominator 2**combo operand -> B +# 7 cdv: truncated division, numerator = A, denominator 2**combo operand -> C + +instnames = ["adv", "bxl", "bst", "jnz", "bxc", "out", "bdv", "cdv"] + +oA = int(lines[0].split(":")[1]) +oB = int(lines[1].split(":")[1]) +oC = int(lines[2].split(":")[1]) + +program = [int(p) for p in lines[4].split(":")[1].split(",")] + + +def test(oA: int) -> list[int]: + # print(32, "Testing", A) + + ip = 0 + A = oA + B = oB + C = oC + + output: list[int] = list() + oi = 0 + + # jumped: set[tuple[int, int, int, int]] = set() + + while ip in range(len(program)): + inst = program[ip] + liop = program[ip + 1] + # print(50, ip, instnames[inst], liop) + + if inst == 1: + B = B ^ liop + elif inst == 3: + if A != 0: + ip = liop + + # Infinite loop prevention + # state = (ip, A, B, C) + # # print(66, state, jumped) + # if state in jumped: + # print("Infinite loop!") + # return False + # jumped.add(state) + + continue + elif inst == 4: + B = B ^ C + else: + coop = liop + if liop == 4: + coop = A + elif liop == 5: + coop = B + elif liop == 6: + coop = C + + if inst == 2: + B = coop % 8 + elif inst == 5: + ou = coop % 8 + output.append(ou) + # if oi >= len(program) or program[oi] != ou: + # # if len(output) >= 6: + # # print(84, oA, output) + # return False + oi += 1 + else: + trunc_div = A // 2**coop + if inst == 0: + A = trunc_div + elif inst == 6: + B = trunc_div + elif inst == 7: + C = trunc_div + else: + raise NotImplementedError() + + ip += 2 + + print(102, oA, output, len(output)) + # return oi == len(program) + return output + + +print(program, len(program)) +for i in range(0, len(program), 2): + inst = program[i] + liop = program[i + 1] + print(106, i, instnames[inst], liop) +print() + +# Bruteforce +indexes = list(range(len(program))) + + +def to_number(inps: list[int]) -> int: + A = 0 + for i in indexes[::-1]: + A <<= 3 + A += inps[i] + return A + + +inps = program.copy() +res = test(to_number(inps)) +while res != program: + for i in indexes[::-1]: + j = 0 + revi = - len(program) + i + while res[revi] != program[i]: + inps[i] = j + A = to_number(inps) + res = test(A) + j += 1 + print("Hi") + +# i = 3 +# for j in range(8): +# inps = program.copy() +# inps[i] = j +# A = to_number(inps) +# test(A) + +print() + +# indexes = list(range(len(inps))) +# for i in indexes[::-1]: +# An = A & 0b111 +# A <<= 3 +# inp = program[i] +# A += inp ^ 2 +# A <<= 3 +# A += 1 + +# # Smartforce +# A = 0 +# indexes = list(range(len(program))) +# for i in indexes[::-1]: +# An = A & 0b111 +# A <<= 3 +# inp = program[i] +# A += inp ^ 2 + + +# # I thought it would be easy +# assoc: dict[tuple[int, int], int] = dict() +# for i in range(8): +# for j in range(8): +# out = test(i)[0] +# assoc[out] = i, j +# +# A = 0 +# for p in program: +# A = A << 3 +# A += assoc[p] +# +# A = assoc[7] << 6 + +res = test(A) +print("Ref", program) +print("Res", res) +print("Cor", res == program) +print(A) + + +# print(test(100000000)) +# +# Amin = 2**(3*(len(program)-1)) +# Amax = 2**(3*len(program)) +# Amin = 0 +# Amax = 7 +# for A in range(Amin, Amax + 1): +# # if A % 65536 == 0: +# # print(91, A) +# if test(A): +# print(A) +# break +# A += 1 + + +# print(",".join([str(o) for o in output])) diff --git a/2024/17/two_bf.py b/2024/17/two_bf.py new file mode 100644 index 0000000..8a6a0ff --- /dev/null +++ b/2024/17/two_bf.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 + +import sys +import rich.progress + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +# program 3 bits numbers +# registers A, B, C: any int +# instruction 3 bits, operand 3 bits +# literal operand, combo operand: 0-3 literal, 4-6: register A,B,C +# instruction pointer starts at 0 + +# 0 adv: truncated division, numerator = A, denominator 2**combo operand -> A +# 1 bxl: bitwise XOR, B ^ literal operand -> B +# 2 bst: combo operand % 8 -> B +# 3 jnz: { A = 0: nothing; A != 0: literal operand -> IP } # no increase there! +# 4 bxc: bitwise XOR, B ^ C -> B # operand ignored +# 5 out: combo operand % 8 -> output +# 6 bdv: truncated division, numerator = A, denominator 2**combo operand -> B +# 7 cdv: truncated division, numerator = A, denominator 2**combo operand -> C + +instnames = ["adv", "bxl", "bst", "jnz", "bxc", "out", "bdv", "cdv"] + +oA = int(lines[0].split(":")[1]) +oB = int(lines[1].split(":")[1]) +oC = int(lines[2].split(":")[1]) + +program = [int(p) for p in lines[4].split(":")[1].split(",")] + + +def test(oA: int) -> bool: + # print(32, "Testing", A) + + ip = 0 + A = oA + B = oB + C = oC + + # output: list[int] = list() + oi = 0 + + # jumped: set[tuple[int, int, int, int]] = set() + + while ip in range(len(program)): + inst = program[ip] + liop = program[ip + 1] + # print(50, ip, instnames[inst], liop) + + if inst == 1: + B = B ^ liop + elif inst == 3: + if A != 0: + ip = liop + + # Infinite loop prevention + # state = (ip, A, B, C) + # # print(66, state, jumped) + # if state in jumped: + # print("Infinite loop!") + # return False + # jumped.add(state) + + continue + elif inst == 4: + B = B ^ C + else: + coop = liop + if liop == 4: + coop = A + elif liop == 5: + coop = B + elif liop == 6: + coop = C + + if inst == 2: + B = coop % 8 + elif inst == 5: + ou = coop % 8 + # output.append(ou) + if oi >= len(program) or program[oi] != ou: + # if len(output) >= 6: + # print(84, oA, output) + return False + oi += 1 + else: + trunc_div = A // 2**coop + if inst == 0: + A = trunc_div + elif inst == 6: + B = trunc_div + elif inst == 7: + C = trunc_div + else: + raise NotImplementedError() + + ip += 2 + + + return oi == len(program) + # return output == program + +# print(program) +# for i in range(0, len(program), 2): +# inst = program[i] +# liop = program[i + 1] +# print(106, i, instnames[inst], liop) +# print() +# +# print(test(100000000)) + +Amin = 2**(3*(len(program)-1)) +Amax = 2**(3*len(program)) + +for A in rich.progress.track(range(Amin, Amax+1)): + if test(A): + print(A) + break + A += 1 + + +# print(",".join([str(o) for o in output])) diff --git a/2024/17/two_dfs.py b/2024/17/two_dfs.py new file mode 100644 index 0000000..3f34fe9 --- /dev/null +++ b/2024/17/two_dfs.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +original_B = int(lines[1].split(":")[1]) +original_C = int(lines[2].split(":")[1]) +program = [int(p) for p in lines[4].split(":")[1].split(",")] + + +def output_given_A(A: int) -> list[int]: + instruction_pointer = 0 + B = original_B + C = original_C + + output: list[int] = list() + + while instruction_pointer in range(len(program)): + instruction = program[instruction_pointer] + literal_operator = program[instruction_pointer + 1] + + if instruction == 1: + B = B ^ literal_operator + elif instruction == 3: + if A != 0: + instruction_pointer = literal_operator + continue + elif instruction == 4: + B = B ^ C + else: + combined_operator = literal_operator + if literal_operator == 4: + combined_operator = A + elif literal_operator == 5: + combined_operator = B + elif literal_operator == 6: + combined_operator = C + + if instruction == 2: + B = combined_operator % 8 + elif instruction == 5: + output.append(combined_operator % 8) + else: + trunc_div = A >> combined_operator + if instruction == 0: + A = trunc_div + elif instruction == 6: + B = trunc_div + else: + C = trunc_div + instruction_pointer += 2 + + return output + + +def input_to_a(input_numbers: list[int]) -> int: + A = 0 + for number in reversed(input_numbers): + A = (A << 3) + number + return A + + +def dig(depth: int, input_numbers: list[int]) -> int | None: + input_numbers = input_numbers.copy() + depth += 1 + for i in range(8): + input_numbers[-depth] = i + A = input_to_a(input_numbers) + output_numbers = output_given_A(A) + if output_numbers[-depth:] == program[-depth:]: + if depth == len(program): + return A + res = dig(depth, input_numbers) + if res is not None: + return res + return None + + +print(dig(0, [0] * len(program))) diff --git a/2024/17/two_fixed.py b/2024/17/two_fixed.py new file mode 100644 index 0000000..0f387bf --- /dev/null +++ b/2024/17/two_fixed.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +original_B = int(lines[1].split(":")[1]) +original_C = int(lines[2].split(":")[1]) +program = [int(p) for p in lines[4].split(":")[1].split(",")] + + +def output_given_A(A: int) -> list[int]: + instruction_pointer = 0 + B = original_B + C = original_C + + output: list[int] = list() + + while instruction_pointer in range(len(program)): + instruction = program[instruction_pointer] + literal_operator = program[instruction_pointer + 1] + + if instruction == 1: + B = B ^ literal_operator + elif instruction == 3: + if A != 0: + instruction_pointer = literal_operator + continue + elif instruction == 4: + B = B ^ C + else: + combined_operator = literal_operator + if literal_operator == 4: + combined_operator = A + elif literal_operator == 5: + combined_operator = B + elif literal_operator == 6: + combined_operator = C + + if instruction == 2: + B = combined_operator % 8 + elif instruction == 5: + output.append(combined_operator % 8) + else: + trunc_div = A >> combined_operator + if instruction == 0: + A = trunc_div + elif instruction == 6: + B = trunc_div + else: + C = trunc_div + instruction_pointer += 2 + + return output + + +def input_to_a(input_numbers: list[int]) -> int: + A = 0 + for number in reversed(input_numbers): + A = (A << 3) + number + return A + + +input_numbers: list[int] = program.copy() +output_numbers: list[int] = output_given_A(input_to_a(input_numbers)) +while output_numbers != program: + for i in reversed(range(len(input_numbers))): + attempted_number = 0 + while len(output_numbers) != len(program) or output_numbers[i] != program[i]: + input_numbers[i] = attempted_number + A = input_to_a(input_numbers) + output_numbers = output_given_A(A) + attempted_number += 1 + +print(A) diff --git a/2024/18/one.py b/2024/18/one.py new file mode 100644 index 0000000..871e393 --- /dev/null +++ b/2024/18/one.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +falls = list() +for line in lines: + xs, ys = line.split(",") + falls.append((int(xs), int(ys))) + +if input_file.startswith("input"): + cote = 71 + simu = 1024 +else: + cote = 7 + simu = 12 + +vec = tuple[int, int] +directions = [ + # COMMENT NOT CORRECT BUT WHO CARES + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] + +exit = cote - 1, cote - 1 +fallen = set(falls[:simu]) + +visited: set[vec] = set() + +def print_grid() -> None: + for y in range(cote): + line = "" + for x in range(cote): + char = "." + pos = x, y + if pos in fallen: + char = "#" + elif pos in visited: + char = "O" + line += char + print(line) + print() + + +print_grid() + +curs: set[vec] = {(0, 0)} +steps = 0 + + +while exit not in curs: + print("Step", steps) + visited |= curs + ncurs: set[vec] = set() + for x, y in curs: + for direction in directions: + xx, yy = x + direction[0], y + direction[1] + npos = xx, yy + if npos in visited or npos in fallen: + continue + if x not in range(cote) or y not in range(cote): + continue + ncurs.add(npos) + curs = ncurs + steps += 1 + +print_grid() +print(steps) + +# visited: dict[vec, int] = dict() +# +# def dig(pos: vec, steps: int) -> int | None: +# if steps > 300: +# return None +# # print(" " * steps, 55, pos) +# if pos == exit: +# return steps +# if pos in fallen: +# return None +# x, y = pos +# if x not in range(cote) or y not in range(cote): +# return None +# if pos in visited and visited[pos] < steps: +# return None +# visited[pos] = steps +# +# mini = None +# steps += 1 +# for direction in directions: +# xx, yy = x + direction[0], y + direction[1] +# res = dig((xx, yy), steps) +# if res is None: +# continue +# if mini is None or res < mini: +# mini = res +# return mini + +# sys.setrecursionlimit(9000) +# res = dig((0, 0), 0) +# +# print_grid() +# +# print(res) diff --git a/2024/18/two.py b/2024/18/two.py new file mode 100644 index 0000000..6070c35 --- /dev/null +++ b/2024/18/two.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +falls = list() +for line in lines: + xs, ys = line.split(",") + falls.append((int(xs), int(ys))) + +if input_file.startswith("input"): + cote = 71 + simu = 1024 +else: + cote = 7 + simu = 12 + +vec = tuple[int, int] +directions = [ + # COMMENT NOT CORRECT BUT WHO CARES + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] + +exit = cote - 1, cote - 1 + +visited: set[vec] = set() +fallen: set[vec] = set() + + +def print_grid() -> None: + for y in range(cote): + line = "" + for x in range(cote): + char = "." + pos = x, y + if pos in fallen: + char = "#" + elif pos in visited: + char = "O" + line += char + print(line) + print() + + +for simu in range(len(falls)): + print("Simu", simu) + + fallen = set(falls[:simu]) + visited = set() + curs: set[vec] = {(0, 0)} + steps = 0 + + found = False + while exit not in curs: + # print("Step", steps) + if not curs: + break + visited |= curs + ncurs: set[vec] = set() + for x, y in curs: + for direction in directions: + xx, yy = x + direction[0], y + direction[1] + npos = xx, yy + if npos in visited or npos in fallen: + continue + if x not in range(cote) or y not in range(cote): + continue + ncurs.add(npos) + curs = ncurs + steps += 1 + else: + found = True + + if not found: + break + +print_grid() +print(simu) +print(falls[simu-1]) + +# visited: dict[vec, int] = dict() +# +# def dig(pos: vec, steps: int) -> int | None: +# if steps > 300: +# return None +# # print(" " * steps, 55, pos) +# if pos == exit: +# return steps +# if pos in fallen: +# return None +# x, y = pos +# if x not in range(cote) or y not in range(cote): +# return None +# if pos in visited and visited[pos] < steps: +# return None +# visited[pos] = steps +# +# mini = None +# steps += 1 +# for direction in directions: +# xx, yy = x + direction[0], y + direction[1] +# res = dig((xx, yy), steps) +# if res is None: +# continue +# if mini is None or res < mini: +# mini = res +# return mini + +# sys.setrecursionlimit(9000) +# res = dig((0, 0), 0) +# +# print_grid() +# +# print(res) diff --git a/2024/19/.gitignore b/2024/19/.gitignore new file mode 100644 index 0000000..496c1f7 --- /dev/null +++ b/2024/19/.gitignore @@ -0,0 +1 @@ +colors diff --git a/2024/19/colors.py b/2024/19/colors.py new file mode 100644 index 0000000..86a2f27 --- /dev/null +++ b/2024/19/colors.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + print(fd.read().replace("w", "⬜").replace("u", "🟦").replace("b", "⬛").replace("r", "🟥").replace("g", "🟩")) diff --git a/2024/19/one.py b/2024/19/one.py new file mode 100644 index 0000000..d65f7fc --- /dev/null +++ b/2024/19/one.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +towels = set(map(str.strip, lines[0].split(","))) +patterns = lines[2:] + +def possible(pattern: str) -> bool: + if not pattern: + return True + for towel in towels: + if pattern.startswith(towel): + if possible(pattern[len(towel):]): + return True + return False + +possible_count = 0 +for pattern in patterns: + if possible(pattern): + possible_count += 1 + +print(possible_count) + diff --git a/2024/19/two.py b/2024/19/two.py new file mode 100644 index 0000000..ea3a9e9 --- /dev/null +++ b/2024/19/two.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 + +import sys +import functools + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +towels = set(map(str.strip, lines[0].split(","))) +patterns = lines[2:] + + +@functools.cache +def possible(pattern: str) -> int: + if not pattern: + return 1 + possible_count = 0 + for towel in towels: + if pattern.startswith(towel): + possible_count += possible(pattern[len(towel) :]) + return possible_count + + +possible_count = 0 +for pattern in patterns: + res = possible(pattern) + print(27, pattern, res) + possible_count += res + +print(possible_count) diff --git a/2024/2/one.py b/2024/2/one.py new file mode 100644 index 0000000..b015955 --- /dev/null +++ b/2024/2/one.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + + +safe_num = 0 +for line in lines: + report = [int(level) for level in line.split(" ")] + acc = sorted(report) + dec = acc[::-1] + if report != acc and report != dec: + continue + for i in range(len(report)-1): + diff = abs(report[i] - report[i+1]) + if diff < 1 or diff > 3: + break + else: + safe_num += 1 +print(safe_num) + + diff --git a/2024/2/two.py b/2024/2/two.py new file mode 100644 index 0000000..7ffe836 --- /dev/null +++ b/2024/2/two.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + + +def is_safe(report) -> bool: + acc = sorted(report) + dec = acc[::-1] + if report != acc and report != dec: + return False + for i in range(len(report) - 1): + diff = abs(report[i] - report[i + 1]) + if diff < 1 or diff > 3: + return False + else: + return True + + +safe_num = 0 +for line in lines: + report = [int(level) for level in line.split(" ")] + possible_reports = [report] + for i in range(len(report)): + rep = report.copy() + rep.pop(i) + possible_reports.append(rep) + for rep in possible_reports: + if is_safe(rep): + safe_num += 1 + break + +print(safe_num) diff --git a/2024/20/README.md b/2024/20/README.md new file mode 100644 index 0000000..fea7afd --- /dev/null +++ b/2024/20/README.md @@ -0,0 +1,2 @@ +Reading comprehension got me on the second part, +a one byte change helped 🙃 diff --git a/2024/20/demog b/2024/20/demog new file mode 100644 index 0000000..9eccf17 --- /dev/null +++ b/2024/20/demog @@ -0,0 +1,4 @@ +##### +#S#E# +#...# +##### diff --git a/2024/20/demog2 b/2024/20/demog2 new file mode 100644 index 0000000..9fb6018 --- /dev/null +++ b/2024/20/demog2 @@ -0,0 +1,32 @@ +############################################################################################# +#S#........................................................................................E# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#.#########################################################################################.# +#...........................................................................................# +############################################################################################# diff --git a/2024/20/demog3 b/2024/20/demog3 new file mode 100644 index 0000000..cb01c5e --- /dev/null +++ b/2024/20/demog3 @@ -0,0 +1,5 @@ +###### +#...E# +#S#### +#....# +###### diff --git a/2024/20/one.py b/2024/20/one.py new file mode 100644 index 0000000..1909ce9 --- /dev/null +++ b/2024/20/one.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python3 + +import collections +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +vec = tuple[int, int] +directions = [ + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] + +Cheat = tuple[vec, int] + +cheats: set[Cheat] = set() +for i, line in enumerate(lines): + if "S" in line: + j = line.index("S") + start = i, j + if i in range(1, height - 1): + for j in range(1, width - 1): + char = lines[i][j] + if char != "#": + continue + for d, direction in enumerate(directions): + ii, jj = i + direction[0], j + direction[1] + if ii not in range(1, height - 1) or jj not in range(1, width - 1): + continue + cchar = lines[ii][jj] + if cchar == "#": + continue + cheats.add(((i, j), d)) + + +def print_grid(visited: list[list[int | None]], cheat: Cheat) -> None: + for i in range(height): + line = "" + for j in range(width): + char = lines[i][j] + if visited[i][j] is not None: + char = "O" + if cheat[0] == (i, j): + char = "X" + line += char + print(line) + print() + + +def time(cheat: Cheat) -> int | None: + visited: list[list[int | None]] = list() + for _ in range(height): + visited.append([None] * width) + stack: set[vec] = {start} + for s in range(1, 10000): + nstack: set[vec] = set() + for pos in stack: + i, j = pos + for d, direction in enumerate(directions): + if (i, j) == cheat[0]: + if d != cheat[1]: + continue + ii, jj = i + direction[0], j + direction[1] + cchar = lines[ii][jj] + if cchar == "#" and cheat != ((ii, jj), d): + continue + elif cchar == "E": + # if s == 84 - 8: + # print_grid(visited, cheat) + return s + previs = visited[ii][jj] + if previs is not None and previs < s: + continue + visited[ii][jj] = s + nstack.add((ii, jj)) + stack = nstack + + # print("Second", s) + # print_grid(visited) + else: + return None + + +canon_saves: collections.Counter[int] = collections.Counter() +for k, v in ( + { + 2: 14, + 4: 14, + 6: 2, + 8: 4, + 10: 2, + 12: 3, + 20: 1, + 36: 1, + 38: 1, + 40: 1, + 64: 1, + } +).items(): + canon_saves[k] = v + +normal = time(((0, 0), 0)) +assert normal +saves: collections.Counter[int] = collections.Counter() +saves_mo100 = 0 +print(f"{normal=}") +print(f"{len(cheats)=}") +for c, cheat in enumerate(cheats): + print("Cheat", c, "/", len(cheats)) + ntime = time(cheat) + assert ntime + diff = normal - ntime + saves[diff] += 1 + if diff >= 100: + saves_mo100 += 1 +del saves[0] +print(f"{saves=}") +print(f"{canon_saves=}") +print(f"{(saves == canon_saves)=}") +print(saves_mo100) +# 1282: too low diff --git a/2024/20/reddit_part3 b/2024/20/reddit_part3 new file mode 100644 index 0000000..20dff19 --- /dev/null +++ b/2024/20/reddit_part3 @@ -0,0 +1,41 @@ +######################################### +#...#.............#.....#.....#.....#...# +###.#.###.#########.###.###.#####.###.#.# +#...#...#.#.#.....#...#...#.#.........#.# +#..##.###.#.#####.#####.#.#.#.#####.#.#.# +#.......#.....#.#.....#.#...#...#...#.#.# +#.###########.#.#.####.####.#.########### +#.#.#...#...#.....#.................#...# +#.#.#.#.#.#.###.#.#.###.#########.#####.# +#.....#...#.....#...#.........#...#.#.#.# +#####.#####.#####.#.#.#.#.#######.#.#.#.# +#.....#.........#.#.#...#...#...#.#...#.# +#.#########.#######.#####.#.##..###.###.# +#...#.......#.....#.#...#.#...#.....#...# +#.###.###########.#.###.#.#.###.#######.# +#.#.#.............#.....#.#...#...#.....# +###.#.#####.#####.#.###.#.#####.#####.### +#...#.#.........#.#...#...#...#.#.....#.# +###.###.#.#########.#####.###.#.#.#.#.#.# +#S#.#...#.#.....#.....#.........#.#.#..E# +#.#.#.#########.#.#########.#.###.#####.# +#.....#.........#...#.#...#.#.....#...#.# +###.#####..##.#.#####.#.###.#####.###.### +#.#.#...#.#.#.#.#...#...#...#.........#.# +#.#.###.###.#.#.#.#####.####.##.#.#####.# +#.#.#.#.#.#...#.........#.#...#.#.#...#.# +#.#.#.#.#.#####.###.#.#.#.###.#.###.###.# +#...#.......#...#...#.#.#.........#.#...# +#######.#####.#####.###.#.#.#####.#.###.# +#.............#.....#.#.#.#.....#.......# +###############.#####.#.#########.#.#.### +#.....#...#.#.........#.#...#...#.#.#.#.# +#.#.#.#.#.#.###.#########.###.###.#####.# +#.#.#.#.#...........#.#.............#...# +###.#.#.###.#######.#.#.#.###.###.#.#.### +#...#...#...#.#...#.#...#...#.#.#.#.#...# +###.#.#######.#.#.#.###.#####.#..##.#.### +#.#.#...#.....#.#.#.......#.#.#...#.....# +#.#.#####.###.#.#.#.#.#####.#####.###.#.# +#.....#.....#.......#.............#...#.# +######################################### diff --git a/2024/20/reddit_part3g b/2024/20/reddit_part3g new file mode 100644 index 0000000..c9c3729 --- /dev/null +++ b/2024/20/reddit_part3g @@ -0,0 +1,41 @@ +######################################### +#...#.............#.....#.....#.....#...# +###.#.###.#########.###.###.#####.###.#.# +#...#...#.#.#.....#...#...#.#.........#.# +#..##.###.#.#####.#####.#.#.#.#####.#.#.# +#.......#.....#.#.....#.#...#...#...#.#.# +#.###########.#.#.####.####.#.########### +#.#.#...#...#.....#.................#...# +#.#.#.#.#.#.###.#.#.###.#########.#####.# +#.....#...#.....#...#.........#...#.#.#.# +#####.#####.#####.#.#.#.#.#######.#.#.#.# +#.....#.........#.#.#...#...#...#.#...#.# +#.#########.#######.#####.#.##..###.###.# +#...#.......#.....#.#...#.#...#.....#...# +#.###.###########.#.###.#.#.###.#######.# +#.#.#.............#.....#.#...#...#.....# +###.#.#####.#####.#.###.#.#####.#####.### +#...#.#.........#.#...#...#...#.#.....#.# +###.###.#.#########.#####.###.#.#.#.#.#.# +#S#.#...#.#.....#.....#.........#.#.#..E# +#.#.#.#########.#.#########.#.###.#####.# +#.....#.........#...#.#...#.#.....#...#.# +###.#####..##.#.#####.#.###.#####.###.### +#.#.#...#.#.#.#.#...#...#...#.........#.# +#.#.###.###.#.#.#.#####.####.##.#.#####.# +#.#.#.#.#.#...#.........#.#...#.#.#...#.# +#.#.#.#.#.#####.###.#.#.#.###.#.###.###.# +#...#.......#...#...#.#.#.........#.#...# +#######.#####.#####.###.#.#.#####.#.###.# +#.............#.....#.#.#.#.....#.......# +#####################.#.#########.#.#.### +#.....#...#.#.........#.#...#...#.#.#.#.# +#.#.#.#.#.#.###.#########.###.###.#####.# +#.#.#.#.#...........#.#.............#...# +###.#.#.###.#######.#.#.#.###.###.#.#.### +#...#...#...#.#...#.#...#...#.#.#.#.#...# +###.#.#######.#.#.#.###.#####.#..##.#.### +#.#.#...#.....#.#.#.......#.#.#...#.....# +#.#.#####.###.#.#.#.#.#####.#####.###.#.# +#.....#.....#.......#.............#...#.# +######################################### diff --git a/2024/20/two.py b/2024/20/two.py new file mode 100644 index 0000000..a12dd27 --- /dev/null +++ b/2024/20/two.py @@ -0,0 +1,153 @@ +#!/usr/bin/env python3 + +import collections +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +# Adjust parameters for part/file +part = int(sys.argv[2]) +assert part in (1, 2) + +if input_file.startswith("input"): + minic = 100 +else: + if part == 1: + minic = 1 + else: + minic = 50 +skips = 1 if part == 1 else 20 +canon: collections.Counter[int] = collections.Counter() +demo = {} +if input_file == "demo": + if skips == 1: + demo = {2: 14, 4: 14, 6: 2, 8: 4, 10: 2} | ( + {12: 3, 20: 1, 36: 1, 38: 1, 40: 1, 64: 1} + ) + elif skips == 20: + demo = {50: 32, 52: 31, 54: 29, 56: 39, 58: 25, 60: 23} | ( + {62: 20, 64: 19, 66: 12, 68: 14, 70: 12, 72: 22, 74: 4, 76: 3} + ) + for k, v in demo.items(): + canon[k] = v + +vec = tuple[int, int] +directions = [ + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] + +# Find start position +for i, line in enumerate(lines): + if "S" in line: + j = line.index("S") + start = i, j + + +# Visit normally +normal = None +visited: list[list[int | None]] = list() +for _ in range(height): + visited.append([None] * width) +visited[start[0]][start[1]] = 0 +stack: set[vec] = {start} +s = 0 +while stack: + s += 1 + nstack: set[vec] = set() + for pos in stack: + i, j = pos + for d, direction in enumerate(directions): + ii, jj = i + direction[0], j + direction[1] + + previs = visited[ii][jj] + if previs is not None and previs < s: + continue + visited[ii][jj] = s + + cchar = lines[ii][jj] + if cchar == "#": + continue + elif cchar == "E": + if normal is None: + normal = s + nstack.add((ii, jj)) + stack = nstack +assert normal + +# Print +for i in range(height): + line = "" + for j in range(width): + char = lines[i][j] + if visited[i][j] is not None: + if char == "#": + char = "@" + else: + char = "O" + line += char + print(line) +print() + + +# Find cheats +saves: collections.Counter[int] = collections.Counter() +for i in range(1, height - 1): + if height > 100: + print(103, i, "/", height) + for j in range(1, width - 1): + char = lines[i][j] + if char == "#": + continue + ovis = visited[i][j] + if ovis is None: + continue + if ovis >= normal: + continue + # for di in range(-skips, skips): + # ii = i + di + # G + for ii in range(1, height - 1): + for jj in range(1, width - 1): + manh = abs(i - ii) + abs(j - jj) + if manh > skips: + continue + cchar = lines[ii][jj] + if cchar == "#": + continue + nvis = visited[ii][jj] + if nvis is None: + continue + orem = normal - ovis + nrem = abs(normal - nvis) + manh + save = orem - nrem + if save < minic: + continue + saves[save] += 1 + + +print(f"{normal=}") +print(f"{dict(sorted(saves.items()))=}") +if demo: + print(f"{dict(sorted(canon.items()))=}") + diff = canon.copy() + diff.subtract(saves) + print(f"{dict(sorted(diff.items()))=}") + print(f"{(saves == canon)=}") + print(f"{saves.total()=}") + print(f"{canon.total()=}") + difft = 0 + for v in diff.values(): + difft += abs(v) + print(f"{difft=}") +print(saves.total()) +# 1119834 too high +# 982425 correct! diff --git a/2024/20/two_correct.py b/2024/20/two_correct.py new file mode 100644 index 0000000..81b428d --- /dev/null +++ b/2024/20/two_correct.py @@ -0,0 +1,212 @@ +#!/usr/bin/env python3 + +import collections +import colorsys +import sys + +import rich.console + +import rich.text +import rich.progress + +console = rich.console.Console() + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +# Adjust parameters for part/file +part = int(sys.argv[2]) +assert part in (1, 2) + +if input_file.startswith("input"): + minic = 100 +elif input_file.startswith("reddit_part3"): + minic = 30 +else: + if part == 1: + minic = 1 + else: + minic = 50 +skips = 2 if part == 1 else 20 +canon: collections.Counter[int] = collections.Counter() +demo = {} +if input_file == "demo": + if part == 1: + demo = {2: 14, 4: 14, 6: 2, 8: 4, 10: 2} | ( + {12: 3, 20: 1, 36: 1, 38: 1, 40: 1, 64: 1} + ) + elif part == 2: + demo = {50: 32, 52: 31, 54: 29, 56: 39, 58: 25, 60: 23} | ( + {62: 20, 64: 19, 66: 12, 68: 14, 70: 12, 72: 22, 74: 4, 76: 3} + ) + for k, v in demo.items(): + canon[k] = v + +vec = tuple[int, int] +directions = [ + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] + +# Find start position +for i, line in enumerate(lines): + if "S" in line: + j = line.index("S") + start = i, j + if "E" in line: + j = line.index("E") + stop = i, j + + +# Visit forward +normal = None +forward: list[list[int | None]] = list() +for _ in range(height): + forward.append([None] * width) +forward[start[0]][start[1]] = 0 +stack: set[vec] = {start} +s = 0 +while stack: + s += 1 + nstack: set[vec] = set() + for pos in stack: + i, j = pos + for d, direction in enumerate(directions): + ii, jj = i + direction[0], j + direction[1] + + cchar = lines[ii][jj] + if cchar == "#": + continue + + previs = forward[ii][jj] + if previs is not None and previs < s: + continue + forward[ii][jj] = s + + if cchar == "E": + if normal is None: + normal = s + nstack.add((ii, jj)) + stack = nstack +assert normal + +# Visit backwards +backward: list[list[int | None]] = list() +for _ in range(height): + backward.append([None] * width) +backward[stop[0]][stop[1]] = 0 +stack = {stop} +s = 0 +while stack: + s += 1 + nstack = set() + for pos in stack: + i, j = pos + for d, direction in enumerate(directions): + ii, jj = i + direction[0], j + direction[1] + + cchar = lines[ii][jj] + if cchar == "#": + continue + + previs = backward[ii][jj] + if previs is not None and previs < s: + continue + backward[ii][jj] = s + + if cchar == "E": + assert s == normal + nstack.add((ii, jj)) + stack = nstack + +# Print + + +def perc2color(perc: float) -> str: + rgb = colorsys.hsv_to_rgb(perc, 1.0, 1.0) + r, g, b = tuple(round(c * 255) for c in rgb) + return f"rgb({r},{g},{b})" + + +text = rich.text.Text() +for i in range(height): + for j in range(width): + fg = "white" + bg = "black" + char = lines[i][j] + forw = forward[i][j] + if char == ".": + if forw is not None: + fg = perc2color(forw / normal) + char = str(forw % 10) + bckw = backward[i][j] + if bckw is not None: + bg = perc2color(bckw / normal) + if char == "#": + char = "█" + text.append(char, style=f"{fg} on {bg}") + text.append("\n") +console.print(text) + + +# Find cheats +saves: collections.Counter[int] = collections.Counter() +for i in rich.progress.track(range(1, height - 1), description="Finding cheats"): + for j in range(1, width - 1): + char = lines[i][j] + if char == "#": + continue + ovis = forward[i][j] + if ovis is None: + continue + if ovis >= normal: + continue + min_i = max(1, i - skips) + max_i = min(height - 1, i + skips) + for ii in range(min_i, max_i + 1): + rem = skips - abs(ii - i) + min_j = max(1, j - rem) + max_j = min(width - 1, j + rem) + for jj in range(min_j, max_j + 1): + manh = abs(i - ii) + abs(j - jj) + if manh > skips: + continue + cchar = lines[ii][jj] + if cchar == "#": + continue + nvis = backward[ii][jj] + if nvis is None: + continue + orem = normal - ovis + nrem = nvis + manh + save = orem - nrem + if save < minic: + continue + saves[save] += 1 + +log = console.log + +log(f"{normal=}") +log(f"{dict(sorted(saves.items()))=}") +if demo: + log(f"{dict(sorted(canon.items()))=}") + diff = canon.copy() + diff.subtract(saves) + log(f"{dict(sorted(diff.items()))=}") + log(f"{(saves == canon)=}") + log(f"{saves.total()=}") + log(f"{canon.total()=}") + difft = 0 + for v in diff.values(): + difft += abs(v) + log(f"{difft=}") +print(saves.total()) +# 1119834 too high +# 982425 correct! diff --git a/2024/20/two_fast.py b/2024/20/two_fast.py new file mode 100644 index 0000000..dd6f11d --- /dev/null +++ b/2024/20/two_fast.py @@ -0,0 +1,172 @@ +#!/usr/bin/env python3 + +import collections +import colorsys +import sys +import rich.console + +console = rich.console.Console() + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +# Adjust parameters for part/file +part = int(sys.argv[2]) +assert part in (1, 2) + +if input_file.startswith("input"): + minic = 100 +elif input_file.startswith("reddit_part3"): + minic = 30 +else: + if part == 1: + minic = 1 + else: + minic = 50 +skips = 2 if part == 1 else 20 +canon: collections.Counter[int] = collections.Counter() +demo = {} +if input_file == "demo": + if part == 1: + demo = {2: 14, 4: 14, 6: 2, 8: 4, 10: 2} | ( + {12: 3, 20: 1, 36: 1, 38: 1, 40: 1, 64: 1} + ) + elif part == 2: + demo = {50: 32, 52: 31, 54: 29, 56: 39, 58: 25, 60: 23} | ( + {62: 20, 64: 19, 66: 12, 68: 14, 70: 12, 72: 22, 74: 4, 76: 3} + ) + for k, v in demo.items(): + canon[k] = v + +vec = tuple[int, int] +directions = [ + (-1, 0), # ^ North + (0, 1), # > East + (1, 0), # v South + (0, -1), # < West +] + +# Find start position +for i, line in enumerate(lines): + if "S" in line: + j = line.index("S") + start = i, j + + +# Visit normally +normal = None +visited: list[list[int | None]] = list() +for _ in range(height): + visited.append([None] * width) +visited[start[0]][start[1]] = 0 +stack: set[vec] = {start} +s = 0 +while stack: + s += 1 + nstack: set[vec] = set() + for pos in stack: + i, j = pos + for d, direction in enumerate(directions): + ii, jj = i + direction[0], j + direction[1] + + cchar = lines[ii][jj] + if cchar == "#": + continue + + previs = visited[ii][jj] + if previs is not None and previs < s: + continue + visited[ii][jj] = s + + if cchar == "E": + if normal is None: + normal = s + nstack.add((ii, jj)) + stack = nstack +assert normal + +# Print +for i in range(height): + line = "" + for j in range(width): + char = lines[i][j] + vis = visited[i][j] + if (i, j) == (19, 1): + char = "[bold red on black]@" + elif (i, j) == (15, 1): + char = "[bold red on black]a" + elif vis is not None and char == ".": + hue = vis / normal + rgb = colorsys.hsv_to_rgb(hue, 1.0, 1.0) + r, g, b = tuple(round(c * 255) for c in rgb) + char = f"[on rgb({r},{g},{b})]{vis % 10}" + elif char == "#": + char = "[white]█" + else: + char = f"[bold green on black]{char}" + line += char + console.print(line) +print() + + +# Find cheats +saves: collections.Counter[int] = collections.Counter() +for i in range(1, height - 1): + if height > 100: + print(103, i, "/", height-2) + for j in range(1, width - 1): + char = lines[i][j] + if char == "#": + continue + ovis = visited[i][j] + if ovis is None: + continue + if ovis >= normal: + continue + min_i = max(1, i-skips) + max_i = min(height-1, i+skips) + for ii in range(min_i, max_i+1): + rem = skips - abs(ii - i) + min_j = max(1, j-rem) + max_j = min(width-1, j+rem) + for jj in range(min_j, max_j+1): + manh = abs(i - ii) + abs(j - jj) + if manh > skips: + continue + cchar = lines[ii][jj] + if cchar == "#": + continue + nvis = visited[ii][jj] + if nvis is None: + continue + orem = normal - ovis + # Works if there's space after the E, but catches unrelated paths + nrem = abs(normal - nvis) + manh + save = orem - nrem + if save < minic: + continue + saves[save] += 1 + + +print(f"{normal=}") +print(f"{dict(sorted(saves.items()))=}") +if demo: + print(f"{dict(sorted(canon.items()))=}") + diff = canon.copy() + diff.subtract(saves) + print(f"{dict(sorted(diff.items()))=}") + print(f"{(saves == canon)=}") + print(f"{saves.total()=}") + print(f"{canon.total()=}") + difft = 0 + for v in diff.values(): + difft += abs(v) + print(f"{difft=}") +print(saves.total()) +# 1119834 too high +# 982425 correct! diff --git a/2024/21/Notes.xopp b/2024/21/Notes.xopp new file mode 100644 index 0000000000000000000000000000000000000000..7fc861cd1cf6ee92adec39b91a0ae4baea413e5e GIT binary patch literal 85933 zcmV((K;XY0iwFP!000001Ejsza_mU5CHj88f>!fLn@xm{xYm8fNG7$`;*DBs&9A?{ zmLq}4J*+cjy{oOOU`_xD1Uy{(@_+rG&%4{P_p|4htB3o4|7CtPe~rDo9^IcF-9Fr( z{rj)`hrj;MfB)CNJ|Etm?~iWBPM*(>ULT(S{Z~tPd>k{s>@WY<*!k7%S$7-%mt6CD z^?G~u-}`#v`1siA!^zv-+5PL-{~mieI~%)veSLiS|0X87JN>%2dcAx*{&n>*@vjNJ z_`m-3_<Z($b@uV!SG!Ydn;*^6+{MGB{Ij~Xb2+nfAxE<>@~>(6--7&i@cewRaD@}5 z?iQCfn~lkdkHN&``uN5B(b=|;*9JScGaI{`{(jA#9NCW(<L>6}%kAm@<GH)DS4*p5 z?&@jt<vNZpFTI>TFP$9hADpbNTy4zGA8f3;@ukU!najPIgQL~SiQ|Krc(O2QkLGp; z+q*kA8=LR@m$&QlCr96Nw^!!y<Z1cg;Nfj+aW~Aw=J9K5%Rk;czn-MW<>mL?a`*n8 z4#MGL+FYF5d0shMTU!}_Ul~8mC-(TxPOOcG{Bd~k__Xjc`MrH`^ssdM@#a&KSN_U# z7f12!V)A<b`DQnrJuEF=PR{xLh1-p<^{eUQ@2SDbbGmqUrzPIJ@7M!>e*e+TEtofF zAI|0<+)>)So!dN{2zhn-bl%OS)0O3oujTXEkDW4C-uzzjmmf0^Q@2NcdE(+U&g@KF ztd7s8<I}UfJU2aiF*UbvwEFt7F*A8{dw99}c6u^+xIVr=J=vT&oImg@`;X&0%b#ES zU*&7LEL<&ry{}yC&TP&tUVVPWrxK?Zo>Ry#lUr%~=y`R+&)#ip@0!)?$=j<3x4O2u zwKG4pJh&hKzMP(%Isdr4K3JH&dz-uu&E(Dcxesp>A9j4|e6Z|p^W2kPK7U>>caJwa z>HPe$+1@d$XYMt{`^&3?r=_>&yL9<IJ-+zz5vMn%UM6?#{PNRHJUX~~T-u#k*<PG^ z+}Zp*xtV)-_`04wdf40j*n7zHe(!yL|6+RecJnjcHm941udmBn&HeiQ_xo*rzq@GW z9&TrzZ^tM0g?&o?`2L>wm{>o3KF#y%!ldub$K<Y`S{Us6)BByz`KjZhr|ZSF`=jZ> z-R#2T?Bw!A`udnS*nc`)-#dHQc8_=SPtE4^^5x0kdhRoyt<MkczD~~8=U$(WY&m=1 zKQ2$r(x%;9-#M7RI2bI4gXeiK-}Lyoaog$T==o*(-EZ7IT&%Be3>M!nj>o6Z7tZtA z+vn5N(dE_b_x9v+^F6up7N@Qjb~d(W_NHzQr#DUpcN2#vFRvfpD`}yuZ#D~$b02o^ zd)J)qy0Smzt}pY-)ym3&nORxComolu3ybAudE#KwoL_CE!Q}q)#q`GH^wGz{<e6~S z<<hl#xqEy&{>tymgU=?;E||I7@w@LQ`N!U_o*ti<)yJ*1!PL#*?0s(Y>Sg_WZOz?G zzr9VJ9!;)HtWWycnU&9_sc`c-dH?PG!Rh+?`~A(!-unFg{q@z=!M=^#Q@fWZXKV8( z?~7mi_c@=OOkKaMOs-F!Y+UEF?XNT8g4xZ%hF{-3y4b(FTYSA~UIrV@^yk6k#n#f& zf#068%QGi07gMM68^^DgSDzafPwsi;;O20Aaw9G5Ea$b;kJ+u~i_3}W_0!;YUS3bG zw}f|Y7oU#rKI8+<ULNip-`=>@?~{GusGIM(m;1%9la1-gjje~Rx4F~Pm)*<PjqUlF zl#br=>-YWL^8Lc+*6GsH>DKG<bh=-C92~5z?oH30U0e)yCSP6JTVKArp1b(oIo>{K zw)e~aq~D+YJh@-pe;Mq&-%czvM^lf7&G~oC8)rvbacTDX;(XbJ^PSu8{nK>uF+IJ% zH1oc3dp&r2SUoj2dlL_9$AguN#l_`mKl3=1mZxV9zTcK6_Z~jxLil)IdtTkUdyJ>& zXKy#RryKkC(+9T;hxYtFoV@KH?p-|0PClHDug*=KzuleRY|8%*uNR!ZTlgAGoS5_F z&)NI!&F_2{vRgbmKDb_gHn+FuFD{NB-X6SNKbO1jx6|*NJU+g+oywb8dVg7(*&n}* z2m4bGCu{F}&j;JWCjR8khxOMoySI6HKRGk_Sl-yXI$52V-o0Acz4{7QZtCRatlV#J zoE$7{&ulF|Wj}E-`7s!uYYz8Mk8f^IR`UMF&6`_}7jtt{-w&=_+k>^k4SBfjwfCok ziOrXZ_4Vs={O#QO(&^g%ntOdZxp;q?GcT``k8}Hveqm~1{bB1o-E5oFu>Kw8?PgZT z-S^q|>HAKaeme;#pMy00Ju|qw-<?}F2M^7~wtt!4+MF+TclWeeIlQ@;*_wTMm^oYA zU4DBqmnY^ZoNqq8-|w5ZGCn(a9zU3PU7xpu&6Rt5c(A{__kH<v=2xBvX~Mb9v+b3; z?Uk#CxA&Nz=Qg)iwqH+gPOfea_tNb4&EsM?d$>Mwce{&sn|He+Y!CN0pJq1pO?sbq zr_K54`suh?eJS>~xj)_7AHTUjzqvoznTiLWE890-Hq6w;$;sNm_27PX=`d}49j@H_ ziCKSa$KS6OKgLfco<ID_+Vw+ReScq{n=|9Dt6OW!#}gBquj3~>@0)Ae+oB}S&(Gd> z2R@9S%*}snTrF*$t=&xQe=pCh&2PUnYjfL|Y5lD%UoC9rjg7ONGPAkr_s7q^?Dps0 zZk)XdZ}DN~S)|I<%=*m2`O@On;_1SDzF3UM?`LIVe&cieHeUM6`Ng%B>(}Ew6VCQ; z?ZNu0*}1rWnLmGbZ)fA<=KHCfm9#!_eKv77@v`pb<LBD`<=5xV?(EL_*_vHk-Mcy; z4DJRO6ElPP`-|x0hl5>T+rIiPVf=aSemy-m&54`&KAPWrIG_KJt-pP7F}3nBbK@sJ zXEsh&)@P14M5N!}+B8^SnOiv6oSqb!b$C7SyH~rrbMbaC`*bn2`FOeLHYX=P?dtsg zi%T<Z|FxOiU0y%he03A?^J;B<;x-HpK36|3kHg*Gn>*M^>+j9_)a1_2>*Dp%=l9yf z$@})iPATV;=TqT&d7<Q#o^Fr#KgUnsuW!r5&Sv@EjCYTB3tK1Kvzv2YUq>s)-{Gaq zeLcJ!FRqu1y`^-xw{^UGe%IKIr}f31*}S*3cQ`)2J>I;$+?|E8xxBHock=Z7xqW{d zHuh$xHfAR${Oa=Y>05sKSW0K2GOj+yujl4oR^K+J27~vbiLb?p`_1NV;bzL6rqj#0 zWsy@&+C6=pGgrob<XOMHFgKVwcz8b)k^go1b~d*fHec@M7M`+OdVKgO{`>j(=yd#G z$3Dy)9^NiK@7|S%*Y(?T_j-6XvEZNm`SRoY<x+WExjYLitM><UpC_;LueWoPhZiqf zU*&B5!I$;<xwiv5y*s<Rdvy4C_fl>qrykFbCT^e3lAoMA|F}6jS(zI6g|(USo5hRs z^ZD6XKlk}^Ja@h6C*Ev2Ss!2cUVnX_ynWyKSX%rFXYWVb&*M)!%eTg-@!QAS?Ymuf z>dx=)PNKamFKZJMmmlx(WMXdT>TK<P_v!TRz@81(p3K=%89#qIKD${sf7?FX+POXa zI)1x6xj)`pd|N*GPRpf<w~Ky#?d#-Z@yOghi_94>t7YfI9Pdp$&5yeYyZbURmp;bV z1{Z#9u<*5VJ^7K>rU!$Mh4=S~@2~V~)4qFuecf!*>BZ#k+veW(<=5%)<L%SSjyYbQ z+IW9GnVNp`t4(r)%{W*;nws2vy_o*o94vfqJ?)&`oj)EgeZ4%*T`uhIuHCF$+^&AE zeafe{yC#Ig^NI0^-P!rq<ty{HY|HuX`TX<C!tp^P2Iyrvo;bX4@y@I*E-X*^#p~n! z{m-yJ|2p~hy_i4uj=tU5RaiNFDdXjM@%7{D`0(WXZT=`s@7mkLr|sRF<HMVm@%86- zQBUU3zJGl$O<bq<YwJ#Bf2@9O?1Y!^we9=IlfmW3+y3V16eQ2;VBdV7e6DQF?CflA zE?wRa1~W6?Q-`M)a|1VcKD*o9y<KVcPaY57zRlD6<NDRg{Y9{ki*M!N=;q~GbcKkD zu(5D;u^_it`96L+-uigCIbC?T+5FmHPUCj&XgXa5n;x$>-TT|t{?6j_)<M2V{>k2L z96ryz9?xtoZ8fJN=*K6wC+D7D#?AA=>vP_FdR*C_%y-wXORuX3hp%P#b#?ON`ex_) zAe|pxtju2S>`rc;TrW<Xr_=Gl{lV`3d=Qm=obKJ=as6^@H*al;y!igOeB9q%`Mmh} z+_~FxZ!`Nd%M)Q`d*kW-Z0XdP@r9$?be;YC+2V0CI83KI+s}7m%ayIez3bhTufxs3 z{B$ah_luj??mEtf<4+OdEB71z)g8x~yUpE=o0;+P<MCy`al1cpaJ2C4<}dc22IqT= zo2%oKYvZd+@24{hgTu{*oBgRcV<*oRrk+!ons}RA-n;)^`JR19Yv1v8?&Q`@Jo<yp zWk0dC@$$Ok7G@46=U1=CCy)2-_UqB~<@n+CLB8C)-rrq5-rCvTez==?cZ*Ncr{5D> zPfru;=TB?d`SY3i`K!~l!KS@E-?-j+JbSx8`d&WF&nbPR_qW;R#m?UEi%cI6SL-wB zWb-agUM$43#kus^Or^8i`<LrY`+oaydSvfz2dkG8hwHPC<!ULL<F}_$(%REi%yW7C zaVal1yK`yg`tkl`Ykeig>sK@T{&ng%XU?{svVFQ)87ywCzb))u=lpeiQkL!I@$1Z& zdwDpz^~Yv#cz(Zk_mrmd%j5ms^V0ESG+Xvz_h#zi%1>@@tbIJ^7h#X1kLA;c+3Ssy zg|n^8_m8uD^X|X$-lzZYPdgXyyA!vcX8h=T*5tFRv(x?Yz2~L4c{#UtJT(<J-0sEn z$<E?<S)2Zvdb-&QJ4d%KQ|b8OE}krwGPS+!8k1#z%-+7l`Gd)`hd4RCvU7E_m{%_^ z-_~cWz4|^{y}7&HeP4N=TAf^+e%)S@k9csuc6hzAwIEWvJUtAy=I58}OR^$H_6|?a zz)1%a$vj<7T|7@-OnnJs<hi@IGrKMu=>D|~?#8F@1~$LF?U|S6dHH^QV}0<oKYjAF zaJc)CmZoN3U%sx6!{Bs%d%4Wni`Rp#t?zQTTQ1gbzSF?39EA&WIJI{@d+gV*zs~3P z50A~!_QJ&V)8@ipe&JzyYVqdz{$}p-YVz{+a4C*2&bs~2=4$y)HtM{6JR6)JY(C3V zEQ>{a{IM~$dUG`4?A-Bvv-bKv;UC`f*X7;m!g0yrcrY6Wk87cMK6URg?b_z`@?h7k z-W=~uULQ^zFW=rRANZHKiK*kOyPX{$4&D3ImfJrVzxg`Yznye3%}t+_!@WD7Z$C<z z|C)XNy85;Qdpx@wb}lDxQ{FpR+wdDJ*VEgJn{#RU;$d(7U}|N4?Of#8s%Wt7Z?kxp z-`3yH$9EUZ#?H**AY4y=ADfryxmokD_WE?6mM+8U;Op>gK0O>y*yEQRPUmtwx?dk3 z_kPhlEX-`*T}|7ssg=e~4&0M{+&NyIoZgrYI~$+=pqX6QKUiKldMk^vk>2L^^UUnz zOq!bAxq97uS^U_zuzB5?o9UCqhs88_*;volue0Zy<!)|eW8>RyoF5FHFPihO&B?2B zy4%d19<3bRF1_4Nrpejc_owA3=Fi~i>v&~QF0Bd8*7VEFynKg~*YorDXr2#u7S~=@ zj&hjYeVIGFb7t@R^EH%RKleCyx%0j7^>lX~uMXCq7O$Rej%Rll?9$Wb!|u-a&eP$| z;m-C{*<9H-GoQO#t5=UVo3p2@^Sd)2=R4c8yAL?^WmhEV(~tN1UbtF{TPshG591Ga zOOKl?yL&wK=X;4!yt3cSZ0>Jwn#~n+B<}yM{Or-{&-dD1yE=G(TDW?<xn6oYeA=D) z-o?-Ue6Q;R^Ljn8wR>^6mj}(w-sj8W(b4+h+<LrPcnIV1>EI=f^SxKT+TR$+i{M!| zkCv9p*~{nQ?Cs>ZpE#bsznf^*mp|_gkN2<7_ExvfURKYK{8JvRTrE5u&TL{G9`819 zw^y#0t`6pQXFgZr^4EFU*;>863P-E^>xgkp&fJPiu=TcaH$DBYiD9Jdzy9@jba6KJ zadrB7`R~6%3BPO#q5L&=d3JSi`TFm_vNykSE-4~NcYJhmbMgG}c7Hnd`t^AB@4sFi zZm&-N8asKoMVRk@owxrWD)@CPf4{xDKRf+vLN2{M`Z{}-|GvCFKir&+y*@nL{`;@T zv-|$yhX3H=_G!#7Z^oKm&WDm4o8-_ZA6>LT4r6qw1cwu{iK&=qahRO3w!yi@7Ss5Q z6G{rP6ywLtug2KY1cM_lFXbGLQnGqbe2Fp1kuf$k4K6S)#)3Z@AHCcXN5Oj=Baccc z4QVli;7F6xQw}&1vo{vrBv}(1-X%HPIQ^@)Uhk5E%_Z|FH8$%NB^$kSw$^(+awS_n zUJi{7MUUj(ymOA;#QgV1P1L8)!6kjt>|@GSkDP15?|1Ib>+h1Xyc3U#Df*VBvEC#- zl2_+%6eF*}D~fei59CjoH!i_6MK4IfJN(r)rm=<x-WNWTZE{Qv|7e`tkbjlslkbir zkvuMX9)-s6Ij#I=(JP#=L&Li`-^g$9C>q~HJ@Pp#&HMH=xg_w$rb$6xB9>$$m)7Q3 zf(Iw%9HLK74pV3vTV$!4U%?pR4pLo_H4<k0e;x|oA3bjAF5!;)>%X1<)yPd{-BJ{G zlU4U)&izWV45onQvX^%S%?m4}1e)+`a3D3I;Pp}xHkKVAH2W)C7jV1u%h^<9vj{E7 zg6MfcmNIA1<fUz~pb1N4`IruyzG;$Nn}0Rg#^gZ@@@-^Agk}@g++n>+^aUgz<=KVS zKwfy^aiPV=1d>Fi$R{I7)=aj7Ex(FvZ25#Ev=C*1d1(M^6ws{8F7R3hrnF-={}OgC zI4|LoIC(RndHJpl-!=+^MUWaJR~V3#iN~zGc21T{oWzThuP-Dc{!Or4_7buQV^$Vc ze!h_x3%{c5Vp~9ym$f)A$j;A=u$2w6VsdNw6#iGxEg>`!6_7m1iRj59d_XhKTlrE# zleci7`CsyEvbo2S#S_c-6jBtv#%b~a8ez5o8l;V|pU|2H0!2s;3@g9T$Uec21<lIs zTp5eymv8XLio`D=@5W10@v_5W`jtwNl@OAwx&bNv65H5Co+j_t;8L!M=WCg4JV^3_ zA_#;zgcgPGWUZrIV3Wr?$OTsRVFAs`o-<s!C=^+e=ze7vbK;k<AvGcag(k8y`vh7} zjl3FY@*D>5pTX@RgCs&Z8w;M0?<@Bq4ci$c*|t_59alnnI<TF52>I^SFE|Qgue6*! zc3aQv^2Dym@*TNR<SFHS`ZtqJW*ZT4o-5!Rd3ew=UeR!&WL@PhvX6yzY}5sn9V`07 zaY2PsvF^Eu5))dWa5wxuvOAr89|z_MvTXQ_MI^Scme68wMV`Ln03nI?^RkS>J0dcZ ztcn9K+KAIc8VC~^H%gP&^-3FFE9@rnD2)7sSO7tGT;!veb_)o5c+a0TE;K&X(#T`w zW90Ucx0Rg^n#D2}>^v_IEc^pWCi_EHFL4D5M34Jrnuzs=ND(z68(vo47v~%WgBQ`8 z0=`h9qN@ahgW?u$Fe7qCc*p%FK6;VTN~lVF)FQ>owxGNd6CrytXb~k{_#m>Lp>hA3 zQ1j(KvSY+T5HahZMr65?s5}}h!V@qTM7M+@Vu7}SXhYMQB(lFmZqPW9r!Q2XVr)Q^ zj2I_HWH|pA9K<D$#FC5Vx1;W_{T1?4fo6qBv;e6Fi^)5P{U5Yc6zL+0L-^c7go;)b zKCfwF%QRvw2!n{s7xI`7vXG)pM@eGVMTbkpVuSAYV8$$4O70-L*2`w_PQ->-d<HZl zyHV~hq7ol8S0q{AM4jD}L@YunyPo7kW+V!^jw0Vzw5V8lJxMqi+qFK65AW({5K<F` zTSeBu#tV>P*z;mIG^VEU@hOvj;d4TXf#Yq4g&O5~qKVL=_Lm5~2$}Rt%s&yz7Bty% zvZ8;+a-x|$cDk^f>;_tPa#&;~Xiv-biL&QF6zLSL@qvGr-RuhN=>%~H{Vp2Z!we;N zxCC3*r60K?it-mL4hs(B!{bW{mm7Tc?jwki5+gpglf5WR0qG$eA^R?qCfZnJfY9V5 zS?dIvqdh$)`%@lOBnfDZn0F$L<N`6xMNQ+QidYh+6q>N12qp)b@Qm0=WAaE2ACt5Y z@lAx5VRQ-mILIo|iGQ@@Vp70IaXc*8PWFdog0zuG0gsFLbXHU?ULwJ}v7m_~BQGQm zCrYD{?*$q*Z2q&SlkJ~8gj)kc!{amKD_hx~B9bYYycoN5pkyV)wB!jQ2}BI@GLe>~ z<50dFjc}0{CWsx_P>hMSDsoJ%<!EGAK(aLA+GM(25TtY_<m-4tgIugtIGs2W<1;uq zYGQJW*~KIA*n)~cv9k@Y&0;4cJrb*)mV0%VAUqJQ{+bDNd&K++#)GFt%VlvH`37Rn zhy>#ri1rmX6IAhn;nm>{ME{6Z3|J2FE)t!+M#Qc-hw_&nKCBUAIs`F*A>zbJ5)*Sw zXd-9eBY8>=dV(Uy#D){IT0X3(s$_UxlCL9w6`D9bL1|(GI9yB12|Lul*iZ6`pat0d zq?uriC@@b66T|@kt%#`sp_#<eggYrFjMx_<&4lKKpOiMdR16_8@jWjU9V9YLNFrJ3 zJNHj#ME5%@CNbWuaScy1@))=hsv4Gdb(X=B%AN&HcCLI{&_rb<rHKLQMWP#c6XIV6 zJe+(tan3-Kg_a#szn6SX**=NypAekzHLYLIo+d^Obh@eU7hy{^j`tHGZRJaO_)}4T z*25l>*AO!m0+FvFwsFDj64ujYE=nUdq41=K-9TF(iy|gDegX!JVK6`z&n9Rx58>u4 z6nVeyV!(LpJkUgv1+WE-8pt*w$>JHkRF<jWCxk!niabq>VrXx16OwDd6!6%@Kk<Jg zDP+&V)#o<$;!!56HcF0SI%!ZP4!4GAtVV2LZa87bpj#f!5ThS3=u@IKBO0VI(jhxq zR1-Hf_JLPhN35;L4V;Xuxc*gG!|4^GLl|*r<jc5rquZc2k%cV!6T&!+%834tvf!=A z5jh`JsATM5m_K4vnar35A~OsJhy|FO(u7yCMr6d=bs8-RMtDSxEivQtuhEKr<X^>C zD;g~kDUmdoBSO#E(cn-JHOv?5155JR<Si+eL`jM`qtz%pUnp;dms~5u46Lm{Z7yy| z_(>3nDU-OcvY9MgK6xE#;zD^KmN?dHNa;6MPZ^4qo>EeZSok5O-)iz}BG;0|Rzq}0 zc8N*Y8{TmHiS`v?0Gfz!Ii{fqdq06@DcNaI%1scONf0dHF6=*f4KPiD7|o!FUT+W* z6D2OJAR<O+!leywCN34CP}mvP(PGY!g9$eqZVk|6qZORj-!6+io1^|HI7Vrr4#h{n z!-<?i$f-b`MY%D=g|IzXw#a7`VOJZ#LbGDR`4Lf5<O+{1ENhbF@fzMwmRYrfs6Pik znCb>`J-JjYaalXiAbsSS@Fa~0)(o1Mxi(Nt`3QYXn!KS+l}Hj=gkx4f6D@*}9B5+p z%W3jVBKBqd`_qEl1YuQM{X`HkZsEd!CK6sW=UAW?aj|~nKnGm*185@au~NYcpNgZ- zRgsTglqL+CboIpIlxH0a@IDbs1x-w6c?%&$TPWfRLW~ZVa;4z(_TMZpPy@TrAYvda z&-27jclsU0zcZkS2BwtB5Wlj!@F3!O$ghDWYYm+h7`qVPi!@_kVgzU#G28yo1e3*d zP<$}K#HbP*f#$cEehm#M7(O1Zs0dc!Z4pJZTEtKES!JSZm&V3XL#H!{4BW#+VI!t{ zqv3419h48m4nj^E-ZYJ)k7*DY(;%%lUO{D?@J6F?;3~2$A5~+>y^M<~s{E5L)3j1g zSc1PQU&dICaEte$!QUiS7A3HOnNaL+ac$Y1!E1auYv{ZWAXj1IECwfI#G+e*9*HzD z8cG(C!_d9F02C*W#M0$T$dN3n9XU_#C&sH8iDiq?Dc&4yU$Iw0U~m`l8~GqV8T5U0 ztmm9Q=qH?05LhCukuN1{jBO(7s4x&H8Z_ZrvGy|Z0;GB9NYLaH%feIvL!pWJA+9`V zvca=_3)!CHjU%87S|cpZE$f`dJ-f(aV5C7baTWNhwmZ#;EXqD0w1^OA7k?B%ks*Kj z@S{)y-nox73Pof9Bbg$F!6T43SzNm^N^30{p~<3S6+FE;e6Na@U<V>N0h$-{cSQQt zv{vX=*LF&$db&<I^>I)rG5N%~RPQb{VR7eqo^XAzwXNBIhh9nc-`exLYHU~x060({ zQA&&WKVrzDL-bNv0+>ZY3wR-ocZk9Wb->h<bs!Ebw63fkLnY!?W!_F6sIk6sBl~bR ztloyZ0yL4OmVuWf4jNW~Y8MivTD>kND>O0xN*Fn>(~8w^Ac~yfo>kA%X<ng;wF5rw z&0f5&_!u$Px~Pj83;#g4*gCe{@l=3{iB#>fCQ$@uzn$;{O%xsSN5WayMb<Ua29y6p z#88<^^o+RC>XrRz3$0#kY0A8&5$zSSx|w)>9;ufJdF{pcCrzH(Wy%-1v!lHznoUHp zUg6t>QgL!|4D`3f0Hn>_Fi^r%sV+1^D2}Uae&HkfuwYPV1{{i|o7Bk_dl~LM?;z|g zju1^u5jaiO`^s8)b^o&wF0$$n+vt%C7;%UlB7Wjh{UidR+4&@5U&3s*b@;XSH-#o! zFY9@&UuvP+#Z}^75tfZj9p#7XizH7Z4LMqFQ8_?N0yJ4-(H7PA77h`9laEs|d{0C0 zTC4&yN-JQ?Qr|D(nN9Zfv-AuP`;MxyVt86I2;f!XtbkRFUMr$JB6QV2U1V#kO@-)n zf+GW(NM2+*`pj8x8w*W7E@MKnmE=J!6LG?T;_OzN8TmS4hLNDG(BR7X+IB^#Q5c<O zYKD2hh@^NLh|kHRh^9dvrcWLAwk9H%BG-zoTw<ZgcVUpXTY^4w(k~UFqe+Az&l8Cm z&7XzWWw&K2bU3U*YXjhM$}Z6GP#-cX(FJC)<w#cC{eIN_HNY(85keny+eA{!e&bO@ zJd{Ur>!5#?Z{_Uhk?h)%eyaz_kn&~JT9J=nH9svE@&Z{XYl|kT#TcP43Ew7b3fvW& zM*n6to{gJ{>%lmhNC~9R>AQOkm0_C)#Q%TJLFa-{YPC6$;W3Tper0;tRw*ucmrS1H zgThq8NAAKm)kp3;OwhzLFQ(FWLJJAH8j&wCS~WM+ku>sI-wjTINN7_f$a{|xPa-B; z6Ka-*VPNoKs~zWAQDW#n(rk5AItxB!mc3#a@JG7OS1y&%WM{^fCRQzi)RA)Cr+Pa; z<0k~ftKSu;F2Dw>cQrE39-%>@iJTM{0W^{BP~d$4OK2IfdQ(Y2q%9C#vh|8m9cPp4 z582ZUj3|Sz)?drWN@H{V8!!T05k=KMixbaGzFy(|#0!MHbs5G{Qd)qQ%J95cJ<0Li zLVy-Th#iG3e7w*gV*(QDOnmx--4ES~P_^!Od9OBv9E!S01$oCjx>Zpkpm8FYEgG_d zYoJl;ZtKf7M^($%Xxgo5a%_u&QfeI`#}W{1b40X$E1^Mc28(@am*t02mxi%pTp*m1 zH9qAaoUv)0+OvNf^Fb6=c8?es9)%_rPMwD}k(|;JTy)YzKIX(wt~i}J@UKA}(1rn7 zaT*$>i8Wwc6$SQi=`-?3eXtlzVo~T&g_=Ba@1pnXjGd=5WepWN<M#ZqM!mVtZuSVr z%C4y819E&#F}76pFdiyE2v^~91eirw;K#b%fd`cr!b2gIFZP?#a>Iv0Ek`U$D^`RW z-2{<duH7doVDBI}6MYz^brPq#Rv25hyV8cg+qo>&^L248thdM@@2gN$_0>Ab<Pos( zPR|R%>`>Wiku_>Z2p=2!kG9eIIX2M`QD1l+)~ih$BO~S-xe34Rg~T#D>K8Fa^vLI= zMP$NxQB|YWaPcTj%vksP6{@9hB&sHG<!XJqqHf@h(+eo*Wm=WLq0zo6`<K!?xIX z8gUiwE}A3ncW4#J_`kvzeT256iH+^dZ&%u;y|&A)H>l_{KdRLLTPQ(G<2%VqK&v1< z5Dep(-W2Rd(6VEA3fdx|v@4*VCul%byc3kdfR^N6sisA-DGl7sQJT0_ux3VR1)+cu z8umOYGWwqtQi4XRpE!!CC=BoFCyt0uFn2LR6Ty)9D6-}VHaM2=V9SrvM1xxU8%+#F z??z}Il>?3ajV4Zw<#~|-8j?Kg{;=8(p-Rw1^cqG56H-oksrWXLK}KOlX!D2wrRZ}; zW5wU1riI&)+E8giVppFSd5tlPs)HD*$`A!$<rl;sEg;YwvZ`Yic2A1bs&eSCxr8Pz zC9-AxN+HmYk$WXgILgqwMY$k95K6@Gsf1PnYYDmXVtX67&*HO1y`A`)4ZU&k-y5z# zN8`86IaePIUb|Sf=AUWbpT!1z*dR`ps!&mp8q1SCX;ck%Q8f{o;_PZ{F2ic1sVcTr zX^mFnwcyjh-yS_pWWLvcq%dV^LghLmTP3d#wc0Q=BU>{6eE8Gej4*N%q6rppKa?zh z783(I6%DU~>KSX90=6W{=RqZ0_32>|!*~#yV>qS$d=(8<TG{A%!e&|7#=}DdO*pxM zkJYmw%x{sqNjHSZM_wBccFd$D%>dxzvZ^a0oE|K1Cwl}Dd(g0(9cT#x4nG@_)IvCJ zgeG>d;q4Mi3?pgcR|QL&m`!{Xks{0`2`$4KBuN+;c?`=MfPd)O{hd-0S2%+=5Qz}) ztF2OD940b=fyYFl1;ZM-VW@i~a9bRz#?4510yJEc9P@bc$|Wl;Ad1GLnBXIgb!oY} z{-8C=a3GqvwbN)lkJXi04ZKj#yNL~*%xIB$?Ntu1t!~`Amz^uwRcfJ_f$4E*V%EMh zec3ctwW;hIbyBhMg6d!7n(c4;x7W^<PVTO-zSa9;eiTg=^xC;fmUh2uU~%d5Wt6l1 zc7>=(J?OKmcy0ceH;hIxS7A_h2?;WEwfm$+m2hnkSQ;BmTJ%W>gl04ep@l}U#v2L) zCLC-|ZP9#J7N5l-(IXfIS`4p66Y%d4^x}(&o@9=;AbO0XLf?S!lW@u6BZ<ss(lp8U zgBlf@^9U;$>@h}iT@EOHZFpWlt$H9$m<tlNI?t>3&ijSp;fxE-2l6TmO|UX)@+lM5 zt*BU5YG(133p3X+KII!F(vW}7wfYtsUfouzHDhz5G8_q3F&}s-gc^%f;1wqpc?!)z z@qs3i3rr1~Yza%6*kT6WX@+&dgj-3hM*&3^3aO#;3&Gu%Cf1A6V9zD}1u?!8vxY_X zsI%46iKZ48FTy9z@F(Qgn3)uY<9QCL^{7cw)L(I(9IYmcSSt?tCAJXwj*p8_dO?~K zo)F%KG+Bm*ra%$Hv(YamBG8S<bottF`b;e}Gt#=$5l9V~qNJ#58eUJt?}L_AZNNNX z5)w2dIGCCUax*dj<Z^2<G$L@w02M9dCU{?88{rhg0Lh3zw3dLFNeHrnCi*;SE<s+S zaTU*^f<Bt$^}NPF_*gPU@yf>$i4cTVQ9YYNy?SH{#MimV2m^yAO9#;enuW1Ink=ae z%Cji80!@}BmQ?X)eI7Jd@w}gx_cf+sMpXAk1l5%pJ<JD78<CGZ<T49i%ULCfWN@jr znflXMCF)vsSJv)LF#KpjGzgZOX%g2RDipN?u;|2m$s;d;l`trP0xgQV)^r!b!@1hX z7LoA=Spm?{IuUBUE{lxBa0WZFNY7LP#4-rN2uz0l&yiVtc@_j8$+l|iqZUAZML)QB z35G_pJWJDlaJfgIfi1kn5^m7s%hSMa(5F>1OC>-mQtM&VVo<&!VkZ4&5gJOOS{6lE zgtaLKHH-0&%n8vIqS0MuaZO?&E2Aq7vaCU?V(qX%7D;!@@C!=DgVE9_>yT)nWr01W z%}GcEmeK~EtkcTIO6_;CrM{jKJvqZG0_$FCqo7qaBR)3rerkchh|#98szj+%qA=K6 z=X6+R)T_xpFW;*~)O)EF-az<TwamqH(xxaa|3rvc3yK+b7Ve>G?yayJ&2=y0(lM?L zmza5b@%n@1jS=J0xVAX`k#+*sIcf)1GP0CW&(o!_=&@lvm?%*3<}}#dHEPL<Mm2o; z{<PLWLb-&nsnKF87}V(bLn^F6WyMd0o4yfNRYl0HY*EY9z_z7*P|+ZhgVsE?915B% zv=Jdh5nB@)wtvpGq6W=VC)4XP?P-m*q4wm({$x2Sb+@<~C^`i#3f~1PTLi5mX~kw+ zxwg2SYgiJ3q^U&<1ZW8Tvw%h%@P_9>bUWzeA{(M0EG{H1y9Y@mI4|v9wz^$HkzHd( zem0>{L#t)PXhRmWT08`Oll3F#bwLH*uOJmxuL_hGi!M8Bh%`$0P7KudLy8NLXnse- z(jXLb(gg*rP>Iw(kzog#Tp2^4c|>?vStbr!OOtQV@Vp`vz8VtHsVy}U`<6>kSmwg7 zA>KWoPAnPt9rYp?2u@Qfs|2)2-m)xOY})hE(6|uEgpfICSyk)M!6OO%M^FyVFkM~I z#Atw|3ia)}Fav+q!$?M6UG%ik^W^_{6jWG6Mra!p?SmUpydZZb=M5Ld(yEQ^qUeHJ zigTFmSookuSYnfD%X+dU9o4OHJjw^jj-9?utSA<)MPU*si0L@p0}u{rga)mcBcmJQ z9isxmH!w_N`i+F#r5~Ze;uQP8r~Oe7L^c*{$>|g_QHmo3X!NgQ9%zAReH2X_S?$mJ zpB+GC>Ure7`>h#Bws_WZuPPxq{4LQ=+{o~Ng%KL<J}ROokkv-vU#7SGWAGA96|kAK zrUn%^q|x$0aiiEQS%a72l54@ExRKbupd}x)-debaJ$RwOxlCc?JlPoBqDX(iNzwBP zs{2UuiIy26nkf4DjiwRJ>VAl5=A<b$v8#-dN)t*Oqc=HeV8+uuW2TTV*~jFV{7$8f z=XnFGg>iPLnXX}^5^;Mm1AVT-janz*oQ4~-=xyfp(f8&{6`9eJR2MZe6VUO=9J$Tx zM?x;p`?iui@GQ6vKH9dVrum00LVsrsRecX#;UNoJWNm4qh>lBbQMQvkt_cA|Fw~YA zrr1PoI@(kP3b5f}M!Gw;wJV6|+4}IuP~0#k7A#XCO&uad)tgvWSp(6sjKXOsN`=>C zM`<j1i8T#jq=MuHX@yB-IF(Fo@Ha%cgtl6ZU7UCp_6BMqnBhK$#{9@Hj;@?&t4MFf zxLp_zO&|_k?p3Ut`RoQIdwnz+*(whn{<A=t{8DCuU%pCUdIZL*Wpu0#WEpSqEMrvy zr0@Ih>MZ+^tGpku6nG>CUe==^ibDU|RW2Z6rq_1o85DO~uMrdUzG?Ll$`i<SXx)oV zTfg)_9sW&PMbt*t4i7n?)aYnzqe2}dX$%l(TF_ZfTA>5xy~e9F*Wv;{h`61y;lXQ= zOpKanwO``3D1}T)Ga_oy&5QgC%BPX>L=Rd^Yo!%qx6q=Xp@@OB2CJZ<<whh()D9Wc zev#IioXj7iY85nbS+v73SybFtF=*srWh)2eak&esYzmky=1|4_9bTyMIaD!dbnA&> z7-E&q&~ClZ#+F4<FsGlh)i^T34~d<5=yJ3gZf?*9)OPT(DLKLgjr8u}m%FIKFEe=O zDAvS}{6i6jEGv;dDz<?J3@o!QXx(Ut4^m9wx!e~X;X5*>6^?+>fkQE#lb#E2Mm(Rf zQ7jQzF3&`RnDod{wxu;5>q7A-%ZN%#942+3a6%XYKwx{xJM#twC>3^;h-z!ZjCm_D zwD~e4O?C49tv1n!F`rfZ0!<`nvker5HphrNu0d^tK()jWb@5uBD0*mUK{TwX8I2_m zW3_#$L*;sk;%zI;`=jo>7A#{V2#gjf?PBiR_1c&_*P(4M67war5=`Ewp;QrJhQ6kT zU3y{yqEZn{hVIF>`*3*pWBe6m(Qw01k$`qs4L*9;?jmve#bhDP$|hq)f<c#%lHjd* zR#wB>1<4dR`PjQ+ETl3@6C)a3MWh9*{mKQ&<D|3(_I4#lvexjkm`C;+S|mwB$Axx8 zi%W>#05|xiwB-tk5wD6iw90x~ZynV%G)ki&r>5m5u}G(TT{gj4qpz0fC052;wi+y` z4ZkiDtSv08x5`kTQAM*XGQ(gFy(HdiZ>0D<8sC#G*|1vK38jq#YD{*N7FCi~*Lw6g zWn2HmFx05^8n$S}%cGXQHV?btZT+^x$XI3ffu;hNvB6<f4Lu^X${Y$IOclNtqXM>5 zarJr77A~h!-7hq(OLeIVnTp{e&q5doJTrxVAX9nDUf7Iqs{)ZQtg}_rFR(_I6=GPb z0yvQXV-&F?T~aEiz#147({(E!f;PdG>I-Qjj(5KLkby;Lu?f`&53Dh_QG@Wfz~U!R zz0~Ly(%lybkJ7Y!<`|9$Y$(f3y$=EbJsM@(%)m&!0%&O$NsN_3MGefpjEEi*YTE1| zqTtVzi7{H$jW{4mJ2FMNI9@So-lvkkj&iFuh!LarTC*~&FB99)q_&{6u-#__*1=N4 zve4UDPn029DKVQV_#I?|R<#<q-iB4^!^6K3c&+HcJ-x9iQhY}7ePuTEd%F^XNL?p7 z>1YTMzf*H7YED(OVQyuVR_OlMv|*gOrgb}Xgx2nq>RE;<63~DX1$IjCOl%x^55(<g zYa<a1h7wu^5Qx@Cb!z}~59x8#R-twXtO!d8#);O!5saZU_$FS<A#KJ_6jak?g_@vl z_#+OJUnZm%tLd$0{t<0qXzrk4fl7wfUO@^8#lqyqph;q8wh1RzRXQ``nH3B~G%>Mm z*n_L(7FCl$-;9f2SDT?~%k9(O2v;kwieucgg<xW6C}bK+|CIHI;AtrptNpnt6Ig&p zG^Y61khNC=`99qaC}Y>t+5$6K3vCmvO&0ko$&T)szU@tRo6$mVd_BEe-&$NB4O@VN zh&=n-wS5b6YS>~q@)B(;7&bQmqjXOf1vZc!MAH+DAr4O{zs219gtU0Vw(V>K@B%$8 zgvQn9%D~we8?BH*$XmPD9P#f)d)CB@Y1*E(HgeymtG&XyHE8qF@9*SsHKQR$4w~40 z41vQO2ZCDfg)pk8`kDRwD3nE1FEdSrQcV%%Xgg>Sl7kBFw-O_}L(!298oCka3rxxN zyT1?qY1OLdPl!&;?l+1X$~7@u)qEQU&wIInAfY&>CD%XdS$<gWX~Yf11yx%24h}W2 zTH@(tbrAw;plg%Xz>0Ei_+FO2tkW`TlPS26;>(up)&|YlhO|Iin9VN@pV*>sK8Lmk z8_npTA^MlvJ~4gdVZ2h?&Jxcv2#VX(M+=mOvXsgJ9-*OO-`6A-oMZD;v@U#A{X`dV zsvd=XSiXG?%aRZ=V^Dfs^gQ7JVZh$BVI&q1Q&7%gd(z-)5Pv~lSi2aF264qd$PD|S z{*@XCF%&r9fi5;7H5wE!K=K7gbOc7vhaXp)EMrR(0pV%wh`k3tz00Wt)Di}EIDma3 zU;_ddG#E{mI9l_8k%CyNTuFT?a+j^KGyDZqdSDd;kveRfKhZo!U|SPQkGq^jz(Qy! zez<vpWsg8(tI#<bJ4MsET;(<bLjrMxL^YX;W?2H`tJ=faBu#-h$Bk6v>y$9upUk{? zmh?NPFP0#B+fF>!q$<6I#yc@(sFaa1hAr4f%$VL%AByb&1rgbPi&iv`;{TZ14nV`- z@aUZ=u5Iq4&47=b92u`ci>`779AWZeY@+TI*lc_;RD3t7V$VLr2i6wfGx2WdC*cN# zUF5YX7C|pAfJX8o7f+mI`)3u^!J>|k_M~`d!W4<#EkFpZHuwQdLQ!^v+hyO7DC(Gj z`;lJ2s)J_~eIvDP24WmBTWxBb(;kNd{h`{=1PChM_8~I4#K1u|rZo)s#4rpR;029! zrOiAlh=h+S#y*5lm5TjT<<;<2Sj6ePs?r`;L*B<}5n4q<)2Lp7duy0tm>928?m+tp zG?|RIZG=V?a$6xN_p^*e^oKu&6OlbdMkW!j0Jgd#t^kx`O+(FtbuGXn!rCCAIK`4C z-YY@%5}vvR-*X8al%OS6ktD=^1Nx$wH$e*wXaV(vL8Ft7fSyD`w583Fc!F2LCDV}G zFzA>lIT`XpfRS!-!ZvV*)ttj%Vj=`j38AX+R#?GgV-+||s1AW8TGbgxB1IJIs~Y8q zy~$PX1ND);xTwPHgXodXfLgaatb>k3>U1pK9!Az#PTH`?jNp!NJR`ffqAgXxGD3D4 zpX-1=>rUnITN*uuNFSX+$&qKa5agq@oV3AeNJ@0dV60R$Lx@aUmuV-Ico*+&O(T+I z;v;u7s1_Qt{o?^g(IwN?Y3pkc!qsG7=Oq%@CN#-cOQleSa59;M5PK=Nn29Wa8^&w_ za)`3bP-UkS(a^RuEgMekJ}Hf6qGXdLqQqME4_AR)z&wiB2>%QQ<8QqnK<Rk~KM`j~ zvob^^fOXIn2It=o@#fHz!fvRB`M~5gyxL>&c0M^V$1)pDAQ;8?c23K5L|a=e+l)i; z02y1fLtD0{YxD@6c^X{JjZ-H|k;8Bl0ZOA@yZC6@+>NR<Qw20BN`V3Qn<(uXQN2hX zt@Q~E`kES-sIA{Lb<>Lo?WFZOqMec!-S$<oz0~Z&x0QS5hM`q}G&O|!LlBe+<q^3E zU`W>x<865OlZZ^v`_SFMEKQkJaKOmT4KPco&(SL5$m~gJD2E2;0yozn$53s`glrhf zNh<-77}smKp#c)v=>0@rHWV82PHZksEM?CsG~|hS9x|qZ@V4ljaHPmW%F>UJfPoll z66_;X5!LsCJb^V_|0et)$m+;0Xf|g6Zj>fS<Q59;c^T=h7Vi}>)4~fV<pYgf(6OaC z`W*E-F)V@i?}clEC4;0sgfPlb9BIgGTfzXNuvV|ls;*d7&=3=`q5+Q<!oR;3*{aAc z?Sw*<#@Ff!j{=tz0u8>r(MuhB&J-Bd@{{37;U+00HS2z{1i+jn2&}cNAWSF+hzj`H zV2djaH4MImZ8Z?W#B>cR(9l}g)JrNqhPp+kkL-c+#U(R^EvDVuLS1@<-Vh{2v6=@> zRCQCTkR!iJGmLk~1Sa5P+F`s~>p3eqnxX0Vbi|+5ddXo-j9g=FTZ60x*NV0s{;Y5j z(OQD)GBt#fJH=sR&jYC$id}_Kl^W`>WR14Ju@#YBrnMbtQ7Xct4xmxweJX8$h%Zj- zuZgL(y|gmy7t50v+o&KIla^4Lx{o3nCU-`IHIQ>=R4n$QvVw1nE?YZ#gklr(8_Xk; z9__Db@OD(D4s%{k`zJ>PY2VS;!xf2EacX`7+*=|1t6+`uZ7Xj=)^MzbkFUC!`jolJ zjaEDM7Yy%F;U=MeG^wg!RmD$oxM0J<7>!73z$7cE-2#ed48#(Kp;{m{(6`&ueABRK z$oxhNz{99XSi;{3S}s-7hK^Pw#98nf2guyIEM93c9bAV#)zG4eTdTf&hOmjSfJ7xZ z`hd=$s1-FXDQjQ{d7nTiZLwQZQtzH+j}fk_Q3pC;ajgn;mt$L5X}Q6nMHnybozY$> zGcdsXL8L^|?&)FtpcmA=gBmFZv<z<Op+=frmL+e)SO#do1}ar>sJD#!NKj2f**Q>Q zN6(Y3XZU;(vEEdLP@r(LZ}@z}Lb!-}?b5D#8R`tC!0R_Fgf(}iU(ZC;WVEFB!M21L zG;rs-kX&NHZ^*8S0VH@5$XPH}U^%V;k&J|5+&)$URa0EZS_CMrg7^vvI7oDL`vTPD z*;Le4)^@a3|5VqaPdjMkCOk5zYQ^vmElp&LDAYv%q2#(Mx7SI0F+NoyiePcJVxC^= zW1Rq?liP^}v8CaPN=@~v4#g6aD^)BD>PPmd$yE@sQ%QZiFcHGvM*aK^T=VX<KP;6H zA0jEfQ3Hek<`YU2Je#DEP%woZ=u8mn<PjRx9@aV)i{oI5Q9+zpPzXVs34TnKk&BwN zy@;1JGaCBuRe>1KEeLQQdRI{Dk!pdiXug+@M$E;aO>kaoF3d=~cUA9hjArNh`6^<# zl(zDzYxn9S>D9234u_!=`^fgEq;L(xTKS&VqtjuQM59=DT?6?L^thoHjve@;aA(sC z)EKH@5jPwIO_a9$J_QzSy+V13=ndHrJ+`0);MtKTvZ*L7XSV1;V6h&~VbV`XC>Lc& zt>OKc6vum0=%5-Cw1R;ILPIVWa$OXnY-o-~X^=}}g1NAL32WORBn+&6`E9U^ylufw zAXYzU4#3A_g+oL#QNbDN1l%<@B`SPD%kYoJaATCqS<+a-hi5Wu7b&PYMw+G|a)W9c z(ws%ixp1L$@le<eUMW~82SpAVn*S1LvQV_f3k$nt_3#C}TI~hqF1(h)#RDoLXc4Am zbslsmzy)J<KhPXl0ADJ!^1M~GcsjX|YKh*i8RIvx8tEQJAq(ml6axm)O4OcWNdgMn zs-Py8ReY5uROy7mnF_JkO0x7{qE{mPVi<R#*$%*>>X(g88*<gG2st3y5UM~tIYq(i zIt2+@$-}M%5wfsIDFU_i0Hp}Xuo~W_DZYvbgKG`<3IqFz?smt?_3t8l7XQqk29OEs z8aX1WY2E$4$+vHhZEF}!-IEGbxb!ziC=M+uI)hWW#tg0}B5*?=h}F(N9{wm25`k*m zZ+pojJPWQ(9J#{{;ZTk^N`v+@xD;_(rnCz_R^Z(%0!*ODC$MA@YZOZijA8Mqum{j$ zAC-SITnpNpt|Vnci!=~vC2Lgym<33`xG~yOU1jss=MC8qG^mQolquACqxm{KUgQLq zo<l}yv=_Te|A<2{k^s$#2$cwXI-P_dHjGvlMgT=Lte;0Nnf*uzz8WOanY3@<a<r{v z9m*b~Rayan7#5qSpoJj>+S<gv3K5A&r{RB*A8gzjMb?+=RQFmm_-U*O#jasAuvF)> zJ3Re@X#Lnovq4q2()XChwq3d_Wf}QnN2{8?lQ%8w3tB-`TX$%*Jzz_ZODodUw~gJ7 z&>=9MfG7By-tHQ<i-reBbLNFu&A-(t1Hh9<@?{h^R=l}}_5ylui|TT#m4&2nvJJ0j zOk3F8+7g(Bq@CdXw(r1e+L$4>I(UJA1F&V<mT`cTw<g#BeE4Hs4-7#XB^1)WZAsO5 zMWw{MLdISUBm9BFzd)LpI2bC_g+xfxum(Is-%9WdpsFfP1e(~es8H;JLZAgygfO%P z2M-iSkj_3_0~!$ILlr6ObqOPC6bhiZjNOLFTV~F=*F&HMBGQ5u9D_KBPg5oKIt(<# zb5kXF5b%?olSV{kVrRYq2_FkJX9?YAV28pO4svx2A3E5tl)$i=Y8o8XLIbD^GxpX= zB7}zMH&`byP%UXGBCigkENK#=f8yRc>Ee+EIi`Zze8wZ0v4<rBe9>I3Ug2P|%=3l; zwZcJA*;S#(!jEly9cC<WPno(03p8x8D*W2om5k*^u&Jh*wn(+Uc35Rr$Yk0|j))@- z6f&r3u>?HZgbHl}H-axfGgrgFT|})~mM)@JP-~vZqFvi~L8>nKmIeShK*qmB1kW#o z__=mX>p+T<I2W+3<<$Dg0`K1uz9ggb3~hTAvvgH!1<}P2+xkvD56qV+dwD-isKQ!H zCFrwc2D__`&^=$Zt<dR>^v1|;9=5;t1{6ETnaZaD1y^{iLPdb0)Rbh`#12|X+MPZu zR<3C%Iis+wuI)uZ=Q1EXOce|oWP;KxJzGi}c5{RM;MwT=0>aBzabF4uR>1Z#-fms~ zQ(X<y<fmywF5+iPYk!8KAXXg>LazA#*rS%^7WeeW-_1ybaH6JGW3l1Cqlr_O(SY_J z|FA>hn)xw<?NDiil5yB6M3EGKQ@#Rf-a6WU{KFZ2r$2V$pvIX+bZG8NL>l+#{zsd3 zPy5e*I5n~PF%XLKpa!T+*k&Ro;R2z}HzSYG(f-H^6pJ6w@0^VVq}r^78<<OK3J(+D z*y%{*0-sC!PO7wJ)nNjhHBV@H6fZEsPDu8IN*$Vcc{sGIuJXXFLah@Kr7lK-X=^_m z;}}FD5b2>Oh{qnS_Q7*vOLo7XP#-FQL3J(+8L@SZrVkwZ_Dl`2+2=tknn!)UUO`~> z-;OxlfQ2apgfKN!HenLffEq$o*Kd{y9{5|Uh?mE*`KL_~(A1eV?}K_J`01bp=UHq# zoGu0$z?zZxVHcMe+@NKQkF2JKfhON4m>#QCXpZSMh&Fa{`A8ZHd<d3`T0veb8`2q; zQJ{qaz+0e&WOb69jwJ<2l(Hk%EGizoUYa%V!J2(^ql3l_9`S4=GSvZjeh-(&5mFxM zX3z{lAsoTG(Bey)R`0X#3=0aH=x&|lDhv(*4H_f25El_vP)ke5wL91c7^gs*0<l>Z zUICU7v>-ZBLAhaX6w)I54i&)#!B5fx3eABCV-OW24TCWqkz*|5RRL|X78Rt5^pd#B zff3_E@NQW2nKS_F=(7lWMm#g7>EUOI6NI1+NUou-g%e9K0nh>m067+d!o>qECo&6% zQy~%;kXZ;o;poTpf#yA|2gmY0%Vkcm1sWm=H%M^eH8OTo!@-!4Mvf!^t?Lv}c@i=~ zM%sg&)F_TcaWZINLXP*8{TUj)7DM4id8%m06|@u^&s8bJ#<1kkg2InK%Rizk*lTG; zKSK?LYE9B~;*Vt%DoI8ggJZHB<^;dQ0=D2Mmxs*WXyp@I08-1b0QLEeCc;yvr=l&u zE9W39NTBAVy`SV9Okd%?GZ6^^a!zJjPdDfhpC5sH0vDr}nZFU)UduH%z{yR@CN?Qh zGdeW&>&pZC>eKw0=80@OVaP}}9g9C8`!GT%YmXq9r_?pxBhmFf4cpb}=Z5u0IP&Z* zFx50HVRdz&YZ&xl*9x+ENnP^_2Hg**Tvbqb5ixKL*0*?h6)^g6+*So<&>`Iz!u*ca z74|)t9W;@qV7+PQnTiH&wD9ofq3qodn|>&Jj|}(IC>lUFDE6CWt{q2Cr?S>l()-Ej z!#}q7V5JSG`uxPvVhC9dKVqF-;M^7%M;W>&a^|zg+!kQIA_xZ>W*QligvpiU0e%an z1R68*g^Z<O=rw5Yoby;j7$RYCM?ibAWl9!JkSVq_06lup#EC)i7-$jMQy6SwhG6(F zlwZSn41v{uXkCMTMIG4~+oeNLQUUl5NcbtV>vyV;7!dp;c60$gT3~V%J<Ze^k)_no z!Vxl&yElVj2s7c>1{N_81pV59WrG06;!d@2j{@P3k&~uC_fXMH1tY=%QUM#u5lo28 zOEK3ZU|to+*p^g@^ME)&K*XsR=Ye^44#J9<49w;{X1yJ+!00G8@o}&hqVu2`RM7+$ z{+S`kL#OwHsH#i5K~(q&`40Fo)|?L?FK{vs>&sD52$J&v77yqtjZR63u#kj$W2gEo zWp@7&3!Y<zpbG=PD;zR!iVDpPbQt#6VbqMOTlq0Z8eyt~s%p<tcLR$Dq0HWt2&^VW z@QYRr^1^LPfFq|2jii3)P;Ybv_In_CT`?K?)3@izyE)D$6J-o+pNeNkXdbrp$o(+B zp6@n%mOsQ=0HBY8EfCV1FtbJ8VmRoOvQMj6MAEd`zlOMBtk7fiqp4f6tHA6KHx$J? zRx73}@a;ZC+d;knqEaKI6)@+Iu$}BI96jp)+F#K_i2lz2--T@$BQ@I<_;xRf`)Okk z!EM1!H#5=FKr@^~Vzl6<g6sbAs5`H}wz^+;RNYTw;x%$NAM__d4Ud2gTm7KmfPvA0 zCctot0Z0*rfz{mM5gPizTUs_+?*|AofL7us8q`&f^;4%o^UOv&_G$xf3$#Sh>e#-F zVqDOGV^wOa&=ufVSz1BSW|ZK8hT2uqY@jPHq(l+y2#<kstw2<Nx&ds2fqwy-qgZxq z)3t1gLCS+zHNC5Wo+_H?82ln?oP9C|v!5FdlJOY$9Y~9gz{dv9UfS~tvc{kRNT7kd zvp}QrI^ezGoDk3g<(JbD#!1gBlyi=~8!&DH&^Ra#E%8DTh6ar@y)5TZ!@5WReIf=I z`$~L!R$_&SWt$3E8Z=SmDYcN2R7V)SWq~1N*&xLShR@>_-7=!uw~!_x#>M(qJ=Q&O z9#DcI>_{tWphLzr$mIoe_@jHwu{A{Anj{ZVIkHUfcu<7o*l!j|!%T6uloNpj{cE5R z)2IGoFk693;Rrea{KJ5jcVwbK!)#HsabeC+j<lcw<_&AvlaI5lc?<|frDPp{0;L&9 z6L(TQVRQ{b1pu!o869CV^p4R0)TDNVNxKKo?Ze&`$AKxH=h1Gm{cilTte$XvJ9p8; zRMOCn7&n?TV$Y3XeISuH6npTudU6a(D6P{oth8*jcAa^k<g_BP3U~BD6H%U7LnXuh z+^R_jQwz)A9`$wSUGZbp*3;Lb%g$|nE7+`1KoqT{w(=|7vCg3Ht0gfDPYv%h9D!RD z_z8x1Y>QlaMCQuwPFC%6S&*i+lshox1gE5Jk2OY<X?>$CWNfQEBJB?Oa>89en*UK` z!#qNrg5p0hTmo_1w4HG6)Wd-3Hi`XrG>|!-Q8?1EO|Q3IK+BM8fsL<$x9cut2!#$L zd}{+)*Uv(&ewGz)O;#1))lTUKKY}KXa5A+?=eV7?Php^28hk^wK=g(L&g@k{WnE%4 z4@Q22Rxmd#kyadn3YAfd7TN$=6xeE_eT)n@Mpv8H=!5n24A^R7TA7^@Rtbb3LjaE= zyFu%JU@u^9X|Qt{`?Xjfr6o1P*>8vrDhSy|&2Tp0U@joVIGW_)nuuWq&%P7m5f+^T z27NEb0oHGeZAvA_Bb#@SaHbsh;LJ!D7FicaUQw3nbjjBR_!9*=AdqVhtCQN1Ohs<N z6!(nQY`9vEA`&zpj=7OX#)v3j?gp0Z$3~?)nr$4Gs-$dNd29?4cf`+gC}ZfvcIDTg zb(f3G;#jomK^!-5C-A-HNg}^(qAH0k<OaDFlH3(CKU5SgW6$kUQZ;lGw8X-MikCZ) zU-5iRYloA9CPzB|R~SCUKdihEOSGFg2+`%Vo3bb@0a_@VrW=>owA0Qi=z~fY_66;k z5Wg%j*BYOyOi>s;sm$&Nhj$~#t0CpxK=P`vU7UZfb&VZX0?}GqPy=~DEsAd#$2L^c zRv)0kROpN6E9U^fP$R;)g5~e+@eW%5|1o)Icv?RUpudMlK>Z&aCF*liV;{((JJWV) zb~ygpp@5@^LQWp_*!~Su7^beM>fMH_807y(`S0~d2Y67`aCYN@hlQK<#H}7kp&tX> zmyGlvcU|dzH%70UQQSbP*q?G>0jTn{`UsdQFAb&8K=mOA&_^;j0~=sLoC-t)Ezp9- z6h>&)0u`=`i~x;0YfNP*egT+IIarBb0Ol7MV3qjAqu8M7I1lw?#;QkVvkW3=pcRXV zE~gAxHqBduw)n_vi&dKu(6lr+Ie7@cB0{sM^)?jUw&+V@FbIIo>gW@|%qcB6Xa%mB z(2&T$=(b9BbCxl(@<hl}JOF^GM@!L-W&)lTX%JCNqnm)IL8;4rs-!s(XFUo{iKAyD zM=nE_p<*r);Gs~e!F)w+Hd|y7cO*@W@yu({jf&76#+EuZrLnQ9A#f!|p5oaf;SD&3 z8D4-z8j5hECbjoNHB$JE*8VPIG9l<QW4aAUNQ&?$V3?yqiKAv*)4qo6D1`m0pN%Nh z6I(8_Yn79pF>2S0zC>Wf9Mxk&WYv)-V#ARJlaF`vXm;?V*^C4_zgTWHYxi{=zy~z0 zm>>czIiS$HARb~9hMdB&?v=&_M<K{o8v~X=;EXi_7m18V*ixPa$qyY0IAu<DtKyIK zHbWfLw%aVgSsC3wHc^{#5NT<zMWV>nmJjf*1H6#HK4TPPf+qGaJ^)(;4TjG5H1-{M z+K?4(XoVSaRFi9K4dBr<efqKYl^8%7Q2<g8X!0={*Me;!<px@z9)jkVWrodXVd+JM zsgTV=PU*IHZw&O?8<ic2a2ox`KxIe6Ip!F1<iSyj&#JS?kwt|&Sp^ci4<0xkG`5U^ z*#V@XiU|gfb%Z(?F)lE!J3$k7LCF8ikU&kQ!<~L~7OYM{23mKt>~-#Gk*MeYbR^{u zKMZU#VaFdc0FJo!BE68wMXSnKPcww8wf`xkui{98Z-4q_!>MBmsv|NGU1tH6T27l_ zTG~JQWpRSt$;l5vQPBs%b7nT`?n+QlP9H=@6xKzGUE>SUFbX<5iVoF|LD7sxz^MyA zMs8cZ3oMYaYU=iHWez}M)~r@Pi<=3+-*7SNzp~VTQKr~tEkz8Jwl;y#o;boJl(xPW z*hw@MBTF1j-TIi}MzjUwuqk;ooGe;r&O9(=c+}&CcP%Y_b_`QtwWX!U@GhC7XGVPa zwsr#F-f9|wm}lLH3lv6cRWZ;vU<v+IMT0tZ^ai!y|45P7q?|aos3Td%s|dY_a^41@ zRJKu%uZ*Es00XKyIS(+N!1w`%1Pesq3?+gW0gsk(Ae}CNb|+*!3n8vJT!3Te0hNF_ zH-`&YOO!?V;wUWR5JOBn6}iEH0T+s~B)V3>7D!I#0|5FJ(g#SuY}Fx<B-)DtN=!0Z zrH#iBbx7<ea?ldBgy_H+I)y?3Bw6G^fYV_yX&s3re7g)9LMVPL>C`&B19AHCNkm~6 zf_xj~{X9zh;A)9}#PbqGs^Mv<@y1_`;UEc-&8QQIG)GaN&_Fb2K%48F0&H7gvj{DT z$)u-&iOd)b#S#euV>m<s_4ybD7-5MRPKn8+q4cHb^P-)e?H_QKkODUxT4Z5KV;ZcM zdLx#YqSAsK!Q<+d$sj@9aBH#pihwWd>f&rLc&d)BguxQi4dXxu)H&fveYWkmEL3?o z(9rCn12Dx!L){^k%(4Sd=TRY3DNhOz6YOM8Wq_TD<&K7<OHh3m7;UnEUS|U|S}B58 znq#L@$NspRZP@n0nK%sR8H}6+VCC?%Ka!RZY9_Vy6j4hj7-fti#dU9Yy>?YVv9F}+ zE3Wz=qc(dpgc(=?glt!Y4d5sZFfE4FX<{L0H*$aY6DHg*&%6O=mI(W?7Xz~lQ__zV zO=g@K`~p8hCv4FE>Nj8F3`JxReqrQ|<xCLS2Pl}qeC&4a2qy!<Er}d<9G$B^d15mL zf*pp_AJ8|1Jgn%jZm6ggb1oxDU{Wj<4H4yFqctP6)S%eBKF<JJ6GItBX+svTX~m&i zrl<Xx-b7!S_5h(1(`4-<0n}J#zds6zS$lw%lBgWO=%sq^4MTFAl!-<Yn5I;$SVZ=& zVoRc)sQ9XMj)zY6r>f?@s6>2M^+0imEL2c<Dr5+B#3m+&X07Cjf!&=W@KuB)Fsz46 zKzuTMMnK(1-ZjFsRygYj0I)#lZ0s^Z9x@g`gwB?$3gawrCxRpP)W~Ro4&a`M+rzex zYESf#011)gHo-ca?_Hr^cYrHZ3bhY=RM6KyY!t|ssF4ItZN<Je6w2(I<y<xj`;3Bk zR#YO>0<#Fh1Wj@dqyR8o(uya%LPxUX6H3^ghM-nsRCDz-5uE63sA!1L7S4<E97R(& z6BHOy!S_!B6CD_?e3FE&7RM<vVt=?=Il>i0Q%#_V7ww?q&MfM>`Lh_Ii=V)L_gwOB z0Wd`dF!Y`@pa?t8o)ae**CN*hbCJ_wgrwJEP?_h%7=+g#>``UGiR7ShJgSZWg7=0Y zG69uDl_`J$G|?uV7mQJ@I1k!8vIdBA%Gx0}!th3C6C&GV`FNpWlVh)0EDQt}l-61* z@U3CqQnNG`b)1|6M;Ke3HH`Iv!;SeA{K_cC!lfu~2}C+W7Lk!i4DJI`gKK9#0Yx0K z4>acLh$6%Ub>-C_<uD%jxtIe;uxi6fH$<J}n_&p9_4W6GC}*v<;jEyfQ-ko*2s&~$ zA#z(44_Hkod+<s|-BzmX7x?~YG%BE>x={xcWsbozOm{nuKgNy+(-Mp*{KHW3-$_pw zk|&TFQUhY!aV95n@#4Nxa5av@)gUFEhVj^Nt9{xHlcB99%nWSk#9-$DDMfjR{7=I! zKvc)1MujWflP0&*g^@1QI}|v^8llFJq88#x+^q0Z{W_LWzI?Wo$@e$Q2<Y<K48)*F zplkC|Ous7pQU<-JvA&%s@x<gwZ}cIq7B~sPaKLeDheyiGW%{8AnZ{i6TmR()dQzNn zLsAT@p3RX>(DK}fVmnTZaU59|xI+L(>1ZxvKB%uZ9O4mdt70%K>sgqkRdT(jJ4+Ko zu2YFBaxlpI9}bfETQ%(L(4mx#XIN@7G8wQS8m+#kL#9R%#bgg^Ie$PI9Tgl3j#U-b z#p}a~v6^HoS?#&5g5G+aDOP7J#5iq16i{cCMw1QQTw(wzsn+WO6B0hE0xR@@%MLNZ zQNOj%Z1mX<^dYtw(H#Vk1=gd2?evh5J%Y3)29c@J9^@5M90hvL+7)T))>E-dn$nIf zZb2q$c%Hths2c(-=BygX2K6g?UY|hjlLGye-wws6ukTEm2w+S_3@d1h4(TxUIHSH5 z7lt#Z55r1}uo`eE&oZ1oGCcedHw^_yOx?5e+!90)LWa&xO_P)86aRdkD~iF804zWY zw5G{V0C=jRWmrP&v8`#Yu!4DnmUJvyMJq%-O25(2{1*5u-f@HiGR$6qwh;ngGn*&E zU(xe|BM5@0y@?#WX_)tRL|Udv<tkU!!+=RF)<T4zr3a`UDjew8JF_F_wHm0pA1Cl8 z1$}NIIV@rYfj|P?qafr4>jE_4rR*vZCM1LM9ZwNvp@Q+YfHKG1cKQ+1b1*5C0t?d> zICcUdP*z%VHlN|x3Gu)<O?HHa4dY{dKa|RFGF~SpM{d`8-y=U80XbMk9}j9v5$}hu z;fb@N$oTEsqQKMvte{$y&Pepk9|9DqxAagIfP0k6TEq7d2O_5`tb$4bj^?SX5LA4n zzzy0t{Xon{9q4e{Bf3>kQh+knI+_ETC`#`tPtn71m*orXlu4uvDjMhhnvqNUxKjVK zUHA!M1=)0^a{7DD)8W$4nLU^3AZc&v)zeARQEB*|B2sjebUSIuBg(>|yqFn0!WWz` zZ46s>Wsek0;j~Chg+R>Fp(GfgHHlr*mZ<GWI=cY46TDG%KeX4tF(yq+2=mW?jT`>+ zQ&XIQPNI(oj9wid4-7M-sraJGkU>q%%pM!9CGF})(RZYULBNL4a-bgTx5EGJ@b$YQ zq@m!hQ^z{;)71U>eZeQ1t<;f2_)OE|70N(27q>4x%87;@j(`9c{?nr&uuu;%gxs=b zsxdz;{{2yhJ7)p#%_CsOwjc;;I7@&4UpN9Fj;6M|NxouR7^8?qbg_TXQ0V+dKWkR} zSqn!z6{Io}qA$dkf%pL+0QxNrfnZr1gVV703(+6pJeM&v5aWBf7Lf~L8ju6lAa$FV z-2yrYnvV^KBoN`#0x}w-UkX7si4JNJ5l7=Px*;8CUJMH{6odwpv?eJwvje;-nw~}G zSi<t6W<Z1!CeuWee78`&VuGOu9W!YOR0jSNMn(^MLMW!i$%Ht~j$`nm;+_F7mNXBT zBqFBCYrsy%WO?Bp;59cy#uDo|dz1_TL_qP^5OP7UdPW$F_^BvzVdJW}(x_pM1i%C` z1;(Qrq)J-|I)KNaw_GegoX7eCOkc*FAWOhCf*+%+3N&B^>u;cqLiQdetcX{sc&x+U zh-x{e7Df)X2Ig-k^yA=}F}fMg2b(0JzmEXW5sjl58(-iA5H+sB@W3%lXGwrJYf<A6 zgccg0I-{xAFQJ9LQQ+y!xuat_qg()K7zK`lCn~gr+(ipfia16tsE9|EjKX3ErNNbR z{Ni{hk}{Z?uyGa@zJ3gIUC;z#K?}Mw3m8&=qGPmzvEUgM>R?Ei!aOe*4hvDpIp~%` zI~|j66$TaRwQ!DgAkSlLGth4!F5&xCd!vAF6Y7Mpg`lEI^RWSzYGNi?-sg|Rb3of` zp@R|;VrZe&x~izEls+Muq}H(lzL^?kMYK|AewR}{Jlb$rWG#St0JOq+kE5dKrvWE0 z9rUjnm<K?nRi6RaU#Zb*oPHj;@r*uI6*?9TukrUOls)!KY+IXQcShGvHE%*`5nqOQ zFxFX}Q4V3N6+%EuRTLP9;z2%&GjNP}q>ccNM3X7xj6;UU{evTvwuRrWbuB1#ediyJ z`lpg5^+RYp&iy6A5Fzp85HYbfHUSi~;{PUkiE1`%2?EZ+>=2q5Hp0)NG<mv4QBDBc ztx36};AO%)Nlz;BVfCaT4K+%o(I0R~cQCO+BeS&lDDY}6U2k-}6z)D$gj=d+gr))d z0iYrVIRPJKY>T4;=E7KP5w}W1S5{(-1XBCw%2-J+{BA?^vFHpC(s(1h$%WED)o zWkgN{I$~Z#R>2!p@ytTB3zW$t5GX1r5;6sC^??(xGln=33PpGZu$72s22?U~`zK^I z`q*XB<a1)^BV)w98ROI`4_JB2RnHLjnBxuGh)vQB`mrbz5oY0eh$hHSWZ;Jq{<fk4 z-O^y&;C`V{1rTr#g&HU`G708XrcA<sJ)1ays-d_S!_De6ZbW1fNU~tC*ZMc(bUQTK zFoI)IaROT4uth{sfp1R*C2xjWvp$NNiQQr~irNN<Gnxl5w6R)bJRQ^Ej3vSQ_f#ki ztFI797OxafoS_RavZDVOxwKP3`v6m6e!bB+vRLm(5EeohVfXZJOT--u`$uS~NwKa) z@B`9b_0hNjrC!g1sB8dCW54c1Zfj_aci)lFZB5&6(ta~y6k232geHs}TxwBiqBhD8 zX~bs(`uqqD&T+~W4M;UsS7n429OmZq&(Z=r#`-;4M4MFe1!x7o`$xJ;6i@@u4905n za9oP~KK0gUX~QVowRWC2`V6_P>ljvZ)U6loe={9P_FDv_;MF>Rk4;SQ_;|z~0}Xn$ zebjyJM-7xc1f51jy53C;L)-iYVv1Oywgk#!I<@($$?yHF_<rDfUm22o_VMqJ`t$mu zu5RRqs*<X|x(93XY&aSTyE#Q8p;MMp`P~%*!mf6I^rOz&%>0Nw(G8XEU7^Z$=pB{b zJ&A3E)XJwfPRC0-0+fs@@gBBKRJLAg9fP+x3P_Xxro}T0kEq41E$%lhUg_@S)p+oz z+TmTqVfU$a0-00?f^J}NAJ~89r*bdA;s><7DvYQ2?m!9#uc}}$#GMCVk|BDNB6|Yb z0f1dl2>~?mm5tIo&?Jdqh2rZ-cT9FH>KKWl>M_I$E*i!N$1$R)Hb98#{V|}Z<^l+h z-XBw_&_WVMs5puq;7#FDy6fmbggAoa33R<sWywp0!FjD=<5X0XQIY<MK9vj1hY*mF zP8f!VBECkrNHM_RNnyw+fdmP#B{oX{2@`0F8G^e3&&R>xLX4Qms_-G;c}1d>^nwgX zTA~i3o+oNW7z7hg(V}lCw8+AsdB@_vUbyvMTZ>2M`Lp5@Sf?0uFcs<XS<KXkLyWpi zud*QeH}bm{-bQF?qLRhG#GFmkP-J}%^!Ctk1(dhm57t(w9NdDkYljBT>T3Xxs{uA% z_0>??jahS`xrE{4)z^TdUTAU_czl@4gSiqS6dEF+0q85bn$M8$bZ9Q@IT>kD*`*xU zz)ts?%`kt)1Hch9^bAIFJaPdp*DMN+sn!r93)yk*jaUaL1qaKc8lKJ&N?CC&+$T1C z0=l~}ZCg;20#QYp5KE|cT21qrCCk-sbVe<nk9x9K=m|zGH5~AiJw|eKIz?7kQcpD0 z#3exGt{Z{~17@UJJ^G_4l;{H~ig|}Ra_l}}ETk424-IRX$(*Kz)pIEE1IA+^9BXfv zRJ#h1Z?w2qyjRG|45T>NUKj;j$f7lO!}k?;A#3~rE!p&&3+gQxyCB?-rF)I?I8U<; zA#j?UKsffMiZ#IC0uB;LKv6fe!Tx{t&MixJ+-BBOsS)%N@8tX^cK8J-5=>XO`?!}M z{^j(8oyN{ANfe1|AdsP=iE<Vjs<unf0Bk>5g|1;l<W)~rp;Pg0%!BB-Z+4P!hRA~X z?+uG-EhCXlahyA@B5IfC2fjM~vqE#8Cffikh2HtBJ|r~MnyopFL}37j06WtPHX9>M zTSZuiuLccCv7V)%T<ASAzLB9_Ev5`=G>7B>R1c!nx=z*Bm|k4YH2tDEd91~I7&Gl$ z06=}eVuH!WLq8i;-{@H_kYwe-DbTza)(FCk4}k~@gK859W0h|nRsJ*fhM^`}mx?Y* zi<1S2a)5YMFfe4A7aeAl@r94@z_hN|L<Sfl0%)}Zrzjj6Ln3T2sFQ89n3L_A0)GyN zQE;3}fNWC}XAqIPt8biJ4kFp2dFVVY*iVLK_p>TMKc_Qba~ap-ozi$gu`4LrCG>x^ z3+aH%D3F^#ZZzE1mE;M*ipy^N)CNJF*(<;YjsM4S?{Au*Q&TS1>N{V2er!6gb7>F6 z`3%Qp&DIRSljYy8<!0>%0yg^J`D8rhz7g3us7;8*aCM=bIa$YPWgNV54KthYqtWcN zF&hWQuh@M$X@RXBERU0QpbF|#A+Kum{bD>*3rqz#Bu1mRCPgR6FlS*Sjo_jI+9pI& zV>p)@$L8jTGWGx;r!0cyF@)39IrL~@?nnc$;~UPST6yQuACi&ETzzOQstXU6F<9HW zVuft=yfy0`1K5=8dck2(_JBK12W_D)8d~afEQ}9@CN!B}cTgxKPqm;jD#k*s2lVqs zlg($=kof5i&YhTag$xc@vgzDvR?az~q<81O4-OheUmDo8;fjr-M;f>m2OCDWQO}w} zu@T1f6qCVF5pf0u92q*5;HMJovvIhs-#0AXgLg7DG3{&9^UHd#L~=&5)E;$w;$%fI zD^(g<5#(EIq{$7sm;*Vki`P3H#62x;nA|8NJ^W*8=7Mu7s2~aXiOINl7D{j^22?-W z+<aC9<Sv$M24MF0tVsEfbP;2I)$BmzKCFTEW=F^cn!8J9xYpED(>s;9L(2uPu~h*( z&W?RL)3bM{=UW3KQ*CVGXMhvswsu9_FHOUv8F0E5CCo5{{(QvRE3Ne?d<-(}Vg2eC zwIB|vuEMWoHFGK<S5nd;s(ugc2?TOQo%2zUdQo&$u^M(6QNUu<itt%7HOv^qKN9uZ zPOU*T-ubj$W0MAq^1+pxnTZ+YgHfu+XHZ!PoQsvTsa!;juA{%DUz_&G-i`|QQy4qo z59g{)Db54HJU4gn{yap6w7~%jS%6>}{|%C;QkB{QG?W2rV7wFr+13uVplR?x0&5o3 zqkvJH_mUwx)I2R|cO4<hYczSQ3n9>VOruo?=I`Mt%*&h##^5fI&P_E~4l)sf&!7-# z(u!I$5eNfd{ku~yf6sJX9q1b!<$8lQ&pvo1tC*jDYG<`h(q$u|+@$$4?dDK!h`~8r z+#4uqUE+}IJ3fw$jyl|UP0-5g!x?IC5!8KX&xoCa#5xpur>^u8`TM~-CnNNZycY>d zuzJxc4xR4pGk9%JS#y2d)9Gk`{^|YN`Q<4v?Z3Ncwz*+H2Tx|4hriWU7@YP1oHUN? z_|o4G0Sh!hC9Ux)!>Ugj%`UYGGj?p2vnWmQN9Makv4b&oBd0a5C)W7RZLw4!fB2!g zd-5XU>mPQpHxZ1iiK*-)jA6^B@h!Wojm8c<qHTY32jV2pVpM0CPn1%JFFc7+eFyvE z6|cAzCl{_kFNDMj*r_cB$&w7hDe53A@F5#Bd<n_EM}=!FHha<%nv|4z7Xy&1Ate|{ z9+k9Er$SgV@(xxIu0|8aR4``m5+^dJhp$lxkJT3vkWEjksal<&<{Xmsgtk0UY+%BB zRQ$OM6UZ_^0%Y_A=w0E8QI73es-P`G)lGEPn)oZk@03v*2`(x|HYm@#s5m?WOiT){ zB!p}(>9FEQgdIaNJSr^<ik74F;AaiXC_vgR33QKR(f$+oB7;3XuDM4bn?g`$;ZRy+ zUZI$1>J}1w=iQ=w8-!JE4;VAKC4p8w1X<I+o<tL}E;fUqy4J|{TlfW(s3f5y89_>Z zryQjvg0N!v-3_Wb<dq$?>>IN3*nBN42XpErgYevC4E5W(PHUO_<DY@3I!%NIA@9N) z$DezQXUxs&(Qe%4^jOlW7`&aKj?53L1B26^fh#UVYHAAO6Ul8Q8sOuLzw+n1gUcXj ztuZ5=MzDDpN3@RP&gF5WBCes$^h(d-y@!atU9!qswky0_fB}DXUBb!ioO#*2gPKzP zkdY8E^}}=^JCEe(#wD8?OH?ghO_9*lHfx$&AazFGbEVDUpikHNAxN7>_V0Cn{n;j% z=C7)z1g`ioM6<DCXsiqfbQ=6c*G`6*tlf{IhoT}D$)qOUNnalej$LdT(9#zl@XIzc z7pWQN?m`XVe?ZS<@Vu8PW^EIFYKzR*nxOP)GxEa8Y=7?8NZ-ZndjoE?-|wH^SUwG7 zFm^+@9LbDPkOw~k&~XAEm+7xaW(u8a<<0_3U!z*~;n(juY~f~_gh$TYsJ|?L{e}f} zpQy%NUvuAo|LuH#F{6dUm+YF{vKpt)r{CL87*WN21HI@uT9U6@%Lfkgu<#^-{;QIK zP*Et-K^WQhsI3;?dqx@$)Ed+hkR3&d=BiqFGOW2KC>~Zfi^gf0j>W;KtEHS{m?SHY z(v1Z00L3Mnd(lE0*u*5$F}0p@C@p1<sFtbegr?6SdnZ_N?#ks<bbFO-p6gscWYeZv zOBc-xYFwtskL%*E0j5DCmfXE)M$ND`co+zH4%HaQxRN<2Mfbu`R-A0VF3fgh5GN7e z)5Hr)-UUV^hkgl4QG%IrEq>>F@Mg|PtNFhNZ)Ow3i0cmG3{Wy82<;kG?eR1rrAIrO zhOtH{MSwdOLEmHGB8VA!!x*7sYcQQ)&>ye@C?pL^JmE7z>w)`bYoCR(cD-i258=X* zH5(hD7B>nc{(D^^NxM3o_I`muh?YL>tC}Bsj<-*ZtvkrZxdto1ML;wC8nC>DJi1#e zmQut^2W1pUnkPbs2*5N797j{uASE;Z2>Eo5Le%@n$-he)uu?G;I9;atdqAEbbs?nh zOootb+JT~dKbIx)eqlQz8LRJQwY>n4(V%Cyg#g3Uk#sAhT%vt%(2L;?Dp;72YzL85 zQwIcjFdky6f|TXxMjfIBsbU0EGnulLZsEbqDCgxG4v);Wj_u!`?#gqG)9uBrXs*^l zL0z&!x6FrZZU#{*zp{VkqjhE!SgnOfwyZSqW>xb5_MLz}Y3I$D`AgEdsh=qLv9<q> zGI>MU9cA)MY<#i-hk(<70QaYZec$GzzN63Mipozez{l~M34in7zsze9$VFe!4NXG4 z(U~*;d<>oGpc^9^05n#{Ea+1g>1Hr`MhnIrV6uv8lTXtZs0Q7D2S&fh)XF8x)?O~? zhQ=!@Qr09!KIMfKng^c#SA8NuZNDX|&~>wQa{7B&naJOu9=qBcf+E$fN;QxbmXR!X zW|SDRpyHQwH_Tsx{65wLN$br#v#N$ey7UaEe^2FG`Zwc`QPJ+^t!=wRb-iUFUqyUE z4v|4|!KOSYokzir;nomJW$D_WgU(d0D3DrES2Tke4nQTS?8e#xPyzkhP5&llTs1+l z)d>;=L>LAzs6n8z?Is)?!tpvfP*oK-q>~@CJ(K6=fvBdF0jeCN0~-0!6ncv0&~O&X zW{?R6p0JM^wPZ}Ukc@%sL@c;HoK;oVGh_skCA?$TLLhBU$&2BOWCNlUH+kCZK^)kp zLLKfD=8uA>)nFPswk?>_prk_7K=xruUpvmVBp@4fgq@BAL``ulNSO*;$?OHSkJF^U zRY{mOp=W5O9g>w{h?N(`f<=PJhVgPub8vXnF2dFh&Cd|Z7(Rdsc@Tgal_9ip333DQ zG^r^b!X(0@;yM}hb{M(rIvIi*kAO6RE}%jZ^!^8F1cvD)RhEyL25>OHudD#s3tVpC zq*DoH+hR!_um^;2T!GW@AlI=Jg9EIF2W{h~hKvnEV7t%QDK-Zs&=CM2C){c4at>8x zM&<No%>~_#Pj4%|1N}qMF`L?AA#bZp>^XV>As)@ue!Zc8){VuSFzbPz8sHH*l;Xm? zQ28LpnuTfy`R6Us$~c^YiKE^;9QwzuoM`8CO<6;jjE61#ok-qU<HPm5+pNyq6_-DL z8+l>ou%PHPD4dk?+o9!2J&g?Ih7mql+T|kp{QplC|MKblk$s7im)==pk8MnO5t5!} zh%-t4v`;i6C%T}L;W3lsxl9?#`Du9f-JQ0GBE5CvC|wK0Hp^i~=(>hSRHkaV_qn^Q zwD%{7%5AhyAH!m1!=uc_L{sV74NU#n>;{rCFWkUOng+~{YgVP|0rO$m=lOXQQ~#Q` z0_u^;n{WSKsJbpHw`hb)hN^?Rzf0+m`w=Fw(P3nvu3QE{b&z10xti<Um13N0s3FJd z0R@CMlreo)sL|9~dR_J0$x8VX9H+kW_D!q~(vs>lRxaPV{)tF}C;`AE22<FthE;)K zD8E6R9`)i+l>i@J2bAQ0HiJ0wn#((_aPhY9r1X)Icej*2oq<_)W5(n9W56lPGJY~I zN&^Nn2(J}7X+VtC)av?k6!<g`6{8k~q23vI1vlkQx6eoI7VxBQ1&m59Wvu8X#$c&> z@Yltnn-WuVsd{Aa8q|-!_x{#j_r1osKL!7)2o@rVrySeN<IcUQz4OLsDpo|1(YVKb z3mwP&YjA5+356(WQK=;mtw1Txiemrk@+Qo~P+6y_l8q<Q@|vmo;P06gPx3X~rdUpl z-#g5!(^-6Qp5(z3*TEuXd$BD0Z^mAU@>W%ojmpo5Yiqy3v5>l1^I*wG*d+QPc>Wbw z-!gLwZkao@SxkriM8zJ~nKhT*9Vn=X*NxzHS{^DXync+%Y9*bfgL6H;FlNewQdZNj z=AdSAW^O6lUzFZ~0;pQr8$VH+awjF+u@f<!(x2yzk<geX)MV42c}zBUR<vU#HS3Zg zZleg*lQj~X%!e8jwsViH!m6bppa+2;sEBnz!cKCE>X+DYPjc#%x=wNm8B`e2C8tQE z<8MWmU_v%m_pzkYT)$+gb)5F>0wH8%5-m8Ie_3n#max1GSddCCmn;nPyx?6_sB``H zT;r9=y^ViwO30sfrL4(>MiykD#@%UBmW6X8^)~lspeAQM+Nb?Jz~#R(?Y6r27$!kV z!$tA_j+XbW^XJo{V&AnMSBXDy`<Z3;>!<Bh9Y^bUVf*j-$sFg?_T{#FcYMDCEI6a~ z2*IrF^bFz)7URrMkKotA5A1UzL{4tvy@X?S+2Ef83_7hQhYWuEPeu6H8$+<2z~d^p zZc$5w;VR|wn1l3al<%Llq3mAL{k83H1z6y$n6PFes`_Iq_JGLz)v+ONc`T}Vlj+hl zuUgB@U%Dhp!b?L{Nb-(`BrHm;C+EN@e2OxbQN_u}!mLo3faBD%DC?x~NNIKpy>O;9 z{_}V%gmSGFiwEZ`dQ6eSWA5Wd{pB`_$@&o35yLQjsp>7065m4(7D&S0&7DzJ<M=D8 zR*;WCHo6FrFk3z4bYfpww_3BgFd1mFeJzQAZyR9@SylDw7-67UO1kaTt`ZbQ<$+_D zaqprnUBXAP90)YH?Ydvm9BOgerkb~u1>-rUnwJ^G>BNE%{15@BcZn<&Ej#wuQf}*w z9gDRDzr5J7tP=UL=yTspzpZ7LNRiFTZ%7X`az(qM+vf=zU_^^{yJGci(G~3)Un(i+ zp+K2<TL<rr{1K5GG_M(zYhOe0`Fax;YYgeTok)_k%i?Ti^A9=8$VOcSr^h<CC`0r& zL7-ff;_e`tM_{_pD4O9-inQo{u8LeS&_O(n$IP=RLzzuscP;Bjep)g9n@7+ZkEdpr zO4B_R^&{@`hKdyijy$C*)w$N6v($oIpkfssP`~4iAZ&{TIl9?u8lA}u_5!BPu@^tp z*Rz(pi@1<LAm&lMBf)lKPLVCQs_=3uYnQ5dD?HlxT6S8zm1%@busz9M0Mka3Jl<(r zi@iJsB%2ou?|JYpNaQstJ<e~RS}j@DMG`2SvZ$%>y|ZB7@6G))3lBUB#<8o!zK5;{ z&n9ys@M9ZJ*4j1byBK%ps(<~oBjDOoy+1UlbL<m?AU{5x%s0d4(?{(5$Y=Q*IdF|V z<5O9dJ2ITxLVN$|&4JIy>Xrh?MWE0tkv^~1!$-)T9wBwE8`w8>()R8#&O@GsDry40 z@(71E;jH^kJnWXw7p5nCEXYg2D#SM;Vm|`!5r0o0z_ir++OD-}OfuYT7TUZaAk*!t zkd-G=gpVn$#O_c>V_-<*(B181FER#*b{`cYE6+;V;?3s|*^0f-C0=vE0P4Q%j4T85 zBZDxxN8>Zmti<fo<j97`6k*Y{Y|Jj>ottXus&O$|&2ol23S$_i@q@qq1hjHbD$)5N z@R;>lOcUbq4#`HSS1BQgX>P2N@6wa-WHFK6l_rp(ldH?4BJ02_y%J-drKZNHBob9{ zMYgQMTe?Oz_gq~i?kIwG=3b_-%JNo<K~~H{i9ju{zt_x=iMO($jNt$)0^f+=O?10r zJ#6+hfwLq_)gBjkcwOIvNll`mSr8D9X;6qlum>7vWDUMaR}(@uG@i~WO1RBpE|zeP z2Ec<BZK{Um7nH%8PgphdWyhwh4tv<nt*AFD3UFYi3d~}bZ0-P`>tb%3nz>vKi@9x& znt1V}tf>kUQ}X5PG0Uyj<=9Qbo9ugSIhos4VwPJlZzS80+9{)_u~(C22q>@L?qkDs z$FgzejAaTZN|$kxii{VJ6$Ju%lVbm@dYq?~Nk#<<*L1RuzQf%<Rb*W#J!*lgX8dBA z*d6*ogNwkhUeiA<!3ebzUAJPMlv&WUw0X~<_J7rCMC<MKR(0Bm3$)wMD}#-0s#yD0 zPKl`MoY3vb!8BNl{SqKc_Gd?JC~%kPObpXaC}NFRgF%pnkL!DTYdcvaIBeNDi|p7u z!iVU6V_QV^tH<MI{-arRQx(5MLg{){S%mN?SY71N7%VY6@T@V4Vu|(=&`~zPMCph} zyMQS-*$87@`(7E=(8ldD`lwa!if9_jqX}@96V~vwM@S<D`Fw<Y#=hVOqm-^(|Hl{n zM~gk&cSS~%vN53w<EM1TVXAebOpokLBS;3{xj*fx1&5VmDyP+vV>3*`9?Eh*nWNBU zI*yGvStRzq_UXZ9B+?3!LmKIbtgUJ~W9iXX$a)wnu>|`z{d|N^7Fw{=0wb2_U!(3W znPy)yRZTn^8br}dlAF?QLJbpYBb(lLwyy=qcO_$z8-JfJSl}$kh9UKXXjARa4KeDG z{c2Et{FJI(Xo?GzstLl3SxdQ&1stc+RMgHkl$#?o8zyNw@8rrwXNxS0$y)h8THPco zHag*9b|uR%SzRdK!Ksy~7Lk3Z3ZS9yYI;*3Ots+Y>!<xOE?dB4z&It#ZLD?z0v9H; z8|qVC2Y^mAz&*&@qaM+9Q7ZLAc|N_=Y`+}V)(R>a{(a4ehtj1jSaQ@AqRnf!jsUo0 z5ix$#9zSR-UrieBw?O^kP%UZ{k|PGNxMP@+Q4uW$A|9HcT~#7kNzDgN?zw0?Im_PA zG|vj*L<$Q?4`BkLS`E)mHOIb0-PmLhj#tU1H>=#v-b!kU5_e1x`>Ot0QEl3`A!D@v z*%Z#{t45L1aP*qmm_6~1`p`AEL~V6tG3hMjA<b*8N~ZZmFMSfLza3p#Hb+`*1^hkR z;~Ag-L)M3~`azB3+6z=ElSv9lS?w7WNyBPYv@O#uucfgX95!`%H9L|_jI-?l4ATDo z)V*o#k6>y=l)?;Ut!z)B7T)*r&n(T1(5dGBST#^h%-3j+xuTn`IwkQA1Wi#`JVjGr zXld8Ty_3`P9ChpW?%j|;kds;N^Gt%KNxxeInVVV_UjX$P4-Jt-H>M%=KIzkfh_9Sx zxVVQ<GAj?BhJnQ$AJM`u%c-+V9dvmP3!UJw-8QZAM$Ean({K9NrI}9>diS(B+`-9* zAC%i}Ry%mN_aE2aV8;wi6aUo`6*VSQ#Y^~b4EE!QGJZk<83CwdYB;bU^WpR$>!M3g zm>HxRib^#ht{9MD4p|ie5V0bcKt|3=VNc>}6fTjWKZ9h@Dh$bJNaXLKbds*y)fqM< zD;yiiD)@iN2;G-ee3bb~Xnc6WoyAKq^;A>%?7A*dQtDI2qKHI1p>s8zw5saH{zy|b zH*(y_+7Nsrp}})mhc$?zIms9^;}m6{RJlm>%Yl{TWP%G}2}l}eb=)V_!6ZVDT*^F& z&OvtTRpu$ESvi<8e?-Baq$8N^O|z-^`H(@CWJ-TJ2JE+lDR0GOOe4oDrb)e}=zq(+ z&?pz8W<jNsWOI?5*&oy;UNH`gM#@%<sr<AkCiiNx84C=P;j;~`3S~mBAx~h~N)=Ja z3L9J0iC<McUiI#&<Co?v#em9Uq&J)VXkez29c>x?<wGc0r&(%6n2KsLrVj=09FYL2 zbvaeb(bD7?B0jgxNQ$Jg95*_JEFs9;=I*!cC99du>i-_`PF_d@-OE4H&hjCu-0>n# zaO=1U>b)^1_)#aNm^aF>v4Ie#n1%FXo!c<imsPVd(SzKVDOUEaHF#C(j#7^#FP6$| z-2z6sd9A+Y1{R6E!ahxlTz~EoqboM<e?7n0n%9*W&wS`JMtZY)xakb1ujbzXn0LR7 z12AuV*(Rm^{nP&5`K|kV`;+^7FEo1NrtL<5oe9c0RWfKQn~YP2X!SbLpWZc0J<(9m zEI^oH1pC{IZ0a??d`yc5@yuuYYx52tbI#^Vj3%qKE(c;NWgPtkvc%B4tTx1SMLJvg z;o}rS^S<H>vH4e%k=8cZJVMcaJB*`(V4^^rF%<{^S-Jn3B7lRV1gFh*07DOCp(qi$ zs`@LwNP;~+h6v~p-YR4m<YXv;2P7i0ZWEUt<E`g=UBiA2VZh|CDj8#;4Q10|$Cj*_ z?!sdaHdkJhc<4An5e=az8i8Q&8D<%Ql|fcaXA%{t-K;2CAx=QT6QyyHF|;{LR%t2! zDPrtbE(17DR<Ng02}&yvvkVB~in4!dA0o72B8y~wXqeKuE^}2ajN?7i_)r+BU@rP2 zB^M-0kenDk1Liu(YPMF&y;4f`i6G<=zbd19vtY=@A`}QzlVo+l%Jy5!V%SU8Vm#D% zge+yXFR7(bZbD`)L=OYyf$)qaYcs3xv^QGD(iv`6K+`Bu(QZ}OE!0AYnw2I_Se(Tz zR+B#l8GP0AhS))~i!-)D>hC>}|44hMROF`#I#}O?P8DHQx0yacW1N(DnRgH@9RpH1 zElRG#YqI#a4xLE2hBP|r(VZ%pPGq+P$=jC+d~r?Jf!tvH>8B8jnULv*XB%Wor6(@B zr^V?#Z!<^BvQTzZLC8&t?K1>jR4lKrkAgO>ecbw>G*j?Ro2Q3m7!{Ojlyop*=Y4O; z#-X4%%oB%Y!XbeVqU6N{ujUjAHCc?Tzbb7Z*cTd}h}twXlz4H~6_bf(Jk_jtGf$XQ zDi|!ilH<K3A?_cm=tL#w{BOyg^!4}RBYh{{VCp6QvJDTGy)HM{Je985^F^}x-2L+D zlI8*k`$nc!dgqviNDhdKlQRRyzf1%VELpOFj$K+?b<5+^5^E^$lEnFDD%%E%9p73L zgu228v_;CMu^-E)Bob%JfM|k{GUzOSrLu<1dWf)mgQ{v#sYeZ9GOby*NNpoYqUjHj zC_#sV>QG=Zy*UD+qr;QDxfZ+*Pn3|8Y{%B&7(TI_NQWnZ!)5qn0<)-2SI{+IdRjWX zL?2#lZJk8x6-+fpp|>!$LDX_tteoB7F3Ia0*V7lKwMz-ZB&;<8)@Y*ih%|l5f~e@6 zu0HXMGTK2hECWrvMYRfPfkam<HP)g^ih2Eb*u==v-w~=ycGtA^$#i;S18HY6SEx%i zL`3Cw@X_;Ur#l%PPS|sP+r#P;oT2C6oFwz7ig`Mq<57}{!meHp1viN9f(_DpX22)V zH`BkZqwFDPXx+_D0q((RhiC_SUWqc$Jn7DCOjXn^VlnM}hM%2*Xi&o^Q=&~HNQ0lg zHq~A>s^<zFtNoVo<WjMuZ%oNI3Oo8Mr}@53RanMnOb{M}|7{KIaDc}Re>?M?Kfd|2 zoNRxsFjMN|Z=9*7fBos;3!`S7g{#N$bm5!R%O@z8bOX7EYV6bVl{^OO`^zqTXGlO5 z#M@|`W{|hx(Bb?Jy6>Ss^XH>IVt0icpx@~LIei~%W6h1N8IeKR;CYsQCC;pxRhTSW zp|MZMnAH`021B?b_01=GiHA5Mm8R+ALpGOF)wi7y2}<46OY>6VT{>`U-XJa4hgZEp z1Z2VTHOf@FJ7%bJ7l)@vzXV6XdnSVeD9P&T%w3n4NNLzSOahYu<h=+ysO85ZY4URs zvPoP0B%Rbr-%S-mzB#Wz3x&Ayoyv})vlt8SFi>fQf~0}@HR4L7qtuXvu|tb9X-cAL z#h>Q&I3T7pl3_L&dNH3ued^_fao|K3O?}7<8IhF=rgLFvMq;7~jJ}=%ls^iWuK8P3 zxsXk*)D0W)MAC#sz$WEpHJz_M>+e0Zc;2#gS*2iz#x!76oYS((MCL`~J&Tr;*VKp| zfOiyOU)*KcY)Zc>R^vq>OOMTuJC8vctgOc+6&fT<Heps!7G_(QXzaBn<FeJ>S$j?D zdOw0A#+6TmyERA_H0V=XAgbmO#1WaZx0k}oskiC40YUtg96UCtGNf!;o4<f83<Waa z_KMx#&O5qe#;PS<SFh;FAIFC{!V-`4{3gj_drzMEJb){*<{Koevko%HL7`I8XgYDi z9vL(06}Voq<$LkxhG754Lkl`K!xD;Y$9^dR&In$uo<hL5NOMsX?QGRJ)n)Z#U%H0@ zfK4*y#t(nGk0-E?x8^?>i|u|F8e@_5wBq_4<{U8Y$iCMtfIO+g^S-0@=wth$8r>dF zL=!b>6cgv|SZJQLSZCj~<A3HwP)229)UP=mR%2R_3Sm`wiuBJb66D}Nz2;!DZ~ZkS z$wNe}hIOJ|fLHd)p!G_~{^JW5$}+zfzDfBQz^Q|e{VAfyR>9<zeSr}FlRyY{VSfN2 zG>h&72+^fdZy<zP$v=P)o%qEAA-Y_i3kadc_YWWhjr8#Y2+_l9jt&q)Qx0w*L^t~G z3kV@z{SP37hzTwr1Vah>2N0quM8AO$O*Oh32+``U3cWyxhD!bbLNF^XeE=bvOxq2F zXaFW|AOy1u%MFBRiWqMoL{kWT0U?@R>J5Zws_orCh$e^g20}DBOBWEL)s-1IKnPYT zeE=a^oPA|f98J(}aDo#Yg1fuB2MF%&?(P~axVsZH=;H3~E{od|++DtX&pqG0|L>nY zeR^i9yX$#srnaRju=-y`ZvD|StXShU{sUB~5tU?TFq%I092BXK*JdkJ=qy?&D#_rQ zEF3&3N*K7q6bRR!ENDd&@vXsV>2?sL5{}Lgq#QyAuwqsY6L4r^-*LIoir~CsanQsX zafwADYl7Rj(f0hA4M_%PaNw_*MIvd~h6&(<kr3QaLq(`g%;7>su))2I?6(2;vi#zb z03JQer6U+kd2^c^jjR&V6^gXT%gm7knoUm!H8c_x{}Wb>Wa1oBOoH=j3;YDp>wnTN z;KA4E<Tgd%&0Kr*!PU#x|5cAeg2kuYB7@tQfC-I6`_=-ktvUq%#He+_iIHSeUqgxw zj!>lxp0>opHv58G!R=)x8JtZCB7kQ#HwnBEi7XU_=0-Ca#Q+a@V3=4>1U^!50S*n) zWx)lCG(6-A5geY)aa$yk^ydt6D6Z`6h6p@t$Pid(bqCWhp+V}NeqTtL)*!`Nds>3g zF1!4K(ZH(cff2JBUIVL(y#x$fkq4L)^Yq+kVi=V|L1_BVsbHK_joQFKsQ)E^ch2dD z3O%k&-w=uX=u|HNmuIp8d?N5t2lrr>3>Sm-hGF=f1p1HlITSp^uFmrpvB)ZLaW3md z1_#ZgeUCohEeK6M3@mC+Z5s@)JZ}xS$f5y;rxg0~KZY29Wu$F~96*3o3$9JuHd}-c z%Q?N6*HJyc0P}{n4H14WrKBqu&9Vf{R5j249(7wm4&`w?2a|mK0}8&d-kVqieyaHM zi&##qM-ZCV)H|#gi;obv*BIEuB!j%LU<wtrfED9Q(jyYdjJBs3j3zGr$AM%}=^g~h zj+9#m9%^SgR4DHF*_H_WTk!)#Xm30nSg3{UF!-^%CHOEVlELeLTxeq5hTUL>bQ*A@ z^*^UGqmf0ujzW><D853H9*|0-hB|fM!-Dyd4Q{*KA{opm7~zf}G-YIVFr%W9L6Bl3 zm0++$xVpf@LSHHa16fpH3|4>N3>ajDq<Q2}B^E3JwEi&7+UBDOGyd;rV!>)%L1-5q z+-Q(^`Wh(kg;z9SpoatxVZ~a#ETBm5AP0~`cQ|MG+k()d$o9be_-KBD2*v#)3O0I6 zIAXy-kM`s>Cl1t5T)Mdb!+}pav=CKW_bsSUC%hQ_Ldj*Y6||abK)K^3B8NI<d4dOY z1m<&@k0D7YhhuvXTBHfsEM)K1P(u>}n83Y7VBQ9gPlgJt1j<|kFpa)Dkc6tP5x|p9 zWrN=UYL7=Sp(2(uzuX~6bBMM@;7b<3uN`#Gq+>|29~|IYlU(<~rj)JwpDoF=w}Ta` z<^;CYwCV{u7*`0=1bKBY2+|b(DzJRR2N*Gl`gw47K5?1R#Nxs7q1j+Ld`LpEdBIpc z27ocSYzAv2^Bm0OoUV-_PY|pfNvNF_m~P|zM+ES@H*psk=2KnwB9X68xM+}Tdd^^+ zgl51v-R~NRz)O6Oa2YF7kpD<v+_nXah-eN*8&x8BSAiS{`jUjYMEnOBHV|wwc2!{V z?SHi+fxfT;Q+=no8BC7erB^WT7Iz`Ukk01_;QRdUz}n}D8-ft)v>y4SLL*BEW90ru zHh=o@7>@fMp%gjlS05lw8d5qkt@&XXD#ilQ=_f*Ju!e(h-2)vqI!ITZM+U-UCdPZD zTYJ-_BUj}b5GPCSM>)y5&I!IYvsj(fe`8U^TjNlDf>TYywX76VM{8JfW6{2{VUyxV z8neM2Lon2~vmD)9bklgEgCZ)y+fNXuY~eCzR7Mv~>t)qpo!qMvKu-8kpE!jq<|kkd z;i)vlqQ})8!KRMTAff_e>_|aye_)9<k2}wAE|X1>5ra&-rUz;ANxM)UNgFM3V?GAk zhGW+0@p^t&bN>jbh<D!39zJ6AO_R-QB+8wvS5kvBNS$qtkUTqalVwdW%?L13fPs0> zrmk-0l&B36KZmhYW2}T!NraTM(8YpCS{@~)(JIHq(efh|tDfuj`>nz+QInLW6?~DW zHX}Ci*RZDX@iL`1+h%SyS6du6s%Vj{rhEcwf;dT}smSnqcBMUPzB$|Mk4RZV0UlGo zBZ5GNo*(wsR@eC4>1Vo4zzM5AN@^tHudDr+^6HFHf0H;zL#sNUz%lZM{R>`RdthRW z8ra=MXAFwxq3u>7Deo9<@dqfi={LE?1}N0V*854PVw3F>u&|%!c8wj%kO5iwl`3LC zWg^ZL<b*zTQp#D{6({&Vof^9q*-beT!m3syv_XZ)k2c+_k@?JACYM&YO&s$v0E7jM zK#GON<}@|#(Qk<cxJju)RG6#7NfhL?w8{<R#b$jxiltQ&Q#rQIhdrg63%lIf&0I5( zyLk9Wc)ZO_+KfN>vwbay1fZ16U@wA{G64T#%cGFxdG<*X<fB*QrLv;7ZCK2^><oYP zR%JwS$5~6PwR*AOU1`b<i>T6@%t({dYr{oM7JOeQ)xf}t*5)b4CyQagTSKRA>Ys_R zb11c-cDFLR+Gxa=Hs$nv%BHMTC6=t6EVHv|P0C@*FX|l?!+O1bD=oM7i!1yfiZvC} zz{{~DL7O5GN#n{@DQEllQ?G@{;!)QHs&IYEeeRW1PO2Vy`oMVoCPwSiO6^d7^Cy2E zMfRh?PcBW?tQe$h>qahAn3V+n*(rh2QcbxGw6P!cqfj<)v~sd+*~>ri7sIL|1@k<) zF0C_S@b9i_ph;pNht(Y9O^-1FRBwaVNtFy&H+5+%F!PdpOXqB}v5E!;-ve|~8A7GY zj4s#Z(uPb<KesxcZQ?CjZo(w}jL`!TqIYs2_xoJwe*RL27tCt=vZL=UI$CLA^n>cp z8lx#eR#i5BE?_o{QMM>R5u3^F#5Ku0<oj4DbJ#>aJb#IfGy7F11;OH2r)I{^Mw8O7 z&<Fr$!uFq5Gp$UfOyrSaoO3Y)@e=k~@GMlbKETWdkDE&{Bv@kJun!I&6CwRq-tPd2 z0~JiOlrXa~9XA>THjRPrCvYLkSTG&PNR-~RSFAypQnI6>`3img;g|~ss>4(<;W(^} z(jshzPyNvuT+lyejp48i1{<k@`%IfuMpYv;6eSNWw#lVUMaPlGD%CN|qzUA?^0~9^ zx<~E$Mi#ZloG2w#tuc4ZT3r(5iCfA}+h;vAqm?ZhajIXQ7;p#~)3L)t3lHQ0|4L0F zFjy6<|LM?4sl?k%yv0a!4#pAv!!B;z%+B5IY&Fo;)Zjmj6^30b{kfK*TT5cj0@CLk z`$x!OUtq*zX62>&d%%(7Bt953{ms-Z)l6o8GqEJh+bboj%fyU@0)5=r6Aj=uVhl$` zM^Fwp_+r?GdWb`CJtXyJd*j-Eza)^{hW?jQ*i_Bs%M1m}O(hGT2Mu-=pPAJXZ8jgB z+GSra@ajho1UJ^%_-C3#)cAmGT}Wy&w>h4<=VlBJczWNvjeY?g;pb10<r@s985Bg! zEWPDQ0nyv#LY2Rod;3};`{wg;<<^onO4TVSIH8oGagK-tp_Il>sSV$V?`Tmu%3K?) zD|3LQqvH8Mfy^phmlE1SE~HQH{Fe1cADce2ASEpNpDSFM<(b@D$M!$iV1{;@B40v; zFe};1GpR-#tS?HYvcGqnq<R;Vka|5SAE_=QKYt-n8uKYC8TmmD0d2F_QbdOiESPw8 z9n#jdza1D+q8LY_%VQgbX6(6oee$*cq8~13p^X;*0QZjrMrL7%UGlrg7p*(?CfzH9 z*HF$Ns0nhsJkcMp(4rWWU7(8ba9T?e0&HHE0ueG<_2$FUqUdnsKS<U<_hBh$LK&cw zL{C_Jjj-<K7(gk6O8iu7l9g~aFwOb1h`jqa^3(Mgo{ib%iLNjxRlAIB_Nq2{IOy-= zZUtJbdf|{<OH4?*WGU8b)sNZRFNu77ICO0#AI;OqUQaHaar1{7Y@pm6Wa|*u9;@9x zBX_ffV@6IrWTwQyF^ec~td@l$2k|w*RusBNDr7TNp)q_H8pKCx)O^o*q|B14V7qEQ z4?IC1bHb~<e5-WaVW`Q@oVX&D_6eKkMQ1$AP#XMPW{iN*I$z`((jf4@1x5BW!BT=h z_nb$+ab?L_%QQ1v3sCr{hD~rtP7zxR<aN$`7YHbHzLf~+-BUae_3=S-jM8Q?h|b!H zKxMoMo1Fs22Ufdc;S+_5c)EDRvoI|Tbx)kS30{dR9#3j3ze-O!&u!u%6D-7V{8$r& z+2^KP{M7lv+G?#OaX~d6UOB5p$_tXu%yY1U&Sp8=RxmDIV~bKBJj&87^nx_C$6U>F z6jcHtQNGe9Yq$&xvuuREMa6*nw^=%6KLVkU%XwfC+8kP1ZsS0aoMOCTf4<irqCXY0 z&!{&Jn(DNYnd?+Ox{<_}qS?X$pHOyl6?__Lqlbwv%yK2Mr3NOzZ@G%%s$aL$Ats?# z-l9~V+~ECb3<`k*93rt3v=pk_jgYHi>`&UibP^7&d$P^q=Lqu}{5ymETdn`*k}BLX zL**}BVf<9Korta8)wW8sx!#u{%6pUtWo$)F^Eb3n`nqsovEUwo^bum2j6+YR`9HXw z&~Jn3_Q}ZwzPtMG#V0qRj46DgUOxmP#~Qi+#oYDt7`EX<_Y~Qm2!z5DT_~P*h1iQd zUBAUIdWiZs8pP<h>UpwG4OL9bm-@X?>C2l;i1@;@lu{}=$FY(Xj*LDyDbF&%>(?&g zq2Zp4hXc-D@h@@;R#y2ow}aJPt}(oPuHj_5Hmh}f<e#4q!YXK_)TK9K(LX&c*=nAZ z<L4Vh#(bt%|A==0ro;LV?QwC`x?$3l-~$xBsoy>7wDrL!0VJ5nA@hd+e(@dA`i5F$ zC@j0(@}X`NKydaB38Z_=`xvte-E~dJyS>>SAtn@(%)(Cr@eA*bNT38S{Br7j=3S?} zp8RY6QNy@ztC(XUQGYG`RuQ*0^6;{(?}fTK(Fn@@S(voCFp8ZWBwNEpmHbd?2Wyq) zE!1!*Y2sx$w|{*^BJD51cD~d-E0To^A5L{=HE=S}>A@=SGvM9V>Ip#Pa`2C1$c7{n z&kas+J>NeE$fy(M9q^4POqF$iyoizO%YfR%vD%HfPuDFc01CS|^v>-)bZyboWW$Im zUvR)NfA|hzK$U?M^VgK`iV`@(2o3Bpv2}qreic;^s?Be5WP+xvFtI3epP<ZT)U~na zw`|4!o`1}>CY>D_9cQocpx29+AYsOylq`QoqA7>q$*&bjq?u~x8FL~2mFxHj{VxcW z8)dh(ARKCm?0Gv@d=ANL1mFg$#~9eVqkjO#@4DD`;EKarCKdv$*0C;g3?Cthr_PS! zF~4AJYB+m3Wd8ZuOnkX{2>p3LzDR}Gz-cN7w0F(7Rlp`5xszE(F!fx&I!iK1Uawu+ zrhi(2IDa$EnwOsCypjHvum^aj|4lvM*EYDrzn@X*k54@Go}ea!v=XylF77Iwr+N*H z`K!w0l0V&(XLxp_nz1#jg%;x3eDh{bi<n^4Fe+m_Jvw^v%$PS7<`cfT#ID&FWwM}N z=@E!h!@^m;*;mUFCY{C3!!nRfAUF$;n(kHRCn%9w3K@Q%Z>SaZD|;0u43Sc2HGs}J zkkDDN*cjc<+nJ<Lgu@o%j>&xqzoDz~!Jt`^v*dHEOjc+kpnX^n)&d(CbLb7Zr{!tF z!PTjx-OB&h$tI#K&r8bi^TAq^QoMyVl%>*>{^gw8*`rvz=DVKULY1_Ce-F!(T)O0* z?_^^GxA|1B9fBmruHr01E^9&aF1NzrCCdGDVd{*;WaH_><GfAdhj=lYeRf%5_F*r3 z$+n53c1*h`S4o(ac09Y-#nePcAiYauO5*PUy26SWW7-t6nn8C(YWYURoAA9*vIz0o z{-dFnrRVzvUY(AB^W~>%hf7Tei{@;h5Tt%K%gyi-pOkr8t%HZvc_qiXm4Dc)N==U@ z7l$s=78h#3M<LXE2Ty9biZb_&BEtAv2MfJz+ZU}|O|ZMKhABX!?snUS6+gZyBOH&! zqsuiem+WGS__2ZDy$><1yD{RD2ZB-O3(NV(Fys-ar3(KG_qzI`!C2Fw=fW~~eJsh$ zvb3<{n+>;L=Wpqn?Gh>6E})R+lOF;nkW0{sxn;=m!0JoTVl2dz;rWUpsBS8o>GZIv zWb<7)!=}`q22h<bQ;|`B{o;0ot9)i+U=4Ft5@Y=ZdQRvXSK8KL;n=~E4-)aZnb=cv zclu~koySN<L)aBQ(jMwNKGSISt|~M%cFniVde~PuEF7I}{)D*O(ztf#OOwlR?#wst zsR8Ap-w?YGQXVHhlTQwQXU$bSifmX8ms7q%x!}br9!ryKj<P6XQD(}8tEu=v#y*2R zBmmJu<_JqiV~elyWu5h7QC$7>4gCO<_X+aPnVGGbjUV=zHyZMRQzErxSJz40vqxr& z+l&qIuiC?HGO`~VLp}cMzK?JHy#5Pej?eq|gno05%r39o3hMS92L?;LjUW<!-8P&L zEdfi?ZABmgd&Sb;fRwlb?K8?J=rz-(=OayHj4bd8f+_KE$6Q&s;JAE#3YbG5RV4-K zPel$D2=b+q!5J%EwtLA_slN5LVwtH!mXUIeG-H1w<<0e_@@H*{I+o}yo6L|zlk!LI zU#R$-Fm>#c$5G0)FEB#;%S1vL<{@WI`W7k4G6y8}ewnyqpGD%5qN=Stm2>@LPotM* zD&bJN`WE8nkzcp)xHxil;ylGGs2I7#I>O9VTJey_oNknBOa*<E6t!fz%ou&)_KtBP z#e8bIT6oc(Hhs#M=#8CD5$ekio}YNJu_?B+$kMDNlZ+4|9$Q#J1v#P&7VCX%YS3y~ z*XhHG-W=0iZ;?(sCLU4vs~IMYWFcyOYqP%*94F(Sn%LoYit0HI$_E{9cf2s$&&dBl zp<}GTKct~2X8J%iU5B`hhllH(`V!_Z-%KxjTE7@TnOm%_wb76pvVBatc{Aa8i_caY z3`Z>}?wJ=j-K}d~mZHqDd}LTqcrZsFRJ04iEnQnQAzA2Ak6D-%h0F1gD@7ZWmgLy5 z1|wGQ9hp60*8|K%ILGQwK86{K`yklZ>R<@5d6ckRKY@%rWW6q`;=JhPZPR`3feh#* zwdvPe-xHdHtlgs_n}fS94DpE(dCBL9hAek+U+M%|aO@bYw9`%L9^6ip`e8)U$hE1D z<>;<v<R+)U+Z@tO)KF3Tnymo8bc7eT#io*`1P7Ybuq9DgP?=IIj0il%c1LpuAW{4D zp!xmk=?p?^jZWUnFB1h;IG@-DX}*uPMZWmT|IWW5_qZ*KelPp`Bg-uVRGrXNHdCRj zhDrF`h-PFn_j?_S<ZDNke=jG?w*J|X84a`uTnVi{yT33NM9{Gm0^=xKtF~=7!rR|; z=S2|lwJ=QlkF~*xR-Fd9vxy=I>36iL*jzx5u@v##7as|?T_qo<7v!}&Pq8jD0bBa_ zq&a5+`Ok=$2mT%x^;>je!2#93u?q`mK!$t%M{D#*Jyp*+2;J&_dp<{MJ;$o3zk;Vz z)502ek6@z@^H_9*K;s~JGS^h{OS0--mKM$p2OK|G*;=;0%*~hBoLn6TB!5NaID0Tr zx`xD~Njfo~vPero)m{+sU=~MqX?4)9XLPCoN=V_?`Z|yqw@CY@m;5drYaZ|T1HuO( zJ2NAUZ%p$)GIXU>FsedeqG0~T%SPi)T@IM!63P4LhNX-1qamcBzv|y&jC@)q(HDP3 zj<ZbypDpQJ4+%iUjzs#zaG}ue?JvR3^FT%~(ACu7zi;NhiTr4pzilqx^VeUQ;x+g5 zF=e;dwRAWlo33PW-RRwJ40qXXn}1s+cFNt3y$tv4=r28#>5{iikle5(Z_YmBh&+^3 z{^>KkW;i!5)xcgW&&y_o+F#@iZIpx#(@NCd138%@Q^#if+L(bUQ=W_`Lxq+@9IHNV z(!DfkGaf%1DybX-ppqq)K3*o;*IsT6dBVW^n-)sG5rKVGkT9mMdRE!Zi6dz4i>_Kc zt1{ftg7Z?4wEY=x@nv;4;Km{LHe$C(*^u6<i|PUYMLTLIa8_O{^9Y45@?JDfEnC|= zpLmLSiZ#>jLtj7*7ag*k8|5bjL|^~B5A03BZ@>7JuRZ|y;qsIB2xiih5rLzv5gYtW zl}0Q`LTP2Tn8T~In%@xB>W+PJXEgVvtaPl;1Iu<!zvAEuNII~Th#;u_nc|~1<x}jR zBCa+Q(VIuA8<P<3^u_DUgOyER+7Rk(Sp7#iR)QD^&?}||Uyh}#+!s)ZeF$$4Dc?Qt zH%)5O`ltz&vx(GNZhywCB!G|dc=(j*_}qa;Z(^Ep>s+7E#-v^iyE|64;g>dzG^awp z_hr(58gZr7zL%$Z5c$~>H2q5{Slg8f{H;Wa4!0;s_%D6V!=ZbSOp%<#qT6Pn#eVlI zS~Ys5d64%_XkIg){_d~}N3sunMVoC73;1*iU0}wZ_n)cg%<g-P^EF5{aCXm|a_N5C zLM(OMCf?K_4E3B}0YwPtDKq7Q?d4*N`^pcO5?JcwDoJX%BUgMtgHmPY()R~PNxA$R z_gK%*C*R-=jp^JDOC{<>j`s%MSEQxs7lXj#``O+cmgPq~=GQ}4k2iP7_({B=ci;q7 zzdteatL1`hzxk=1j!Y*K=1ZJgKX1Ewvdk>mybHNLS0X5{#(Iv;GTLbx9fV}AGaFPs zJzM8RKoiArdIQ%mZ(X5mD2*p&BgFX71?u~X5w=h;s~dZmQDsLe4LIi^huTxkL7un& zfalE|pC}c7aGV>~LJfT5F&2TJl`-AAKB1&gQOD?fL0{s^Abwrnpra_U3kmrK2{3Jf zdlc;Pu<Es{we&^3G*{dcaYZX#0d~O(m3<6ispIA5)$YTY=7caB$l}eVnSXI2$Ao0y zXCgN0fT{CH(!7p1TyoB`g8AC5EG^8bcQN4MkYmR$N}c1YUxG1dTquK2lR?l_o7~x~ zrA#cwxwMI~nef4Jv2d<XOm(cC@euAX0^CPkX*9F#*zcnbb_+!;o|>cYI&VvEg_w7m zc%TOc&a`>XYEJ}Rs-+0T{rI}?!9K;X89<fW`#w<3p?bJEzH-V-OJD7mj=cj8uV_Cj z-soj3JhI$;;q5&$MV3H#zyJjOO6vL=$E>`|QKYBXA`<IQ`=OEjOiIrbsQA`3VSqjw z(uC)$HI@Y-F}ATI+LJoN{T&A%<F@>~HOhpWmQ~!nUA>1Y-L6`ntf>WQV%{uBD|?+K z^iVayMFrn78o<R_YY$8c$(vZMS~+h9go~!_HlT$Nj}I`191S`-&e=<FfLBjyr5Q#U zpN@5sm56B*)_1-;J23FyjoAnadt45RzLvQ(Pqd;;Om`7|($Q+CL=!@`Ef_RDJ{T3+ zbUrk{=2@kgwldW>hOz$u;uPe6FFWP2JqRizk~^wuGQqy|uk50%IYvxT?1-z+$PoYF zp(3@MFlf!`d#P3>*8R!{)f1nqDwri>k5^RP^r#_095vQ|E?GAAXyE2MQZeCw;bG8U z;aA3#Yu6>|P|)bR&8yz=h^yvrW4d&NM?bvE_XWB1Ey^|AOVd{W0pG4{@KEncGOF6Y zRLLaHzsarfRzCOkW-`Ot{=z*_0og%%=DA&g(h;lD+xmK)Da$&e1IJ$6oz@VRsreMa zA^L)U4UfumB#Yth;55?V@Kmp-i##_vBeZ5hXrK|R8mPvf>g2sQQP6>-kjBkSiCnzQ z_E!D)U}^Khd8|vB|NXsfKN<Ky=Y6{5&(-;&AMI&vO|w;m`pXmh=v%d>R0hG)jwa{* zG~07QdjA!F@8;MREp?@kHMz(VxyC{_ha2sD=|Y+I_!t`m(>&GBADGMjWK#RT7>)P) zLv^m{^zY8aBmCLySd2YjisYJ`Rz9kM@vrzC&o?;lT|6+I3)bUSk(GNnKW-e&0^TY> zsBm)@YOI4RifaHDg=WS-ufF_$eMT_iRe~-I9+sUx8lUc6Tgf*3!*kf1x>8%hLDLg8 z18uH5--h{J+-pZm_8<O+vhi;Ctif~vA397q$-_Fu3f!|4KaK>#fd0DCIc(#$WSiao z@!@g@*0>dfztpFBn|q_Puz2FEI*=~n&jojDWGYeWihCNmaN;A}0LIi`cxZPpesfF} z(x<E2;8V}tq;{<XitnZ!^`%a=Z}I)sb$-n=OucC!E&7o~`{p)aS#-ogM)Sm)3K4cy zZ<wbpYdbTgqhc-_Y)BtQdbI8bw4Halp0)_@ob97vD5$(Ivg=8F1=Z3SYHpfJm6!TA zqc%YCrrT`!&aHjC>qeFE3Z+N;zkT|*>JNg7dhPA6e0JMO^9POxv1sS)yd)877yc=X zqd+QhK3DN0vsU|`cu@oS0zN%@bUkCM_w`3R?koAnF20|QZ2tRh8OjMusVlK0iFWX? zX3pLWYJ}Q2r|jB(ZBF+C%5|SpZa*Y}(>b(s9RLk(?3thcxBAiJ^M8xm58smgfpQ-! zK)Ea`{vBcA1G|jpD7zDyvqh-Ja32zYw?@%eh|!N*c`KjLu`8WovxH6QWZFZ{^z5~0 zffsRw-&s(AzBBSMAEV`d0g*Z?&sPIPifmUn?yt3I05&Km9qFs!t!)c+ti-+;2IcSH z`Lj&;lq1X(``Sv^O2j3F&HoHPk!y2M_Rc4yqNv4AWAoI@bCDBsE_QP8h`MGQT@^(i z(jv%Y08?-~<!}(!dPvrgE_xS{SrhgvtQ-~uGEPh?zLw@*!C%#)U^q*mB&+Wcx>wa< z>jTt`qjIEk?Y{Y{+>Xqaxz+!?)U6dKVRmm838!1A)mBJQU8tW&;J6&M3G+ygOI0#& z%Dnu8-)F6zh$P$4VqUWT2%xIIjKlh^=A%nUKhtW4S%{U&i${qbi@*aA5fh{Lk+@=B z*DXd^8A6n#>OOKCi-J6H0Q_<5hHVOFLd{Ys0icR!spu*`jIV~rSftze$Z+}pK8x9u z3+k4aXDGH^EKU~HTm}g0jB;_rQi!>IYf4Btpb*FpQFu&OD>1k<-qePsLye8oO)N(V zyMJ7HjXHaK?3ym_Y%MUIf1^3_EkTbRa;4*SONU+hx(%K0st)~8{vjAs?rl(<X(y!L z;{5k3r0!Vhvle@2gPvjOJWOmgfXt_foP~P@KT~JP-7PMPhHmK!iz5WZy;(<V_Bx9j zXPBS!#rl*d%52VpPuL@geL-NUUq#JETqAk-hBb@*&SBg3wgiYfZD6N(49mfXi4+Cz zoC%9FsGL?IL|q-EWB<c`AXreJNA<@-N6AyK7LoB$SBwhfZ<|M;m<MKSetMTb<3&5n zpts{;64-H&J-=v!_rsj0G!<s4II!aJ(Jwj@H6-ixZ9!U%+Tf%%Emr>HGy&%<+$xzo zRI`SRN!0YUH}~tSK`4QL`@-KWP8O*f=IX3qol6fbV_}AvZRH*@R7EJq^a9WEppS62 zWrMHUSCZo7)McgWsX1^A&;HGSpGMm=&J9B4o)W%l?n^S)oTO>bfzt3yRtz;tw%xXG zbZ2iSZZu*xqS|fGaLjtM=HIsXTVkdO5u=T0)Xc26{G2(p)|Ppsd<(y^k<}sx)K~P` zHLY@N!$$6$2>`60e~tBv5d|67#y`WWR%43?K9qc2CG$pR%o@3GGm~8UNO*U|6PsIE znLM2Bjm3*l5A=l@DM0bn3nz-R1zx1molP#k_jeHX7*aq5R94Yg^#YE*i00u<sib?- z4Q+G_@*`G>bN0`_PSo(=nS-nbWUp}BpzSFRWmYJUgOph7;B%|)p>Of+;-m~d5W^yp zelBx9;p6@E8?$iwd3(*iSWzgm)?sgN6v;k7KT}VL*{XiOY?Ks2UqT98EWH~pRmsFR zvx53lx5eOIASb2z<=*@g=vmfktHwu9(m5nd8p=k}kAz;*Sy7~0JI>ppR`Y|q#sKde z6G>ZJ5JjU;k}Kt&2g|scO<V`nBgj+P0!@Xhippo(BzOXF+v<U(0qb%=eFpG&NOOD~ z=8g6kON)x|si!e;wM4~GOL|_Ydyj{)|ANT&ct!ljJYDCv3tyoh*joaK*pTiMHg;ZN zilf*nsg3}T3O{<kINQ<?V3I+w&zw0aj)cM?+F<J2w4aucOnBcL;$G<$k*ZAKD8*T= z2fH^Ww-0t9!R3q6U6ff8=kpg*vJ0G6Qp6;2>x1fX<)o`c0oJAi`2LSdqY_-?JpY2o z_CTd21S$3uh-rMm>bG+-Q~lv8emDnl$M}+XjJ|^G2Ks@_N}-&DsTGiIwr2@2cv{O3 z#v%EbcAA4l9w<`Sg7wV)gT1x7#M+^SiIRe_4V>7<XBdHyNVF5rhRv3Yy-H;^oR06v zEL$2&MhYf=iEke5U6ToqyDy9#<wqB_&doDzIKNO2&m6r69yf~h(|oq9I56OZ+_mq9 z)vQ|LXHIydyY<DWZ>etI&+FrvCtsSwU<+?NP|J8^QNI&BazVYg{_QTb8U8DnW$d*! zk~m?rWrcmwdW$SuR$md~Q!MV<jJB*5>uquO4b~8tO>5Vo+jd|(A@>^U&T+&4+Zm5J z(lElx0<YoEu!q?KhJh;S3_2eGGdXVfxq6murZtWjqOA0xFmdr}<hUg5I(fHXDTc@F zw(pKp4~76?OitB>#AvR@F}GykwZ!zyh5SL%6G2qGK*})g_|*84Jun1mII6n!_`A@o zFt#s*g3TN@^KyF#K`H#o1OX2bWS}<hq^n*|HIvPfVY5yHUMIElTMjw!Vix5xXQgqV zW7DztDvp&dAl>@J3w~LeJj%<HXy#c6bbY?>nwWF@J}V!-C-_Q;QzB3bSL8+2iRjzu z)fXZCkx-p}^s#j<UM+kH`ctAIoFZU(>B7|D)|Ml=P<?rsS>bYVc>0=imKxq7DK8ih z>C2H3p=>3-HhGJw03^afwU^Ts1x9(s{o@Y~0YU<kY5E-m<;G?Ntt{9x%-57(cyAoi z3AM2idL1Yu<Ha%yj7(=*pNZ0YZ1CVg@|G|lTPy2SYM34E*m(!_&NF?%EM1ew%9x(C zSN<3^nZ@Kir&m=>JbPp!EbEvSE|B}HzuxWXKyA(-5ViDBO>o(<+*G0p;>}0!E*AOF zRWV2Y%c6a59pJ&N7Lop!vRn`H_SdLs$3xHfD^~(Ixk0{91Z{5}*NevV=S{(Mo2J#= zP5*9g9B)dG70wzGTRch-+Lg@hpSY2S$h!UdOL?fw8cY7yemK*nuYx<6ED~sy1bSs* zI1X~3ROr)=Ehx@WS6(upJNx&60K3xJ_#2^D^z>`{G(YYGjblskJY+Yn10g>q<@)=N z61Mm=|K!1!to?xVZq3cST&XR#hXE%iNz7=tK7I*iAt3$Ee#RLRQVg`Dx<L{YCHASa zS8t8i<svUjC*%~lt7nUPq3c6)%W3M(d{GQs4P(<OZs%rh%UP3}0n|*gK}b(1u*iVE z=WCh&gyaF4@ssHZ$CV6p&U@>-gc_-zpfJ<ETVu87@OEd&<FH|N_ck{mBMmf#>-cJI z1U+&Y^|I<#o1!_swRx@Jkw4JF`IjHJ7Sh8Obl>QH`@-^cVAgr&Z|QZyTjfcRZ{!o` zAP}7Ph|R<Iah8Iip3jlw0=PUvu|RUBkA2>wfK(`dZ^mk^nmj2$680<?nR$<o?^e8X zLJ8;d+M;l%PZMMI?Mk=>Htar9lDvD%c3d1BZ|CYE%38Vwe!srg)utLn@!Me;bicth z@&DZ%+hH~#)ZWv4``43$wfct(x68k`mFy#}qeJ<gxpQ8DkpZEaaotH*xI@O#HYlh0 zVQQOAX3)XG1HDA!IEpS|N4`TxU~btY=JYA%<zTFDWY>Al!zv|~<@cF1!7>x-JFedg zOcy-lSF%M?oK12!?T8>|!h64(QQDHvrOixW*a$zLcHRE-rP@`TD2J^$8kS`=X4QQF z9v-u9`}F%Vap^PDLT;DF<kERiHK5PovJG|hYyApWeO$*~W?DdXc8k;mlaJ+uBz!Y^ zF7vTDHYmrCXun(VWgqJM-`4$Kx!RAEvD`_2z{`U&5vtELMdR(cX;@vkKX2E<Moxu= z)e|c>l*c??XDYgjIx(JeHxwA@uZpXhX*B`%(^!N&inqr{7%yG-W<AFofEbW!E%Dml zl^MqwU%?d~AODdyh3veuQ(j1rvm*Y;r9EtQtq9$tMy=qHVEKwJpYi#1%<^NmJk>T; zvSadC%h&<X?8ct$nJd#T`{)0y?%M46e|HR;f$#l%rou2cnzhw8X4ET@KSmZSQJ5#I zER<LqG6Vdpn{%HV55XhLE<{M_mtWO-5Vthog=fK6qY=xnBjRXh&w@ACs^YR}{COw) z3xTtWNqffozHGF^QB5TCM1el)`VN+}L}d2YWO+xz;gf`|B5OOJnXH4gQFQR^Kj$(1 za|&l?d(v#%zrl3Y&IqL0va*{@-q*UMh_jEY38@Nv0b7H_T{a4`x}mF)vJrL>3Mnat zKSW`%oYknuksy-ZG5@4asVbw?B<_>#OV5nG+1d%>2U^?_bMTrQ;35vRv&HmMl^Ly3 z4tUy~@Mfa^YPaicFM84WG5I%U!Z*n?DePTMPPzDra{X9(jbV`!!0=*Gkfod&N}KJV z31Fp_Q3I#1LMdgKu`f?bPF7A0`!+d2^WADQ-l{vbKn;{wp<{AsH%^1Q{$$G<<BR96 zS#d!-A;M*6;vSx+%7%QmOmR}FdT5sVyfc>ubI!XMIbULpCO={7PeWc6;RVk1y2RIS zTrPIOCPyi7dSQT<QF+f~fNli~p){Qzy*R(+S?|C!9f2DlX)?#~v}>q!5ZT4-(M`pf zs|0JMrNcLtqEU(-M$@<+P8MjhpdRkzpsJy&x-d4t**@kIZNvBVR{n?n3?o5GfCjm& za%6cN`{-%G>3k=&L@MdViFid(@;01gvRW0(3Jq_<^#VmIG)Py;Fzdt^O=0SbP419J zN34qRAC=T9SZ7?(-3=ZGz7cb`?2?coeb77l4cE-=mc8Q7%<$NSNV4c4n=#1DBY~d$ zj*2o%0nEXSKWtI|a-Yi<t09r}WLL-VaYTYU@>TF4ghA#hDC@poJM0Q6Sm2d&e=@mO ze1w<T4ToKSgZL6u{Cv!nrBw7p;;3CqY&fBcQ?YtzX2+)PJ~JO&gYk|JFaU@iPxyQy zb*%V71_$ZVC=^$AXXLq4pT-8$j?pP_M9FxQLV~xU`QT^|75(6PFIIp5{jV!A1LhG1 z;+3Yh@xI|o8oisYWhBV=z;bib4?P-Pcv<f?0-PkweT;^;^I?DVNV{rZeE2EGO`jWM z=kPVJp?s~#5Q{EK<~-6;vevc=XRu2xcxz_a^-<s`IUUBpq<nzI6%U)?uP5a`zG=mY z30;{oDG~7R_&+6jY^togj-}14$_rp8V!o0Z)DUt8!av6RLYV_5HK>S3;da_!h5HNb z<Muym7zV=-vJ;fvfj}<=h5--G#b1fg#e9$4<`vEEGxw}_XKT&AB^)L{!WdeJ-_r~o zzx_Ewv%z`i`q7C{fRFjbs9e`DXa(C2)D5e(vyA(fn@&2Vt)m&1ME#HjU(4oiYCgSE zs4AWkn&;9`rYm|iEQ;Hv9}e9r?1y-5CD|BSuFxHDypbhW#ZUkGJ7n+_9j6V=jOvKH z3$fjCf8U~m113GOLAfcptkpU+BK`vS)GV8mwap(M;Z5H|JqSz*b>li^c$L6dCwe+3 z_N?L<m;8<1c4mRsPWK1dVpis=OdPZYsp>5^`ywo?TfpW|RbNrMS?qP76-9Ai70&5E z0~))7EjT*ZiBa&5Du5J6J*J>yc?X#|Cwy#rw%JOdIkmGDVZ_B|<$3^`l}OUy2^SF_ z%9($}rjjcdy(*k8K3VE?eY}60LNXw?d!iBFcSjXD31U?{in$!v+%VS<#Kc@|8vfDG zqw(Ah3v)i21+kHB&c?^NTZhS4t*Q_3E|2O1#|DUcSjmtu(WTQcCd-XUYR|&oaD3Dd z@`U^*&;ZAme9VDxm{EIc6efvY@byz@*orYzRXU+51CWzJ^ov2TQk|v4S;rz-P`y`l z2vM{wNU)@t1v`M~%4i$0D{IRZGPV+ngQ61=9R2gLyB|d}0c%cf%Of)+*7^?~gV_R< zwxo#1BF8OxpcMro3pkd6n&lcqxbUrGkg>ikLW5@{>D#nv*$FZ$G}<>yT0q+rHp#Q# zjx^VY7T&<EE-B$+m~+j49(KBob<EBso>?50)O16es<3~gQo~wXSs##2UT|2ft+v{4 z`4VtCLG8xo$i2PoK=9S-BbI0-7@E5bd&cy2R#l#|!t^i4s}$EL;YLKi414ynYMVR- z?|WTu=u$|oYd5bb*&j&_nQeokgz_`(sUM41cJzvKH>;y;;b2$$9hx6s-P_u-dvH>z z`kA~u^=Fay=7V!c90PVq_Ozn)t@`^EVRuD@(NMbB$&5|Ow27P)mnj@?$Bo8M4sKaa z^zz?@mW%^0bdM|3^HV)s0|jp0-!3IRA4DG0m>zxdA21A^EHowDru9ueL0GHQP)EU{ zXY^HHB^&yf6nE}X5K^iX+oxCS7j}+JSox=*g@}iJnL(our^1Pw*I5c?5rs@j%XENK zUX-4pL4tXWbnQBUlm%jt9kC#k*Z5m3cZ@46;i~#cK<)kt_r3Vntr{U#P#+O9(Q3Oh zjPII{`Nbunu;b2;*rR#neoJeiwR6{Qs<GD`d>ZG#^Cp#%u8p{vX&vqOgeaH|gL;cf z3mNfGT!lFz7*yE`X`FMrWX~e#7N}-a(FU_`^NB60c}t}N#T6F(MnfP_ongn>sMzso zyJBE6m#X*uQbNV|$1#2$&GvFY7yexM;o1=w@qzSPme<-TheaJrv6tZRwyigWNSWdH z+R&LM(fo{dyetsjxewsIxz=AmFxUY!2S5+`omGqq;1tRyxZ@;7mF9@O^?`RMgXhLE zL#*R3f>CX2&S84QYBk19@8c((d#+|n-lZkB=mXSlH9)R||Cc7yE3S`CFJu2PCk=XB z7BWP{?5&Y|g16N!K8JPNF{pT)P&A!)tzZ3^6JaJk&6VHXuY2jN*wDP!5SvsJLK(k1 zDnj+xRBU;1lD*=Q25od@MR>f9xINDSE$OGrYL+EjoA>4pE$J`1Ts`)9y{ILf)w(rP zrJJ|Ndi+&dA2*%7r<rWEjz>IXtBcf}gP~iSx#u3*MHl7OYz5jqU&*N-A%hyzn=X{C zX@(x?DZ9Gn_gk)}!`r22&Iu{K1Uk?6eeB;V6#-GQmL0kMJZh!A8vyfSrX_yD$oWmI zw+Dgor&x{0_vu)+_6(S52*Iew&`(QxhY_?0-gVxs-&AE5GvR#ypf7`ZhW&c%vz+Au z)ZG~T@%;G<0!xe1Sv^ly=kGq!JOhBaoy96M^*oi2PfrGt@m8#(aRG{4M@iM5;Z*{E z<2f;-OKB0qmfwkZ9`{UwG2}0izGa?hY)|D*ed~7|uDQkw!Z7}|fx|yGHvGlcf>#J- zcozLZxg{QND;ZsVM3+{-qY9@BW%T1;2jL9NY?}7>uOO+o8$s=+8jj)74;~MtjomPR z;BV=)S3Vz+U8Xfwr}Rm?{byI|hLiqCDQNz;+*Wb-jpN~l8WIq)%{J75U-^Dn=OKTf z))rZgFf_lpU&zwCiyogtkHkxdXPYtY!R><S?Rz4fKD*wA@)llpG0a1=D}ou0N)AC+ zOBFvhb+R=7itd~a7NI3va}0Ui_;-T`AEehyUP}Ks+1Z$_(~k|Vt*u145c`$wk`PZ^ z$afW=b^Bz@zp*ZB_{_RGGhny7A`SYh%Rk#NJ^zx*YKMYuefE}%jNB`qb1b5k&^NH> zEuYgOQ|o<)k{*q|93Ze&klvLz{ZY++J5nLM)jPI+MzU+RqOZR%k>X0K2{E}Mj7e^I zF+nhpYj?YrF!CB0D05m~ip?8;^z?E0uN$%p<1Kek;onIF#qZn2^o|0AFGpgb$!&sV zhtPqJf@{paeTgyo2p^*cFo6NS2Is8M(tVdkE3{9^0rzD_g0*scIh%x`k=$!{uxSbb zEt%Z7wZJ>r=4o*q!~c&tY7kKFz;yDRg*Z_HQXXDDW@Mp;<ktZ057-tmHWocJ^Fu0~ zT@!$TB?mL!orE}>Lz#m1H@V!g$}?1e!SD5iR9H)NMg|y4GCav}Ge!p0Xc_2%$XM0P zSIc+IZ+f;G)){6JGcgb&S*2_^KI4$de))eKQmq5_5~|!9|LCYj@=?g`4VH42%+QRP zneB%AsPdI$()vmqs4PX?us}+&@kA%RC>{OId?m<iTAGc347=7l<iG}^lPe$bXT3n+ zsh9jY!YrTpnU+OWA1Q6q?JRKx!n`lMQh0XN*B2JYQ08lxqSQsEBKyc9_^zDUVgjXn zB#iQ^Q_BA%mIk6$888^Q7}?K=JXYE;O^7OA!~7t~23(G0yKGo{Jd$;@l^`utV#eF} zNg~~aq_=~?j7}kVyQ<G-)px4anq+>x5;aCsCI^kEtF0IuJ--+s*8V4>s>+*&MwU6) zE4IBx0#%y|Uv=1R)(hQi^&e6pD-5#hM7eLWMDiqT7~GF5{OrlG0?R61J+>=ziu}#( z=sTRw+I|P-egVBE>W3r=5>3VL7qJzb=1d{gGU&nIt7%<vKuyX<H_D!}$A=Z`O7TV^ zHVP1jzas^emvY#cmE|=;q_k{hWtp2}3;h5`DWU1cy1uZkGE=l|4+3ZKEY><xv=oJJ z%7wh<-KR#<QT%Zy3Zz<q%S4w`8_CR4J3@1>t4bZ^f+d@zq4~ux;(_>TMttMHs_4&Y zZ@sn5;{=+3f6@vZwnHSU%6UtY8`!l$c5^vw&`gqC+m=nVv=XfkUDo^}!wQsR8-*@o zJNHEpgP&>B9V+9Lf3qajYEQYE&IaX5sj}5-eZ!M%^}g|Gl&bD85)jfas6{-Gp4Mr5 zqnA|SUgQHN_S(_ueQ%!%EE8uDtRmM<2)?ZOVGmF#09h*+D*7kWv1@QjzwITjMC%u0 ziwO6Tdb`yw!8#u`(drm*-fAtFW|t9|5hZn&#LA27=9a%Am-ZVio%#$qXkcs5c5VX! z6=nHH=9TGkSo#17xE;nUQKim@rkzI87a*2%hTxI``gL?{lgzSB9{rhSal3*JV#`BL zhq2R<IRqpI7Tg)xhL?3;(v_UKP?^70WQR~1CHI6a?)NNsv!>uD-D<gii>8}l$5y7= zj}_~~(fG0h0+AIeo`kEIU)YuNmJkzh9X-a5tG)7^-m%jZGQ-ZTwer>UAK$i!TW32j zc<Io6F4sIO3bg3&x1udu@&!e(FynFXw7m#Z{;BNm{1k*7(oeR-FUF2PU-BN`2hd6{ zwsK!<|I*@$M(A2!7;uM>b)Mn#R9x_(iUQAMO}_;-=8t5j8R$cX$%cQ`4#k*VKJfli zknD9CfJ8@NzWFV8@c7KtO!XW4bv&v0p(tgwPk^tJ5}^#i&d^v^;VN0eZ@(Mi4dB7s z`#;kd%=4s$*T2kUTw^p;df7wsT?!2QfU`r@F-5=-T32}Edd`nhndPdhxZ=e_cO?_~ z`x18I&IM>Y(&k1TItNcN^(nkg9^#3pJ=d>ORBX~_eM^}*M|Qa<|FoDa2XgFe-PI*P z%l9J+qp4;eUeIC<N{=N#>pg|N5b}(4nKBh%UD$J{ss`rkx){1C+*p*ee$hEwIKDRb zH*r#xB7x(mW&K>ZR7R>bjt&B&N|rB5cenjI4Vfq>J$v8&;K}mBm|0&xT5^Vk%SjRc zT-wjuzK}n2prnhn_3ZTe5kJJII9&P13eeaZpuRnbm<Jfq5?vZzD=}w}`^mZ1xVmIE zmf_E?TUpk0<N6Exl_*SX3^3J48((CNDD#rV<yKSQkGUxee>i^-cD|ZUJb)WiJ~Dcn zn?+YtuqC9H7=|@^gqQ?+3CH?q?J*A1(X=SfRMavaAexj896%uGo==-moTAY$dmR;N z4=aJ(-iDMLuXvF=JKw(ueX#KMyol=)_~R^?(K5%iKafB=amOY35<s5c#9!+78kByf zHSyRo!VyB)lrWdwhmCh}AW!5)e)4TgV#>+YM|6`|PxM`kRW<F=sL~X_toqmj_BTp| z@Qw{N!@3GyzF*1&lEvLj-9w~oZLZnEd%)H(wG{R<W3ALxecW)CX5G04EI<n!J_K)} zk}%yQ8LgJw&1{D>>63BfkhR5;xCiO%s(wO>AT(2XOL^Lv$}HhmbTQcgIL7#xgtHc( z$Z(bWXH%EgTN9VdjnH7*aW-dNX2`ut&&A+nT~Sb(I?X{`o)Y4m$MNFdct*m;IeJVo zhVG4^ef$LS!l%8N@%nkA3llv;M!Y-lm$vzrtAsC9j@QML9DklFzns-6i<Cz;&@^Yb z48?Ub!+N1+p%t}-Kd!Op2&=4mb*jyOW)JlEDu@eeCM_+k>`>df-YBLq*^jX6VtWL| zMT{IkXkX?=Bz2(UGC2EY*DBv^S<F@H8Ty_tIy1BY8y3{Lm_bXBs?Sw<RV?I*&Vs|s zjTg?l6O5XXu2oxK<sM*p0z!{89*ljm>jN!V^Ro<z2lsAVw>GKx+0YiNfpKKJ?enlw zWGGOg$V}T#e#g*6Jwr`cziw<pS1Y=F=h6<6x`<54|7wP7n*C&;OuskvpF>brP#CbE zMS<|pt|!UV{M36jH+;>|Gr8i0cYn%=Ms1~U^c5#0fSkPiy>bdMhm)0=ilq}R*|n~b zBke4iJ>kD}wy4CM4GJlISLFpF4*DSdGS|<wlnk_I9D1EoIO6u8oO5$LyKPFyPaW{D z-68+G^4(rIs6(z|a6(zGbzrlbTfW%s!Mm=Dz6QRklsn=z&lKL7=4um8(wjD&ou_AG zd_UA{q&r{L^A5$nwf;!XI$!lIGWvBrN+B`7+Up^1CH1lmX#KV9stZh&2mEL2xc7Ar zg{eHj2dj(TXaaSwU9~UzU()n>^U%)Un;9&>#>u&`F;T>t)G;8XuH!_!EFOS;>9*Nl z>wEsb(r^wqGrVmEggr0Gb|$}{*XepERiDuq$=xdq5W@G{2iFS0*PcsUCngg~YWL!g zmAh(zo)3G@sAD<nqC#sW)fUV+Z&MUrIB!jdApZd)jI^lfrUUa^0?A`x)wx<u&zIHt z+lw?slUJ3|T9r-e0ov{TBVS5nE6&$1PZTChnO*D>{<*=k3^}EY^b8@HO;8)TIYve! z3)JqRKB$~s3&4{o*dU3GuR(;Swt8~<CF!Z*g+Rhdpg)ro^4!)MLWkm_Q{0f!^=5Mr zR(R)GdG-531I`TAH}yof?XkIT>iklM;Vj{YJgMRKP;<X6jC}1N_q+1oEr9(FQ|6k~ zBS?Yoeh_^Y{mx_a_sX*)Jmjmqp1~c#Qg<21OKC*L`>)5xpUx(3Pe{EyFSx%K=Q#o! z-qDy=TVw-&6Z{Ka@%;mfGFrTI50V?b^ZV^Pl26u`FhG*|jJ_yCGJC&GZ3u(aN1ZKp zMvn*7toM_;o@;I&A8MRd&fTtsAK$yO=Xj;5;hG6Qb0Iy@;e%(QU<_a+bEHBR2=JMG zv9?|pP6ehOiEDG3_$Iax#0@s<x~dQ+c#Wx>16qD-wd`5ay>L2g;dhM;`sz^gc(v^D zQW-Rxe18ODI1)Psyh4ny<n8QGEc#>Z$C4Yv16<N;J<PB{4|-e2?-UvFr2LM1@3aa- z7#9*}*U#Io{$XC!XZ*Z`v!6%S>|d*7hu^0C!eFV*eW%AzUOnDdU)kzd4?Zf^<ImL3 zK`pOK?Y4GH0U;aJN}Hrxz)yj5g&jQt0_stLVv4(lZL=+v&aL^cR`HgN-H$CVGRIVH zFEU5U-mAjo@8K;8+pidz8v>Wr#guNLlut8EPh53B8Iz7{vWew<d<jdNrBER@rWeK# zILL(96xeyxSE6=y`km6fasHuubxy`|csBm2z*RV7l@QUigpr)UGdf1346?;O{=;#_ zdLmJ%N_spUb@a#l-7e44XXCzJv!=Qx6$!mas51HRe*jNFu)on4K$!<Moy?b!(J<ss zGs$l2WeG`0GCuYcn|e3uJYyqd`#Ap@{vVDT6n)+LUKl!<>tB2X4_E9jlo^ve>+eFs zSnTi8bD-~*G(*NF>HJ^t+UlH1Z*K+_Ujg6fk*SpX)EG0rSB6%P>|CsB)0l@o)u?Cd zG~dN;4KrDIdVNHJX+`>Ubp@WMjV91Wm+m$is5^@~RC>!nuypE<02uVL=OWD)XMYwL z3e}fKwk`Jcg{FQcwY$W3^?><L57|C;8kE&*Fn7l48uBeF^QHundc>S$y;GyMXF9n0 zYGY)vZfrV`urBHg{oRD~{l9BBwLnhRBjdXZX2@wc)YFYJHO*s))ClHQpHh58BlZWW z%TPZ1I8LX=={+d9nW(a%^l82m>&nRE5kVtfQGe>{OkgUhK2_Q_^l7RS>+Nu#=2<Xo zz58A^+$1pVWOqkPa9Ur}p5aqhYcEA{uxa{WFCGlnqxP%23nHr(NS~VhjW(~9%b$KC zWozF%u=63aaDme2jR?x=Kj`)AlbXu@4E>w3y^@|auKI=x&rSLmgm}J9doBiMCHuoo za~eH{dI(N&;j5<)lkJV1PY!*3e$m@w?{NRM17JR%Hd_09dt>zL+|%Xb3C^eUujdzI zdO`-Ep39o8n_>f~9US_%PY=i4)@E3<Q)ilRxA)e&LC)uP$hN6m3(WrBc_Z%qPFrOs zhmPm9t+GtAK0QIORxdl>qfu`Cm1ZbRzx|?tCfz06r=a@Iy>r1`_s>74s`xGY?eG2V zPw!1ltzG`*OzhQjpLW{?<>2&jQ|Ht9SN9Hfqeg-r#a{TUWOkd6Z{#_j(!%Mx7J~zh zkI!SE(gWCbXk&*bK9EzP*D*bHa4)|&CqwCBtWKW}=Tv*s6b(gkXjJ&Mr&lmv+MtCz zf^Y4G1T~?@P$UObbjs!_sGqXwPxK{Qzpa#a$P*1_IS%@1r>qwZ6+||J;CYy)j}+-u zNxB!Fs34oZOp3+dUzbv!=KhkEM=EkCPlH!EWmDbKh~;Dh4;B*RBO4FdnYp%?XzF>A z&rXIN66|3pAO(>zWfZtVzGd_INj?r?$RMGapTK5CEz2}(&Hj}dG5<<>s8ZSDQ>p~^ z=M~LQ3`U(>c&JK1L2rJV@g-?Zpr80~^ST+B2(zSzf_Locl+8PUOK~XKPX=)mKGCx* z{_;+?Y|6&mIghT3h2tqJQ49s<A>bEvu_<fhe-Tyo+5ADHA`Tn*CCf9QF&TZ2(_&27 z)P!tnWKGTWqZ5nJiZPS`#_CO3%Vf{>kN~9TjShA_<R*jcbcO<S=uH+qH^afX?BE@M zBpF#1MGn~WsI;Q*CCIjlWLB0LiolX4iPA0%vBQ8FcHRl&3<LRbb_Pu95%NxCQ{hL+ zMw$N@B%4Nv^`Wpn-z3+K#As8Y3?&!xlFi^wqQU}HiKg1-F;ssKy1j%R;q@sM9W{k= zzUQd{8Zx$nCWIy`%uU~$J6&3dA;eQrMb<mb7(i1f6R?tmh`?d}xjMbg%yK`*CBRtX z8KHJWnKxxuXme=`OG`U<w=1CJBC-Nqt$nZaE?C8=_Ej&bB7XLg8I`UZTOvXmwfOJ9 zj;t9`tdj{HQlq;wEo!bGk`cuq=43)kwDuvJiZ(R&?3%<}#JPIOau+!?zZmLge3Zam z&;H7I(<5fLyc#@OC}ew?va4y`fjOIxG8!YhH>erqQ53km>8d^)Fw&*1N!9c4tof<6 zw_*1e#pKEG*cl4gPw5jXHlQ`rpsoe#cB8@wYUFwZDr%FB)0&SR0rF{%Ejc5#+8kLR z<`nh&B^%R$xn+QwKK@=1Ys6FBWr>TYIV=9|0!mQ*Ap1xlt0}A(32c!+Cx*;5m)njB zvPP`w7b=i9iR*~11r4AT`$*@Q%x8iFV(p9deuBuH-jUw+9s~81vTkqffgrk)d#?oX zdaV8U%0!9s{ymdLQ7%69LpJg|a{QHv{xs)H2I;1aQa-W-d2CM~vK~dt<z(#daPQ?< z)D&DkWbIjpbS*(7oAe&YwN#O9t3IN=qLCe{Htwyn=6hwO#@flC*Cm_rbm;!&Mv{)| zBRiWwLlJ7fHcL`4trHZfoZ>8{0NuwE{oYI9?!>;lb?<aAm`VSbtQmt(5_$D7*;HY? z=Ops#o{lP?Q8-cGh_{H>-MwfUhJ7%$sO@vHL@))v$E+BI%9Js;J6*D=1nT?Orlm!d zP?Slb*>7j8%_5RjR@^*A<UE5!>ex8;DUfNK@5F8-CUq^6X{%2(SuoaLGHr=r*2pNY z2Fd0_5b<IIi&%8B`J*NyhZ-fzQ1O`TA$x@kI8VD|kzTQuKV;K!51%psJ@L8*DqbAT zmuzm`<ZX1Ij1t5keaXPi-_Ma5qP^DYeO^$pHjO$8Ll-5(*Uo-Tv)*L?lv#fzZ^I~; za-+kk2LIAB71<K~yUk4<N#&AJK5J`V9NFp!JbNXh;l=!RwmX2U=UGQ;SqA`DuNqwH zk}iYoX)GO(DLjZjXv(J3p{Jl!AQhD{PSL*B>pTB_x)&T;fyUO9^+1>EEoww;CMq`X zy;5A@m*BS^vFlA4tv~saHJ-IyqOKZ#{g8>J=DNhdpJ?|D53H%(2|PeWW{py1b&ncI z$Ep4ItVjr|Et+hGG`x~2TfT#!YGQnvvKh4`lg)4qeG+ucN^~zGNENM>OIf_LK><Sh zl+gffvS>;hD@oSPWLaEr(;}t-WaXC4$iLpQ!qfKjA)Aj&YqgW<{fzP<8wv!ytO=Xl zE?HMcMEQ_`e$JO{D5n*#XB&75>z>yd#7AAJ%`IP4_Pd)XcaiW##oOW9+fz2(*!8&U ztxee&>ij=%H|m6r;5WvU5%dMOlOsk-RIO+0MT{O0bIFECOC#>32)n=(XEle?#U*0g zAkZc80k(P2!h>k~k*JwSfIh0pN|dsq*(=DoJ3lSt+w<Qf%lf_6Fzx-z0n<Ppbz=lc zN%Y*x8e+PYv{<d^uEX}QfH=;G-CTe8K>oTF*|A4#&WJ8@+u$e-PQSflKG?10r|<jp zg1a{IJnX8irerP77%OZ2_MdvO{@-fs=X`2fp71+I2|Pgc{==<{m1lku5JZpIY1-Gn z_FPxDbDzGewg2`RBUu;qfQ>?rJ?1JJgTcs_d77J4%s+gpMa}`AdNw|gX+5$vh|dVP zE4?~RxoQ`ID(HGCBLV6DC1n&;tkX-6a<8P9yD(khL&it~I~*&2EoikiY?LFyZK_PH ziBMBUi_?(Iio-g95B{R41ADV`Ivx68KLrrF&TgbVG|)Pgl%u4LGBMC4Xb_QtAf5Y& z`VzlfdrUvfHRcl?AjaDgRic^_SnaiPQL4X7)RRog)IX}D1%?5YSWQ%@p-9#vuIv=8 zeNZX=YWy34Kr%^fAn=gXtQiuTW1_)vw2%sW5;UJgG0~LGxP~<5lnr<+C7TBey-}-r zbK8fkJ@VGvZ<*?)L06`0**LZ75c|7>xwky)?q&pPzij4%1({Y8Rcrny4l2p6$##em zCHB1CTg+Ttwjr#)7Sa+GD$mzrRdy?uc*+`#*{}Jjwj{Ypzc4;7YsvAgHRdZw2?i}N zXJuFzm~yj4pMHAShLHW^UX4-_JPpHWg7!}!NJP0a#KjWtLE(n>!;Cb8{PG}QOE*V8 zQWiUCPqPxD1RWL!x1h}}F2r0-mTWqV7)F7wAe(9-+4mqdGY6#EARYE}fwmG^F{?&9 zkY+m|OJ*cR-%l!RIWKHUP##m~+24Dr3SYvO*mac#Eq3OB)g_Dj=Vkwi4N(;f+QF-A z;&`EcWkJ{^E1nPG<q7)u-%V99)pJ<<HrqZN@)d6&Hc87owZ_j-j0jTX7ElfTTx1k5 zfSQ7y{&h8CCr5ZOJs!Jn_vsj%mx{`9WgL1F_eXv+DJq5sPjs?P6&s?P9SI`kyzEF3 zT^pZTe~kJ9l2zkF`FEd6Hj^^lC$sI|@KCA$%|J9lx4hC0DTwekP<@tXqjRGf0sCum zZ^b%F>PO>yVq9%}$VO8x#QZMNUZZc7T|8z4dI|HYX_fCPD>bse=427j79-5Az1lB9 zGpzZKU4an>C|8ZCB9xOMc<m2Nr`l*yPJ3Q7zE50Ms@A^fd2x5LH%X9^i}ePJL^01; ze4|pIQK{u()U>c~+Mgq&FmhUanCLARjJ>5SOZYr}%|D!*9wkqnh@ED1x<MI?BZDnF zD;<8xfLxbLM$ua=*_RBGgZv?j!kuo5dHpgi8f=(Dm5yXMXH+$_3#n4gK<aQB-F$wQ zyFcTxHHmTVoMNW03Fjd);@FniT%1o3=@0P@1_}&u&5f9wd4v^uv^7$O5o{98w-{`Z z!NEjthTszEZzMA>x`?o;ubatf(v?jnvRg_qS>_$m>#EG!ls(2b1COtgcNS+QqvCBr z6xPf{4K^cTZ^fWgx44Ki3lJ>hX^mu>RVR$kiUW&n?W9{LT!hC}qG0iDP->vqF<Akr z4nUHqHI2-{GS&Hd{!ygRV}#UfK~i4q4-M#eU}Q0;r&RRs(~vK=SHNUTzq4hU@v22i zd4}iMD2~N^b3-vU*aGj`7(d}-wgSGZPtPY`Y<s&ve(($%#jp_z2Z^vz1S6GZq*j}~ z(epEI+Py=f=4kge8)N{OWwb$uD)I11ZThprE_7(Ue*FYTus%78%3Tt6Y-cY`n2W>y zidZcZIh_xh5FzB(Z+gFXn9jSx(*MWWyX@GqEZKFxlBfoIbs7G4heQGO4Fal3Kn-1j z06{fa4N6}x8`Jz1dDcE>*G-;6;l{RHk5~~NZm(%`+8USY4_lgi2$H$J8PTE5a*0uE zoa@!u=0FT$qy5ok>&*jsm4&58VYxz;D)8|mW{VE{Ie7-%T`-oHFX-g-iWj4bf|8}8 z)|2PX46@da#={MrdBNP}2AQ-XLH4v!xWYrE(5yAvtB|kt_kyRXt6Wk1b@*N1zp~cE z;34n;w5hUVA2J*x;@gr|gjsA)nwwG-9qM2Q_SB%V^W)gfX2FhPzT#xivejqQRl%ul zvb<e8Mh5lBiX0TcMZkY{B^uOVzhujg76cu9MKfokqRX8;z(2Mm{+RZ9YvN|R$ri%n zFY8hLm=luIx-E6Id&@MNJ&-f#pIa-U+EsL1ClMG0nMD0sHLCe5ebuIjiCp6mXD)qJ zl~a!|fCi~c?(C#Xql(GKQz-KVy4N^*Kb1koko<M#6jHl=+Gu}+4Anhk$~5D#6$PGA zp*!J=ncA#Ysc?boqx}jH@CqBu6sreKJLFJHR*K&zSsoO7)deCNa{6G1n}kN<nGm~3 zpm$z$!Y4<^=Dy`TW4yI?<>+dV*55<L{>mLty{V%*Pk4Y2T4+Z>6&>D35y?TFw(hBn zij<gsQONEkM$V5@StBzuoV2(&6FCl}3XB>Yy`e1;1Z;IQmVM;o;2itP94G8<VfRi- zQUNbc0MLd99Y|G_8r~bTcJOHj=XLN~7t80W2${!_eCVqr_PZ36srNrn_iZxDy-^>g z&`(D}wDN!4*>w<ud!p-OucK9(yEp_lmEB}F7U%kaIsAivh!1me>ir>?{)ph}AzYS> zGJQrhs<9=FuE~+8pN*|(z)Pi3=kB80{e+olxFeBmcx<fhd376zyM84k*hcHKUy4#G z-`iodO!>+xu-P-%{ZWNhqswM@o4t2GtFjGs<9AGs&2IME4dgYjwdC#V!R9yI23#__ z*HH3+ZOlx56>ZGJfDU3SVF#-eW@M{E6~IeI>?)frYL#eK1qEAt<hN|&tO*pFY(vF3 zHr<+GD4^#*)c<6|9`up1<t*d|?R9n)O!f#Bk3R{R{jJE@k1I~aW*21!rCu+IffPic zS%^X(XW49PN?v}Mql7e89xq(X@=FYQz+%0>mcB~#I><UZ!r0<xvb+vxdjg@?j}-#n z%OHh`q2#vV_o9O6vdhG`KVI(xmnH@PqVuTTVpYK+ey|`mf~j|rx8PQHj8M_fGFu^! zdptkND0#^SdMsU89yW``bGhoB5wAbuET0m@V}Wuc-Rqcmp~~s9-kXLa%w~TjMmf&~ zD`u!5w>EmS(T9{@KhGJqu6RvXlTl~9YF3@mTM!y>IA1$$KT9Kk2POxVr;S~;OY^8E z^B2+ofo@Ood;sSXU5M^n1j7BeOWjX$%-J8t-UJl59&QruzLI9<A~E$^W|Zg^Wfrk{ zx9s^bjkD?tyT}dfkbotdAlLY2>v>hEmyLR~SHT%CAfCZy4mOmRjiRI~MG=J$JJH{s zH2M4A|9CSf*Xkl)myt_Ryub07C!VbSkK|6c0|CJl-5;MT2`>tN7yN#sXb*Pw%EcCn z_T$k7zCNJw4dwoGu=s&tC$HkaSgsG#{ggbTUucn(ySq)>{qg8<uW$J7Cf~m(`v3H( zdl}$*=iws%cqGVTcr%sHGcxa7m3rL)O{K;2DUTDC)X=Ywm7QmjD=}R%WQ*VkWUEoZ zPSo~U{dG(`I7Z0!%H&Kl-OHR26l!WtSLNkcZ)<9Fyzr#!QOO$RaEd7V6+PYC7PbLe zRvlJEd}On{E6pNddo=J*HlS!{)$lM`+&lMKuexEgtJC}`qaN!FR^Xdvi-(v}He1H6 zUpW9a=*Pm<zOh|LHSKV@2Iw85a3(wTz?Q4@hj$$cTXnMGU5CQfXnfwz927`z6UT-M z4mR=!#lt%d#Fm0*LEMa{p~DUUtK`!*F%JYoa=3D;sD8S-QGDwY-DHt+_oyPH=_6Zb zIOz&L=wTPhF4Fml8e)fGCyD;pZ1&7P{<;>t=rq&f2$k0(<i&}DAl*r-;Nn3wae~dh zfs<Q3IZVwF183_kwC=;)$i3_uVf>4&Tzy4M^mW@+U&dxPVzw?lRl?SWV+Yj4kN!Fk zWbSG0ae|1A;b`@MqLN@7GBe8Ji$2bhvFhNEfPxr3VGDzTk5{Yr^8|0qqgrC*Mrbq@ zTbAH!Bu3#0lx?WjuRGDhkG6YiaT1?-D<`qFE0KF?4$&-Y>D$CsSJ6o+9V0~2oML=U zvM!ItXe~dN{1gwarCuL*q6(7l?iTCu>fa3Wq1o9liyVKIulf(RqI24@6KtwYCA@8+ zlq4)>6sW8F(}CPfzilk?N42+?&9ax2zS+RV<d=<3Uzp!2+mCM5JssICAPJ8T>Xn>* z=qxp{uLTv(`kc->{`F`xtimSc*WAAsHur2wX`Z&;vNKz3<_xJ=(Bm2GrMj_|P)-(n z1OyJ@`p%5e%k+0xo)o;8d1);yzkGG^j_Ado%U?iZ-oG8~k2^f~w##@zezgqG_Y=-| z`Bk*+pB69;*|t*8>AwId<dwFPnFra>aPvjR_8eZX+dd7h*vQQ4wV>dI%!0P=G7+}e zCHWXNrGU$YQ?fdccJGIkQmA7zcH)8DYRY#oN#{DOK-610*c?_)^{Z8K41f_{bH_s# zwpqK+NG8nc=gf*gO9T~wclQRH<+C&>a1leaLltnb3cx{QBseBe70ENeStrG0F==zJ z+1**u&Zht)TO49FuV4~Yb%)j)D64F?w3I0pCP5guH(PHjQ=F+X$bv`xz~hC@W_x+{ zRFTm?f1Rx;q1YQW6IgrzFVvd+l=~xMf=c;T2_N{2hvFSJOLAt=;fN7zrFxz@u_l;$ z2{ZA4HiefFbL9NGi}b3LdR{A_33ocK;vqKkYBO@0%&C=rm_QS(#*E-BHo&O$PAY4c zq~OaXRtgvH5G@|iH?XM+3woSnC7AHDo3@{(CtlFgSaC*fL|b26M<-eIuvbS#gb?AL zsl5gr&(Zno^$uwpa@6wh8sIe=xl@|mT{^>@A2qc8T%+l1jn#sCuLhn@&elV^ihGwx z(AuOfxuAVyAx`m~`(Q6VO3r)~6*;xX{k;dlvGtn%9KUz=U+8;%$F>KuDRZ>M+d?`1 z8iVUna?}ZuII=@UL8`gy5=2mT`Z(KHHTC|sC5IF7alLzs&0!3F0;RZApWWnEU4xR6 z`15IUG9o}>5l_5}Of>&J9t;9N^Sq*R>QUWg>mmRv-)v&=zfBbPM!Nbbm>}0F-)!c9 zvws5|USF|Oa1>S_(?G@<TMxpSo)hl6+~HO3>-dQ=3u@jK!q&&AH;l@{DnLo|hc)ri zcaR)m{;p2>%4{TQiVqej3lqGy`QCLq*yXtL9QE7ZHgAE+7V<36If_i57oX)Q6v^?e zZ7hG{DM!b(s=j+_svS2b*M2g%P8=y!EP!zR(FG-$$j@tYHd_sj0pI=(JVeq42&$p5 zv~=OcjCzm`*kGF--(DArfA9W0FdWUX1p9lDKUVi*;`H>Qs7H0TtnL-C9dDOhOet4; zQY#?mS$v*p?X?1gu=a&wzOMJ%-?IRkL=DNq9xBtio{vx%j=H9%c&_`YfpwgSCi9|D zZcwQ9B!HaP)g8Hs4P?}W(-3-M8Vpi=9k`CgI#BLRaQ5_KyskN{MM&(&S4vN5qO+&R z;wy&aDNh-cQz;IUS$*sKl=ZBT6tdul!)|tI<1C-3?(3M(&*SG(1V+#IQaR}!P#k1F zWMddQ$o3S6dlwqgb6L!7AgU3}<=eZ(W$NO*?B8r~BerAvf$M$6_fz9<WA{!(-PP0! zFXY=nxo!2Q1Dw8ey^gqJ*EHs}QC~je0$5*1Wn_PEiQR!0Oxn4(ynxuB0CZ_K;QG`J zC)$?ca(E%>y0n*cgl4ZFEtK}>qw~7`-t&3qJI?nW1fNs!aLU7V%5P-g1}QF{5t7fu zq>EIm3!%mH5wHhQAVOjce^;Mnh3)TQE}2fcg&6EWiQd{X2cGMYq85a)La@@U&v4;r z{;UClU_?8*J{XK>_UvfT9DbOh`7;Zis?YNe??XX|hRelfp@y24jIKREq%~r1e@wDj zh-JI`pfDcFv{f3(n&PkYi!n7CK@9s_9Ip@yPAq_xkOB}I;UXYY1DXTLz{oUYWg{bt z*lfk9nXu>MoV0+O0_hrTkeHHPi0rnC-Y~WY5)1!0sBa>?2!NiZ%}49H2JsQOXN>OA z5Na=K_7T4BaXaxbG@oPvvlpGBp%p=+pdADA(u-Ps(_}e6KTHe_il7+43qUPkXsGH? z!)x{cIdXyqRVATu%hW9StrW|LX6=yS%J(&aI*q7Q*UsWGeV&FW#k){g6iFt=`v<oI zlx}rfr{|5W`K}D_V1%6z#0~Q%T{hbs{l?PDVgG=!(3dQpLg<=3;ODdpY1(>o&IR8F z_r#xbE<`s))RaZYkcA4{Gk_pkVpi*b89+vnL~f9W4`_i#A+H#kfRlbF#dD460%?g} z38Z)~bqbz{2A#x@vYiNXhRB~HdJt6vRP^69*dZO9j((vRSW@u{&PTo4Pa=hv=IbcF z1ziZT3pcja9kZi;UTB4*clQ@Z`yJ;~w$$ONCtdQ%e=2f(<xflC@`&}FQ$8}3+ez8o zjT2D4eNG3=<y-UyK(FDNNPf{hO(~K(;Ao&1uMERZDtp2b#LA^3Naf#uJ@0rJ?DP>G zaLJAepWbp~Gw5nYk&kt|i;|+G2KYox-@xr=k9PjW;7)`UJ1<M0P0&9IikI`~dAS zCe#B(xneuopwB=py%TSA+7=LR>YbW<gsr91Sd*=0LZ2=!5SDzP9v;aFI?a+M6djfB zK`4a{J;5m3s6=|V4VGt}9kISoB8av#N1aL_1?BXL6!RLk!bNjiRuk#k)M3qztQnw+ zW?~75K^30|-q7~1<gcTnS#HMxBV%O^0wg32c3aHdcQE^5Dfw>$1f%y3($Fef=_EYZ z07G@zV&VM6IwLYkT|ZbDzS;Z^y=@2yVhW6Yr1!_!*&+24#IH?k4~vbtfyYldJR~jG zZVEeWBf%d$RYA(9Fk#Yp&<;xtDEj5o5dF{ui%?Z?(q^KUK}jj98f3O2xHrH-sjtd5 z5JbGTS@Ez_%p96qg}OY5O`W>|Hw?(JCL6cF$y|c^@ZwOVh73oGIX#{m(FjxD9D)!& zJXK<S<Q+o|u()i665=S1&Uo46vUO4RSI~<~0w+RosmFiFDXP0HidQ=Pqe&%3b7|lJ zArTxxjG&nl#1c-xH{?8hevNT0{yOwn38n|#Y$53#>J<uz3sY$)gTlr{O!wzNI!kXG z!pGrd!w1^l^7=eDfXI&Ta{>60^ZT6FI=g;a)C@{Km*7Xf48({$3h_)|qNd2&uKA$L z3oUWytE6;>f<AQ!PH`W;6R+eKnjbpaLh~m-xki4rJGdruF5%%GyfbhmBUj?FMsv== z{@Z!|p5!?nb|i7PVD2Z$Vhc&qoOwDel2dW}-74Ifh&to3CqX+uwo7a(+@q*#*fg5w z3E`V3<7NmbVUb1?!48i@R<R6pvC|uHG@?%4ELB`BFPrD=D)}`L`&=H>!eMZR?>y?9 z@{u)Xh-o+^2wJP;EzP9H2K<{TXp9SS2+9y25fPe*8?+dx`MVq-6LA*B+7nA}fTDYm zEo*;Z?67Kf3lf0}img&Oiy}J+(iF6n`L<Q+yI*QQ*m7;M+4|}I`Z(c)Ky_T-8l+oh z0iik)06YY(3tZ?gbtFhpWE0_erOn@jdIf<O$#NLPv>>lLw9eumbF~a?c9E}%Spcuk zsAm;H*`eQIN|eG`l&y1pzN#49gwzW7b+VT#-~6Q8q@Y6+spqW(Csjjx=PNpB^FD2U zCdwn8X?iN<lS);@rz62cbs8sCxy93+SSUgei)~cNVTyr4%1!OzdI~7cHI~$DqpYRc zp;#WoSBI?xRopl4QB$&_gnX}*>vemjylr;hd$_-Yr6Sto_v>he>0B&A)`J74EYjR+ z00<u^G@`xEtU{Bk*A|BqZUghz$dWCBpA$Y~e#ZbY5U%UecyhY495KMka%^({j><r& zpqbNe6h3Vw#p@O^;m6)OuG`CmAE0F~C6h=+Y?%joP6>4G3<}b;FuiVU*T8nKM%lQi z$+8KY82d9<zicoFVzbRv5!JB)U6k6PJ`a`~gr+SltNH#~rP#_6&glV)d3u=(mpG+~ z$xy_t0Zu%v47z}&jC`#=#=ZzZ%6Zc05y0J_e4%wp1`S`Do%(6tAcfFAsI~S1hRvvI z$BT4}K|%<MeP0RC^<r!MF*vVRXLb{tts3#aP@o~Q!8V4fF#=r!YHo_~i<oVYr3JkB zwml+Oy5C!vC&=&b5S!K`TV=HRXH&xVsEA7rWM>of>7s|d00@5prTdT^TF5^fln|YO z2jJ5)+#g>e@g?^-i<^65%N(R<XQwfDQp_{Nb+YF(owX;iuIa4v*E8eg`CPbR5!cu5 zQ@*f)<tfhZ@XR*O)nB|29e+Vc8$*B3w$UK0^*zPF1x+4*9WV&Y?-Ti9@v~pN1MYzO zK7ad-ds6MHDV$2e?lWEq`r`Gdk96R|T_-*i8obQAhaqamdGTN@ri(jix46qAofAqx zMD3rq$uzDR=v{ra#RcgE&E`k73{5@SVi?(}zQ-fv<vIKmR3HWqqE5_SIVp>K+3Y%t z(Bf~5e2K8E$VYyGEwBxi_!#c6CL9jLY9hkFY+ZHD_v>truu~=iylsQJRJ*>yTxk?4 zE(t7wKS3GOGJ~j-v(!v;6z0<{)vJEOgW;Pf7_bIo_79_Zlcns3jR*oPv#`Wjrcoqr zk78jE;tR#xB<XBCd6-4y61X^k^6c(~S!~uY0jLD%*Sy3F5j_GRum`2+Rpg?X8f=3R zDrZ3JjLzORx^dEzfSwgfZrMguQ*ECL(hZMf#}WHO6iqf-Z=mBL>Cy~c7Nk_5e2Ci8 zw6R$-NCNGd_LnTabUIXzDz?EZuy&EN?u8|Zad<%&+#S<w%;KkIE8?m~PN55QecPa$ z6|vQRFHE1|nXjAQ0V8PA5dJ=wYx%(L))0Zbmd|bL6jNTdL2(kLqnE9Np{|z=K#?j| z@9RQ$EqLjBsN2f|dYp=MpEK>h=meP*x-)qd?Y}fO(;SdPZm)eT%T-nF(tR0N#4G~8 zEbyN+9C-|y?xo%7>PkR>a+KF(brG5Vu$UtFfHigK>e6gr?&O&%I(O+?zyTXnU!cfb zrNE8m$m45>kOY1xT7vd_L`cSLCVd|$o7nulqHGtpf49{{k>GwW-J2L?OQ_={G0i2) zBRUsK18!?VbAd)JL9<-Y&k2``PEZhQ7vYBl<M9FhBY-ctun2s3YC(gvR1Kf!ulOVv zu;Z#0>~%Bfw$OjL9}b$;h*BvBuFEul#nL^Ng2QFwIj|dlzm+~V5)JkGhI@%p<`X#t zjUdGXS(^hcx{<Pm`7+V$S9)1=75J$n#}%9KmECQYR{kDR=~q)N=0mdr7}j_!a~kF7 zCjjN->@FY^7~5<iqw6wQBr$2Y#*p}guuQO$JFFk#C<hwF;fP@97;<%F%aIm19PEc8 ze$Osmq~zBed-b{8*X-hk16_d2;XS_>;mKxA`ABo(ez?`zJ(}qb4i0y_^z!SXrg9IT zix+b)R;!E4YI=AyXrK7KR9}att3er=6ZCfsji>(QQE)vA9a;S7kfNs*#a*9|PU+u% zM*0Rq+D+U!t@I&WAZ=(o)t5gaZGbHKc1R6c;37(?EJlu|*I7K*OT3%_sRX3T?r6+Q zciHS!;vQh53>0=q2Q2ce_1Y+bFL|RJfn<Orm?CLS^?n`t=-4b^)boex7{y_1)uLd1 zEjXv{@9n{XB<z1|<X?apii&qM&$wXld*mqkk-gIagMiz5Xjijc&@Lj}Ai<*7BAew+ zO`k?&S$tnhiKZ*4DPTsvu~qusUm$QmFQoIdV@qIaeD7e>)$1t6siUaC!oCA=jXj;> zyrf()DECvqc>uGDwUC(QtLu^D8DOFU9tup6E8Cq>kgW=v<<%O0gzwKBUBw2ZK^*|5 zx~RhdLVA?d6#4C}mr-w2lR<uwwreC^>ECVXajGlcD|!y_JE<!i=4;LMCTzVqAR}w( z*(MLZswOo&&d(r>8l0%OMpe`VNCO(cT>wyHy{^UNE#S4!0@g9Fn8)!v9XfYmUl{{H zy9E=)2vILqeuX`@o#sVUL1BAEy5f(WbH6-lM?I@4mS^Ru`Ae(Ze#A4|#|0Q8t#Vg- zJRYB>eQC1=Uc?DzriM^e@U}Q2eAq_ss+G`EkIZ)VssU$x1v5v4Q?%LPGn+x4Fi)NQ zJA0db1&tl9wWy967=S_XjCOp_0;q!(r~td@j<wz<_MkC5{w1BMGA5LPlq|k%TB7M^ z&Wx^5udduARwbz$0R_zN*w*aFYczAytH50Cnc_7&w{zP&ZLh@(`q$BROP@Q#$F`2H z<o^h0><snbX%SBF67%8}yV$=jx~|Oy2~mOD;3;t5wu!rHw`U~(#?g7l_1*=HI)!bE zm7`yk`{?|2bqy}UunSAI8V(!!)G2kecLIIt>9%>UuJ?lEUM!PU8%Fqda7#Y5rP(xi zsv~zldgc~gyU0AQ>ma;5X$-TkemT+&4$jWYi7=WrBAN$JnK^x$gGdAMFuU-d1yS5J zm5h|*kkVyX#L#kAM{5L|xzI8$Jrjlh9DaV?7Wg=u5SXYe`Hzzl9JLH=RK9?dJf8FK zE$tGmfQ}m83SqMdgUj)pm+r*gAqV_s-tW&s8V+^z%ndv5t`dA(UPIfG;z(vJ2d$$a zoo!avPA`TOOf{FW9r2JxVD?V~&8j{kC6iLFJss%}qDXE0uu(KjwY65KGZ3LAtRz9z zf}Ms8=}QVFx6_aTyO$+8^=-4YpsE7z6?^4<Cd>N|sUoYib-q@r$Z@{TmW?-N_mADD zTw$PadS_KLy2LoZv;@z&Ix|ta#%bp5OpV0)z84fs{Ek_wqZ<n(3wnbg^~X4E0a*4W zP_jd!A$iGM+#NQMgF_1S+I_Q_fL(fJO0+1y<h_@wj8IG=#cyl4le1qMKLSOmmw!ZW zu;t>*I#MKhJvv)I=JiNSahDS%ve@mEhWp?mUil%#?~py~=IQnez;Ir^eD$Tq0>BJ7 z1J_e6?dia4ag@N4Udb8~?0Ovt5HF0_4e9muP>6@2=UaIN`Ogl3{ayeo#=aNIDsJ2h zYQ^U)Joq@r<>%o8s=3VfdTh_5l3SVYwXM+tCz1a=A}3AaA#&Z8`K$m%bhRPsMYQg& z5*NZbZHUHhhX@0lVo~)URAggVdJGZa3l_RcX3}?YsfeV+TYZY9@RBsrD|H05Fm-mH zZFbY@+eTl(_N^a9Ce)tP=NJ9Lke8=h*Ry!n5VL$#L`HKG#Du5~%ufcXXEB=$K~v!a zY#%CeL&98n-5vs?T180*%C<b3Nzv%>(2NiojPU9Pmtc(YK^zhmOW*L~w|Ii|#5uAU zlr4sET%nWqtIN`%95{Q%>2&D4uHRmeamM*i4zJgirJD)Zse`US`7tdm%u}JT%a(zK zJ|cB5IXXpC^Pa?8>`~-?#jE3c9@T<VTUGs=?xWqKl%_D`P*~ztbTGfyK$?)r_4|kM zv@BkVT{$TbD1ZCZi#p0aJo#x^YBGPdr6`(|`c`5gLGt_IBvhXY`H$pgwUIElp{~Y} z*kQW93cmkzO?ub6r1i2v9R1zqF6_4H`RH!SeX2qvr<r-s))h={=f2ol^w5Nce(nA` zrVGmPB{USxn~rq+hMLq_!<#FVxHN&5i@*eJesy=yHP-Y<l{&f2E1%f<Orq94ug>NW zMuw_EQ-;1<=&CMw_XX<Wq;PW=A=CzMwT)|I78P>voKfNE@HTyW+T#^wi<#qW=V#I8 zu(=iy^#u(}ldJEI^mJ&?t|=i0agOf|5|f4F6Rqx|Zl~dU?R-b=D2Z=wf-;IQOuLnF zP#Lm4!9f{Gc>HV6+}&t(JX%WLp|+nG;??mu{dj@jlUhk|CHZ**Y7c@=F?i;idlI8z z4_80_zED}Uq1W}ya+mQ+ay9Pdap)?#i-sbJTXE;n8UYhBo+S`mR))b_G=zMqWED^# zr+9>G*pagad9zBEJ37($SW=d@0~-wiH&Ki1VE58?I*$c|ydw8IPY<Rcc*c3km@`(0 zuXu7eRs}l15UwJTCX}0(lUWrG1E6FlEMbP@Lj5|3GW=1>T4a-)md7TYQp%6~p#?-i zShz=1e(JKm#DxbkBrd0XZ}weHRJDXJl09^!eZbbXZ<UGdqK)jYODuZ->)4z7-sdl0 z33;C2-ITH(Ih9{vuhwHOMylp08%`o<eE=l(Z6mwZ(k|s(DrCD+bI?7q1*f-PD4^R0 z(~@XKulFug%n3`cC-eH=1!lUoI-agHW+Q2xGaZ=z3Wx7!WN)2tffcdu5M4iI4xLkG zy|Yz~N%~ps$oyV~St@0}KkxOi=JO=awvqm3h*e_SH=QE|t4RjP_+9V?V%IM_9n__- zJaX`f=>n8oi-tD8M-NAK+P;JcEnIE(Pb=l9p%s;pC-u*<m7yT^vT-N!oH#r-yW5i@ zX4#lvR22m-wk(DafUvz!I)$FZM+3J<cfL-zP`q{vdzlX=+Vj4ogHY&l5(kyS<w+(r ziHk6vZ~$8snd;eXXgddS+w4qLwxYp4x_S2B?;&%41;e>1Ja*@Y`8mhTUMQGzbXbj_ z=W%XiIwU?O9;1cd4u0AE#v285&6VU)e4g;qh1ndH8`qf`BJ!gHV?A?*yCimv^j%G* zt)mh~_fZdWMkn{Wz#^wibrq-Pl*X$a^vB{<n&hNrP#FJ)#TJRa>j-JNZ%4C;W#?`o zO8PjlM-JYn(wDb56S0M>b?vAzv0Cfw-FiFYQo<vWd{l-{JZ_>DIm;<MVp;MfW|vG8 zYno0AF9&&4`F5EHTg+k{+huwb{g_LdjcSMSN4WMv_98?{8VQe@0gPUR@R}B?f!*~v zXEjVZf?3txvm-`QYd@2O>(bn-{OH`p@$EsjpsMtVIge5ydU81>Cs!Jx4%9rG_khn^ zAx{@K^!2SUgevBbRF?!>A~daHx<lpA#RBLJR2RYN;ui9-$;ErQc28-uSLd|_Y`JR? z{)DxWtlWp@Hee%><HiZ%n4wvcPo5He*|jYaO`|+}4GXKo*3&15gJOA*t+}!_J;x^Q z{UmX{@CuU?{w~f@O1sJGL{Ny*dQ8&9QRh-ZdST8@n#*^z(j(-miV&f4g%UncLye4K zM(N&yOmh7D>RmVvX~)<z?nXK>D$Pim-tXgQ^u?4;J$1Gu&q;8p36v_RK6ykc;st!< zBM_ib>KyuPh~RX@<S)dnquw6jxkb_RPJ`K)TJbEEc@R&7?cr?HWH_v(rw#=mt!v>A zhgBE$*N2Cji%$zK@lNO2Mdpd%vIlw*M7+E=s6hv3+BV^2i6_v@bfzcLK*(B-NVetq z?MF6eNVzCGH~(_Uj&vmc>;A#lAEV0y!y#E7*HE|rb+p3y27A(?*IZ~n+U5DQWv+?Y zEBVeM%8DLjPw+?<nPj`Wy=RQ}!i8jQqusaB8oUUPz-{-0+{?mx{+&&J7rf7C?X_cO z4cI;P-Z75^W)>>1`Bs#wN0vLgA(s-@(Mf{Hocn4i%ph{l)?QoTo~^z1J;GhFFq~AI zD7GzJfcG^o@yr7v<I6^#0599mi)U+4BHjH;?c!?go$VsC4Y<=%5hc0}YMHwhDMt}S zik@^I-A{mH@=|1DHbz%5cm%d~0nhW=Gc)(~6^yDWklLkE73NEts0y#L3N+<2e;ei} zADD!Z++AFSUh1B+7Mg|_=^KQR((8gsx3#~oJ0th5e7O?|)>ig)xszVpcIxqczqc;v zwJdN#IlNX6Mdj6!fd|NK<~xS_bkrj~sF;$X{2u4(IUgrv=8r($R8k*jg(W2ns#B0U zM07dJw;JEtyTrZwILj;iObQ7t%$>75_Dpq=z>->~Uy>ahaaf94!(osblnlPSywF8L z_DItCx}ppsD6G3|$Ri6+_OdaOkiOaalix4fYxHGnx!t&zYe`*}wJPQte|9e*A*k6s zSX`6Dx7&ic0IJY$4E(80fc5P&P;%DM#lY`{fVVH$86W5wN0=Aph#W0&h=QT<)$69T z$BV+tLL7HDld?%bgX*-tl`(w1tkIg+nJ~$w=Kihd67+-KN1Lwe;`q;@`{!L+0Eb9% z>&Tq1IMOnI{M#0w*}9n*|MAwTq4DI}1r~hdJl&&t<LR>jTYUM%h+He356f~a<M}uM z4n@LJ6-}CKFVqX=V-X|`y3~6TThN|~H(Ha<s%OVF5$)62mrE_w3%zf>6WBemePt#^ z+x_sx?DgzDbbT;dXYloMpL+`Vw4bqA3N~G3i^484NGoPxJ)>TVWLmi^d_MbWAz+l= z!|{uIFjqaqEWIeEn#-6#I6lrl&pb*P_kLfh+B`Q>nSo%7nJ3D5_E`6j@Ksu6B)Te_ zJ^}Y0FjgQv)_}2(L|=93J^y^aj&}G$QcqWQ^gFXeO1j(ZI?j6dL~A4dSG4+0O}9vA zcf67vggKMW8Ps%;sIJ*sd}cJ^z1mBxlh7fGc(qFLcJ&UtU<L1`Jt)3=#v;Ztcr@#n z2!`p*j;QBZ2UXkB==XX#;)%P1k1dBjYbrAdKEjI|54`0-ca{xd<`7nCLy&6}!P(bU z(S<@YdY5EZbosE{r@*%TDlSe%&qujWRzBpvo}Jf=!D=S`tnk}vm=asI^E$}~uF@h` zU;yMH&r<eyo-CKkjvaL&?#=mZ$uk+iTWBupV}-(=0=vSY-k}ChOV)tT#+Ter!EG}) zlj_SxS-=6IjOgomMRj(hiT+%+ttPu65%&tcZ39W;+lEwT_j1W?v+r-$x%{kr$|`>3 zRZBnwN~s)vOmt6@%ZV|_!P>SM7m-sCqf1f?IiqjwmHIKfnW1`La^H0_v_rDLJ==}! zUg*19f^1K0A<OPi@Wo+&5n&z@lGE=lwjB)pF!)(}`piLcBwE>?)pTKMxvRim6p#(K zWzV>96jk?xN#-cX8&n*&O}b4$?4lwNYZtav<zNM_9hLr$qHIw&3GV~}YgX01sNz3G zYlG)tg-(=2@{VXNHQ+~*N=Mwbs4z6jt$|xq8R9A)sobI}(EN^`UE&zjbq?(o<1KpP zx@++YonBOdAhS5~yhV5rZHttnyxzZS%GlZzET7Hjs%NbGXvRot)L^Tw#l8^C*nn%N z+fl<K`|Mtqa97xh>UV2H{m~;Ky`G|)f6Iw9&jq5Ac;(cZs;aNP>nC^7gn{QN5H)24 zRX?d3NqA!ia`WyLpF1=kfE!^>NQYM>l~H4|P~u|}As;VKx0lMv^Ptigp51Zv#ByKM z%N~9m>j;xBC&#=JvnUb>n0A0&-bq+dY%xb`auyhAqqtSOa3l_N<F(Imn=Y!;qMBdx z6+)zvJknF;nozE&IGvUJ&gMjP;oyx}*GlTs4X)A&$orc6<r-fm`A?|`IL2&Z?0z^q zbAePwpB)C~Sf<X%P9GX{n;x_mXYjrUUyty|(dtT3?e5nM?2!dIN7+?3UlX!hT;rOR zwFTupkxM>g0*nu-)kVK`Mt@<o_s!VyBcEVC3So!!_n6ig?RouQj2Ukd;g3gq<G;@7 zC{unS2fJj;Ku>*?1cqeEOC>uXVy^!2^|B@iu#Hh>nn4&pTsl?UQ`hoqL>Ho*I3r$E zXx6NmMe#g-P21>v=p6WojmC34i_!&phnN2~V><kG>?`-k2tu)8W=6Xw0-xq6a|2M@ zO}0L>pdE%D)!sdTcd7QCO5joL-AGz#<wiwcC)Di@9P>12Rt%3C?*{8)qmnZ2Knyn5 zzP{tUPBbuI2NHCB+-})uq{U-6=#xYYsc{%j4p)hyD-#_PC*+`tqvU%ESJxGoxY0|< z_cZ*)ZR(Ap1+Ts@GUV}MncCvM2TO8PmG`ic?qg^(y>sa2eZMzeg@LH7F3O&fk_d3| z%H|oKl`~xfzfD@kti3J*-jimDGg>?$rxtodq)$JkDZ&`9^zJ+c8?1@#$to4Bl<#NB z0$Cog3Zl8er~`*+E{ie<OyiTZjmmpIQ0&Vq=OASkq5nYqO$Y5X8{afSX8%Iz#*j!X zeyJ;*lk{hEwF=vDyBGcJnq)7BTvCpEq!BhAuLPdr5~Jp=e``6AVtf5W@Wxl~VUI;# zN2m9&Kf`v!=mGTwVlXf4zv4P4TkrWh8ph%@|KzKMvI*(|Mf=b0N)LjlQ>*{5BZJJe zl9#zcy){=p%JFJL>^>}3x>zik9?E4_fP#>dvW+-l2*UlnES{D!Vzj^uGs%U2Pfqg$ zkWc|ef!WTOZP$J~8zmFI0E=K)XvR{7UWU4_IJRaMm}RqkDfr$s`^~TtrUhr5dnOcr zZNnMoe#SH2XGwgP3_5C#PrM4JUq`igk5$Ozf@*tHf-N?+Io>_dJ4dwmpoSn3j1GL< zg`-Y!WlfLS4QD?&LdK_%f{?Kb4W2Fw1cbw{=<fU;CF8RLK`dDM?8eMu4IHYT<Lqfp zY^e*-c#2rC1IGL=;6SYF18NIbFV*5FyfFDkwfK~D;0ug(b$%R|bTo>y(mAfw5hUJ2 z2@)jkb@n2ruR4On$8QcmlYKT)W=V$;oHa%=UHuU$-XrO#4?l4RskSHUTOqu1B-Kut zj+XIyC>YauW=b~GFHA$%VZnTUScivQqj@9KKCU|OcqK3422mYNy%s%&yn^0FXd1p% zs*h;i(XZXX@t+;+SLY(E#9NAwD#EvK+VkXhxqBa7uWMtT`6+xK<=yC1g>agW<l=pr z_0V5Wk>A1SivB|h-|~PmdiD!(*?Jc>BuC-t<=d`*de3Lq-@7^Nbb>@ZjMq8#Ud-)M z#X=4e!tE~=*As#4M}bK_f?R{0!`-%(!@X@jiF?`hpfENj74PL6HHo4A$|hNOG}I7I z#Ehjsed1F+V#Wr=cfX=z*~aPy`qO4!P(`I134~3t2>UXLhb+le(D(C<ZPLIkoH?dC zL#nkcV`H4!w`#B6V}ly^9z3$`S1a!BbYp{2a7K&H#qrQM_snALUf7DbP!AFaTg!2B zfcOTEjcCSO@(x?JjhZ?8?l$xM;xa*m&F9fJf5-#<W}dzF$sh92I<FJnoR}SuEzAx^ z65`lx3{=nUm2#kLIX~?Rm@(Cv9avnQq*w9Ka}gWcj=$prrK?&;8*POx<~Y5ihxpi_ z!kU?dhR?9s>dAMP7~7bY?}c|j<Jn@-nMpY;0-L4TE$_kr78JF7W1hSqPZf8Vmkqqb zgso>Gpmrw;8$;Ih>R6%X{B+4bti~3m=zX$1Dt`$}uR`1XX`0#^{;d?DJaDqeVf;kM zmQZb!Fn1=~Lnl;nPa|LHbCV4EN#KRbvr|#|zQbV-0Tt*Yi%m=T)ZW%J(xrjEQ&iS( zaN^GEVMVCJN7auFN7%wQQ|oU?JZsBB==y#g{XFjl-nNw5Grrj%wV&_RnB;rS{628? zSM@}Q9cKw|Sn@x~V98(}_nk+9=~TWitm)=Qy@cRenE=#_7WVM6?n&%Rqv9w|Y*v%Q zquQjS`1#-{JNyGjo~&}zgY(#)qYDZ9;po#l?$6uban5*gul?20`PKVqD{fpz=db%~ zH~Y(+9sji85$yIT9H#7^U?qdXG^&LNgK@1>#vA1L_t!0(B4m*f-L@np-`gf!W&LKF z-uc+Fy0^W4vw7R^ZS!pEwk@8F+qQ6LZ=08@-ZqEp+_se_y=|T*-L{n`y=@MWdE2H# z!B(WLHDS4Li_iRC`sq7$dfO(07B<%+%&MQ`c3!sWd9jV@c%66SGOaHB%j8sOmua() z-6o&AeVM#teoPy#_A>eS)MZ+TvzN(dWM8JqQg=+7%<eX^;iR|86N1a6QS#T%P71hQ zFA_3hnt&S&2iiVip4YM|51t=ZJo!wDHRd`!Hm4ZI*1E%b6>n*6WI4I^vZcQ{yGK$u z^ZcwGP@9-e)HezikO!Zzg+PN|FV!mBqDf;kO$%X}N>nh?KEtP0gG=G<@y@Sb@@`$- zB-l-o*ZxJk<;AR4yYo!Lw~=PL7K>w-c8|hVUGU=5$tq3->jFjXZ04jyo3Zm^NjXfR z*BC@|l=saTUXy69!!LxFj>^*UTWD&AU-_-GMPI(87yq(LHiLG8vx=lR)n7O7I$*x4 zN#fq@t^~~lXKHAg*nQgbX&@{@r5Go^yU@+~!jxT!d}G70QFLq<t{hu?Chio<YJXXG zh4DS~7#Y<`j_FgCOkcso%_w(?7h7@E^u<Ytgo8-jH>4lia7l2sEau$Jmiz|XxdNnw zJ}t93w6N9gfWS2hi47vod%D(QU6|MAIGDz~WJ`ibpDi2iLd|4fIRHF>UTxmfkuj1h zXwGSO7qCUKfgg_|H8ZcCtwskn<|@M-fudaYtm@263y>ch-hEsZ8*H#&Ua0~S*E5$p zw1QO{Z{hZfk@R6KhA+)&Vr#SXzk^Nmv0cq#w^y)10?_Uxh>4J%=Y?_<61LbpIbOLJ z(;wCI;04;nR*P5ucM8b_OZTqRSpuj)=1I-z-34sP(Slj%3awhok;AcB-bjcV98m+~ zA}6Kvs4K7sE+WGu62I9!156q<y8RUMC7uOd&lC`@GCh?&`NM6)dqhbWp13MOv7qSv zWuvuT?)N5f2c&rBp?{WDfy~qv1WkDH;`u2gT~vl#0EfPOVk=%Cn48~u(L-If!vlTf ztk2P5jy`PCM~LWr*+pcv$*2y$;>AvVPH%tSnY=r!(;r6b*dg?_E=sK<|MzJpUwq2~ z6@}Me-I3JTDy@qN>uCFtin;@sKU7FEz2VcIjl-{^YCH^|#1FwCp!>;YXsE0~v_&?W zHKOFvtq-TkHpEi0nM(;#%m7J1w!iPCyFy{M(lzsW0$$A^Iec_AFtM4tOZ6@`5e5aH zk=mQAW|c-vci3t+;>$@_p#CB@YVhtDyt<DqJAw7C&|_Oe0&89i+nf$N&WG8j;LIvJ z0)>~^`v%9qF%LC-UTY3VU;;?xk1<7lEYz#g>*1_oS}2EcASP{q8om%jGP*5S{jQ{n zVRl<njp*iBZVL4Ki({GHuH5ZQOwkMao3;)cdHO`BYBUX-ZNSl6sgoy}ADA4Qx!51D zp|Vu(Y=KR#&B<;DqDE%QTz`Bwn6cTyn?Te_!AodA>Rc6Tr2r*tYnns=Hf&(D((PvW zK`u(ZiFDQ8^?~y3@7TSaM(uhA&g&L!0JiK>=!;wOXGj`b*G>>g2%Gw>kj$F@6;y5v z$U>c?E{Dg@pIVOBnmmc)S#Ap)fT<5h0wc?W^U%@?<@s(Ko>!c@@U<4sSDYKVgPQB6 z%-8*>s8j-Ts;a&r-?%_%+3Q=^BmycbQ+w~RfY3)FHq)W)6D7@I2cLH%_)T4?8hS{@ zD^d?^P2wv0beXjr1zbVgsdEZ%n>~izZJ>82O05wJV)Hy<1JWXUqq7BW>>@Thy>>wt zF)anHT^OMy=MnH`5XEM9clbyFtCsho2j>y+u8h!3Xg<%fi@RB?pilIoxj%nhDYJU~ zb0!QZ>L=Q8j9RAb(375;oDMm=2o-n8*1YRb95MJ0$g*J%yw76{dsgHx!R5GTMs>&m zQ%ASLl53|%T!^qs(BT7d<)O8_C^2_jaKt4t-&wvn^CR{|Vyv)X3o2ao%_EOhOK?`l z0xZWfMu5cn>&@fb=aBkU2R+P{hmmssb)KHs9MG&}k=xk`K+fC>GY;kB=w@U^KN7)S z!y=e$dtFq0+Fu!4@ql%+?L|Pq@tHZxjP_B$3;Du1VX>67=X;|^O3i0pPx6Fq?4icV z-A>pM=2WE*onwP<{?*@MFs6H8zgX$8SripKFPt3oP*+sXch=~5WHQD>=d34Bzm^cg zbDQlG!A~cLqU{`&X_@AQ`CZ}ydL81Vm7O&%>G<_Ic`~yHCSzQre2-ycqlo!(?M%Ep zQpVnMnik;^XwLEPnQMdfZ-URAT)XhZ*A?z)>>OKt*6;9<b!<?~c>X;#0hog6KJLB~ zDCPv3BgGblAGYkG<R{l=GRBp=Phe2+t<Dm^E0xR>#06T*Ljv)IV4==h=nNMN9=gog zKzDOxNRimRp?5l&i<tr6T6`6G?==)L(`v?IN}L#%**W2L9s_QC%>8k@@Oz!eCi-WT zr#gRt2qu4)dF?&WJe<SsZXMU7+;VBttqtihhqL(DM8fv*akpqZdJAg-`}7D5Pw&@| z7B=%F`EA?F_+_*0sON7sXz0qz))-xg<MqAd@^OBzV|-X9DCUe)rukXF3hwXn5jPu| zZ)ov(FN8nXe)RQ7ID+E1f%M$uHi@4uuX9QEY$?ViOpDINa8GxOGM3^wCsZOHTwVf< z_QX2D%;kSlo7zIfOS9oc^&)rniwk8QcBDHbsznp(!$YEnnuly<Y0x@w|9<a|i5N=B za@eTmYJOd|A)FK-ed&<BZ9dO&+h+gxo6XtWFWa8pc-sWMdz(ZPbe-LXQ)9EQpU9BJ z%%n_RkLpJIVar{y@*WL%+y3yn*U2%;KhD?wC=^RbbOqJtp;uXuO}kNT>Q?Mf?3(38 z)**ch#k`LEMkejK-Am}|p#1a1n==09A7bIh^R#!gemcch73swHC(7GHRiI0q3;QbU zT!LY><nOhcGkx_*m-|$9K7sHLME@s8XX<O8)yZ8PrTgibYgzKb{aTofsL3Z<c4zal zSw1UCKWuq;1zXgGcwauQJ0ahS@)~uSI*Ym<<u#z=&z$D;%8zvX;`E@i^3w>JQh!x` z8V^#LGx#&iV=$pllLHem*=m}68cr<~r2&}dJnKZ~Fso3?bSsZU=p!KQ>|9;iHf%v* zODRnd`K(k(D=^IJ#cWSDPCn%sy}4=>fbkM1DbG}#YUpUI|Fi+)5deBrcjELT0jk$B ziFNE==(-a{O%};n`$f#7iL~?7k-*Fc;kHgN2(-S;_{*W|n5x=4r!WmDzdJ;0SF{A) z|MpvlbeSE(>QGl~#f2s}G!+{>;Ngy%I{}lxe5VM<xWOn>L1`kTI@7Q2_7^WHwjR9X zzR0Cw7uau7F8J&?w%8Y9W&+n3knl|G1ZoUd)ZJll|7^DYtbvdjsC8P^A>KnL*dVN! z^TrOpyKHkV`A0h}^>FnOAE6sGz6s$*Qn2=@FKdyTx|)ZC`0ACyp8GhLpZ$^?k|GB4 z)s5TugTpo%l?UrGIH7S8N-X<e>qhz?%%xqI$CV?Fv=PwqFj4iZvznmJ|AySWu=%M^ zUZTTLRLXFS>%aeKj};tNik92N;iAR+o<2L;iHvad@4Nj@=6#e(M@JJ8G8{j;1h99F z{`7xOtaU`04ua{ZS$ygQZw2ZL%ar=?PdPHyPPO;RD}eWJF08h<MMeb>_x`$omb@-H zx$p*LG6PVbDHt@9X|uIFCfyC(ss1|VzT=&gf%k7|0weulvb3-G<iXzDh1p-@;j_#L z7T?4Et*X|wKTQ(Z*%CEd@o4JW6R6*gcvpjkx?dn0C-}!!+L+zc*(Md7e!LtR(D|-K ze0rFJ9VXB2$LyT)x-@0V*2_M88a044UeG<W<<wuf;UL#6kH2i<c01tW_@dbO)z3ed zX^PL?SJRVTu6b|Ijr7M>CK7cPb~T&P=RCmLn!CoJUsZW#LUyIz=L@j0b@;uX6@4aF z?Ah?jzmJSzV>tY#z>+P5nMJO(d2G9b+vSRfyY|^!Ku{+y>Wk^JuJymBE_BXLz_h&` zV=Tj2E_UtWTEbh;@LI$hV{l#2T?^@?_<7Q7O~-rPvc)>W?Y6AF`Rk@$CCf9#8F|c} z%TVYyo%@VD7~_a(GM3C3VBp!bR5oJ?HhYXG6UmHFn7e3WwxVYX3pt1<=R3+k4I&Ci zvpKpVk``smvXPw}Nzvfm$5#`3WN8mwy|2MzKXnFXR~sdWM`+E}{Q6ln8BN+W`I4fT z@8yBEf-$AH;se7|W%q7FAHLMxtWAz-3O5}1v}sS<^~e+*oB0fH8y_^Qon7~~u>~T- z^X^ltxwuxdPrJNqM5F0jP3Q756Ish(kGrKSc}G`LUvU+bw+lKvt>_DRQF@C8+G!4l zpWa9Nulo%f<g}X8M_PDS%vS&)YBAfhM1aWn2UB1g@ed*>{^Z9H>Zq%YF-I~6jXSk0 zPP+q9j!@@F-LY9VS=+_mfNgj#voY$3a@68A0UB6MrYUB0((b|2p*6c}0?2eg=JItI z9k7ji)X4%jmj5KV@t_l1d|dEs70I!snY1itht2lb$9Gwu)x}ohf+G2jij8UIb_M9z zMwuLVz5%Ak!EHYH>eXs&LDj>(!C<oWKS=<6N5Gcb%yvAB!DP9AOc(7ZHifXVS$0&h zMdp_$Ex$STJY;KSDxi6{Iz7ZGX`)q}KM-52a~txCHl|X<^st9=vGr8)jTTKza?G;i z+KH2<HoPpkP+{1pQFuqd`DN3i9cx^v4JNxgi?T|PT5L5s0BV7gu%Q{^zTL@i63F_I zpL=Qpn?25x*Voe%Y&G<HHCQk~!sKl?yRBLPxYRyXRDEnCF?uncbhYPX3qE+YyLi}= z6Vh(33E7(Z2D>YWP4&L3J|&yi;Mb%0vpKtqrgiCusIbGn`1LAWpWW+ff}Pga7J)m> zGW(3={1K(ie5ph6l(Y@mXSj4I6V{Q3{}Wv1e)?8ShK)=(TruSJ2(9uzCi~NDjQLQG zo&%4*7a&iM!INTs*=Q1bJ?FMr^x57YcNX}<J76Q5C|6{8E#?&*W3uG4`qYUtJ89vT zzBm$vKxd`J-t*m&!`6b6Im|Hf2X$}N8J(GhNG1m#(Kto6&%VsJ>%Z|}JT7<hGzh~b z8I)lQmo7X|C-a`4x*N7@|4k|FRh3SHxw|;$YSd$^y8`XZL)aK-Ef@Pdwvm)G?N)sX zSwpUOs~(#@baP<A{S>zJtP%0~um!fNHP|4Y7)&L5T<XKHSU}&on-WjQk6KFcv9;(O zaLY9wzZXYo@OLE#W12#L-D``qjAHk|;Xayzgn`6SHRtpFw@9G{KuVNv9{6)4ap6xl zI1$gUq|l+W*uoR$Xw`fc07=HY^xTwCVM}A7P92GgjcNb;Q2?9SCsxKWFqq186H6}~ zTY45>sVBhLEdG5a35SLSEvNijo05c{Ok+WQp<f9VHh~Dgj;KY7)Du@*ZaS>UTuLqX z#3Q!oE_Q4BBv7|ymiv4v9#fO*)<MZ)E72h#JDiC4HGv&=@|1uWmoca3H7Wly`GZRv zbjQXAI#H#28eW3d5NWz!*zkwDoU$SI7KwO-e-~DYL?Hp-+rHs{-71|8byWY9GgfsF z_(#K&`jOVX?GpYK=OAiEHQcjYALqa}#Q(!&*7a3Ye03b5q2Q115mT_O(Cb8(LicY! zvPUm;Ka{}}mRr(0iV^+w);+SYx|dWqJJ6<2&nd`%H4=8`E}_TKwbstQ8S#{AUle^= zin1Xcmd+q)0;jLB_uccu#Mp2<Q)3B4zV{3^CkHmPo7%kz$D#&OzNX8Pu=dU+wipPo zS=g5Il|tMP$BwG5hiJ`>W3!0nxl;|E)6nZp2zEc>tJla@kZPGNNvCPTHfA`x=6Bg_ z@+_^-4iToAo$bs;yI%Gx|5DDzW?|ssGMl#GO7~v}8OiHL^$CQ<*N(04aMtGou$5g| zcghiL(Uam6@LcD&s%H1k*uf2G`@Tlo9a)6UPGt^B``|P-m<%qs5m&U2Mc+IF9yZOI z<}Sas^nEkV?tSjr>S^5fb^(>|HLxb&wLywvZlfELMm2n>MR7-P8w!JS0De%GxR&E) z2w~Yyh3&I_GZo<q=nH#;?P+n!XF9N1&&q7Xo$VW>)KtB2bTlSQEQXiEq^S9`us_-l z>^>Q07ZJDuTLpV`bL8J<4LZEi&B9Ix_Z`{l!xCK&;BQ24-R{QeN3`BGTX404ciZ=( z-&_hghqi5(H!c{)QO$|uMP9X8(2P^68F5xkt}(D9R(-rx*iz9#q_{u&FvxsH!;WV< zfBo~L?fnik@RWD<4_b{KcEk)#$0sU{1in8z>2d_gtPO!hs65#AW`xDu*1FnnXRimh z9|RODs%EjyH4Z5~mJ=g`(NCJ(*|nUcQA#DaXL|<wTpcL3w_S!X^N2UZ6<e~O<9n<V zEMhCowOrPC1U3tMOL%Q;giH$q<`D7(PJhJ3h2!~rf~O<Q3~lC*nk0==-*Lu~iCrhp zL9(Wxl(yr7#m$XFBLR!d**iM2xti8yP)mYq_xZfeM_p=#K3NfF^EavT+S*;JPAb~e zr8DT&AQgA?2<>unl7gWp9t+NxRHE_5w2$>Bb+XH3Lvp}mlHyFBdKo@9oWz<oRV7`8 zA*o{B`~CY>+F9KNT_q8AFTlCCjFJ>DoIKb?oRiKcPVI!5JFAFarj&>exFqd(epe?o zOVS*3o~G#~75+L?@^-`ulhd?Kzpfji2E>LMB~_T7S!#4P3~UlYRty7orA)T9Ju@ci zLBHa*`HcMiants*of+1g;Yza!2RbGuTcoVoUQ0{g%HwuTs`r2!`}Gvv+4{Za%Y;2+ zg<1M;x9H;ravqdjz2ZS>ew|O0ahCh8d|gZSwyov4NYS+LhBuwoWPcLYbp|cR#8gK5 zW`m8h-XHf`E%R%yr7`!9-!6^({qLXB@vPe+xwGiaY&M`KKwu1B!s5uB+|)Y@@UiMB zX3;Zp)SaaCRztgvyw3fLqw`*XDCPaVPYGf|zRLw&@bRy^y)YS`KHYd|joHG_G~yRF zh|ynl;HojymhVDvRfWC13c*#-rhaw7Fxiva9og(?>{JPtz1hkGhQa_gac6%WCLwI2 zEuqPoS2uf_%Mymv^eHChoi5OEYD%F(KHE^E=a`yrL*6b<jV-Xx{(<AKu;o~$WU&Y9 zjby#d-9?x}`yBL<W}@TM9oQ_J8gmMyg44oQG-o_D5iwM60Z^w3l)V}g&CZ{uE!jUl zDym!%%O5Oc34%_-V2jJQ1~(Pj=#Z0Pn~YD$KZF}|qH%|7S0VUA<}bzTcTfeE){Df= zcdk05=dDtJ&)5)VX`^|U0!{(or2U^5QGhCyUmoot`zt?R94fD)C4hL@KIHM8pY4NS zj!_XET_cY8_)rP7QN28wDB@#kUI8eo=&)QWsdA3-_9#_3$+!cw+cf<XrqZ5QbKrbK z)+lrxvi0n`dOPkqCwFqznz=8@_grTK#AZR%6YqW4Z1&{M@jGe;SnAxZcW<q#pf+dz zroXQ!k(P<PpOIKqI(K7BFopWe+P1WSF~u1vEUA(tjPH1F3sq14xQPUkfVwUZx#mx? z)wG5sW=sTGetZK7u=RyFbj(14EI%xz5}(n)7JS@i_xQ0@4-57@C!6ZChSHB|?Y+0H zKWm!Rb-36-@hbJ3jbX5xt^r%`Z6X-gso>5X!Lp`kulH`j6>Kp|^n1PTM;p#Syfcq+ zQ_)|DuxqO8By0!Fb#<GFWPBqj>|5`Q?d(CPS#O!*qxsB%aA5t|R=Sq^P9Lg3G~PmT zc+tHWC+hZIP>T%vUKKm>s9NM>ydDAdrn=h%O~PdPZF`xvqrFY$LSlQHmQUR#T8!VK z?8<tH6CrhM%cbsOPs4?+mtp$Z&9^%`VH^*gg2g-L;!oFT{+6>n_`H)0H*dbY>a?G> zb-Y9Uws9jI;5`oFr~cl|EwqjvL|+Y+-E2YR!$0Jz#P0UUX@#UbOR{xHpyH)|YrC3C zyy7YKA}(AnTJZodlGkow4btQzjj*U+M#)WeVmla8E`YwzUgaN>t4O8(p`-o5`%Elo zeteXdsX87npdh1)(I08?+C<#r95ge6_~GHF=Mft6l-gar0FCYQ09*7yFWZ&sS%C(j z?e(Bjm4J!9ikbK%enM?8a?qI|3bs9#5|N1alW^PKaNWTl2W?8w&qSjse(jFspQr$E z+t1>AnXb@mwyC|IKiJ=6opMdn6L#E*cbvB?1j=2Opq>w2Vq>Ol`a;J*0PpT~s#7|C z6kChkQ~cRw0`XnPbbGTV35R{vTG$f17RoWaQQZ-k=Kzh-{UOMAu>oZG@JWD;_~?Af znw@lP8@AG<!?O7fu(evJOzy<8fD9i3(CisYY@l1)C6kM-R8{|vGwd{m*9_<^kaWhH zyo0#?cPCiLQ=xPgS3Bhm$8zj)NGH&6JjO2ln$7NH_scxHew`S_5$?MR-6>mpc(G>i zvGwQ-AG;pj>2)qJg3Bdf%d<$dosb}yE~&Y+Xt0ebJhRhbpvAK{z54_}Fq4>DPAlSi z?^@uUa3zKtM1_qhs`tlHIBzpqn$<aeuI+?=dLr26N{wB_^Enr6<?+GG9ZZ^ytYh4T zz0MN$j>Y-4iH6%!^7Jl7XI<BN6##$avFJaKE@pp=JZ1~<d0hALR93=GNpq0t2N-b| zlMff>OfmKh`eQpnc1q<$$0Rv6=8<U1OLBlX6;JbV)1=YuGWRRNC5rU1?2U3_7m<?G z>Ef_qq{R?5(K6Rgus5pnG@rPJnGP4RIPnipX<7my9wuE6<RWL}HpZDm@5WQ-QPN=b zwcu&q)QQNM+i0iWxb#L`rjC^tpE2vb$5wiqKjYZesy()|y8k_bJin?FT@*+bO68dr zZ;pV|RJL>~d+uwlt$DNK>Jjg7<TQ)RR2IE4A5E*{4pCk$;!kJ|;c?{grAl#^j_wju z1FYk5OL(HkBSAAT3Lqv)M2s_dXNpkCdQ6XGw>hHOqfbi(U!|iyIUo4-kDpV9MRR;R zicN};>m8q#{h&f!=X9JoAofyhBh7ezE-lFHXX3M0Dmd#MBF~jS*#F0rHl7d7pjX$Y z+U7*50KO*C`??TYgSj}N;Z7?7Kz8wLU_%lIzQY9wHr8Zt<Q40k){ZQ_-<OXOcDv6; z#B5Ct0)i=|JiCzKxr^&EY&T}MRKn~-Ot9r(zpm+~>cd6={^~;vGU748o3jrwNOa=t zO-wgCc#`7mP0Y|>(8cL55lw8Y6)*TXq~Dwh184DtXc<jIg8n-u7<8~V)G5N?bb#18 z3YTAJLdJ4`Zu!*TcIrQD*?|GOGAK}TzZ=nG&}S>}H9)k|UXdI4<LBEdW6K?LWAZje z25uauz`BpKVFH@wZcTb1KXO+EHLIwBVLa2)eA^^ETebJX(_eJX8%}<8JWm1c;BNjL zZS#rma)WGk4f@*W&Q{jR1U$3a5VVtl?Ue1JUH)CN<v*k4Jjvs(^$jLe=9x@bTzqnu z&LIh%_)$5sfLP~l$y1n#-<4TS=5$e)45hZV(WT-^9)J$-92DyMdR?I%tF6@TO4O|) zB?!I^aw!y9*iz>P`a7zy%67!h)a%li+wnf9g%4WHRZ<`7VpXNyTM=<pyhDA=&i}&( zYhgBoe<NQVfh>r&x*0E9el(G|f#%q3DZTg(vDxJoaDDM2VjHfKvZ;Rg-keqEUDRvl z7@5&w!%^R<j3OJfwBz-0w1_<?AZiSJT631Z3-XRFdjzuQV6e5apz#i&w=Ml|PnXkE z8w-&<Y^jAg%H!z?wl<vIaiu4AMWkj_F7aV(2+OsrDZ+c1+`Id?*h*b9!=8Fw=d!RL zI_LT=jlmXO#brZD^xJ~g)E>9OHfF@N_FVn8xcE0cHPml=y!^Q+d9L5FC%>?jCr=$6 zpL@V&cXzrm2R`ONHoLe-oIeCx>5F^BDP6IRneMCsW{X`2VbYv(RC0=q0ls>rUf3$& z<F7L%ht2$6x!p0g;nnk<qS<{yOD5m5AF_?NiX1k3#he`U;b+-K9PU0G2Y$b9HJk3w zo6`j{J$cF~dmTZiT-Q9bXLtH(u}<wjFVO3<j3o+TPpnRvOd`(gP9rjy%>N|k$Z+Cy z?vQO+lQ+YzUiXy?dxYB@2FEI}*s%J?dDY}zEeqels)Exg9IP~^<oWkT>G7PR?Gw-F zj~?ePxbAMqW3!!XT;LNnhv5~21xWl~#bU=W_mq>U6ro&fs21DFn`X2vHMTTM(!SLm zm`T)udYf%^LoS#>qOPM}g@T3ll>uJOS(&GnoHR#6`fiUnyVR<0nb15*&7vgd{$PKG zs$8FgUWHvVpVx}>i|lk@P<70JTK#J1Ri;R)bLkZgnE~-?IC&9{p%wcChwE2$zI1`R z9M5|OeGTzxglU)5Ewivax_bL7sf+by2Osg7&iJMT-vb7hs@)cKJFK<Y7Oqc@+bWIz zDMzht%N5!CeB^u%9|Y+E2Uj(+SfD#W3gkDQ$6xZMN1}9bo4h#cp2uNl2fT*vlXJOU zJSLx5b7yREk<xxbvu#b$tw&1eKLt?EsQVr`yohNJ!O%r4wW)^8#ZGG4>bmq7S?!3y zdo71b=%Tzk^Bq~N11e}((Bg=+HR*BnTCS<ZjaR#-g3eg|A;~+9;XNsIO%I)B@hP8N z6nd+1e3ewL7IFwqO!Kp&jrTh(=~cG5Ab=M*eS-l%9qrD=dBZ`te>(cz5B`LS|Aa04 zBqnmA`SW?_r+p$hxG3=Vdk^CAeA}lpz0Tl+pv#Htcj*4%XV`A|IQM_(Q?^>0PX5S_ zsCs6RQdU$5G|^y8vIN;|%bl%o3t;h^QQ=PT27vAJgl#d3XMJKls(4rgz^%jIJBq?e zIO;>5;z-X>=oJ}D>JxEhzn|?QQqGb@CO)sJiVpdFmgFbs_bL!;6ocM`TsDV!0YM(p zw#E}?fiEL$0&zm~ZM$RzM<ucgWP*5}Y<Z&T5gJoWz*vbrixYbC=u$~UW9qQ?uI+>& zm9C3{LQK_Av$)(<Z7b*tDrAY^9EXr|>2Dg~j*7K|TM{9nY|z06*{XwwqhjqM({LeS z;mE~>3%g_%;4>=JmUfjTAXV9IR9vIqTDZpDUswGbV8RnVAu2YJXm}+<Q<Sc5x2DFB z1TCTol3<~})&iC)4uhnsg@TO+MGKc$ko&Hl5-jv8v?sDVpNP=X<2ofZQn)&>9{Sdr zsJ`HeDq_HbMke7Jr6I37+x=x0q;oAQI&k6xI4?tXL31PL(;^<*&n<UBoWX_ooV|vx zR2-~X<09=oHxL>@SjMDqip2qb0)}k=T|@qq)^-;w^7*Z1Yc4CvFqa0605UwD9_q1W zFRPLk4&$56HijBrHVGfcblcj4N24b9ve|EZ`pXs=O)vBF9;A$HCu2YTZtCt(lWJak zNK0g!{hP_9%r8^s<m$@=_4)S?gIn~OziZhL^ZNE_N8$LK+g9Oz*+%rX*Rd@@=j-Fx z+v2kM;zTsNIs>U>U5Gnq8aCw#Nm2?~g4XtWk)iLkPE+ntLrNnj;(O~n|3ZVE=Y-mR z64qQpdWGLeW9?CNlti3Cph9~mIF&lgDw5uzi5A6IlT<-uE255{T{P#m_2Sg*$5u7` z?C-Tei66Apc(1S6^0_?jkK!2UQ=0f>&K3ai$`FU&Wg8$<(sx@?kLLP3xI-Qx1kd-v zDAU^el#f#E*^c0>X+j}JQYsBvn5_@RHc`MGRua;#K{ZJYIjXElo!iGCq5wlIkuAsi zGWit7WrDF+KK%MLHi4F3UuyTF>)F0ejy;vA^)f-PFHobVgc9*9MPFwrynZVT*y%|x z8x%Fqx=w;;Q{VMxaa+3UxxP&~Yqz;g7VD>Qn}!Nx-%K?sELbLlJS`~5{km6|qUgS- zM=EqLhfD8suXJn{k5+$c%2T1UDM;VXh{OjqcJMM~*J^p$rp9KX+0Q*gd@#F^N)p`f zaq+=Njh2^*GMt}VA#uO;2$RV4ifdg~_tF}@EmM0CO>IA8`X=dColHW-N!JoDSzcQr zwl<#W>3nOB58SW<if?a%tyqFsE>DCFm7sEYtVksytJv|f(WH&HE#M~l+{BNq&Rycz zL{v6ihx=1(_G#H|ObP|rEIymxOMZ?3S=5}7|K48QQl><N!bb_pZSB1z=J=_f7M;jH z0b}4ETrzHn&JAfHw%UaOORAtvaWP~w_*PAtNVo465{njDWZBdSkd1`j1;;FT)n+I1 z=8|7Fg`@4et*XMI&l?InC<4cyR9QYn=oUIz#+q;3#|PW>o&WZK|IdH>`uqR$-~a7D z{nP*XfBpCW@lRj><G=oY_IYpw|Ih#QPlYWqo8$SXum9JK1Z%~%s{6#cpV<Eq{`ddL zXZ`g@3Tt2+mwzPfZi`dvr;m)k`;iecvot?ag0%hfNv8dY|NhaDSmLa~*rJ-Xe~A4a zwC{K(EP7xjT02@)zkn(fm|X7&P^(tyX{b9lz6}bN3JI+U6yc=KlAG%iWAQT6kWjSO zmP!yHLPHw?LfLN=iU7-!^Nz#-1kE9%7FNeFNs3neYtS=)hHKZQj^4Mvq7U_zu-ZOV zU3kZ0*oijdM|1|dJh~Q+Lo6ru(DhlKdXi5sGGDKT%B5IGkID;5=7qW|d&gpVu+q`3 zVrQTAI6@@C!le(1_CP90|HYA4{lyK}eYVmoWuG1x3wn`Ua6pht{$MN3hf7z>5gUYg z4p9?Au90epbTLcrCbe%i$M4*>1rgG>20^xVVfhNbU+*=?ll@z#tbAjy4O5WF+w<6B zn^M}|H@zbFBV5mXMwx@eUPZ@b7k{$XdSjMo-b3Quo5#dxlfTRvB(PadGHwP5Y}MnD z#mR>WVfop@*904hKn!6{2s+IbQykgbA*+pmt$WR21N2B3!qX>7qqiWi*>Y|-N=&)N zRMA^p6WHw6)OH~Pl%_mO>HG1PSwk@|FNJJLttrLnVXA90TQp>A*(btRYX(~xOKs0v zIJ#2Bm%t+L!$w2g2M5Qa+p;sOEiQW9i`9tIE%Vqg>)BHBvhVDo+QU>lKiatTvraa8 z@LEnAJ$Pq=OL^gXP<CtYdQf&V@_yZHJpQ(~X&QN#;E%iwtr6R1K5gXx;lKRb|MvB- zUteGUZ2$is{+s>dpZ)k>`OClP(EjjW{15)mfBE{))6U<2)3<~`z-a;5bXO7f-xz;+ zPW<<;en#uRe_jXwI?rhT_b=-ezj-o*%M?}1baaL3lKk;x{_}5sq=tXT1A)-|Nb^%4 zedj;_z<0t*MZ)xH2M$Fjl;n?WM}qu=?Kh`B9nZ19o*><xx#uH45_ny3PWDIzc3kyw zEzY!rjy=_<SbmqZ@ef~|fs2)oz`{T}6Vy!zY~fNmqWRoaB?2^B)9=zT|KW?_Hpm{N z{qb5i(Kgt14Pw1x8<pOLrj_Q%;O|nN{o$J{n{e)*#$VYCAat>BAp$P)3`1E6*$QQ= z@sI!HO4axIND@r-FE=F#P*qu2m81#=s4J?}HfTlt!{2N{jHRI;7dA}kRSo%|in2@d z<Sf@#K^WLw_=mrk48MGot)<ve3F!FV+GycJ!j_si=PEF<_`CcTAMSB8NB41ck)^`R z!m<Xy$5cGqOZ5JB72NnA{J~p@xjPHB+QX#|O;G?UL4C|S#T98Y9ooKK)OK!W)Oh7f zzuBG<+f2Q|Y<@baL))SPXT6lfZ+Jw{;MC*e-j$g>X|lBjCNldF_@lvc9p<7I4u^n_ zXKR_cQ0dWhMxJW$E_3NAI&~ii@Ss!zWTs%6k9bc+2_=4^2SVwuH?5#W$2EI%ncOwZ zn7)EtnsZ`-(dzH<Kl2tI$fL6Xu@HwbN<QcJ4$GXQ-v@_PJ=w2`Qv^F#QGRnMsyb(2 zulb>)!=bK`zisFh4z*Jz@h!cu`<X}8ubmp8-<#$M?BCbLxA+M0Iq?CcnwnXbJlmtH zjv!oF%)T!)*UNgO+^!dN$zIoQ9eO)e@i~37+Dd`Ug~J6hczwX*Q<3k#OSwo#mnb;c zv3O$vbeN=s&7sBm6L|po@G1TRyF$gYyiwM=|K*_|4?3(Xm9@iR;l9714U~Lz*wts& zq2253nm#V&@y_^8VrCnW;}JmLmp4S=5E=s&@l2A!k7g7PQN#I+!_XhQ?&q7ozd|7S zEkisB=VAP(An6BNN!_+EhgbZ?(SGZvM0V$|*QuW$c7AN>6NZtt9>H~VUgzTs@4xop zKQY@T=xOt%IMAQyCs3Gw*5$e61}(dF*#dL?)zj++s9aysyQ2o4xOkV3Lg0g>j{bVF z4}DS?{-8vB-n+pclqhO&(LRgWhHs@09VD%F+s~Ln{6vF@zq6f>4;;)TE5n469&LCp z>AOl9{PSMR6LkGi<6<`-hDMiIKb@+#Bv1#aIn4;32FJ(@SY~g8(2#c<gK1s;67!J5 zZFC%hdM(Md8NrJ`P$1B!i9>zQL7Yhh$oNLkT+<+*7Pk^JTS@au14k;LFL7&;KAm9T zjaCq&DqY;TgVdfI-a1_7+*~2PMFxe)i`Ui%lNu^SqE+LfkfUpU#B=ek(ZHc$Ju=~) zhz^)2vS)g>rO<$e54tJUWNJ1@Zx&)%FJe^1L63I;hQ{I53T@sM&<qTZ!)~o&>pren zDHtP|rQ&`TxVL~1z<;W`-;&zH^g`+TMzJn)g?Cq);(pMeKTYmv4^Z=hzi&*t1COm| zNj^bwH=t6B!rO*1=kY6Zi&1#nIQ0YU8xRwIe168~<zXRf>H;vl<|xvlS$k|rPb(nT z0riQR1wQ4WTnrZ<MX@YN0f?uxUC=BDE`dO4yN}gW7^?-?@wu`Qadq{Cp3;iHw>Whx zRBw1&Oct>7)IbYZB|HE4C|nRo!?vW}+*UQu5Qc~{yl*ju;Vh#l{*^A_Wg+K7b<|JI zxtyryXX@`tFPqTfmR8&AivQGDw7ppTXt!FnJqk#7Wr(l*(J&jpiwAs!WXB#&JhAX# z8}CwWP^b&oXVBzzNdOYA4o^LU7}QzQwLtA5_a;_R(|u^5UNgl*BdxX~kwJ)=yK5g> zBID5ZpqEFeJsvq*ndb3%sM(9Xr^jq*{Nf3Yu6m)N7xo`|$WKqjn~+_Y<HnEo(V4;7 zf;&JmDgvJKy(@t8g#iUkn5I3c3ANMg8RAz(?MW#?dBU)IPjEB@AC9z721P){+WW*& zT_)08LXWJ?rc##tg6N`Zc1emwcIRqj`wOZ_X$Y531LY}n9;3vadQsu=f3o`Ix+vIy zF8KTrB3qr|M`S^V;?E$K7kodU6k^4qnv~rSOAL$sk(%^y6obXpU*KvW+{oHk+JlQK zf|CZGG$)GyF*{UZRYncAo~d2Xz7}qCJ*zbNfXtGZ1{FCgRX6fcN})j8vu`%gI(-3J zMqAQ1n;f`yR3%}77}{+*FwZY4kj(iFW!6bRHP{jp1y{jwn76g>NXV!VL}>@=?5%7a zYX5F#Pi-cT5G9*S1iCQ$*BpcPaxb+@yVz4G)TO1Uds_IR_pZ_=(@|hs%GZ$%gT)ud zfObt2@oO#13F$`TS1Ow^_^^QFP(WUr0~BaR1e3bP_6P=PVTjN-e+f1gROLvjiOMw0 z0mO23LyLMGBwPoU1Z2vBN}ll8M6zQmAW{_;Jc^$RN&t{kc*5hTF=z-1>&XIHO=gO0 zl`$c^OSTBJP-wy$*w&3yY!GyxGLUl`qPsbonwJ3|i@QgPwKriv*yIAFGpMKHGT0nx z4+1Hw1WsgS+W2g%t+JVm%RD|os1bVvE0rd}4?y^ng?-5bKEjWH0S`=vK@!tFjt~Jp zP*!L&dY0>Dfa8Jk12UBn<-H!Ao?UKOQgW4-XZIu{Vh>0bX);$M7IyQV5MnUn6tuM_ z4Hi(50YJuA0Ee<Wz!L~MF=)31d1^Zk$h=1bP||>4J7~(iDSQwrJc*tHJCuEatuZ2s zq!}LS*tYC#Jt^=2%BGe=1fx5|1Za;CHsG}xQ<g}f_Q0V~g#ouL5_)<CB*OL$qBFG3 z@2hD)CJ7``vi;7UF|_|EP|IeHg^w$))s-;WuVRBRTXJCyY;>y<HgK`FF%MmJyRo** zJ+7Icm@NSoLWR%Vscl*SJ6ZrFjN;x9Kcm9Ehw$5WeDe(KS{fMy^^482H`s6`A5%z= zj%NT*V!zrx#cURpF)_u2<e>Zc1$l$Lfz#8?W|#+}hD^eNm#eV7Mr^eyN*)aR(JseE z9%m0L4rwqjikCuMu762n2Wre8)ozfUCu^i_O8q0MXaJa+fZ<D=ba;OPf8ku3a@dlF zGt_|NgtumBrr^xyRa+)CD*LCP<_!5OUEt9CA(a3Q&2da=7UCVLqP?g&?xBP-qJRvK zv=Y6%ph`v&{vYIFPb$(>66>M@MQzP#168YX@VHa52^ap$!(JNmSk$umssq^L5;QWW zs#KE9g}DFK)uf?ZiWnJPu7NR&FA4F{u}tqulx;|{CAEn=t>doj-tLH_<k^CgPZVnO z!RLh^f%;-m6$ZW2@_5w>E}85D5%xHUnfCEsPf&FS%?SHwy;gK|-t4x^Bn&;Ztk}yu zf(y|{F2FBk)w+0QC3B&kbk=M$MXRSN*Z)?(%Io$q3^woCfZ;H^1fVUN`2n@~jJKvM zo{4xSEuUHD;M=NK)9ke8q{&@;q0pG-+fGFX9fj-z9JW`_0_3jAP!Eavk$>F_Kh5ja z0f#3e$8Whm#G&QaDL=Y|p7QtXg%chl*DO5AKZ8%r|2kYm<r1i{*mkt3!fk=^WS0WI zDcdc7i)!3gc+nMS$9bY_D?O5MD|lbi9cQRxa}*zm!p&lIIEweMt^eWTCpQ1(V+Gfc zM^Q;O+?)Z|xW{7kv`ENDAV2De-wKFl1mxpUOaA*VRcd<<oXqdir#>ShM?G;#x!gL6 zM-1fXSYN{;ACAsY$r&^`pLfPkjvDr*i@jfWz4wDw_Bqq7#q}o#=hc6HwBN9$zRpa| zbve%^K9~L6s57gRRJVWM+Uq9ozn<HD-uv;!pIf^oem3Lv8lkvs*SVv6>Yr;~z0J?q zLYn7u&p9Dh>%478TJ20LWnf0W;5QAo?a)4Hlo-zUzaF}7yRYHf!xG1ny^3dkv-r7O zkJb@=j!eet2+}C8=N(@0J(_h&d{-&(k4Jae&nr&1L>+^9K2~)f?J2QiJMWl3Z2xbg znc_zw`TYB*SMTrMlV{gE&-WA|yTVIzdkHu3Q<T2Gjym$&egxB!jwWyWE&qK+<f;g1 z!o}}?-g?V_Cxtz)A9ht(OYXi=>~|cB(N#Kr^=?q-6+weQtVLyEsv#&=e(IEyJ=mqP z_e!dc{(v%y2Hf?E!O1)#PEj$qJ=N1zfjwc%w)e6hQr;3Jh^m@N^B2^RR6ahDG`5lS z9XmoM3(7DReyPA3D~}DG$HwJ=L!`R&I#}2Q<K&QDhNf4T9VckIqFij2^VtO)WNS${ zW<Vbi9#H8}Ruy2uxF)JMLp5sk4HzU&Kw*$##j_SAeU-fCtBdkGJu^8J=RrrBZ%CjM zsiQ_l(j{@Bsu2y_z&pC6Fa%Ag8r)8pA`*}jHP8T-i@M4eco-5nQDF)?J9eGubGYHF zD-lr%lqs#jbPHAKVL?k#&TOY>kxD0XtePZ5KZK?zMJ;AtvrkJ^<*r@w3zCOITSqfe zRFp!NXdgpL8pG()B~ihN38F}$3q~Tl@_Ej8Xub$isz-y)r?v?xmBqEPQMP56mB|Q; z5CtG6^BStJWoZ7o1CAOs{~jclnVn0ZsOBcFrR+$*RgINKcXviprd3GaMdwsP^?CM8 zJD5zU__z)r!QwfTn$A9>ZJPq=p_GhjnT&cYGt#tNRkH>6iqyJNJWvur<!In3h4gTs zLr_&nGAC&JuL@``jShmB_RUvw<)P$LO+|e`GF3#{hvt<!%_WlDZd*I84k%y;)pwF% z5-2a6*@fVB+>5A^lV$g4?kKsAO(eKN{i)>Lblth0l<>ICO4T9W>zbyCLg&*X7!VTs zm`q@sYcSCTl|#B<aCXnYCR)Tj=TL%%vsCjdS@SPV34$sFOC*baPGz{T>7J>lM#qM@ z5u2qL8oMK@j})E2ra@wzRoX?auwx@hQ5_x-9V<k{oJ>4l=>FT*Bu}N+*=0s^7EnAX zr%YM*6nJ{`<Qkwbx<h6wfPn1DW!TF0dA>GuT9VBRC!tERH*)qouiOGlR4B0XL?V@q z&7MA~&Qk3PB(iXhCSGYah5#7#tP<s7;y5yLfLN3YHWp3sy(y^_S6;6xqO8z&*z$%C zD@s^_Q6avAvTXZ`&}XQK!}(c$#pgkbgdQ<As!qI@+M<33zYXY=oijkwF>Ua^*zJfw zUfJi*6=lv66u54heFmRa=!SJ&(57k8D4-HiTGIv$kRcY>R4pyRHdJDaMIUcpepXMU zCYNDaZk`Hp8VvU(9?hocj3#MhY7dO%S&WfkJZ9Ok*-s*!j?l#pp139fHi{3CHKQUk zP)uld>}$bz;ty5oB8s=u1HW2<W&`%@^k2<JIf=#!@LA`EjM_Tbrvalz5sE~(E<5bt z=eadkM<>mKBqr$?QN>1Ghat_T{Tv8Egfp;`;5S#|NiH-E&56oWP=i&M&`$J)ur*ID zq~siEh&K5kI(<hiyfL@hP}-)E5-7)tTC`B$K`MEOfA{Q;=2-2mG+3Hyf#9p9ZR?i> zS=##aTUEB{!2tJ>H1@+%5mBc&dy|HDNSoEIfLUHrk5CFVZ1(+m>X9<@Ht-pdv5jap zT0A`8$F-y&<yt#uhVI1OW;R?3HM8T=l1jcrCvYzg8iMwZzj;ZInY#ipr0wdw(;hw1 z<VEISY|Ef*WtUNRpw))B5)x7JUaE6usn0S0!iZ;Ag_L>HBWcu;9?2p`-AYPBa|$r8 zNWh6$ml!58tbL2^4Jmg_MJ#Flar59TN?%7-Q0!}VA&{z|U-Eb)X8W(`CATKdP+{6t zQ}{Danr>*-MM3(4#N|s|UfK0(01-C=Saf~G^#-N3E3G}M*S{1f9z_V_775WUMh!+H z1vn1EMN9HfA<=0lT;v89*~GDkLkQA7MDka#dT2ff+a5;6%*M8<?ze<72SPH%N4pfE z*<D44K^mB9dWR~=mR%9)XCkXYD*=8GTVZs3TrM$6%Y{!9N?j2ZU2XAg7Kw3@P(=+D zar=w7Ox3Lrk`Eg3A~x#eL*$9ce@x5)_=F+}4>k#kgmy+!ZLgD-OTEURQg!ASkFk0b zpSc)Il80D>3b5HUIIYpT#n)t;1YIk!-aJcanLTwlM1HFGz`(y*e<sIn75IKqYcGm# zb}Chw7OjqG<lA^l<W<P<NOp^O>cln=-~n+6`fYS{hO>SLg)l_`PZoM@az)<1gU7#$ z<QoSbJ)9B(M;z~2W2;piGS|&8r__Da8<>%kd_zL$5mt*WI6-*xvKSE-x;-NPetad` zUqj=ePjZIc8=W-h{bfMr9B46=StohJq9!R+hTsvfRS-SiVC`|*S`_^wPGd~E@hR7_ z+qKy6txa8BTck0+Y{E@E?S8LVdZY9+_E(4i6ga?jdZZzh65XLW?`jEWH<|0!tTX&a za3Wk6Wq5_(FLHIj4mlUqkW0g4a4R5^yKc{5k&SuFrcBC^^hfn2plNPpgw7bx^P)jw z+9;4xBnQK?nJB?5amo!8p;$KzM`{Q|m@Tm}hCFo{vPvOJc6;~LZt*QofVRXc4VU>$ zfWmPC%gXkq(h_KbDa+tX+|fFf6jo1S@pAA+>+lf6@Z#@nPLk>CIlW&e(%$(U=0t;b zli|Du8^nMuICb0x39%D7C6Jkd>jM_Cg3WJuT=La5g@vo)Dnb<wafL&bY75$#_8vI| zK!IAb_@rySa1*Kckg#JZqH9KJ8YTNIbWoutY0yez0V2wzoye|kx0lBs&s4SgB{;7s z?jdXqZc|d_ectK8v{urfku;CQ<N2^}YFNmZq1bPwOC{0~eJwi-EyE<L(6yLSm<m}X zh>8U`n3`!xvpsVZTsisW(l(GRNwr5q`{GLNQ;_MYLiU_Bee|91){5Pw1J$(EiKA7F z+fWEr(TxryMIkznWLoxdZ8Bz;Lfb-Z1A;Ye&PVudK;kCpiloYomIOBx)+%hz;{dk( zydD8NX7IBZR}+^^71g0#rwj!SwoO<64!e(!+hSNSJ(9?xpreaC4x8l|G0K*M2Aqa^ zd(CZ7J3H);;wzuWFBjv^(ALW1sWD->Hf(@Sf2*TuVU+#fpL3j*_P`>heq&e-tM&+m z?bDx`<Uv+T;KdBAUL5{iJu}+V%{z3s&g`AE42Z}Za7VhV(-81}VW%M$)OrFa4jx#C z%&++bX^oVz)$Y64%k0lWl_~flW%svPDD?F5t#9{>!#>m&dNFHv`ULUuDb@pBm%N~` z*d4mHn7#Fvhxm(W{gE!V33C_ql%zA6cuU?dTs>Y;@S+s`$sw&_KXd9tvpcC762Fk- zWon@Uq!w8ccg6P3s#0pj7dQqSo(_7aUyr&>c-l{#%EdL`?xA_MazGdH8j!~}sY#QB z*0eb~G2k4BhgVFlAvxRo9*4&UXvl3*c_MBl_|weVkAQ}-6(^6}WAoUCi!old9pGK> z<*90OyxvxBa`mL(N_0sYfxX_sOG%#`JnVa7zxe<#S@aujegSM2M3tMv<<g1Sd<s${ z@{M%!L`Y@G#SAx<#w8xJiH$BFFD>DeJQg51E3#!Cpex+mL`*WN_7bE%-e<^gY)<xc zy;T6Bc_!-{7M;{3ZnVKn_t`Cas{2<^_D;>OKzC9&1e?{XyKQoK&2^S2?>J?ZIftpe zG^)0KDWTW+{tluS{Px>sdr_KKRLB&r)RS8HW~w5&xoz_0rF^>?&TDenHmSySdYcyM z`Wcfb;`*`Is=aMJ_t!On*CCeCzS%54)9a4Vlt5(jhglSt>dV%AqWsu?<VGy(WLIWO zER1t!hoaE^dmP7M4sX7o!9YG-QK1UU;xkE`%<?+o>$<ml!0$#`@#D#xKo-Lw)h>7m ze2_l>^t7mkCc9i-5Qz$0HE9E{fUKV8aGIRd-_Yn^5XT^RoYKUpEbiH)_CIsN&>T5- zr<&hPayXaUEIdoD5CMhi1fX0O<OTwn=azI0hfEH*5022<il`ghL++Zvp$Rp|Y3%%X zxm<U#Cp`G)T5LDx4Qc?W?x>*)AB5gP%uX+Qro)P8@^twch#Pqk3p2WuCp7Wpde3ql z87Rm%*KLk2k4X_~FD~u-I23KJtovq8-e)j0__T0E_J}?-CiG$HgX$o>q7)=_12Uiu z4l_=^DeACz7a^yQ>K8mK(iV(*kfMt@l3zNcva1RuF-Mo(j^ZLFm}`<$9ByM)zPLDK zqmYfQs1=PZ^)_wx6lQ;Ka87*$y(94Tr0TBP)3l|;KX+xqo9s{Nr^^7aOR6JyW!CJb z4+C<tJ)-zKg_X;u>BT<2+03y$<Mnxq>`$q15{nz~db`m1PMMFRAm8`I<T#Y;8f?F# zrU^x>%RkYKnIuuui$Oo|^u;gb-i~UqlM*hbB<W)oRWEiah^gwdDB+x)E~!7XIPtW- zHp-e#61M{iuS66N02&}6vlXe3W#`fnDG0XUS)Ky+T-_F-6;ZJXfYW@h0Iw=0f{@Tx zI60ccw4)Y^q!LBNCl*I76h1`dEIz}_57b77ILU9@lnlMzsv65==IH=kWviZCCTSaF zS0zoZvyen0QO|8qzEX?7F}OfOl8|$9+v8(6{QOGZ^?sdG4xLW}Vp-;=O>I=7DP||{ z8@;FrC61~s<<QXSm)0?Beol6E37>8bGA<mg5^u`7lhM6?#0?y!M)ZXHUaM}LwbJ)} z-M(K9NO2Bs3QKIoNjDeMB_?|wx<?$nkUY!Qgwfh$n%KI;9j?bvnf<JT76^!c<Z$gL zugrwW!np_M1g(gy8v88TSM4F8%^{yr@wdSpn*|SDS(kd7b+|u7!KJyE3{A*Ph;w?- zxG*tq>D>{d$+02=k1q1(+E(I79+sct;M3-Ven3*~vJHVPZ_KJWx-5Ue?EXY}An!P5 zaVw*c!-1-K6alm4-?|_@Z&!C)yUSz0-}b`FE=OgLLFnCKvG+NSAuSpqXh8z@Z$GW% zH3VGEB?;MtIFqG?RsQ%D6Xca17f={Q{td|$Asp=xJ%+4Y+g{+nD(=qX$brX^3#oWG zW9~92OSRB<&9B}=-sV`AY*bJiL)qeycVIq9T*=C+li-{0Jolc~rl92bQkuU#e4F8> zn^YhFGTN}+SIe{b!J*rk3ga1gs-5nq@q6@aBf->AsfQ+A5!?t&%`s`({c#h?c90Da zPN!)Th#snJwknzc`zUdYq0VgsM*PiYPd|;J%hr*i<!fKIqW<sDWCK{dC`NwbEosO+ zjMPM_je!msBodSoqDp-1aA$S^8+f2bPboxEqhg~yea{_4$!%VZr)i+;#M{$tU>3g} z1MOqrei%}eXJC#j!J4RZ5{olHf@jPR8qPWX(6;OI7t%RM>S;xd59vw(#gnZBy_Jbm zQ4c+|W{|+)!h(BE>U}**#If0Gd)$`P>)=K`;!u9nt>RnZLC)eddXiM)i)@5nNx&`Q z^Ww{6zE>U0?l#)(K{k7SW0Z~I>8_qzdUWp!ZEp3U9!)e<x3N$szzg9O*}8D!L9>eX z17*YgM%lWgu5KHJaz?84d5_qfkUz++j@P;1fNJXcZR7th?aXmyM~*1!YZY$=UpWts z_VNuuPNO9>AVAu^;@n7*!P0N*d4)g?tSnY$40mul_nS5ozprkt{a%-ADj1e;v3!j8 znLxQHmHbCQ6BA2Ao-H^wRB8EzUrqOF3*ZJqxcz#FBr?Y<1~jyMrD)lU%?c+0RSl~0 zO8AZ}s}T+juFn2H#i4L^pPg@ERbcZKwZvwe6-eSiss&rt#}7HBT}BMhx8DTpMZTcx z+);Ft*&>QySyOjovudR(2I@xlHp)C(Arh;i|Bn6I_CHo^2tt=M>`eZ4XwvJiYBw1G z^5=ONLzO{lPpmkp=h+SJONqOcU$EvHAdy}hpZ&+}Bfgg&ly+_1Z0wrPKy~Io(23f~ z1H7CAjD_Qaj<9~SPg=QzHtd#?dxRcVdYJz3A)-_&PJcpt*e@+Vt1vDt4^Tgc0AbHt zc5XP8Wn88b@ULd~Gx_1d;H*BTpRKzI5yQiN^*gPEyaWvy=$!_y9pmulrhm&RYbVLW zUveV&0ac|96A3$)L}@6ZD6yH$gqrtO>HC%C9q;DWSu`t~TLHfdWOQn#pN94wb=-(@ z0+zvvC>e1?JpsI?JB#2I4*>q1Y}jUWF;!xIa320rr)X)=Fho0R@-mbolN!<F;SA2E z3!VY<36LG(4=XAFDjV#N)4v|wBPs&h-%iZlxd@FkZ4W&$W~0vKwZ8`N174e`W^Zs) z_z1Nf)^P2$f>la{!C|$u*z+F9+rv12$HqJ#alN)lZT~>+9A_n2IfRY_3X0f}%@9g+ zQ>2!rW|M=U4&X^nOAbJ!vdQYNffx{|RqS8aM0}nHoM%fhzj+6Kf2m*<L{+hbyz>Ki z(xrfQRO#46@W7LHQ1u3UB;Nuw@0SV+Z%_!`rXNytz<j*tttxYRA5FC4??=`$0tQMk z1f?c>c$ZVkvv}k-WA5>ejdW~pua~m_sVdN?f&zXJP+{2_j@!2Gu}O3GOE$-@m?*MQ z6QDKozjet0yqc>3t@MkEViQ%)0G^T}p<{`;D*(+XHb@A+WMtZ<Q(1p_mh}ovT8poD zLoWBcTVYh;x{3>06|pp`)C2*8Y;vIRC7|X5V4i{*TIuo4;at{uNwq_g?Tl)RD?txs z6B;>resn)k%Mub_g@H(y>@p}*is@&yh~-9ZHS|;qcEj;$dcrQ6D1CkCKs71q=;3ms zNFHwIY<<x43K}N+W82KVov#x{QqiQSYnbfpyD$eF7tsGTue1Hk(iuJ6*CxNz0Prh| zb<AC+*iYBHKXpS?@_F6F&(e2mmiAOM`zqFg7A{VS{#LdP*Pf+e`2VZ}*wwfh3G?J~ zoyku&g<6&HPm&mpEvY#8y@;R;0Gml~XLRj?EMzY5Xo(eAr_Ogy@Muva*eC@Z4m6%c z#5&}2mz<#TlX8K0EZbA{3B*}&E(a1osfIX8tWY_64&EePi#vxc5IB_tuOH|fuyCvR zR7o^9M26sQ=Lvl`QuR$bsqENcUpE({Yb#DQP%)JBc3DA@y<^_@r9#e|wjkz~e8R}Y zgoYrYpHd4TaiuTsIb;ToAj9db9x%!s38iu{7!*$aTKhj?vPQ0(1j->LWqd~r2~`I5 zB>uGjB?JI%ygAz=b26)>SyD1Wq(o+~%F}HN^w$oVy>>CDq_Bb_iBLvlhs^;3q{p;T ziP^tRgs7W6f;>P4lI$FMIHHmVC{ko2mJ6x`$Wq`f<XrobNy|H0fm@o16ebyvH%2DK zwQ_GZ3V@sKv<BP*8~;!VMPOX#1x%qhL)8@8nL`uPfQ~B2@|NTX1x#c8I;Vi>*Qz-1 z*daEM(4T?H(zRRKfAo7Zs3m~9Qrfbg9z?!G*s#1CON3jyAHZGs&NsJcNJ(^+Uh95$ zF+zqGH>;p^*Jz$KHwMS&@Bk6|MemM2YXJlhpaC~t;1S4PXjWI>Wp`eOFugW{NUp)R z`7x3|;lUn+%`83~SBGzBwY;2{Jdn0iG)iobYb2&=m1q88PGdRcmgpG|=hYgt6(16m zppdfvR`p3wP^b&M<4cE);=L{rbACwR+PP;Ux`}%W#xn1B?9h*cTAQ@z?8xx`)I#RQ z$Ah**r(cR@%Y3|Nxq%k7`LYbj?WB>F!QIOi&Uzl<{ex0K566LN)xlvyp64{nTd*>a z54z)gZnG3((>)5Gkw3A#)@uj?=G&E_i!iUHeZ-RBWQ2-Z4!466F(kEIZ-lk#9uxLi zkX!VBU$J|B{)(N}b%@<F`VbT7wzZF#+gZifJso?+iW(vDn(wJx_-^_+%4_+GfEwrh z&e9iBcK2>)+T)02-X-fZ1P^5_Q8a=8q9>Yx!<b`iHn-N26NFpKLvHYwx<gnMvb3I< zSVV++(_Z<2q90fK+cXTf`BZZ986<exqF5eoXmuHh5wq?1n2WiQm}1*a!$4|geZ~{h zNJlFrU+>c6Y;g$>I31PYMq*qa4FHcd$?)l#9kp4yBdQc@4zn)g9<BTLO%CfRU<}Y0 zi>oKFX7*Tfn9wszS(Hs~h<48w!!M+k(vJVhA}#K7V=%s7VSodLq^cPeL#g|s$QQVO zZ{h+E>c~i<VMmWa)p^}V^e;}{!xSS3YcRMxA{?mt__p|xd%bPCCn=@tSK8_?sVuw` z`Z|_e65rSgyFh3RdbqZBR_a*<q}!)`Xn^zGz7BRNoJ!t}xQ<h*bldS=FLr|KaSUM1 za%|L8;esLrF$_B=ishTGLs~AS+s!*o7mZ-^pDwn!-0J!|1YR1UBwXGHx_UFeoE<E% zsHc^Abx`4;w$wgil=VX~xaCDLO9&1%_w+JfF*{#Ze#M5ARJO-#MaHX_`NSB`&*{&z ze|7T?G_I2M6%%N;zd}#rJI0{3lvj*@4MV+mO!Si&(nbhv>=jEuKwdGSO!7y_b&;MJ zhDmFt+}<%eopSL77~)+>eX%Ef1jIoO+P%c&*5xgB6{`v2Ye_E|bV$#xck$s$lJXEz zW^$7t)&-sC>UiM1Ip_pY-HF&9Lb0VR2YC-=SqFtR*>nP`*Gc3z<Mk1A$ntq@-A?)u z|621Xu3bpRFw$5;W)`oLTGjh$ezfwdb<K1|cxYrA(Qqrmy$fh*AtYD**X}u=q6lr% z@8!xEbjw_x&QY^eSDCJQCk_G%P1Hf9)=o0r$&VdTM69}taenYvx7_r@&ku4wv5N}y zV2>llb9YA3|8R^IF3F`G#O;$nKV~v9mwu2#vF?u#pC>%;FlA!XKeBbIhvxkRt7H7S zGn6FHwPPD2xe$%IAKACi7z{;37{TIOo82(SPRujqjp9W?u?V%Y<r`~17%{s(#?0P4 zN#wWw0o`RHgfgEad2#bdg$JZthm`4EYr9ZYG{3Y;Maq+5V4$`mE0}OXA#s{n_OgiT z$s{*W+Z##<U@QW+otPYBls`9V17XiH8Lf!}x=?|8#SRxzu~NP5clGWl$vN_u=zp@k zB!;L64LJMH7kQ`Pu}IrtG6{1H5SSD)w23WFvGEZ<lRyL+x5QCppZPFJUopEpx!qhE zs=$Nb-MLc?$&^UzkdTMJouz_BgjnGG#}?*}*}q=H*C)mvQza`MV;5^Z#xn4R6)*25 z@oEWxRMPowrN=d<FE9Lk_-#XDzD*L}A;PkikfJD}*tnfyewfY(%NAU<UOo8r!!=)S z`m>yZ5@WQ$fPb_H?g_!|p9_x83curl3$|v(?tRywBvSFa1j7$y|BNN*F%_ycA^OC6 zC)T7J_%N7>F#zmw9P-3O&ycLt?Vbx($(FVH)ls2~)l5n#yIXqUT>=G`?n#G*FP2;Y z_0lYOzP`n{Va_sjO7s|`fue5~UMrK?R|LISlIr-Om)^q_`sQS@UeH+EuuejZi@g*} zL>;-zykcgHV(IBW2h48BR>>d7nYp3M>xyq#RK)lGYxM(acG~{dnfckaQ>7O4raN?D ze)4<w92bT(o;6|553dh$a7bu7aEgw%?e;Dm2OGMbcL41&KB9s90wQGiq_8$=kfs-7 z28eGuJeprWd}fVt4W3bAI7Y*9W+&KOE`Kk=qJP>0=&>~%AdR*5>l!eIV#U7iv3)=a zNRniKVuF(Z=+GXV^bxZJVg~9q?~p1Ck|A2tRUtH}rZh{7z{zqt(L|6GzGn%~Vt8mb zz2tZc>QM?wJv{W%VLVs(prP%FrQ&Aihb#yP!(Uo8nxscg6RRmkkA8lMhigl<#H!vB zPKH6aRh`}rJE1FUF`+B*w6>pwgfpuPZ+iix!cM~F9PP;nHMGN#;1M5{t*Uu8XfeCD zhx*}d$rFPZlSByvPY`M@=>uM`s`)*nlR&HhKUV`gCD(<`q7Bq9dA}jY6=M`VRTR${ z!-Dq2&S#7tQUG0wK{-$iUQ&(Uw@IZy9kN?WD89A|*t+=)D}$%(R<2)22&mm!_`NxB zP+A+$-6M#V?{C*VCL|UP%L;9ciJNXR%~x}mR<IUePYpeYp~lJDRmvb2{{|MX*aRo# zg!!f6r#PNP{Ef_!57vr<2`R@D(|lF@P<#gcwTV6C8Fe74f=D7Ed#|LQyGbz8wV|;E zIW9vLqv0;$2A$jY{r-#%SUJf+btM5be8W8pzy*xC-=GOt0ALnGKxe%3&b%g^4S)UZ k=YRkH2M_-B^B)TQ=b!)n<M*Gx{p~OR1FKauMO4iL07k(PWdHyG literal 0 HcmV?d00001 diff --git a/2024/21/Spreadsheet.ods b/2024/21/Spreadsheet.ods new file mode 100644 index 0000000000000000000000000000000000000000..f37f05a87dc56b50b129b880d5af2270d2ef723f GIT binary patch literal 21560 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 JS7gIE`X{FxYYPAX literal 0 HcmV?d00001 diff --git a/2024/21/demog b/2024/21/demog new file mode 100644 index 0000000..44442d2 --- /dev/null +++ b/2024/21/demog @@ -0,0 +1 @@ +3A diff --git a/2024/21/one.py b/2024/21/one.py new file mode 100644 index 0000000..74e16cd --- /dev/null +++ b/2024/21/one.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +numeric_keypad = ["789", "456", "123", " 0A"] +directional_keypad = [" ^A", "<v>"] + +vec = tuple[int, int] +directions = { + "^": (-1, 0), # ^ North + ">": (0, 1), # > East + "v": (1, 0), # v South + "<": (0, -1), # < West +} +directional_keypad_buttons = tuple(directions.keys()) + ("A",) + +complexity = int(sys.argv[2]) +keypads = [directional_keypad] * complexity + [numeric_keypad] + + +def but_pos(but: str, keypad: list[str]) -> vec: + for i, line in enumerate(keypad): + if but in line: + return i, line.index(but) + raise IndexError("No such button") + + +def in_bounds(i: int, j: int, keypad: list[str]) -> bool: + if j not in range(3) or i not in range(len(keypad)): + return False + return keypad[i][j] != " " + +last_but = "A" +all_a = [but_pos("A", keypad) for keypad in keypads] + +score = 0 +for code in lines: + print("Code", code) + topresses = 0 + for desir_but in code: + print("Button", desir_but) + all_a[-1] = but_pos(last_but, keypads[-1]) + start_poss = tuple(all_a) + all_a[-1] = but_pos(desir_but, keypads[-1]) + desir_poss = tuple(all_a) + + stack = {start_poss} + seen = set() + presses = 0 + while desir_poss not in stack: + # print("Press", presses, stack) + presses += 1 + nstack = set() + for poss in stack: + for but in directional_keypad_buttons: + # Find which keypad this will move + k = 0 + while but == "A" and k < len(keypads) - 1: + i, j = poss[k] + but = keypads[k][i][j] + k += 1 + + # Do not press the final keypad + if k == len(keypads) - 1 and but == "A": + continue + + # Move + direction = directions[but] + i, j = poss[k] + ii, jj = i + direction[0], j + direction[1] + if not in_bounds(ii, jj, keypads[k]): + continue + + # Ensure we haven't been in this state before + state = poss[:k] + ((ii, jj),) + poss[k + 1 :] + if state in seen: + continue + seen.add(state) + + # print(" Kept", state) + nstack.add(state) + + stack = nstack + topresses += presses + 1 + last_but = desir_but + + numpart = int("0" + code.replace("A", "")) + print(f"{topresses=} * {numpart=}") + score += topresses * numpart + + + +print(score) diff --git a/2024/21/onet.py b/2024/21/onet.py new file mode 100644 index 0000000..19ec3ff --- /dev/null +++ b/2024/21/onet.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +numeric_keypad = ["789", "456", "123", " 0A"] +directional_keypad = [" ^A", "<v>"] + +vec = tuple[int, int] +directions = { + "^": (-1, 0), # ^ North + ">": (0, 1), # > East + "v": (1, 0), # v South + "<": (0, -1), # < West +} +directional_keypad_buttons = tuple(directions.keys()) + ("A",) + +complexity = int(sys.argv[2]) +keypads = [directional_keypad] * complexity + [numeric_keypad] + + +def but_pos(but: str, keypad: list[str]) -> vec: + for i, line in enumerate(keypad): + if but in line: + return i, line.index(but) + raise IndexError("No such button") + + +def in_bounds(i: int, j: int, keypad: list[str]) -> bool: + if j not in range(3) or i not in range(len(keypad)): + return False + return keypad[i][j] != " " + +last_but = "A" +all_a = [but_pos("A", keypad) for keypad in keypads] + +score = 0 +for code in lines: + # print("Code", code) + topresses = 0 + for desir_but in code: + # print("Button", desir_but) + all_a[-1] = but_pos(last_but, keypads[-1]) + start_poss = tuple(all_a) + all_a[-1] = but_pos(desir_but, keypads[-1]) + if len(keypads) > 1: + all_a[-2] = but_pos("^", keypads[-2]) + desir_poss = tuple(all_a) + + stack = {start_poss} + seen = set() + presses = 0 + while desir_poss not in stack: + # print("Press", presses, stack) + presses += 1 + nstack = set() + for poss in stack: + for but in directional_keypad_buttons: + # Find which keypad this will move + k = 0 + while but == "A" and k < len(keypads) - 1: + i, j = poss[k] + but = keypads[k][i][j] + k += 1 + + # Do not press the final keypad + if k == len(keypads) - 1 and but == "A": + continue + + # Move + direction = directions[but] + i, j = poss[k] + ii, jj = i + direction[0], j + direction[1] + if not in_bounds(ii, jj, keypads[k]): + continue + + # Ensure we haven't been in this state before + state = poss[:k] + ((ii, jj),) + poss[k + 1 :] + if state in seen: + continue + seen.add(state) + + # print(" Kept", state) + nstack.add(state) + + stack = nstack + topresses += presses + 0 + last_but = desir_but + + score += topresses + +print(score) + diff --git a/2024/21/two.py b/2024/21/two.py new file mode 100644 index 0000000..1ebbf45 --- /dev/null +++ b/2024/21/two.py @@ -0,0 +1,281 @@ +#!/usr/bin/env python3 + +import sys +import typing +import functools + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +numeric_keypad = ["789", "456", "123", " 0A"] +directional_keypad = [" ^A", "<v>"] + +vec = tuple[int, int] +directions = { + "^": (-1, 0), # ^ North + ">": (0, 1), # > East + "v": (1, 0), # v South + "<": (0, -1), # < West +} +directional_keypad_buttons = tuple(directions.keys()) + ("A",) + +complexity = int(sys.argv[2]) +keypads = [numeric_keypad] + ([directional_keypad] * complexity) + + +def but_pos(but: str, keypad: list[str]) -> vec: + for i, line in enumerate(keypad): + if but in line: + return i, line.index(but) + raise IndexError(f"No such button: {but} in {keypad}") + + +def in_bounds(i: int, j: int, keypad: list[str]) -> bool: + if j not in range(3) or i not in range(len(keypad)): + return False + return keypad[i][j] != " " + + +# FIFTH TRY +# Using 2 as a base + + +@functools.cache +def press(buts: str, depth: int) -> int: + if depth == len(keypads): + return len(buts) + keypad = keypads[depth] + i, j = but_pos("A", keypad) + nums = 0 + for but in buts: + nnbuts = "" + ni, nj = but_pos(but, keypad) + bounded = True + while nj < j: + nnbuts += "<" + j -= 1 + bounded &= in_bounds(i, j, keypad) + while ni > i: + nnbuts += "v" + i += 1 + bounded &= in_bounds(i, j, keypad) + while ni < i: + nnbuts += "^" + i -= 1 + bounded &= in_bounds(i, j, keypad) + while nj > j: + nnbuts += ">" + j += 1 + bounded &= in_bounds(i, j, keypad) + if not bounded: + nnbuts = nnbuts[::-1] + nnbuts += "A" + nums += press(nnbuts, depth + 1) + return nums + + +score = 0 +for code in lines: + print("Code", code) + topresses = press(code, 0) + + numpart = int("0" + code.replace("A", "")) + print(f"{topresses=} * {numpart=}") + score += topresses * numpart + +print(score) + + +# FOURTH TRY + + +# def press4(buts: str) -> int: +# poss = [list(but_pos("A")) for keypad in keypads] +# indexes = [0 for _ in keypads] +# combis = ["" for _ in keypads] +# combis[0] = buts +# while indexes[0] != len(buts): +# for k in len(keypads): +# pass +# return 0 +# +# +# score = 0 +# for code in lines: +# print("Code", code) +# +# topresses = press4(code) +# +# numpart = int("0" + code.replace("A", "")) +# print(f"{topresses=} * {numpart=}") +# score += topresses * numpart +# +# print(score) + +sys.exit(0) + +# THIRD TRY + + +def press3(buts: str, depth: int) -> typing.Generator[str, None, None]: + if depth >= len(keypads): + yield from buts + return + + keypad = keypads[::-1][depth] + but_poss: dict[str, vec] = dict() + for i, line in enumerate(keypad): + for j, but in enumerate(line): + but_poss[but] = i, j + i, j = but_poss["A"] + ai, ij = but_poss[" "] + + for but in press3(buts, depth + 1): + nnbuts = "" + ni, nj = but_poss[but] + bounded = True + if nj < j: + nnbuts += "<" * (j - nj) + j = nj + bounded &= (ai, ij) != (i, j) + if ni > i: + nnbuts += "v" * (ni - i) + i = ni + bounded &= (ai, ij) != (i, j) + if ni < i: + nnbuts += "^" * (i - ni) + i = ni + bounded &= (ai, ij) != (i, j) + if nj > j: + nnbuts += ">" * (nj - j) + j = nj + if not bounded: + nnbuts = nnbuts[::-1] + nnbuts += "A" + yield from nnbuts + + +score = 0 +for code in lines: + print("Code", code) + + topresses = 0 + for _ in press3(code, 0): + topresses += 1 + + numpart = int("0" + code.replace("A", "")) + print(f"{topresses=} * {numpart=}") + score += topresses * numpart + +print(score) + +# SECOND TRY + +# # Shouldn't move over the bounds, repeat movements when possible, also use movements +# # that start further to A then closer to A, because we're going to press A after anyways +# moves = { +# "AA": "", +# "A^": "<", +# "A>": "v", +# "Av": "<v", # sort +# "A<": "v<<", # hole avoid +# "^A": ">", +# "^^": "", +# "^>": "v>", # sort +# "^v": "v", +# "^<": "v<", # hole avoid +# ">A": "^", +# ">^": "<^", # sort +# ">>": "", +# ">v": "<", +# "><": "<<", +# "vA": "^>", # symetric. but lower layer sort! +# "v^": "^", +# "v>": ">", +# "vv": "", +# "v<": "<", +# "<A": ">>^", # hole avoid +# "<^": ">^", # hole avoid +# "<>": ">>", +# "<v": ">", +# "<<": "", +# } +# +# +# def press(buts: str, depth: int) -> str: +# if depth == len(keypads): +# return buts +# keypad = keypads[depth] +# numerical = keypad == numeric_keypad +# prev_but = "A" +# i, j = but_pos(prev_but, keypad) +# nbuts = "" +# for but in buts: +# if numerical: +# nnbuts = "" +# ni, nj = but_pos(but, keypad) +# # right before down +# # up before left +# bounded = True +# while nj < j: +# nnbuts += "<" +# j -= 1 +# bounded &= in_bounds(i, j, keypad) +# while ni > i: +# nnbuts += "v" +# i += 1 +# bounded &= in_bounds(i, j, keypad) +# while ni < i: +# nnbuts += "^" +# i -= 1 +# bounded &= in_bounds(i, j, keypad) +# while nj > j: +# nnbuts += ">" +# j += 1 +# bounded &= in_bounds(i, j, keypad) +# if not bounded: +# nnbuts = nnbuts[::-1] +# nbuts += nnbuts +# else: +# move = prev_but + but +# nbuts += moves[move] +# nbuts += "A" +# prev_but = but +# return press(nbuts, depth + 1) +# +# +# score = 0 +# for code in lines: +# print("Code", code) +# presses = press(code, 0) +# print(f"{presses=}") +# topresses = len(presses) +# +# numpart = int("0" + code.replace("A", "")) +# print(f"{topresses=} * {numpart=}") +# score += topresses * numpart +# +# print(score) + +# FIRST TRY + +# keys = { +# "A": "A", +# "^": "<A" + ">", +# ">": "VA" + "^", +# "V": "V<A" + ">^", +# "<": "V<<A" + ">>^", +# } +# +# def press(but: str, depth: int) -> str: +# if depth <= 0: +# return but +# depth -= 1 +# return "".join(press(b, depth) for b in keys[but]) +# +# +# res = press("^", complexity) +# # res += press("A", complexity) +# print(len(res), res) diff --git a/2024/21/two_fast.py b/2024/21/two_fast.py new file mode 100644 index 0000000..f59791c --- /dev/null +++ b/2024/21/two_fast.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 + +import functools +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +numeric_keypad = ["789", "456", "123", " 0A"] +directional_keypad = [" ^A", "<v>"] + +vec = tuple[int, int] + +complexity = int(sys.argv[2]) +keypads = [numeric_keypad] + ([directional_keypad] * complexity) + + +@functools.cache +def press(buts: str, depth: int) -> int: + if depth == len(keypads): + return len(buts) + + keypad = keypads[depth] + but_poss: dict[str, vec] = dict() + for i, line in enumerate(keypad): + for j, but in enumerate(line): + but_poss[but] = i, j + i, j = but_poss["A"] + ai, aj = but_poss[" "] + + depth += 1 + nums = 0 + for but in buts: + nnbuts = "" + ni, nj = but_poss[but] + crossing_gap = ((i == ai) and (nj == aj)) or ((ni == ai) and (j == aj)) + if nj < j: + nnbuts += "<" * (j - nj) + if ni < i: + nnbuts += "^" * (i - ni) + elif ni > i: + nnbuts += "v" * (ni - i) + if nj > j: + nnbuts += ">" * (nj - j) + i, j = ni, nj + if crossing_gap: + nnbuts = nnbuts[::-1] + nnbuts += "A" + nums += press(nnbuts, depth) + return nums + + +score = 0 +for code in lines: + print("Code", code) + topresses = press(code, 0) + + numpart = int("0" + code.replace("A", "")) + print(f"{topresses=} * {numpart=}") + score += topresses * numpart + +print(score) diff --git a/2024/22/README.md b/2024/22/README.md new file mode 100644 index 0000000..36fa2aa --- /dev/null +++ b/2024/22/README.md @@ -0,0 +1,20 @@ +Struggled on the fact that "rounding *down* to the **nearest** integer" doesn't mean `round()` it means `floor()` for part1. +Got the idea in the back of my mind this is the thing that could be heavily paralellized. + +For part2 I found a solution that would take 12h in brute force. +Removing a list creation I got it down to 3 hours (`two_bf.py`). I let this run in the background. +Using numpy shenanigans I got it down to 20 minutes. +It worked before I could do further optimisation. + +I have no fucking idea what could be the optimisations here, +and not super interested in figuring out. I'll spoil myself. + +--- + +OH + +🤚: buyer × buyer's sequences +👉: all possible sequences × buyers + +Yeah alright + diff --git a/2024/22/one.py b/2024/22/one.py new file mode 100644 index 0000000..df18a72 --- /dev/null +++ b/2024/22/one.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + + +def prng(secwet: int) -> int: + secwet ^= secwet * 64 + secwet %= 16777216 + secwet ^= secwet // 32 + secwet %= 16777216 + secwet ^= secwet * 2048 + secwet %= 16777216 + return secwet + + +tot = 0 +for line in lines: + secwet = int(line) + print(f"Init {secwet=}") + for i in range(2000): + secwet = prng(secwet) + print(f" -> {secwet=}") + tot += secwet +print(tot) diff --git a/2024/22/two.py b/2024/22/two.py new file mode 100644 index 0000000..b55dc4c --- /dev/null +++ b/2024/22/two.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 + +import sys + +import numpy as np +import rich.progress + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +buyers = len(lines) + + +def prng(secwet: int) -> int: + secwet ^= secwet * 64 + secwet %= 16777216 + secwet ^= secwet // 32 + secwet %= 16777216 + secwet ^= secwet * 2048 + secwet %= 16777216 + return secwet + + +buyers_ban: list[list[int]] = [] +buyers_dif: list[list[int]] = [] + +for line in rich.progress.track(lines, description="Calculating future banana prices"): + secwet = int(line) + buyer_ban: list[int] = [] + buyer_dif: list[int] = [] + last_ban = secwet % 10 + for i in range(2000): + secwet = prng(secwet) + ban = secwet % 10 + buyer_ban.append(ban) + dif = ban - last_ban + buyer_dif.append(dif) + last_ban = ban + # print(f"{secwet=} {ban=} {dif=}") + # print(f"{buyer_ban=}") + # print(f"{buyer_dif=}") + buyers_ban.append(buyer_ban) + buyers_dif.append(buyer_dif) + +buyers_dif_np = np.array(buyers_dif) +buyers_ban_np = np.array(buyers_ban) + +sequence = tuple[int, int, int, int] + + +def totbans(seq: sequence) -> int: + match = None + for i, num in enumerate(seq): + nmatch = buyers_dif_np == num + if match is not None: + # nmatch = sp.ndimage.shift(nmatch, (0, -i)) + nmatch = np.roll(nmatch, -i, axis=1) + nmatch &= match + match = nmatch + + # bans = buyers_ban_np * match + # found = match.max(axis=1) + # indexes = np.argmax(match > 0, axis=1) + + tot = 0 + assert match is not None + for b, buyer_match in enumerate(match): + if not buyer_match.max(): + continue + arg: int = np.argmax(buyer_match > 0) + try: + ban = buyers_ban_np[b, arg+3] + tot += ban + except IndexError: + pass # shrug + return tot + + for buyer in range(buyers): + buyer_dif = buyers_dif[buyer] + for i in range(2000 - 4): + if ( + buyer_dif[i] == seq[0] + and buyer_dif[i + 1] == seq[1] + and buyer_dif[i + 2] == seq[2] + and buyer_dif[i + 3] == seq[3] + ): + # if tuple(buyer_dif[i : i + 4]) == seq: + tot += buyers_ban[buyer][i + 3] + break + return tot + + +# print(f"{totbans((6, -1, -1, 0))=}") # demo0 +# print(f"{totbans((-2, 1, -1, 3))=}") # demo2 aoc +# print(f"{totbans((6, -4, 4, -9))=}") # demo2 first + +all_seqs: set[sequence] = set() + +for buyer in rich.progress.track( + range(buyers), description="Generating possible sequences" +): + buyer_dif = buyers_dif[buyer] + for i in range(2000 - 4): + seq: sequence = tuple(buyer_dif[i : i + 4]) + all_seqs.add(seq) +print(f"{len(all_seqs)=}") + +maxi = 0 +max_seq = None +for seq in rich.progress.track(all_seqs, description="Finding score for sequences"): + tb = totbans(seq) + if tb > maxi: + maxi = tb + max_seq = seq + + +print(f"{max_seq=}") +print(maxi) +# 1909 too low diff --git a/2024/22/two_bf.py b/2024/22/two_bf.py new file mode 100644 index 0000000..96bbe2a --- /dev/null +++ b/2024/22/two_bf.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python3 + +import sys + +import rich.progress + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +buyers = len(lines) + + +def prng(secwet: int) -> int: + secwet ^= secwet * 64 + secwet %= 16777216 + secwet ^= secwet // 32 + secwet %= 16777216 + secwet ^= secwet * 2048 + secwet %= 16777216 + return secwet + + +buyers_ban: list[list[int]] = [] +buyers_dif: list[list[int]] = [] + +for line in rich.progress.track(lines, description="Calculating future banana prices"): + secwet = int(line) + buyer_ban: list[int] = [] + buyer_dif: list[int] = [] + last_ban = secwet % 10 + for i in range(2000): + secwet = prng(secwet) + ban = secwet % 10 + buyer_ban.append(ban) + dif = ban - last_ban + buyer_dif.append(dif) + last_ban = ban + # print(f"{secwet=} {ban=} {dif=}") + # print(f"{buyer_ban=}") + # print(f"{buyer_dif=}") + buyers_ban.append(buyer_ban) + buyers_dif.append(buyer_dif) + +sequence = tuple[int, int, int, int] + + +def totbans(seq: sequence) -> int: + tot = 0 + for buyer in range(buyers): + buyer_dif = buyers_dif[buyer] + for i in range(2000 - 4): + if ( + buyer_dif[i] == seq[0] + and buyer_dif[i + 1] == seq[1] + and buyer_dif[i + 2] == seq[2] + and buyer_dif[i + 3] == seq[3] + ): + # if tuple(buyer_dif[i : i + 4]) == seq: + tot += buyers_ban[buyer][i + 3] + break + return tot + + +all_seqs: set[sequence] = set() + +for buyer in rich.progress.track( + range(buyers), description="Generating possible sequences" +): + buyer_dif = buyers_dif[buyer] + for i in range(2000 - 4): + seq: sequence = tuple(buyer_dif[i : i + 4]) + all_seqs.add(seq) +print(f"{len(all_seqs)=}") + +maxi = 0 +max_seq = None +for seq in rich.progress.track(all_seqs, description="Finding score for sequences"): + tb = totbans(seq) + if tb > maxi: + maxi = tb + max_seq = seq + + +print(f"{max_seq=}") +print(maxi) diff --git a/2024/22/two_fast.py b/2024/22/two_fast.py new file mode 100644 index 0000000..3789c14 --- /dev/null +++ b/2024/22/two_fast.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 + +import collections +import math +import sys + +import numpy as np +import rich.progress + +dtype = np.int32 + +input_file = sys.argv[1] + +with open(input_file) as fd: + buyers_init_secret = np.array([int(line) for line in fd.readlines()], dtype=dtype) + +buyers = len(buyers_init_secret) + +ITERATIONS = 2000 +SEQUENCE_LENGTH = 4 + + +buyers_prices = np.ndarray((buyers, ITERATIONS), dtype=dtype) +buyers_diffs = np.ndarray((buyers, ITERATIONS), dtype=dtype) + +buyers_secret = buyers_init_secret.copy() +last_buyers_price = buyers_init_secret % 10 +for i in rich.progress.track(range(ITERATIONS), description="Simulating stock market"): + buyers_secret ^= buyers_secret * 64 + buyers_secret %= 16777216 + buyers_secret ^= buyers_secret // 32 + buyers_secret %= 16777216 + buyers_secret ^= buyers_secret * 2048 + buyers_secret %= 16777216 + buyers_price = buyers_secret % 10 + buyers_diff = buyers_price - last_buyers_price + buyers_prices[:, i] = buyers_price + buyers_diffs[:, i] = buyers_diff + last_buyers_price = buyers_price + +# Compress sequence tuples into a single integer + +# Move to positive numbers +trans = -buyers_diffs.min() +buyers_diffs_translated = buyers_diffs + trans +# Decide on a value to shift +shift = math.ceil(math.log2(buyers_diffs_translated.max())) + +buyers_sequences = buyers_diffs_translated.copy() +for i in range(1, SEQUENCE_LENGTH): + buyers_sequences += np.roll(buyers_diffs_translated << (shift * i), i, axis=1) +# Make first few sequences invalid +buyers_sequences[:, :SEQUENCE_LENGTH] = -1 + +# NEW (knowing it's best to iterate per buyer than per sequence) ~ 5 seconds +# Inspired by the following, which is even faster, probably because data locality +# achieves more than SIMD-fying? +# https://github.com/mkern75/AdventOfCodePython/blob/23b6becdc873c6b865e783122a7dbce0b5f40f60/year2024/Day22.py + +max_sequence = 1 << shift * SEQUENCE_LENGTH +sequences_total = np.zeros(max_sequence, dtype=dtype) +seen = np.zeros((buyers, max_sequence), dtype=bool) + +for b in rich.progress.track(range(buyers), description="Evaluating each buyer"): + for i in range(SEQUENCE_LENGTH, ITERATIONS): + seq = buyers_sequences[b, i] + + if seen[b, seq]: + continue + seen[b, seq] = True + + sequences_total[seq] += buyers_prices[b, i] + +print(f"{sequences_total.argmax()=}") +print(sequences_total.max()) + +sys.exit(0) + +# OLD (knowing you can compresses sequences only) ~ 1.5 minute + + +def totbans(seq: int) -> int: + match = buyers_sequences == seq + found = match.max(axis=1) + indexes = np.argmax(match, axis=1) + bans = buyers_prices[range(buyers), indexes] + bans *= found + return bans.sum() + + +def seq_to_int(seq: tuple[int, ...]) -> int: + tot = 0 + for s, num in enumerate(seq): + tot += (num + trans) << (SEQUENCE_LENGTH - s - 1) * shift + return tot + + +print(f"{totbans(seq_to_int((-2, 1, -1, 3)))=}") + +all_seqs: set[int] = set(buyers_sequences.flat) - {-1} + +maxi = 0 +max_seq = None +for seq in rich.progress.track(all_seqs, description="Finding score for sequences"): + tb = totbans(seq) + if tb > maxi: + maxi = tb + max_seq = seq + + +print(f"{max_seq=}") +print(maxi) diff --git a/2024/23/both_networkx.py b/2024/23/both_networkx.py new file mode 100644 index 0000000..01157c9 --- /dev/null +++ b/2024/23/both_networkx.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 + +import sys + +import matplotlib.pyplot as plt +import networkx +import networkx as nx + +input_file = sys.argv[1] + +G = nx.Graph() +with open(input_file) as fd: + for line in fd.readlines(): + a, b = line.rstrip().split("-") + G.add_edge(a, b) + +trio_cliques: list[list[str]] = list() +lan = None +for clique in nx.enumerate_all_cliques(G): + if lan is None or len(clique) > len(lan): + lan = clique + if len(clique) != 3: + continue + if not any(c.startswith("t") for c in clique): + continue + trio_cliques.append(clique) + + +part1_ans = len(trio_cliques) +assert lan is not None +part2_ans = ",".join(sorted(lan)) + +print(f"{part1_ans=}") +print(f"{part2_ans=}") + + +trio_nodes = set(node for trio_clique in trio_cliques for node in trio_clique) +trio_edges = set( + edge + for clique in trio_cliques + for edge in list(nx.edge_boundary(G, clique, clique)) +) +lan_edges = set(nx.edge_boundary(G, lan, lan)) + +for node in trio_nodes: + G.nodes[node]["color"] = "green" +for edge in trio_edges: + G.edges[edge]["color"] = "green" + G.edges[edge]["weight"] = 2 + +for node in lan: + G.nodes[node]["color"] = "red" +for edge in lan_edges: + # G.edges[edge]["color"] = "red" + G.edges[edge]["weight"] = 5 + +node_colors = [G.nodes[node].get("color", "blue") for node in G.nodes()] +edge_colors = [G.edges[edge].get("color", "blue") for edge in G.edges()] +node_pos = nx.layout.spring_layout(G) + + +nx.draw( + G, node_color=node_colors, edge_color=edge_colors, pos=node_pos, with_labels=True +) +plt.show() diff --git a/2024/23/one.py b/2024/23/one.py new file mode 100644 index 0000000..f5803bd --- /dev/null +++ b/2024/23/one.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 + +import collections +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +connections = [tuple(line.split("-")) for line in lines] + +codi: collections.defaultdict[str, set[str]] = collections.defaultdict(set) + +for connection in connections: + a, b = connection + codi[a].add(b) + codi[b].add(a) + +threes: set[tuple[str, ...]] = set() +for connection in connections: + a, b = connection + ac, bc = codi[a], codi[b] + iis = ac.intersection(bc) + for i in iis: + threel = [a, b, i] + if not (a.startswith("t") or b.startswith("t") or i.startswith("t")): + continue + threel.sort() + threes.add(tuple(threel)) + +for three in threes: + print(three) + +print(len(threes)) +# 11011 too high (forgot starts with t) diff --git a/2024/23/two.py b/2024/23/two.py new file mode 100644 index 0000000..eef61f6 --- /dev/null +++ b/2024/23/two.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 + +import collections +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +connections = [set(line.split("-")) for line in lines] + +codi: collections.defaultdict[str, set[str]] = collections.defaultdict(set) + +for connection in connections: + a, b = connection + codi[a].add(b) + codi[b].add(a) + +threes: set[tuple[str, ...]] = set() +for connection in connections: + a, b = connection + ac, bc = codi[a], codi[b] + iis = ac.intersection(bc) + for i in iis: + threel = [a, b, i] + threel.sort() + threes.add(tuple(threel)) + +j = 0 +while len(threes) > 1: + + inthrees: set[str] = set() + for three in threes: + inthrees.update(set(three)) + + print(j, len(threes), len(inthrees)) + + fours: set[tuple[str, ...]] = set() + for three in threes: + threeset = set(three) + for comp in inthrees - threeset: + compc = codi[comp] + if threeset.issubset(compc): + fourl = list(threeset) + [comp] + fourl.sort() + fours.add(tuple(fourl)) + + threes = fours + +threesl = list(threes) +if len(threesl) == 1: + three = threesl[0] + print(",".join(three)) +print(None) diff --git a/2024/24/one.py b/2024/24/one.py new file mode 100644 index 0000000..5a7c026 --- /dev/null +++ b/2024/24/one.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 + +import functools +import sys +import typing + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +gates: dict[str, tuple[str, typing.Callable, str]] = dict() +varis: dict[str, int] = dict() +funs = { + "AND": int.__and__, + "OR": int.__or__, + "XOR": int.__xor__, +} + +step = False +for line in lines: + if not line: + step = True + elif step: + a, op, b, _, dest = line.split() + fun = funs[op] + gates[dest] = (a, fun, b) + else: + dest, val = line.split(":") + varis[dest] = int(val) + + +@functools.cache +def get_var(var: str) -> int: + if var in varis: + return varis[var] + a, fun, b = gates[var] + avar = get_var(a) + bvar = get_var(b) + return fun(avar, bvar) + + +zees = sorted([key for key in gates.keys() if key.startswith("z")]) +bits = reversed([str(get_var(key)) for key in zees]) +res = int("".join(bits), base=2) + +print(res) diff --git a/2024/24/two.py b/2024/24/two.py new file mode 100644 index 0000000..f7456d5 --- /dev/null +++ b/2024/24/two.py @@ -0,0 +1,161 @@ +#!/usr/bin/env python3 + +import functools +import sys +import typing + +import matplotlib.pyplot as plt +import networkx as nx + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +gates: dict[str, tuple[str, typing.Callable, str]] = dict() +varis: dict[str, int] = dict() +funs = { + "AND": int.__and__, # orange + "OR": int.__or__, # green + "XOR": int.__xor__, # purple +} +G = nx.DiGraph() + +swaps = [ + ("ncd", "nfj"), + ("z37", "vkg"), + ("z20", "cqr"), + ("z15", "qnw"), +] +swapdict: dict[str, str] = dict() +for a, b in swaps: + swapdict[a] = b + swapdict[b] = a + +step = False +for line in lines: + if not line: + step = True + elif step: + a, op, b, _, dest = line.split() + dest = swapdict.get(dest, dest) + fun = funs[op] + gates[dest] = (a, fun, b) + G.add_node(dest, op=op) + G.add_edge(a, dest) + G.add_edge(b, dest) + else: + dest, val = line.split(":") + varis[dest] = int(val) + + +def swap(a: str, b: str) -> None: + temp = gates[a] + gates[a] = gates[b] + gates[b] = temp + + +@functools.cache +def get_var(var: str) -> int: + if var in varis: + return varis[var] + a, fun, b = gates[var] + avar = get_var(a) + bvar = get_var(b) + return fun(avar, bvar) + + +all_keys = list(gates.keys()) + list(varis.keys()) +all_keys.sort(reverse=True) + + +def get_number(prefix: str) -> int: + tot = 0 + keys = [key for key in all_keys if key.startswith(prefix)] + for key in keys: + tot <<= 1 + tot |= get_var(key) + return tot + + +X = get_number("x") +Y = get_number("y") +Z = get_number("z") +print(f"{X+Y=} = {X=} + {Y=}") +print(f" {Z=} {Z == X + Y=}") + +print(",".join(sorted(swapdict.keys()))) + +# Viz + + +@functools.cache +def get_node_pos(node: str) -> tuple[float, float]: + x: float + y: float + if node.startswith("x"): + x = -int(node[1:]) * 2 + y = 0 + elif node.startswith("y"): + x = -int(node[1:]) * 2 - 1 + y = 0 + elif node.startswith("z"): + x = -int(node[1:]) * 2 + y = 100 + else: + a, _, b = gates[node] + ax, ay = get_node_pos(a) + bx, by = get_node_pos(b) + x = (ax + bx) / 2 + y = max(ay, by) + 1 + return x, y + + +colors = { + "AND": "orange", + "OR": "green", + "XOR": "purple", +} +node_colors = [] +node_pos: dict[str, tuple[float, float]] = dict() +node_fixed: set[str] = set() +for node in G.nodes(): + op = G.nodes[node].get("op") + node_colors.append(colors.get(op, "cyan" if node.startswith("x") else "blue")) + + x: float + y: float + fixed = True + if node.startswith("x"): + x = -int(node[1:]) * 2 + y = 0 + elif node.startswith("y"): + x = -int(node[1:]) * 2 - 1 + y = 0 + elif node.startswith("z"): + x = -int(node[1:]) * 2 + y = 50 + else: + fixed = False + x = -23 + y = 25 + + node_pos[node] = x, y + if fixed: + node_fixed.add(node) + +# My own layout +for i in range(50): + for node in G.nodes(): + if node in node_fixed: + continue + neighs = list(G.succ[node]) + list(G.pred[node]) + x = sum(node_pos[neigh][0] for neigh in neighs) / len(neighs) + y = sum(node_pos[neigh][1] for neigh in neighs) / len(neighs) + node_pos[node] = x, y +node_fixed = set(G.nodes()) + +node_layout = nx.layout.spring_layout(G, pos=node_pos, fixed=node_fixed) + +nx.draw(G, pos=node_layout, node_color=node_colors, with_labels=True) +plt.show() diff --git a/2024/24/two_test.py b/2024/24/two_test.py new file mode 100644 index 0000000..d76b70c --- /dev/null +++ b/2024/24/two_test.py @@ -0,0 +1,163 @@ +#!/usr/bin/env python3 + +import functools +import sys +import typing + +import matplotlib.pyplot as plt +import networkx as nx + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +gates: dict[str, tuple[str, typing.Callable, str]] = dict() +varis: dict[str, int] = dict() +funs = { + "AND": int.__and__, # orange + "OR": int.__or__, # green + "XOR": int.__xor__, # purple +} +G = nx.DiGraph() + +swaps = [ + # ("ncd", "nfj"), + # ("z37", "vkg"), + # ("z20", "cqr"), + # ("z15", "qnw"), +] +swapdict: dict[str, str] = dict() +for a, b in swaps: + swapdict[a] = b + swapdict[b] = a + +step = False +for line in lines: + if not line: + step = True + elif step: + a, op, b, _, dest = line.split() + dest = swapdict.get(dest, dest) + fun = funs[op] + gates[dest] = (a, fun, b) + G.add_node(dest, op=op) + G.add_edge(a, dest) + G.add_edge(b, dest) + else: + dest, val = line.split(":") + varis[dest] = int(val) + + +def swap(a: str, b: str) -> None: + temp = gates[a] + gates[a] = gates[b] + gates[b] = temp + + +@functools.cache +def get_var(var: str) -> int: + if var in varis: + return varis[var] + a, fun, b = gates[var] + avar = get_var(a) + bvar = get_var(b) + return fun(avar, bvar) + + +all_keys = list(gates.keys()) + list(varis.keys()) +all_keys.sort(reverse=True) + + +def get_number(prefix: str) -> int: + tot = 0 + keys = [key for key in all_keys if key.startswith(prefix)] + for key in keys: + tot <<= 1 + tot |= get_var(key) + return tot + + +X = get_number("x") +Y = get_number("y") +Z = get_number("z") +print(f"{X+Y=} = {X=} + {Y=}") +print(f" {Z=} {Z == X + Y=}") + +print(",".join(sorted(swapdict.keys()))) + +# Viz + + +@functools.cache +def get_node_pos(node: str) -> tuple[float, float]: + x: float + y: float + if node.startswith("x"): + x = -int(node[1:]) * 2 + y = 0 + elif node.startswith("y"): + x = -int(node[1:]) * 2 - 1 + y = 0 + elif node.startswith("z"): + x = -int(node[1:]) * 2 + y = 100 + else: + a, _, b = gates[node] + ax, ay = get_node_pos(a) + bx, by = get_node_pos(b) + x = (ax + bx) / 2 + y = max(ay, by) + 1 + return x, y + + +colors = { + "AND": "orange", + "OR": "green", + "XOR": "purple", +} +node_colors = [] +node_pos: dict[str, tuple[float, float]] = dict() +node_fixed: set[str] = set() +for node in G.nodes(): + op = G.nodes[node].get("op") + node_colors.append(colors.get(op, "cyan" if node.startswith("x") else "blue")) + + x: float + y: float + fixed = True + if node.startswith("x"): + x = -int(node[1:]) * 2 + y = 0 + elif node.startswith("y"): + x = -int(node[1:]) * 2 - 1 + y = 0 + elif node.startswith("z"): + x = -int(node[1:]) * 2 + y = 50 + else: + fixed = False + x = -23 + y = 25 + + node_pos[node] = x, y + if fixed: + node_fixed.add(node) + +# # My own layout +# for i in range(50): +# for node in G.nodes(): +# if node in node_fixed: +# continue +# neighs = list(G.succ[node]) + list(G.pred[node]) +# x = sum(node_pos[neigh][0] for neigh in neighs) / len(neighs) +# y = sum(node_pos[neigh][1] for neigh in neighs) / len(neighs) +# node_pos[node] = x, y +# node_fixed = set(G.nodes()) + +node_layout = nx.layout.spring_layout( + G.to_undirected(), k=1, iterations=1000, pos=node_pos, fixed=node_fixed +) + +nx.draw(G, pos=node_layout, node_color=node_colors, with_labels=True) +plt.show() diff --git a/2024/25/one.py b/2024/25/one.py new file mode 100644 index 0000000..d8b1804 --- /dev/null +++ b/2024/25/one.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +lockey = tuple[int, int, int, int, int] +locks: list[lockey] = list() +keys: list[lockey] = list() + +i = 0 +for line in lines: + if not line: + i = 0 + elif i == 0: + is_lock = line == "#####" + i = 1 + sharps = [0, 0, 0, 0, 0] + elif i == 6: + if is_lock: + locks.append(tuple(sharps)) + else: + keys.append(tuple(sharps)) + else: + for j in range(5): + if line[j] == "#": + sharps[j] += 1 + i += 1 + +print(locks) +print(keys) + +fit = 0 +for lock in locks: + for key in keys: + print(39, lock, key) + for i in range(5): + if lock[i] + key[i] > 5: + break + else: + fit += 1 +print(fit) diff --git a/2024/3/one.py b/2024/3/one.py new file mode 100644 index 0000000..4460641 --- /dev/null +++ b/2024/3/one.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 + +import sys +import re + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +t = 0 +reg = r"mul\(([0-9]+),([0-9]+)\)" +for line in lines: + for match in re.findall(reg, line): + ast, bst = match + a, b = int(ast), int(bst) + m = a * b + t += m +print(t) diff --git a/2024/3/two.py b/2024/3/two.py new file mode 100644 index 0000000..bfc2c33 --- /dev/null +++ b/2024/3/two.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 + +import sys +import re + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +t = 0 +en = True +reg = r"mul\(([0-9]+),([0-9]+)\)|do\(\)|don't\(\)" +for line in lines: + for match in re.finditer(reg, line): + all = match.group(0) + if all == "do()": + en = True + elif all == "don't()": + en = False + elif en: + ast, bst = match.group(1), match.group(2) + a, b = int(ast), int(bst) + m = a * b + t += m +print(t) diff --git a/2024/4/one.py b/2024/4/one.py new file mode 100644 index 0000000..c545e2f --- /dev/null +++ b/2024/4/one.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) +word = "XMAS" + +directions = [ + (0, 1), + (1, 1), + (1, 0), + (1, -1), + (0, -1), + (-1, -1), + (-1, 0), + (-1, 1), +] + +arrows = ["➡️", "↘️", "⬇️", "↙️", "⬅️", "↖️", "⬆️", "↗️"] + +assert len(directions) == len(set(directions)) + + +viz = [["."] * width for i in range(height)] + +count = 0 +for i in range(height): + for j in range(width): + for direction in directions: + ii = i + jj = j + for letter in word: + if ( + ii not in range(height) + or jj not in range(width) + or lines[ii][jj] != letter + ): + break + ii += direction[0] + jj += direction[1] + else: + count += 1 + # d = directions.index(direction) + # viz[i][j] = arrows[d] + ii = i + jj = j + for letter in word: + viz[ii][jj] = letter + ii += direction[0] + jj += direction[1] +for line in viz: + print("".join(line)) +print(count) diff --git a/2024/4/two.py b/2024/4/two.py new file mode 100644 index 0000000..41ada97 --- /dev/null +++ b/2024/4/two.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +count = 0 +for i in range(1, height - 1): + for j in range(1, width - 1): + if lines[i][j] != "A": + continue + tl = lines[i - 1][j - 1] + br = lines[i + 1][j + 1] + tr = lines[i - 1][j + 1] + bl = lines[i + 1][j - 1] + if not ((tl, br) == ("M", "S") or (tl, br) == ("S", "M")) or not ( + (tr, bl) == ("M", "S") or (tr, bl) == ("S", "M") + ): + continue + count += 1 +print(count) diff --git a/2024/5/one.py b/2024/5/one.py new file mode 100644 index 0000000..8b4fcf9 --- /dev/null +++ b/2024/5/one.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +page_mode = False +orders: list[tuple[int, int]] = list() +updates: list[list[int]] = list() + +for line in lines: + if not page_mode: + if line == "": + page_mode = True + else: + order = tuple(int(a) for a in line.split("|")) + assert len(order) == 2 + orders.append(order) + else: + update = list(int(a) for a in line.split(",")) + updates.append(update) + +total = 0 +for update in updates: + for fi, se in orders: + try: + ifi = update.index(fi) + ise = update.index(se) + except ValueError: + continue + if ifi > ise: + break + else: + imid = int(len(update)/2) + mid = update[imid] + total += mid +print(total) + diff --git a/2024/5/two.py b/2024/5/two.py new file mode 100644 index 0000000..b20b0fe --- /dev/null +++ b/2024/5/two.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +page_mode = False +orders: list[tuple[int, int]] = list() + +class Page: + def __init__(self, pn: int): + self.pn = pn + + def __lt__(self, other: "Page") -> bool: + a = self.pn + b = other.pn + for fi, se in orders: + if a == fi and b == se: + return True + elif a == se and b == fi: + return False + raise RuntimeError + + +updates: list[list[Page]] = list() + +for line in lines: + if not page_mode: + if line == "": + page_mode = True + else: + order = tuple(int(a) for a in line.split("|")) + assert len(order) == 2 + orders.append(order) + else: + update = list(Page(int(a)) for a in line.split(",")) + updates.append(update) + +total = 0 +for update in updates: + update_sorted = sorted(update) + + if update == update_sorted: + continue + + update = update_sorted + + # Add + imid = int(len(update)/2) + mid = update[imid] + total += mid.pn + +print(total) + diff --git a/2024/6/one.py b/2024/6/one.py new file mode 100644 index 0000000..3fb7e49 --- /dev/null +++ b/2024/6/one.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +for i in range(height): + if "^" in lines[i]: + j = lines[i].index("^") + break + +d = 0 +directions = [ + (-1, 0), # ^ + (0, 1), # > + (1, 0), # v + (0, -1), # < +] + +vis = [[False] * width for h in range(height)] + +while True: + print(i, j) + vis[i][j] = True + ii, jj = i + directions[d][0], j + directions[d][1] + if ii not in range(height) or jj not in range(width): + break + if lines[ii][jj] == "#": + d += 1 + d %= len(directions) + continue + i, j = ii, jj + +count = 0 +for i in range(height): + for j in range(width): + if vis[i][j]: + count += 1 +print(count) + + diff --git a/2024/6/two.py b/2024/6/two.py new file mode 100644 index 0000000..53060f2 --- /dev/null +++ b/2024/6/two.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +for i_start in range(height): + if "^" in lines[i_start]: + j_start = lines[i_start].index("^") + break + +directions = [ + (-1, 0), # ^ + (0, 1), # > + (1, 0), # v + (0, -1), # < +] + +positions: set[tuple[int, int]] = set() + +i, j = i_start, j_start +d = 0 + +while True: + positions.add((i, j)) + ii, jj = i + directions[d][0], j + directions[d][1] + if ii not in range(height) or jj not in range(width): + break + if lines[ii][jj] == "#": + d += 1 + d %= len(directions) + continue + i, j = ii, jj + +print(len(positions)) +positions.remove((i_start, j_start)) + +tot = 0 +for obstacle in positions: + i, j = i_start, j_start + d = 0 + path: set[tuple[int, int, int]] = set() + + while True: + state = (i, j, d) + if state in path: + loop = True + tot += 1 + break + path.add(state) + ii, jj = i + directions[d][0], j + directions[d][1] + if ii not in range(height) or jj not in range(width): + loop = False + break + if lines[ii][jj] == "#" or (ii, jj) == obstacle: + d += 1 + d %= len(directions) + continue + i, j = ii, jj + +print(tot) diff --git a/2024/7/one.py b/2024/7/one.py new file mode 100644 index 0000000..a975fca --- /dev/null +++ b/2024/7/one.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +final = 0 +for line in lines: + spli = line.split() + res = int(spli[0][:-1]) + nums = [int(num) for num in spli[1:]] + + def check(tot: int, nums: list[int]) -> bool: + for op in (int.__add__, int.__mul__): + ntot = op(tot, nums[0]) + if ntot > res: + continue + if len(nums) == 1: + if ntot == res: + return True + else: + if check(ntot, nums[1:]): + return True + return False + + if check(nums[0], nums[1:]): + final += res + +print(final) + +# 2664444091381: too low diff --git a/2024/7/two.py b/2024/7/two.py new file mode 100644 index 0000000..8c90d5d --- /dev/null +++ b/2024/7/two.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + + +def concat(a: int, b: int) -> int: + return int(str(a) + str(b)) + + +final = 0 +for line in lines: + spli = line.split() + res = int(spli[0][:-1]) + nums = [int(num) for num in spli[1:]] + + def check(tot: int, nums: list[int]) -> bool: + for op in (int.__add__, int.__mul__, concat): + ntot = op(tot, nums[0]) + if ntot > res: + continue + if len(nums) == 1: + if ntot == res: + return True + else: + if check(ntot, nums[1:]): + return True + return False + + if check(nums[0], nums[1:]): + final += res + +print(final) diff --git a/2024/8/one.py b/2024/8/one.py new file mode 100644 index 0000000..7f66364 --- /dev/null +++ b/2024/8/one.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +antennas: dict[str, list[tuple[int, int]]] = dict() + +for i in range(height): + for j in range(width): + char = lines[i][j] + if char == ".": + continue + antennas.setdefault(char, list()) + antennas[char].append((i, j)) + +antinodes_locations: set[tuple[int, int]] = set() +for char, char_antennas in antennas.items(): + print(f"25 {char} {char_antennas}") + for ant_a in char_antennas: + for ant_b in char_antennas: + if ant_a == ant_b: + continue + i, j = 2 * ant_b[0] - ant_a[0], 2 * ant_b[1] - ant_a[1] + antinode_loc = i, j + print(f"30 {antinode_loc}") + if i not in range(height) or j not in range(width): + continue + print(f"kept") + antinodes_locations.add(antinode_loc) + +print(len(antinodes_locations)) diff --git a/2024/8/two.py b/2024/8/two.py new file mode 100644 index 0000000..0f147dc --- /dev/null +++ b/2024/8/two.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) + +antennas: dict[str, list[tuple[int, int]]] = dict() + +viz = [["."] * width for _ in range(height)] + +for i in range(height): + for j in range(width): + char = lines[i][j] + if char == ".": + continue + antennas.setdefault(char, list()) + antennas[char].append((i, j)) + viz[i][j] = char + +antinodes_locations: set[tuple[int, int]] = set() +for char, char_antennas in antennas.items(): + print(f"25 {char} {char_antennas}") + for ant_a in char_antennas: + for ant_b in char_antennas: + if ant_a == ant_b: + continue + m = 0 + while True: + i, j = ant_b[0] + m * (ant_b[0] - ant_a[0]), ant_b[1] + m * ( + ant_b[1] - ant_a[1] + ) + antinode_loc = i, j + print(f"30 {antinode_loc}") + if i not in range(height) or j not in range(width): + break + print("kept") + antinodes_locations.add(antinode_loc) + viz[i][j] = "#" + m += 1 +for vline in viz: + print("".join(vline)) + +print(len(antinodes_locations)) diff --git a/2024/9/one.py b/2024/9/one.py new file mode 100644 index 0000000..8ac3129 --- /dev/null +++ b/2024/9/one.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +line = lines[0] + +disk: list[int | None] = list() + +fileno = 0 +isfile = True +for char in line: + n = int(char) + if isfile: + disk += [fileno] * n + fileno += 1 + else: + disk += [None] * n + isfile = not isfile + +beg = 0 +end = len(disk) - 1 + + +def print_disk() -> None: + return + print("".join(str(c) if c is not None else "." for c in disk)) + + +print_disk() +moving = False +while beg < end: + if moving: + if disk[end] is not None: + disk[beg] = disk[end] + disk[end] = None + moving = False + print_disk() + end -= 1 + else: + if disk[beg] is None: + moving = True + else: + beg += 1 + +checksum = 0 +for c, cid in enumerate(disk): + if cid is not None: + checksum += c * cid + +print(checksum) diff --git a/2024/9/two.py b/2024/9/two.py new file mode 100644 index 0000000..d3d3192 --- /dev/null +++ b/2024/9/two.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +line = lines[0] + +disk: list[int | None] = list() +# position, size +index: list[tuple[int, int]] = list() + +fileno = 0 +isfile = True +for char in line: + n = int(char) + if isfile: + index.append((len(disk), n)) + disk += [fileno] * n + fileno += 1 + else: + disk += [None] * n + isfile = not isfile + +beg = 0 +end = len(disk) - 1 + + +def print_disk() -> None: + return + print("".join(str(c) if c is not None else "." for c in disk)) + + +print_disk() + +for pos, size in index[::-1]: + hole_start = None + for c, cid in enumerate(disk + [-1]): + if c > pos + size: + break + if cid is None: + if hole_start is None: + hole_start = c + else: + if hole_start is not None: + hole_size = c - hole_start + if hole_size < size: + hole_start = None + continue + for i in range(size): + disk[hole_start + i] = disk[pos + i] + disk[pos + i] = None + print_disk() + break + +checksum = 0 +for c, cid in enumerate(disk): + if cid is not None: + checksum += c * cid + +print(checksum) diff --git a/2024/X/one.py b/2024/X/one.py new file mode 100644 index 0000000..df5aa86 --- /dev/null +++ b/2024/X/one.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 + +import sys + +input_file = sys.argv[1] + +with open(input_file) as fd: + lines = [line.rstrip() for line in fd.readlines()] + +height = len(lines) +width = len(lines[0]) diff --git a/2024/X/two.py b/2024/X/two.py new file mode 100644 index 0000000..e69de29 diff --git a/2024/times.escape b/2024/times.escape new file mode 100644 index 0000000..e21a332 --- /dev/null +++ b/2024/times.escape @@ -0,0 +1,33 @@ +[3m Advent of Code times [0m +┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ +┃[1m [0m[1mPuzzle date[0m[1m [0m┃[1m [0m[1mPuzzle title [0m[1m [0m┃[1m [0m[1mOpened date [0m[1m [0m┃[1m [0m[1mP1 time [0m[1m [0m┃[1m [0m[1mP1 attempts[0m[1m [0m┃[1m [0m[1mP2 time [0m[1m [0m┃[1m [0m[1mP2 attempts[0m[1m [0m┃[1m [0m[1mTotal time [0m[1m [0m┃ +┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ +│[34m [0m[1;34m2024-12-01[0m[34m [0m[34m [0m│[34m [0m[34mHistorian Hysteria [0m[34m [0m│[35m [0m[35m2024-12-01 11:37:35[0m[35m [0m│[32m [0m[1;32m0:11:06[0m[32m [0m[32m [0m│[36m [0m[4;36m2[0m[36m [0m[36m [0m│[32m [0m[32m0:03:35 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:14:41 [0m[33m [0m│ +│[34m [0m[34m2024-12-02 [0m[34m [0m│[34m [0m[34mRed-Nosed Reports [0m[34m [0m│[35m [0m[35m2024-12-02 10:17:11[0m[35m [0m│[32m [0m[1;32m0:07:09[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[32m0:03:52 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:11:01 [0m[33m [0m│ +│[34m [0m[34m2024-12-03 [0m[34m [0m│[34m [0m[34mMull It Over [0m[34m [0m│[35m [0m[35m2024-12-03 18:25:16[0m[35m [0m│[32m [0m[32m0:04:36 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[1;32m0:05:15[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:09:51 [0m[33m [0m│ +│[34m [0m[34m2024-12-04 [0m[34m [0m│[34m [0m[34mCeres Search [0m[34m [0m│[35m [0m[35m2024-12-04 11:04:12[0m[35m [0m│[32m [0m[1;32m0:24:23[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[32m0:07:14 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:31:37 [0m[33m [0m│ +│[34m [0m[34m2024-12-05 [0m[34m [0m│[34m [0m[34mPrint Queue [0m[34m [0m│[35m [0m[35m2024-12-05 10:08:48[0m[35m [0m│[32m [0m[32m0:11:41 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[1;32m0:12:48[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:24:29 [0m[33m [0m│ +│[34m [0m[34m2024-12-06 [0m[34m [0m│[34m [0m[34mGuard Gallivant [0m[34m [0m│[35m [0m[35m2024-12-06 10:48:54[0m[35m [0m│[32m [0m[32m0:14:23 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[1;32m0:19:23[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:33:46 [0m[33m [0m│ +│[34m [0m[1;34m2024-12-07[0m[34m [0m[34m [0m│[34m [0m[34mBridge Repair [0m[34m [0m│[35m [0m[35m2024-12-07 11:48:38[0m[35m [0m│[32m [0m[1;32m0:17:17[0m[32m [0m[32m [0m│[36m [0m[4;36m2[0m[36m [0m[36m [0m│[32m [0m[32m0:01:42 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:18:59 [0m[33m [0m│ +│[34m [0m[1;34m2024-12-08[0m[34m [0m[34m [0m│[34m [0m[34mResonant Collinearity [0m[34m [0m│[35m [0m[35m2024-12-08 12:24:23[0m[35m [0m│[32m [0m[1;32m0:18:25[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[32m0:07:19 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:25:44 [0m[33m [0m│ +│[34m [0m[34m2024-12-09 [0m[34m [0m│[34m [0m[34mDisk Fragmenter [0m[34m [0m│[35m [0m[35m2024-12-09 17:05:00[0m[35m [0m│[32m [0m[1;32m0:17:50[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[32m0:13:38 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:31:28 [0m[33m [0m│ +│[34m [0m[34m2024-12-10 [0m[34m [0m│[34m [0m[34mHoof It [0m[34m [0m│[35m [0m[35m2024-12-10 16:26:17[0m[35m [0m│[32m [0m[1;32m0:29:16[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[32m0:01:03 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:30:19 [0m[33m [0m│ +│[34m [0m[34m2024-12-11 [0m[34m [0m│[34m [0m[34mPlutonian Pebbles [0m[34m [0m│[35m [0m[35m2024-12-11 10:54:43[0m[35m [0m│[32m [0m[32m0:08:16 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[1;32m1:38:37[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m1:46:53 [0m[33m [0m│ +│[34m [0m[34m2024-12-12 [0m[34m [0m│[34m [0m[34mGarden Groups [0m[34m [0m│[35m [0m[35m2024-12-12 09:44:54[0m[35m [0m│[32m [0m[1;4;32m0:36:57[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[32m0:22:54 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:59:51 [0m[33m [0m│ +│[34m [0m[34m2024-12-13 [0m[34m [0m│[34m [0m[34mClaw Contraption [0m[34m [0m│[35m [0m[35m2024-12-13 11:18:09[0m[35m [0m│[32m [0m[4;32m0:46:35[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[1;4;32m4:53:18[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[4;33m5:39:53[0m[33m [0m[33m [0m│ +│[34m [0m[1;34m2024-12-14[0m[34m [0m[34m [0m│[34m [0m[34mRestroom Redoubt [0m[34m [0m│[35m [0m[35m2024-12-14 12:13:09[0m[35m [0m│[32m [0m[1;32m0:30:06[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[32m0:06:04 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:36:10 [0m[33m [0m│ +│[34m [0m[1;34m2024-12-15[0m[34m [0m[34m [0m│[34m [0m[34mWarehouse Woes [0m[34m [0m│[35m [0m[35m2024-12-15 10:41:57[0m[35m [0m│[32m [0m[32m0:30:00 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[1;32m0:34:19[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m1:04:19 [0m[33m [0m│ +│[34m [0m[34m2024-12-16 [0m[34m [0m│[34m [0m[34mReindeer Maze [0m[34m [0m│[35m [0m[35m2024-12-16 15:18:12[0m[35m [0m│[32m [0m[1;4;32m0:59:02[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[32m0:31:45 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m1:30:47 [0m[33m [0m│ +│[34m [0m[34m2024-12-17 [0m[34m [0m│[34m [0m[34mChronospatial Computer[0m[34m [0m│[35m [0m[35m2024-12-17 14:59:30[0m[35m [0m│[32m [0m[32m0:18:45 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[1;4;32m2:00:37[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[4;33m2:19:22[0m[33m [0m[33m [0m│ +│[34m [0m[34m2024-12-18 [0m[34m [0m│[34m [0m[34mRAM Run [0m[34m [0m│[35m [0m[35m2024-12-18 09:05:58[0m[35m [0m│[32m [0m[1;4;32m0:36:16[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[32m0:05:46 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:42:02 [0m[33m [0m│ +│[34m [0m[34m2024-12-19 [0m[34m [0m│[34m [0m[34mLinen Layout [0m[34m [0m│[35m [0m[35m2024-12-19 10:41:30[0m[35m [0m│[32m [0m[32m0:08:00 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[1;32m0:08:01[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:16:01 [0m[33m [0m│ +│[34m [0m[34m2024-12-20 [0m[34m [0m│[34m [0m[34mRace Condition [0m[34m [0m│[35m [0m[35m2024-12-20 09:18:09[0m[35m [0m│[32m [0m[4;32m1:26:24[0m[32m [0m[32m [0m│[36m [0m[4;36m2[0m[36m [0m[36m [0m│[32m [0m[1;4;32m1:51:20[0m[32m [0m[32m [0m│[36m [0m[4;36m2[0m[36m [0m[36m [0m│[33m [0m[4;33m3:17:44[0m[33m [0m[33m [0m│ +│[34m [0m[1;34m2024-12-21[0m[34m [0m[34m [0m│[34m [0m[34mKeypad Conundrum [0m[34m [0m│[35m [0m[35m2024-12-21 09:42:01[0m[35m [0m│[32m [0m[4;32m1:23:38[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[1;4;32m15:30:41[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[4;33m16:54:19[0m[33m [0m[33m [0m│ +│[34m [0m[1;34m2024-12-22[0m[34m [0m[34m [0m│[34m [0m[34mMonkey Market [0m[34m [0m│[35m [0m[35m2024-12-22 12:31:22[0m[35m [0m│[32m [0m[32m0:19:56 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[1;4;32m2:07:21[0m[32m [0m[32m [0m│[36m [0m[4;36m2[0m[36m [0m[36m [0m│[33m [0m[4;33m2:27:17[0m[33m [0m[33m [0m│ +│[34m [0m[34m2024-12-23 [0m[34m [0m│[34m [0m[34mLAN Party [0m[34m [0m│[35m [0m[35m2024-12-23 12:43:58[0m[35m [0m│[32m [0m[32m0:16:08 [0m[32m [0m│[36m [0m[4;36m2[0m[36m [0m[36m [0m│[32m [0m[1;32m0:33:30[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:49:38 [0m[33m [0m│ +│[34m [0m[34m2024-12-24 [0m[34m [0m│[34m [0m[34mCrossed Wires [0m[34m [0m│[35m [0m[35m2024-12-24 10:11:36[0m[35m [0m│[32m [0m[32m0:15:34 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[1;4;32m1:52:13[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[4;33m2:07:47[0m[33m [0m[33m [0m│ +│[34m [0m[34m2024-12-25 [0m[34m [0m│[34m [0m[34mCode Chronicle [0m[34m [0m│[35m [0m[35m2024-12-25 10:26:05[0m[35m [0m│[32m [0m[1;32m0:14:59[0m[32m [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[32m [0m[32m0:01:24 [0m[32m [0m│[36m [0m[36m1 [0m[36m [0m│[33m [0m[33m0:16:23 [0m[33m [0m│ +├─────────────┼────────────────────────┼─────────────────────┼──────────┼─────────────┼────────────────┼─────────────┼─────────────────┤ +│[1m [0m[1mTotal [0m[1m [0m│[1m [0m[1m25 [0m[1m [0m│[1m [0m[1m [0m[1m [0m│[1m [0m[1m11:06:42[0m[1m [0m│[1m [0m[1m29 [0m[1m [0m│[1m [0m[1m1 day, 9:33:39[0m[1m [0m│[1m [0m[1m27 [0m[1m [0m│[1m [0m[1m1 day, 20:40:21[0m[1m [0m│ +└─────────────┴────────────────────────┴─────────────────────┴──────────┴─────────────┴────────────────┴─────────────┴─────────────────┘ +[2;3m Bold puzzle date: weekend; Bold time: worst part; Underline time: worst 25%; Underline attempts: >1 [0m diff --git a/LICENSE.EUPLv1.2 b/LICENSE.EUPLv1.2 new file mode 100644 index 0000000..a0fa10b --- /dev/null +++ b/LICENSE.EUPLv1.2 @@ -0,0 +1,153 @@ +EUROPEAN UNION PUBLIC LICENCE v. 1.2 +EUPL © the European Union 2007, 2016 + +This European Union Public Licence (the ‘EUPL’) applies to the Work (as defined below) which is provided under the terms of this Licence. Any use of the Work, other than as authorised under this Licence is prohibited (to the extent such use is covered by a right of the copyright holder of the Work). + +The Work is provided under the terms of this Licence when the Licensor (as defined below) has placed the following notice immediately following the copyright notice for the Work: + +Licensed under the EUPL + +or has expressed by any other means his willingness to license under the EUPL. + +1. Definitions +In this Licence, the following terms have the following meaning: + +— ‘The Licence’: this Licence. + +— ‘The Original Work’: the work or software distributed or communicated by the Licensor under this Licence, available as Source Code and also as Executable Code as the case may be. + +— ‘Derivative Works’: the works or software that could be created by the Licensee, based upon the Original Work or modifications thereof. This Licence does not define the extent of modification or dependence on the Original Work required in order to classify a work as a Derivative Work; this extent is determined by copyright law applicable in the country mentioned in Article 15. + +— ‘The Work’: the Original Work or its Derivative Works. + +— ‘The Source Code’: the human-readable form of the Work which is the most convenient for people to study and modify. + +— ‘The Executable Code’: any code which has generally been compiled and which is meant to be interpreted by a computer as a program. + +— ‘The Licensor’: the natural or legal person that distributes or communicates the Work under the Licence. + +— ‘Contributor(s)’: any natural or legal person who modifies the Work under the Licence, or otherwise contributes to the creation of a Derivative Work. + +— ‘The Licensee’ or ‘You’: any natural or legal person who makes any usage of the Work under the terms of the Licence. + +— ‘Distribution’ or ‘Communication’: any act of selling, giving, lending, renting, distributing, communicating, transmitting, or otherwise making available, online or offline, copies of the Work or providing access to its essential functionalities at the disposal of any other natural or legal person. + +2. Scope of the rights granted by the Licence +The Licensor hereby grants You a worldwide, royalty-free, non-exclusive, sublicensable licence to do the following, for the duration of copyright vested in the Original Work: + +— use the Work in any circumstance and for all usage, + +— reproduce the Work, + +— modify the Work, and make Derivative Works based upon the Work, + +— communicate to the public, including the right to make available or display the Work or copies thereof to the public and perform publicly, as the case may be, the Work, + +— distribute the Work or copies thereof, + +— lend and rent the Work or copies thereof, + +— sublicense rights in the Work or copies thereof. + +Those rights can be exercised on any media, supports and formats, whether now known or later invented, as far as the applicable law permits so. + +In the countries where moral rights apply, the Licensor waives his right to exercise his moral right to the extent allowed by law in order to make effective the licence of the economic rights here above listed. + +The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to any patents held by the Licensor, to the extent necessary to make use of the rights granted on the Work under this Licence. + +3. Communication of the Source Code +The Licensor may provide the Work either in its Source Code form, or as Executable Code. If the Work is provided as Executable Code, the Licensor provides in addition a machine-readable copy of the Source Code of the Work along with each copy of the Work that the Licensor distributes or indicates, in a notice following the copyright notice attached to the Work, a repository where the Source Code is easily and freely accessible for as long as the Licensor continues to distribute or communicate the Work. + +4. Limitations on copyright +Nothing in this Licence is intended to deprive the Licensee of the benefits from any exception or limitation to the exclusive rights of the rights owners in the Work, of the exhaustion of those rights or of other applicable limitations thereto. + +5. Obligations of the Licensee +The grant of the rights mentioned above is subject to some restrictions and obligations imposed on the Licensee. Those obligations are the following: + +Attribution right: The Licensee shall keep intact all copyright, patent or trademarks notices and all notices that refer to the Licence and to the disclaimer of warranties. The Licensee must include a copy of such notices and a copy of the Licence with every copy of the Work he/she distributes or communicates. The Licensee must cause any Derivative Work to carry prominent notices stating that the Work has been modified and the date of modification. +Copyleft clause: If the Licensee distributes or communicates copies of the Original Works or Derivative Works, this Distribution or Communication will be done under the terms of this Licence or of a later version of this Licence unless the Original Work is expressly distributed only under this version of the Licence — for example by communicating ‘EUPL v. 1.2 only’. The Licensee (becoming Licensor) cannot offer or impose any additional terms or conditions on the Work or Derivative Work that alter or restrict the terms of the Licence. +Compatibility clause: If the Licensee Distributes or Communicates Derivative Works or copies thereof based upon both the Work and another work licensed under a Compatible Licence, this Distribution or Communication can be done under the terms of this Compatible Licence. For the sake of this clause, ‘Compatible Licence’ refers to the licences listed in the appendix attached to this Licence. Should the Licensee's obligations under the Compatible Licence conflict with his/her obligations under this Licence, the obligations of the Compatible Licence shall prevail. +Provision of Source Code: When distributing or communicating copies of the Work, the Licensee will provide a machine-readable copy of the Source Code or indicate a repository where this Source will be easily and freely available for as long as the Licensee continues to distribute or communicate the Work. +Legal Protection: This Licence does not grant permission to use the trade names, trademarks, service marks, or names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the copyright notice. +6. Chain of Authorship +The original Licensor warrants that the copyright in the Original Work granted hereunder is owned by him/her or licensed to him/her and that he/she has the power and authority to grant the Licence. + +Each Contributor warrants that the copyright in the modifications he/she brings to the Work are owned by him/her or licensed to him/her and that he/she has the power and authority to grant the Licence. + +Each time You accept the Licence, the original Licensor and subsequent Contributors grant You a licence to their contri butions to the Work, under the terms of this Licence. + +7. Disclaimer of Warranty +The Work is a work in progress, which is continuously improved by numerous Contributors. It is not a finished work and may therefore contain defects or ‘bugs’ inherent to this type of development. + +For the above reason, the Work is provided under the Licence on an ‘as is’ basis and without warranties of any kind concerning the Work, including without limitation merchantability, fitness for a particular purpose, absence of defects or errors, accuracy, non-infringement of intellectual property rights other than copyright as stated in Article 6 of this Licence. + +This disclaimer of warranty is an essential part of the Licence and a condition for the grant of any rights to the Work. + +8. Disclaimer of Liability +Except in the cases of wilful misconduct or damages directly caused to natural persons, the Licensor will in no event be liable for any direct or indirect, material or moral, damages of any kind, arising out of the Licence or of the use of the Work, including without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, loss of data or any commercial damage, even if the Licensor has been advised of the possibility of such damage. However, the Licensor will be liable under statutory product liability laws as far such laws apply to the Work. + +9. Additional agreements +While distributing the Work, You may choose to conclude an additional agreement, defining obligations or services consistent with this Licence. However, if accepting obligations, You may act only on your own behalf and on your sole responsibility, not on behalf of the original Licensor or any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against such Contributor by the fact You have accepted any warranty or additional liability. + +10. Acceptance of the Licence +The provisions of this Licence can be accepted by clicking on an icon ‘I agree’ placed under the bottom of a window displaying the text of this Licence or by affirming consent in any other similar way, in accordance with the rules of applicable law. Clicking on that icon indicates your clear and irrevocable acceptance of this Licence and all of its terms and conditions. + +Similarly, you irrevocably accept this Licence and all of its terms and conditions by exercising any rights granted to You by Article 2 of this Licence, such as the use of the Work, the creation by You of a Derivative Work or the Distribution or Communication by You of the Work or copies thereof. + +11. Information to the public +In case of any Distribution or Communication of the Work by means of electronic communication by You (for example, by offering to download the Work from a remote location) the distribution channel or media (for example, a website) must at least provide to the public the information requested by the applicable law regarding the Licensor, the Licence and the way it may be accessible, concluded, stored and reproduced by the Licensee. + +12. Termination of the Licence +The Licence and the rights granted hereunder will terminate automatically upon any breach by the Licensee of the terms of the Licence. + +Such a termination will not terminate the licences of any person who has received the Work from the Licensee under the Licence, provided such persons remain in full compliance with the Licence. + +13. Miscellaneous +Without prejudice of Article 9 above, the Licence represents the complete agreement between the Parties as to the Work. + +If any provision of the Licence is invalid or unenforceable under applicable law, this will not affect the validity or enforceability of the Licence as a whole. Such provision will be construed or reformed so as necessary to make it valid and enforceable. + +The European Commission may publish other linguistic versions or new versions of this Licence or updated versions of the Appendix, so far this is required and reasonable, without reducing the scope of the rights granted by the Licence. New versions of the Licence will be published with a unique version number. + +All linguistic versions of this Licence, approved by the European Commission, have identical value. Parties can take advantage of the linguistic version of their choice. + +14. Jurisdiction +Without prejudice to specific agreement between parties, + +— any litigation resulting from the interpretation of this License, arising between the European Union institutions, bodies, offices or agencies, as a Licensor, and any Licensee, will be subject to the jurisdiction of the Court of Justice of the European Union, as laid down in article 272 of the Treaty on the Functioning of the European Union, + +— any litigation arising between other parties and resulting from the interpretation of this License, will be subject to the exclusive jurisdiction of the competent court where the Licensor resides or conducts its primary business. + +15. Applicable Law +Without prejudice to specific agreement between parties, + +— this Licence shall be governed by the law of the European Union Member State where the Licensor has his seat, resides or has his registered office, + +— this licence shall be governed by Belgian law if the Licensor has no seat, residence or registered office inside a European Union Member State. + +Appendix +‘Compatible Licences’ according to Article 5 EUPL are: + +— GNU General Public License (GPL) v. 2, v. 3 + +— GNU Affero General Public License (AGPL) v. 3 + +— Open Software License (OSL) v. 2.1, v. 3.0 + +— Eclipse Public License (EPL) v. 1.0 + +— CeCILL v. 2.0, v. 2.1 + +— Mozilla Public Licence (MPL) v. 2 + +— GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3 + +— Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for works other than software + +— European Union Public Licence (EUPL) v. 1.1, v. 1.2 + +— Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) or Strong Reciprocity (LiLiQ-R+) + +The European Commission may update this Appendix to later versions of the above licences without producing a new version of the EUPL, as long as they provide the rights granted in Article 2 of this Licence and protect the covered Source Code from exclusive appropriation. + +All other changes or additions to this Appendix require the production of a new EUPL version. diff --git a/LICENSE.Unlicense b/LICENSE.Unlicense new file mode 100644 index 0000000..fdddb29 --- /dev/null +++ b/LICENSE.Unlicense @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to <https://unlicense.org> diff --git a/README.md b/README.md new file mode 100644 index 0000000..16085fe --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +# Advent of Code + +[Advent of Code](https://adventofcode.com/) is a yearly coding competition. +In this repo are the solutions and notes I wrote for it. + +**Content warning:** Some profanity. + +Unless indicated otherwise in a README, `one.py` and `two.py` are the files that generated the solution that got me the answer. +So they WILL contain unreadable code and broken solutions, as I'm optimizing for answer speed. + +Other codes are either solutions that went so bad I wrote a backup in a different file (otherwise I usually rewrite/comment out the things that don't work), +or puzzles I revisited because someone posted a part 3, I wanted to try a different approach, or I wanted to figure out how the hell the code that got me the solution worked in the first place. + +## Times display + +Since there's no way I was going to get up at 6 AM but I still wanted to keep track of the time I took to get to the right answer, +the `times.py` script display a table of the times between I opened the puzzle in my browser, and the time I submitted the solution. +It has quite a few limitations but they're documented. +Either run it with Lix/Nix, or manually install the dependencies that are stated on the 3rd line. + +## License + +I'm not 100% sure it can work like this but here goes: + +- `times.py` is licensed under the "European Union Public License v1.2". The idea is that if you modify the script and use it to share its output, you have to share your modifications as well, so the community can also enjoy it. +- Puzzle solutions, test inputs I wrote are licensed under "The Unlicense". It's basically public domain, so it can be used as teaching material. +- Inputs copied from Reddit (identified with a "reddit" somewhere in the filename) are... I don't know, and I'm not reading the Reddit TOS to figure it out. + + + + + diff --git a/times.csv b/times.csv new file mode 100644 index 0000000..bc766b9 --- /dev/null +++ b/times.csv @@ -0,0 +1,30 @@ +puzzle,opened,part1_attempts,part1_finished,part2_attempts,part2_finished +2023-12-01,2023-12-02 12:02:03+01:00,1,2023-12-02 12:14:04+01:00,1,2023-12-02 12:33:28+01:00 +2024-12-01,2024-12-01 11:37:35+01:00,2,2024-12-01 11:48:41+01:00,1,2024-12-01 11:52:16+01:00 +2023-12-02,2024-12-01 22:31:10+01:00,3,2024-12-01 22:47:42+01:00,1,2024-12-01 22:50:34+01:00 +2023-12-03,2024-12-01 22:50:40+01:00,1,2024-12-01 23:13:57+01:00,1,2024-12-01 23:18:33+01:00 +2023-12-24,2024-12-01 23:18:47+01:00,0,None,0,None +2024-12-02,2024-12-02 10:17:11+01:00,1,2024-12-02 10:24:20+01:00,1,2024-12-02 10:28:12+01:00 +2024-12-03,2024-12-03 18:25:16+01:00,1,2024-12-03 18:29:52+01:00,1,2024-12-03 18:35:07+01:00 +2024-12-04,2024-12-04 11:04:12+01:00,1,2024-12-04 11:28:35+01:00,1,2024-12-04 11:35:49+01:00 +2024-12-05,2024-12-05 10:08:48+01:00,1,2024-12-05 10:20:29+01:00,1,2024-12-05 10:33:17+01:00 +2024-12-06,2024-12-06 10:48:54+01:00,1,2024-12-06 11:03:17+01:00,1,2024-12-06 11:22:40+01:00 +2024-12-07,2024-12-07 11:48:38+01:00,2,2024-12-07 12:05:55+01:00,1,2024-12-07 12:07:37+01:00 +2024-12-08,2024-12-08 12:24:23+01:00,1,2024-12-08 12:42:48+01:00,1,2024-12-08 12:50:07+01:00 +2024-12-09,2024-12-09 17:05:00+01:00,1,2024-12-09 17:22:50+01:00,1,2024-12-09 17:36:28+01:00 +2024-12-10,2024-12-10 16:26:17+01:00,1,2024-12-10 16:55:33+01:00,1,2024-12-10 16:56:36+01:00 +2024-12-11,2024-12-11 10:54:43+01:00,1,2024-12-11 11:02:59+01:00,1,2024-12-11 12:41:36+01:00 +2024-12-12,2024-12-12 09:44:54+01:00,1,2024-12-12 10:21:51+01:00,1,2024-12-12 10:44:45+01:00 +2024-12-13,2024-12-13 11:18:09+01:00,1,2024-12-13 12:04:44+01:00,1,2024-12-13 16:58:02+01:00 +2024-12-14,2024-12-14 12:13:09+01:00,1,2024-12-14 12:43:15+01:00,1,2024-12-14 12:49:19+01:00 +2024-12-15,2024-12-15 10:41:57+01:00,1,2024-12-15 11:11:57+01:00,1,2024-12-15 11:46:16+01:00 +2024-12-16,2024-12-16 15:18:12+01:00,1,2024-12-16 16:17:14+01:00,1,2024-12-16 16:48:59+01:00 +2024-12-17,2024-12-17 14:59:30+01:00,1,2024-12-17 15:18:15+01:00,1,2024-12-17 17:18:52+01:00 +2024-12-18,2024-12-18 09:05:58+01:00,1,2024-12-18 09:42:14+01:00,1,2024-12-18 09:48:00+01:00 +2024-12-19,2024-12-19 10:41:30+01:00,1,2024-12-19 10:49:30+01:00,1,2024-12-19 10:57:31+01:00 +2024-12-20,2024-12-20 09:18:09+01:00,2,2024-12-20 10:44:33+01:00,2,2024-12-20 12:35:53+01:00 +2024-12-21,2024-12-21 09:42:01+01:00,1,2024-12-21 11:05:39+01:00,1,2024-12-22 02:36:20+01:00 +2024-12-22,2024-12-22 12:31:22+01:00,1,2024-12-22 12:51:18+01:00,2,2024-12-22 14:58:39+01:00 +2024-12-23,2024-12-23 12:43:58+01:00,2,2024-12-23 13:00:06+01:00,1,2024-12-23 13:33:36+01:00 +2024-12-24,2024-12-24 10:11:36+01:00,1,2024-12-24 10:27:10+01:00,1,2024-12-24 12:19:23+01:00 +2024-12-25,2024-12-25 10:26:05+01:00,1,2024-12-25 10:41:04+01:00,1,2024-12-25 10:42:28+01:00 diff --git a/times.py b/times.py new file mode 100755 index 0000000..5b3ac6b --- /dev/null +++ b/times.py @@ -0,0 +1,308 @@ +#!/usr/bin/env cached-nix-shell +#! nix-shell -i python3 +#! nix-shell -p python3 python3Packages.rich python3Packages.typer aoc-cli +# vim: filetype=python + +""" +Display Advent of Code puzzle solving times based on web browser history. + +Assumptions/Limitations: +- You opened your and submitted your inputs with the qutebrowser web browser +- The last attempt you made at a puzzle was the correct one +- aoc-cli is configured +- There will be a YYYY/MM folder relative to $PWD if you attempted the puzzle +- This script will add a prompt file in above directory (to cache the titles) +""" + +import collections +import csv +import datetime +import enum +import os +import pathlib +import re +import sqlite3 +import statistics +import subprocess +import typing +import urllib.parse +import zoneinfo + +import rich.console +import rich.table +import typer + +app = typer.Typer() + + +def get_qutebrowser_urls() -> ( + typing.Generator[tuple[datetime.datetime, urllib.parse.ParseResult], None, None] +): + qutebrowser_history_path = os.path.expanduser( + "~/.local/share/qutebrowser/history.sqlite" + ) + db = sqlite3.connect(qutebrowser_history_path) + + cur = db.cursor() + for row in cur.execute( + "SELECT atime,url FROM History" + " WHERE url LIKE 'https://adventofcode.com/%/day/%'" + " ORDER BY atime ASC" + ): + tim = datetime.datetime.fromtimestamp(row[0]).astimezone() + url = urllib.parse.urlparse(row[1]) + yield tim, url + + +# opened, p1 attempts, p1 last answer, p2 attempts, p2 last answer +PuzzleTimesAttempts = tuple[ + datetime.datetime, int, datetime.datetime | None, int, datetime.datetime | None +] + + +def get_puzzle_folder(date: datetime.date) -> pathlib.Path | None: + path = pathlib.Path(f"{date.year}/{date.day}") + if path.is_dir(): + return path + else: + return None + + +def get_time_attempts(year: int | None) -> dict[datetime.date, PuzzleTimesAttempts]: + starts: dict[datetime.date, datetime.datetime] = dict() + part1a: dict[datetime.date, int] = collections.Counter() + part1t: dict[datetime.date, datetime.datetime] = dict() + got_part2: set[datetime.date] = set() + part2a: dict[datetime.date, int] = collections.Counter() + part2t: dict[datetime.date, datetime.datetime] = dict() + + for tim, url in get_qutebrowser_urls(): + match = re.match( + r"^/(?P<year>[0-9]{4})/day/(?P<day>[0-9]{1,2})(?P<answer>/answer)?$", + url.path, + ) + if not match: + continue # Not an interesting URL + + date = datetime.date(int(match["year"]), 12, int(match["day"])) + if year is not None and date.year != year: + continue # Not the wanted year + + answer = bool(match["answer"]) + part2 = url.fragment == "part2" + + if date not in starts: + starts[date] = tim + + if answer: + if date in got_part2: + part2a[date] += 1 + part2t[date] = tim + else: + part1a[date] += 1 + part1t[date] = tim + elif part2: + got_part2.add(date) + + time_attempts = dict() + for date in starts: + if get_puzzle_folder(date) is None: + continue # Not attempted + + time_attempts[date] = ( + starts[date], + part1a.get(date, 0), + part1t.get(date), + part2a.get(date, 0), + part2t.get(date), + ) + return time_attempts + + +def get_puzzle_prompt(date: datetime.date) -> str: + path = get_puzzle_folder(date) + assert path + filepath = path / "prompt" + if not filepath.is_file(): + r = subprocess.run( + ["aoc", "read", "--year", str(date.year), "--day", str(date.day)], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + r.check_returncode() + with open(filepath, "w") as fd: + fd.write(r.stdout.decode()) + with open(filepath) as fd: + return fd.read() + + +def get_puzzle_title(date: datetime.date) -> str: + prompt = get_puzzle_prompt(date) + for line in prompt.splitlines(): + match = re.match(f"^--- Day {date.day}: (.+) ---$", line) + if match: + return match[1] + raise ValueError("Could not find title in prompt") + + +def bold_time_threshold(times: list[datetime.timedelta]) -> datetime.timedelta: + times_s = [round(t.total_seconds(), 1) for t in times] + quantiles = statistics.quantiles(times_s) + return datetime.timedelta(seconds=quantiles[-1]) + + +def format_puzzle(date: datetime.date) -> str: + string = str(date) + if date.weekday() in (5, 6): + string = f"[bold]{string}" + return string + + +def format_time( + time: datetime.timedelta | None, + bold_threshold: datetime.timedelta, + compare: datetime.timedelta | None = None, +) -> str: + if time is None: + return "[bright_black]-" + string = str(time) + if time >= bold_threshold: + string = f"[underline]{string}" + if compare and time > compare: + string = f"[bold]{string}" + return string + + +def format_attempts( + attempts: int, +) -> str: + if attempts == 0: + return "[bright_black]-" + string = str(attempts) + if attempts > 1: + string = f"[underline]{string}" + return string + + +class SortMethod(str, enum.Enum): + puzzle = "puzzle" + opened = "opened" + part1_time = "part1_time" + part2_time = "part2_time" + total_time = "total_time" + + +@app.command("csv") +def write_csv(file: typer.FileTextWrite, year: int | None = None) -> None: + writer = csv.writer(file) + writer.writerow( + ( + "puzzle", + "opened", + "part1_attempts", + "part1_finished", + "part2_attempts", + "part2_finished", + ) + ) + for puzzle, times_attempts in get_time_attempts(year).items(): + all_info = (puzzle,) + times_attempts + writer.writerow(str(i) for i in all_info) + + +@app.command("table") +def print_table( + year: int | None = None, + assume_early_bird: bool = False, + show_opened: bool = True, + sort: SortMethod = SortMethod.opened, +) -> None: + + if assume_early_bird: + show_opened = False + + puzzles = get_time_attempts(year) + part1_times = dict() + part2_times = dict() + total_times = dict() + for date, time_attempts in puzzles.items(): + start, _, part1_date, _, part2_date = time_attempts + if part1_date: + if assume_early_bird: + start = datetime.datetime( + date.year, date.month, date.day, tzinfo=zoneinfo.ZoneInfo("EST") + ) + part1_times[date] = part1_date - start + if part2_date: + part2_times[date] = part2_date - part1_date + total_times[date] = part2_date - start + + part1_bold_time_threshold = bold_time_threshold(list(part1_times.values())) + part2_bold_time_threshold = bold_time_threshold(list(part2_times.values())) + total_bold_time_threshold = bold_time_threshold(list(total_times.values())) + + part1_total = sum(part1_times.values(), start=datetime.timedelta()) + part1_attempts = sum(puzzle[1] for puzzle in puzzles.values()) + part2_total = sum(part2_times.values(), start=datetime.timedelta()) + part2_attempts = sum(puzzle[3] for puzzle in puzzles.values()) + total_total = sum(total_times.values(), start=datetime.timedelta()) + + table = rich.table.Table( + title="Advent of Code times", + caption="Bold puzzle date: weekend; " + "Bold time: worst part; " + "Underline time: worst 25%; " + "Underline attempts: >1", + show_footer=True, + ) + table.add_column("Puzzle date", "Total", style="blue") + table.add_column("Puzzle title", str(len(puzzles)), style="blue") + if show_opened: + table.add_column("Opened date", style="magenta") + table.add_column("P1 time", str(part1_total), style="green") + table.add_column("P1 attempts", str(part1_attempts), style="cyan") + table.add_column("P2 time", str(part2_total), style="green") + table.add_column("P2 attempts", str(part2_attempts), style="cyan") + table.add_column("Total time", str(total_total), style="yellow") + + dates = list(puzzles.keys()) + if sort == SortMethod.puzzle: + dates.sort() + elif sort == SortMethod.opened: + pass + elif sort == SortMethod.part1_time: + dates.sort(key=lambda d: part1_times.get(d, datetime.timedelta.max)) + elif sort == SortMethod.part2_time: + dates.sort(key=lambda d: part2_times.get(d, datetime.timedelta.max)) + elif sort == SortMethod.total_time: + dates.sort(key=lambda d: total_times.get(d, datetime.timedelta.max)) + else: + assert False + + for date in dates: + start, part1_attempts, _, part2_attempts, _ = puzzles[date] + part1_time = part1_times.get(date) + part2_time = part2_times.get(date) + total_time = total_times.get(date) + row = ( + ( + format_puzzle(date), + get_puzzle_title(date), + ) + + ((str(start),) if show_opened else tuple()) + + ( + format_time(part1_time, part1_bold_time_threshold, part2_time), + format_attempts(part1_attempts), + format_time(part2_time, part2_bold_time_threshold, part1_time), + format_attempts(part2_attempts), + format_time(total_time, total_bold_time_threshold), + ) + ) + table.add_row(*row) + + console = rich.console.Console() + console.print(table) + + +if __name__ == "__main__": + app()