From 9cd524398375374a6de7cc938a37aee6ccdfed67 Mon Sep 17 00:00:00 2001 From: Olive Vaughn Date: Mon, 28 Sep 2026 01:11:41 -0400 Subject: [PATCH] Serve the document from a Django backend, split into three tiers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Step 9. The tier split was the work; Django was the easy half. Tier 1 — the authored scene — is the document, and it is addressed as independently versioned leaves rather than saved whole, so one vertex drag cannot clobber a collaborator's keying. `domain/leaf` is the document as path -> value; `domain/wire` puts it on the wire as transit, because JSON has neither integer map keys nor keywords and a save would quietly turn `{0 v}` into `{"0" v}`. Tier 2 — the dense channel blocks — is content-addressed by a hash over every input, with the detector version inside every key through the analysis the block descriptor names. `flow/address`'s `block-knobs` is the invalidation table, and `address-test` does not trust it: it re-freezes the take once per knob and asserts the biconditional, that a block's bytes changed if and only if its key changed. That found `brow-pos` not depending on `contour-avg` — the brow ring is smoothed, the raise is not. Tier 3 — frames and audio — is served by the hash of its bytes out of the same store. A manifest now names frames and carries a URL for each, so the frame layout stopped being a shared secret between a shell script and a ClojureScript namespace, and the `?v=` cache-buster went with it: a blob's name is the hash of its contents, so a stale copy is not a thing that can happen. The synthetic take's `audio.wav` moved to `static/arthur/` — an asset the project owns, not an extraction that churns. The server verifies rather than trusting a name it was handed: it recomputes every key from the descriptor stored beside it, refuses an analysis that declares no detector version, and refuses a document naming blocks it does not hold. It hashes the descriptor TEXT, because JS prints an integral double as `1` and Python as `1.0`, and a scheme where both ends re-render the numbers disagrees on the first parameter that happens to be whole. Two loose ends from step 8 closed on the way. `pack` no longer takes a `(track, frame)` predicate whose call sites each re-derived a feature from an index — every track names the feature it follows, which deleted five hand-maintained mappings. And `:dev-http` is gone: Django serves the page, shadow-cljs only builds into the staticfiles tree. 227 CLJS tests, 31 Django tests, green. Co-Authored-By: Claude Opus 5 --- .gitignore | 19 + README.md | 52 +- audio.wav | Bin 383454 -> 0 bytes clips/__init__.py | 0 clips/admin.py | 63 ++ clips/apps.py | 14 + clips/blobs.py | 104 ++++ clips/management/__init__.py | 0 clips/management/commands/__init__.py | 0 clips/management/commands/ingest_bundle.py | 120 ++++ clips/migrations/0001_initial.py | 149 +++++ clips/migrations/__init__.py | 0 clips/models.py | 261 ++++++++ .../templates/clips}/index.html | 29 +- clips/tests/__init__.py | 0 clips/tests/test_api.py | 476 +++++++++++++++ clips/urls.py | 30 + clips/views.py | 578 ++++++++++++++++++ docs/animation-model.md | 13 +- docs/architecture.md | 96 +++ docs/port-plan.md | 101 ++- frontend/README.md | 122 +++- frontend/shadow-cljs.edn | 37 +- frontend/src/arthur/core.cljs | 7 +- frontend/src/arthur/db.cljs | 28 +- frontend/src/arthur/demo/take.cljs | 16 +- frontend/src/arthur/domain/canon.cljs | 77 +++ frontend/src/arthur/domain/leaf.cljs | 183 ++++++ frontend/src/arthur/domain/project.cljs | 100 +++ frontend/src/arthur/domain/sha256.cljs | 148 +++++ frontend/src/arthur/domain/wire.cljs | 102 ++++ frontend/src/arthur/events/footage.cljs | 84 ++- frontend/src/arthur/events/project.cljs | 195 ++++++ frontend/src/arthur/flow/address.cljs | 185 ++++++ frontend/src/arthur/flow/detect.cljs | 12 +- frontend/src/arthur/flow/freeze.cljs | 269 +++++--- frontend/src/arthur/flow/ingest.cljs | 80 ++- frontend/src/arthur/flow/take.cljs | 22 +- frontend/src/arthur/footage/store.cljs | 24 +- frontend/src/arthur/fx/http.cljs | 55 ++ frontend/src/arthur/subs/playback.cljs | 3 + frontend/src/arthur/ui/shell.cljs | 37 +- frontend/test/arthur/domain/canon_test.cljs | 65 ++ frontend/test/arthur/domain/leaf_test.cljs | 110 ++++ frontend/test/arthur/domain/project_test.cljs | 146 +++++ frontend/test/arthur/domain/scene_test.cljs | 29 +- frontend/test/arthur/domain/sha256_test.cljs | 51 ++ frontend/test/arthur/domain/wire_test.cljs | 91 +++ frontend/test/arthur/flow/address_test.cljs | 217 +++++++ frontend/test/arthur/flow/freeze_test.cljs | 25 +- frontend/test/arthur/support/ops.cljs | 59 ++ frontend/test/browser/take.mjs | 87 ++- manage.py | 25 + manifest.json | 1 - requirements.txt | 10 + server/__init__.py | 0 server/asgi.py | 12 + server/settings.py | 122 ++++ server/urls.py | 16 + server/wsgi.py | 6 + static/arthur/audio.wav | Bin 0 -> 670460 bytes 61 files changed, 4694 insertions(+), 269 deletions(-) delete mode 100644 audio.wav create mode 100644 clips/__init__.py create mode 100644 clips/admin.py create mode 100644 clips/apps.py create mode 100644 clips/blobs.py create mode 100644 clips/management/__init__.py create mode 100644 clips/management/commands/__init__.py create mode 100644 clips/management/commands/ingest_bundle.py create mode 100644 clips/migrations/0001_initial.py create mode 100644 clips/migrations/__init__.py create mode 100644 clips/models.py rename {frontend/public => clips/templates/clips}/index.html (64%) create mode 100644 clips/tests/__init__.py create mode 100644 clips/tests/test_api.py create mode 100644 clips/urls.py create mode 100644 clips/views.py create mode 100644 frontend/src/arthur/domain/canon.cljs create mode 100644 frontend/src/arthur/domain/leaf.cljs create mode 100644 frontend/src/arthur/domain/project.cljs create mode 100644 frontend/src/arthur/domain/sha256.cljs create mode 100644 frontend/src/arthur/domain/wire.cljs create mode 100644 frontend/src/arthur/events/project.cljs create mode 100644 frontend/src/arthur/flow/address.cljs create mode 100644 frontend/src/arthur/fx/http.cljs create mode 100644 frontend/test/arthur/domain/canon_test.cljs create mode 100644 frontend/test/arthur/domain/leaf_test.cljs create mode 100644 frontend/test/arthur/domain/project_test.cljs create mode 100644 frontend/test/arthur/domain/sha256_test.cljs create mode 100644 frontend/test/arthur/domain/wire_test.cljs create mode 100644 frontend/test/arthur/flow/address_test.cljs create mode 100644 frontend/test/arthur/support/ops.cljs create mode 100755 manage.py delete mode 100644 manifest.json create mode 100644 requirements.txt create mode 100644 server/__init__.py create mode 100644 server/asgi.py create mode 100644 server/settings.py create mode 100644 server/urls.py create mode 100644 server/wsgi.py create mode 100644 static/arthur/audio.wav diff --git a/.gitignore b/.gitignore index 83b39c3..ab2e70d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,11 @@ +# extract.sh's output. It is TIER 3 — immutable, large, and the backend's to serve +# once `manage.py ingest_bundle` has hashed it into var/blobs — so none of it +# belongs in the repo. `audio.wav` was tracked before step 9 because the synthetic +# take borrowed it for a clock; that copy now lives at static/arthur/audio.wav, +# which is an asset the project owns rather than an extraction that churns. frames/ +/audio.wav +/manifest.json # local extracted takes for comparing source cadences /scratch/ *.task @@ -17,3 +24,15 @@ static/arthur/js/ # mise-managed venv for the Django half .venv/ + +# the Django half's own state: the document database, the content-addressed blob +# store (tiers 2 and 3), and collectstatic's output +db.sqlite3 +/var/ + +# vim swap files +*.swp + +# Python bytecode +__pycache__/ +*.py[cod] diff --git a/README.md b/README.md index 7ab6dcb..01ce7dd 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,38 @@ modern conveniences belong in the workflow, not the output. See ## ClojureScript port -The active port has reached [step 7 of the port plan](docs/port-plan.md): it plays -the synthetic take and can load extracted real footage with mouth, eyes, brows, -and pixel-derived teeth. The step 8 data model now represents persistent feature -IDs, eye pairs and feature-level observation gaps; its controls are still pending. -See [frontend/README.md](frontend/README.md) for setup and the **load frames** -workflow. The rest of this README describes the older JS prototype, which still -runs separately on port 8777. +The active port has reached [step 9 of the port plan](docs/port-plan.md): it plays +the synthetic take, loads real footage with mouth, eyes, brows and pixel-derived +teeth, and now has a Django backend that persists the document. The step 8 data +model represents persistent feature IDs, eye pairs and feature-level observation +gaps; its controls are still pending. + +```sh +mise install # both halves +pip install -r requirements.txt +mise exec -- python manage.py migrate +mise exec -- python manage.py runserver 8778 # then open localhost:8778 +cd frontend && mise exec -- npx shadow-cljs watch app +``` + +See [frontend/README.md](frontend/README.md) for the **load frames** and **save** +workflows. Anything under "## Run" and below describes the older JS prototype, +which still runs separately on port 8777. + +### How it is stored + +Three tiers, cut by mutability and size — the full argument is in +[docs/architecture.md](docs/architecture.md): + +| Tier | What | Where | +| --- | --- | --- | +| 1 **authored** | the scene: nodes, channels, features, time maps | the database, as independently addressed leaves. Kilobytes | +| 2 **derived** | the dense channel blocks | `var/blobs`, content-addressed by a hash over every input — including the detector version | +| 3 **source** | frames and audio | the same blob store, by the hash of their bytes | + +Only tier 1 is the document. Tier 2 is a pure function of tiers 1 and 3, so a +saved project names its blocks rather than carrying them, and a knob change gives +a block a new name rather than overwriting an old one. ## Run @@ -383,3 +408,16 @@ performer→character calibration (currently identity, fitting the face oval to canvas); the override layer; anything on the Animator Pro side. The plate is a face-oval polygon per kept frame — it exists so the mouth has a face to read against, not to look good. + +In the port specifically: the parameter UI and scoped regeneration (the model is +built, the controls are not); automatic per-feature detection, so presence still +comes from the full-face mask plus a manifest annotation; multiplayer, for which +step 9 built the addressing and none of the socket; and in-browser extraction, so +`extract.sh` plus `manage.py ingest_bundle` is still how footage arrives. + +Two smaller things that are known and undecided. `measure/brows` takes no +`presence` where `measure/eyes` does, so an occluded brow affects the freeze mask +but not brow measurement, and occluded landmarks still enter contour smoothing — +asymmetric with the eyes, and it is not settled which way is right. And `open` +takes the most recently updated project and shows its first clip: there is no +project browser, and the runtime store holds one clip at a time. diff --git a/audio.wav b/audio.wav deleted file mode 100644 index f5793b0e12f005cbf27a03179032446f0f954f4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383454 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

  • ^v&^qm8j2O~ty~N?aq}L;LGOxAYAv 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 z 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 diff --git a/clips/__init__.py b/clips/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/clips/admin.py b/clips/admin.py new file mode 100644 index 0000000..9e73270 --- /dev/null +++ b/clips/admin.py @@ -0,0 +1,63 @@ +"""The admin, which is here for one reason: tier 1 is readable. + +docs/architecture.md's argument against a CRDT is partly this — "the canonical +document moves into an opaque blob, and every server-side thing that reads the +document needs it materialised back out". A leaf is transit-as-JSON in a +JSONField, so it is legible here, and that is a property worth being able to see. +""" +from django.contrib import admin + +from .models import Analysis, Block, Blob, Clip, Footage, FootageFrame, Leaf, Project, Revision + + +@admin.register(Project) +class ProjectAdmin(admin.ModelAdmin): + list_display = ("name", "id", "seq", "updated") + search_fields = ("name", "id") + + +@admin.register(Clip) +class ClipAdmin(admin.ModelAdmin): + list_display = ("cid", "project", "name", "footage", "analysis") + list_filter = ("project",) + + +@admin.register(Leaf) +class LeafAdmin(admin.ModelAdmin): + list_display = ("path", "project", "version", "updated") + list_filter = ("project",) + search_fields = ("path",) + + +@admin.register(Revision) +class RevisionAdmin(admin.ModelAdmin): + list_display = ("project", "seq", "summary", "author", "created") + + +@admin.register(Footage) +class FootageAdmin(admin.ModelAdmin): + list_display = ("label", "source", "fps", "frames", "width", "height", "created") + + +@admin.register(FootageFrame) +class FootageFrameAdmin(admin.ModelAdmin): + list_display = ("footage", "index", "blob") + list_filter = ("footage",) + + +@admin.register(Analysis) +class AnalysisAdmin(admin.ModelAdmin): + list_display = ("key", "detector", "version", "footage", "created") + search_fields = ("key", "detector", "version") + + +@admin.register(Block) +class BlockAdmin(admin.ModelAdmin): + list_display = ("key", "role", "analysis", "data", "state", "created") + list_filter = ("role",) + search_fields = ("key",) + + +@admin.register(Blob) +class BlobAdmin(admin.ModelAdmin): + list_display = ("digest", "media_type", "size", "created") diff --git a/clips/apps.py b/clips/apps.py new file mode 100644 index 0000000..6b51579 --- /dev/null +++ b/clips/apps.py @@ -0,0 +1,14 @@ +from django.apps import AppConfig + + +class ClipsConfig(AppConfig): + """The one app. + + `clips` because the CLIP is the entity the whole tool is about and the one the + prototype had exactly one of and never named — `state` in `js/app.js` is a clip + with its analysis inlined and its palette global. Project, Footage, Analysis, + Block, Leaf and Revision all hang off it. + """ + + default_auto_field = "django.db.models.BigAutoField" + name = "clips" diff --git a/clips/blobs.py b/clips/blobs.py new file mode 100644 index 0000000..c9e0f3e --- /dev/null +++ b/clips/blobs.py @@ -0,0 +1,104 @@ +"""The content-addressed blob store: tiers 2 and 3 on disk. + +One store for both, and docs/architecture.md says why in a sentence: once tier 3 +is decoded by the app rather than by a shell script, frames and audio become "the +same kind of thing as tier 2 — a cache with a hash". So there is one place that +writes bytes, one that reads them, and one URL shape for both. + +TWO KINDS OF HASH, AND THEY ARE NOT THE SAME HASH. A blob is named by the sha256 +of its BYTES: that is what makes identical frames in two extractions one file. A +derived thing — an analysis artifact, a dense block — is named by a sha256 over +its INPUTS, which is what lets the client ask for the block the current settings +want before anything has computed it. So `Block.key` is an input hash and +`Block.data.digest` is a byte hash, and conflating them would break the half of +addressing that answers questions about work not yet done. +""" +import hashlib +import os +from pathlib import Path + +from django.conf import settings + +CHUNK = 1 << 20 + + +def digest_bytes(data: bytes) -> str: + return hashlib.sha256(data).hexdigest() + + +def digest_file(path: Path) -> str: + h = hashlib.sha256() + with open(path, "rb") as fh: + while chunk := fh.read(CHUNK): + h.update(chunk) + return h.hexdigest() + + +def path_for(digest: str) -> Path: + """Where a blob lives. + + Fanned out two levels, so that a take's worth of frames does not put a hundred + thousand entries in one directory — which is slow on every filesystem and + unusable on some. + """ + if len(digest) != 64 or any(c not in "0123456789abcdef" for c in digest): + raise ValueError(f"not a sha256: {digest!r}") + return Path(settings.BLOB_ROOT) / digest[:2] / digest[2:4] / digest + + +def write(data: bytes) -> tuple[str, int]: + """Store bytes, return (digest, size). Writing the same bytes twice is a + no-op, which is what content addressing is for.""" + digest = digest_bytes(data) + dest = path_for(digest) + if not dest.exists(): + dest.parent.mkdir(parents=True, exist_ok=True) + tmp = dest.with_suffix(".part") + with open(tmp, "wb") as fh: + fh.write(data) + os.replace(tmp, dest) + return digest, len(data) + + +def adopt(source: Path) -> tuple[str, int]: + """Store a file already on disk, by hard link where the filesystem allows it. + + 112MB of PNGs is a normal extraction and copying them into a second place in + the tree for no reason is not. A hard link is exact — the blob is immutable, so + two names for one inode is the whole of what is wanted — and a copy is the + fallback when `extract.sh` wrote to another volume. + """ + digest = digest_file(source) + dest = path_for(digest) + size = source.stat().st_size + if not dest.exists(): + dest.parent.mkdir(parents=True, exist_ok=True) + try: + os.link(source, dest) + except OSError: + tmp = dest.with_suffix(".part") + with open(source, "rb") as src, open(tmp, "wb") as out: + while chunk := src.read(CHUNK): + out.write(chunk) + os.replace(tmp, dest) + return digest, size + + +def read(digest: str) -> bytes: + with open(path_for(digest), "rb") as fh: + return fh.read() + + +def png_size(path: Path) -> tuple[int, int]: + """A PNG's dimensions, out of its IHDR. + + Twenty-four bytes rather than a dependency. The footage's width and height are + manifest data — docs/architecture.md's entity model puts them there — and + Pillow to read two integers out of a header that has held them in the same + place since 1996 is not a trade worth making. + """ + with open(path, "rb") as fh: + head = fh.read(24) + if head[:8] != b"\x89PNG\r\n\x1a\n" or head[12:16] != b"IHDR": + raise ValueError(f"{path} is not a PNG") + return int.from_bytes(head[16:20], "big"), int.from_bytes(head[20:24], "big") diff --git a/clips/management/__init__.py b/clips/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/clips/management/commands/__init__.py b/clips/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/clips/management/commands/ingest_bundle.py b/clips/management/commands/ingest_bundle.py new file mode 100644 index 0000000..89ca5b5 --- /dev/null +++ b/clips/management/commands/ingest_bundle.py @@ -0,0 +1,120 @@ +"""Register an extracted bundle as tier 3. + + python manage.py ingest_bundle # ./manifest.json + python manage.py ingest_bundle scratch/my-take # that bundle + +WHAT THIS REPLACES. Until step 9 the page fetched `/manifest.json` and then built +`frames/0001.png` itself, with shadow-cljs's `:dev-http` serving the repo root. So +the frame layout was a shared secret between a shell script and a ClojureScript +namespace, and "where the frames are" was answered by a directory listing. + +Now the server names every frame, and the client asks it. The frames go into the +content-addressed blob store — by hard link, so 112MB of PNGs is not copied — and +the manifest the client receives carries a URL per frame. That is the whole of what +makes the frames the backend's to serve, and it is what the in-browser wasm-ffmpeg +extraction docs/architecture.md describes will upload INTO, without the client +learning anything new when it arrives: the same blobs, the same manifest, a +different producer. + +`extract.sh` still does the decoding. It is out of step 9's scope, it works, and it +is the only part of this that needs a terminal. +""" +import json +from pathlib import Path + +from django.core.management.base import BaseCommand, CommandError +from django.db import transaction + +from clips import blobs +from clips.models import Blob, Footage, FootageFrame + + +class Command(BaseCommand): + help = "Register an extracted frames+audio+manifest bundle as footage." + + def add_arguments(self, parser): + parser.add_argument( + "bundle", nargs="?", default=".", + help="a directory holding manifest.json, or the manifest itself", + ) + parser.add_argument("--label", default="", help="what to call it in the UI") + + def handle(self, *args, **options): + manifest_path = Path(options["bundle"]) + if manifest_path.is_dir(): + manifest_path = manifest_path / "manifest.json" + if not manifest_path.exists(): + raise CommandError(f"{manifest_path} does not exist — run ./extract.sh first") + + manifest = json.loads(manifest_path.read_text()) + root = manifest_path.parent + frames_dir = root / manifest["dir"] + audio_path = root / manifest["audio"] + count = int(manifest["frames"]) + + pngs = sorted(frames_dir.glob("*.png")) + if len(pngs) != count: + raise CommandError( + f"the manifest says {count} frames and {frames_dir} holds {len(pngs)}; " + "refusing an inaccurate footage" + ) + if not audio_path.exists(): + raise CommandError(f"{audio_path} does not exist") + + width, height = blobs.png_size(pngs[0]) + + self.stdout.write(f"hashing {len(pngs)} frames…") + frame_blobs = [] + for i, png in enumerate(pngs): + digest, size = blobs.adopt(png) + frame_blobs.append((i, digest, size)) + if (i + 1) % 25 == 0 or i + 1 == len(pngs): + self.stdout.write(f" {i + 1}/{len(pngs)}") + + audio_digest, audio_size = blobs.adopt(audio_path) + + # The footage's own identity: every frame in order, plus the audio and the + # rate. Two extractions of one clip at one rate are one footage, so an + # analysis over it is reusable across both. + import hashlib + + h = hashlib.sha256() + h.update(f"arthur-footage-1/{manifest['fps']}/{count}/{width}x{height}\n".encode()) + for _, digest, _ in frame_blobs: + h.update(digest.encode()) + h.update(audio_digest.encode()) + footage_digest = h.hexdigest() + + if existing := Footage.objects.filter(digest=footage_digest).first(): + self.stdout.write(self.style.SUCCESS(f"already ingested: {existing.id}")) + return + + with transaction.atomic(): + audio_blob, _ = Blob.objects.get_or_create( + digest=audio_digest, + defaults={"size": audio_size, "media_type": "audio/wav"}, + ) + footage = Footage.objects.create( + digest=footage_digest, + label=options["label"] or manifest.get("source") or frames_dir.name, + source=manifest.get("source") or "", + fps=float(manifest["fps"]), + frames=count, + width=width, + height=height, + audio=audio_blob, + feature_absence=manifest.get("feature-absence") or {}, + ) + rows = [] + for index, digest, size in frame_blobs: + blob, _ = Blob.objects.get_or_create( + digest=digest, defaults={"size": size, "media_type": "image/png"} + ) + rows.append(FootageFrame(footage=footage, index=index, blob=blob)) + FootageFrame.objects.bulk_create(rows) + + self.stdout.write( + self.style.SUCCESS( + f"{count} frames at {manifest['fps']}fps, {width}x{height} -> footage {footage.id}" + ) + ) diff --git a/clips/migrations/0001_initial.py b/clips/migrations/0001_initial.py new file mode 100644 index 0000000..15e07ba --- /dev/null +++ b/clips/migrations/0001_initial.py @@ -0,0 +1,149 @@ +# Generated by Django 5.2.17 on 2026-09-28 04:44 + +import django.db.models.deletion +import uuid +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Blob', + fields=[ + ('digest', models.CharField(max_length=64, primary_key=True, serialize=False)), + ('media_type', models.CharField(default='application/octet-stream', max_length=100)), + ('size', models.BigIntegerField()), + ('created', models.DateTimeField(auto_now_add=True)), + ], + ), + migrations.CreateModel( + name='Project', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('name', models.CharField(default='untitled', max_length=200)), + ('seq', models.PositiveBigIntegerField(default=0)), + ('palette', models.CharField(default='arthur/default', max_length=64)), + ('created', models.DateTimeField(auto_now_add=True)), + ('updated', models.DateTimeField(auto_now=True)), + ], + options={ + 'ordering': ['-updated'], + }, + ), + migrations.CreateModel( + name='Analysis', + fields=[ + ('key', models.CharField(max_length=71, primary_key=True, serialize=False)), + ('descriptor', models.TextField()), + ('detector', models.CharField(max_length=64)), + ('version', models.CharField(max_length=64)), + ('created', models.DateTimeField(auto_now_add=True)), + ('artifact', models.ForeignKey(blank=True, help_text='the dense landmark track, once bake A is uploaded', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='analysis_for', to='clips.blob')), + ], + options={ + 'verbose_name_plural': 'analyses', + }, + ), + migrations.CreateModel( + name='Block', + fields=[ + ('key', models.CharField(max_length=71, primary_key=True, serialize=False)), + ('descriptor', models.TextField()), + ('role', models.CharField(max_length=32)), + ('created', models.DateTimeField(auto_now_add=True)), + ('analysis', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blocks', to='clips.analysis')), + ('data', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='block_data_for', to='clips.blob')), + ('state', models.ForeignKey(blank=True, help_text='the per-track absence mask, when the take has one', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='block_state_for', to='clips.blob')), + ], + ), + migrations.CreateModel( + name='Footage', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('digest', models.CharField(max_length=64, unique=True)), + ('label', models.CharField(blank=True, max_length=200)), + ('source', models.CharField(blank=True, max_length=200)), + ('fps', models.FloatField()), + ('frames', models.PositiveIntegerField()), + ('width', models.PositiveIntegerField()), + ('height', models.PositiveIntegerField()), + ('feature_absence', models.JSONField(blank=True, default=dict)), + ('created', models.DateTimeField(auto_now_add=True)), + ('audio', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='audio_for', to='clips.blob')), + ], + options={ + 'ordering': ['-created'], + }, + ), + migrations.AddField( + model_name='analysis', + name='footage', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='analyses', to='clips.footage'), + ), + migrations.CreateModel( + name='Revision', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('seq', models.PositiveBigIntegerField()), + ('author', models.CharField(blank=True, max_length=200)), + ('summary', models.CharField(blank=True, max_length=500)), + ('document', models.JSONField(help_text='every leaf of the project, by path')), + ('created', models.DateTimeField(auto_now_add=True)), + ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='revisions', to='clips.project')), + ], + options={ + 'ordering': ['-seq'], + }, + ), + migrations.CreateModel( + name='FootageFrame', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('index', models.PositiveIntegerField(help_text="0-based; source frame index + 1 is the PNG's name")), + ('blob', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='frame_for', to='clips.blob')), + ('footage', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='frame_set', to='clips.footage')), + ], + options={ + 'ordering': ['index'], + 'constraints': [models.UniqueConstraint(fields=('footage', 'index'), name='one_blob_per_frame')], + }, + ), + migrations.CreateModel( + name='Leaf', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('path', models.CharField(max_length=300)), + ('value', models.JSONField()), + ('version', models.PositiveBigIntegerField(default=1)), + ('updated', models.DateTimeField(auto_now=True)), + ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='leaves', to='clips.project')), + ], + options={ + 'ordering': ['path'], + 'constraints': [models.UniqueConstraint(fields=('project', 'path'), name='one_leaf_per_path')], + }, + ), + migrations.CreateModel( + name='Clip', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('cid', models.SlugField(max_length=64)), + ('name', models.CharField(blank=True, max_length=200)), + ('order', models.IntegerField(default=0)), + ('analysis', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='clips', to='clips.analysis')), + ('blocks', models.ManyToManyField(blank=True, help_text="the tier-2 blocks this clip's channels name", related_name='clips', to='clips.block')), + ('footage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='clips', to='clips.footage')), + ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='clips', to='clips.project')), + ], + options={ + 'ordering': ['order', 'cid'], + 'constraints': [models.UniqueConstraint(fields=('project', 'cid'), name='one_cid_per_project')], + }, + ), + ] diff --git a/clips/migrations/__init__.py b/clips/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/clips/models.py b/clips/models.py new file mode 100644 index 0000000..e083808 --- /dev/null +++ b/clips/models.py @@ -0,0 +1,261 @@ +"""The entity model, as tables. + +It follows docs/architecture.md's model exactly, and the one thing worth reading +it for is which tier each table is in, because that is what decides whether a row +is a document, a cache entry or a source. + + TIER 1, the document. Project, Clip, Leaf, Revision. Kilobytes, authored, + versioned, and the only tier anything will ever sync. + + TIER 2, derived. Analysis, Block. Content-addressed by a hash over every input + that produced them — including the detector version — so a stale bake is + unreachable rather than wrong, and a collaborator's bake is fetchable by the + same key. + + TIER 3, source. Footage, FootageFrame. Immutable, by hash. + + Blob is under all three of them: bytes, named by the sha256 of themselves. + +WHAT IS DELIBERATELY NOT HERE. `Clip` does not store fps, frames, width or height. +They are in the document — the `timing` and `stage` leaves — and a copy of them in +a column is a copy that comes to disagree with the scene it describes. The columns +`Clip` does have are the ones the SERVER needs to answer a question about a clip +without parsing its leaves: which footage, which analysis, which blocks. +""" +import uuid + +from django.db import models + + +class Blob(models.Model): + """Bytes, named by the sha256 of themselves. The file is on disk under + `BLOB_ROOT`; this row is the index and the size.""" + + digest = models.CharField(primary_key=True, max_length=64) + media_type = models.CharField(max_length=100, default="application/octet-stream") + size = models.BigIntegerField() + created = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return f"{self.digest[:12]}… {self.size}B {self.media_type}" + + +class Footage(models.Model): + """Tier 3: the frames and audio of one extraction, immutable. + + `digest` is over the ordered frame digests plus the audio's, so two + extractions of the same clip at the same rate are one footage and the same + analysis can be reused across both. + + `feature_absence` is the manifest annotation step 8 introduced: known + occlusion intervals, one-based and inclusive, expanded into presence tracks by + the loader. An input format, not a control UI. + """ + + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + digest = models.CharField(max_length=64, unique=True) + label = models.CharField(max_length=200, blank=True) + source = models.CharField(max_length=200, blank=True) + fps = models.FloatField() + frames = models.PositiveIntegerField() + width = models.PositiveIntegerField() + height = models.PositiveIntegerField() + audio = models.ForeignKey(Blob, on_delete=models.PROTECT, related_name="audio_for") + feature_absence = models.JSONField(default=dict, blank=True) + created = models.DateTimeField(auto_now_add=True) + + class Meta: + ordering = ["-created"] + + def __str__(self): + return f"{self.label or self.source or self.id} ({self.frames}f @{self.fps})" + + +class FootageFrame(models.Model): + """One source frame. A row rather than an entry in a JSON list, because a + frame is a thing the server serves, and because a blob's references have to be + countable before anything can be collected.""" + + footage = models.ForeignKey(Footage, on_delete=models.CASCADE, related_name="frame_set") + index = models.PositiveIntegerField(help_text="0-based; source frame index + 1 is the PNG's name") + blob = models.ForeignKey(Blob, on_delete=models.PROTECT, related_name="frame_for") + + class Meta: + ordering = ["index"] + constraints = [ + models.UniqueConstraint(fields=["footage", "index"], name="one_blob_per_frame"), + ] + + +class Analysis(models.Model): + """Tier 2: one detector, at one version, over one footage. + + `key` is a content address over every input, and `descriptor` is the exact + canonical text that key is the sha256 of — sent by the client and stored, not + recomputed here. `clips/views.py` says why that is the honest arrangement: JS + prints an integral double as `1` and Python as `1.0`, so a scheme where both + sides re-render the numbers breaks on the first one of them. + + `detector` and `version` are columns as well as descriptor fields so that the + question "which model produced this take" is answerable in the admin and in a + query, rather than only by parsing a hash's preimage. + """ + + key = models.CharField(primary_key=True, max_length=71) + descriptor = models.TextField() + detector = models.CharField(max_length=64) + version = models.CharField(max_length=64) + footage = models.ForeignKey( + Footage, null=True, blank=True, on_delete=models.SET_NULL, related_name="analyses" + ) + artifact = models.ForeignKey( + Blob, null=True, blank=True, on_delete=models.SET_NULL, related_name="analysis_for", + help_text="the dense landmark track, once bake A is uploaded", + ) + created = models.DateTimeField(auto_now_add=True) + + class Meta: + verbose_name_plural = "analyses" + + def __str__(self): + return f"{self.detector} {self.version} → {self.key[7:19]}…" + + +class Block(models.Model): + """Tier 2: one dense channel block. + + Two hashes, and they are not the same hash. `key` is over the block's INPUTS, + which is what lets a client ask for the block its current settings want before + anything has computed it. `data.digest` is over the bytes. See clips/blobs.py. + """ + + key = models.CharField(primary_key=True, max_length=71) + descriptor = models.TextField() + role = models.CharField(max_length=32) + analysis = models.ForeignKey( + Analysis, null=True, blank=True, on_delete=models.SET_NULL, related_name="blocks" + ) + data = models.ForeignKey(Blob, on_delete=models.PROTECT, related_name="block_data_for") + state = models.ForeignKey( + Blob, null=True, blank=True, on_delete=models.PROTECT, related_name="block_state_for", + help_text="the per-track absence mask, when the take has one", + ) + created = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return f"{self.role} {self.key[7:19]}…" + + +class Project(models.Model): + """Tier 1: the document's root. + + `seq` is the monotonic project version docs/architecture.md asks for. Every + write bumps it, and a client that sees `seq > local + 1` refetches — which is + what makes staleness self-healing rather than permanent once there is a + broadcast to miss. + """ + + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + name = models.CharField(max_length=200, default="untitled") + seq = models.PositiveBigIntegerField(default=0) + palette = models.CharField(max_length=64, default="arthur/default") + created = models.DateTimeField(auto_now_add=True) + updated = models.DateTimeField(auto_now=True) + + class Meta: + ordering = ["-updated"] + + def __str__(self): + return f"{self.name} ({self.id})" + + def bump(self): + self.seq += 1 + self.save(update_fields=["seq", "updated"]) + return self.seq + + +class Clip(models.Model): + """Tier 1: the unit of work, and the thing leaf paths are scoped by. + + `cid` is what appears in `clip//...`, so it is the clip's identity as far + as addressing is concerned and it does not change. + """ + + project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name="clips") + cid = models.SlugField(max_length=64) + name = models.CharField(max_length=200, blank=True) + order = models.IntegerField(default=0) + footage = models.ForeignKey( + Footage, null=True, blank=True, on_delete=models.SET_NULL, related_name="clips" + ) + analysis = models.ForeignKey( + Analysis, null=True, blank=True, on_delete=models.SET_NULL, related_name="clips" + ) + blocks = models.ManyToManyField( + Block, blank=True, related_name="clips", + help_text="the tier-2 blocks this clip's channels name", + ) + + class Meta: + ordering = ["order", "cid"] + constraints = [ + models.UniqueConstraint(fields=["project", "cid"], name="one_cid_per_project"), + ] + + def __str__(self): + return f"{self.cid} of {self.project.name}" + + +class Leaf(models.Model): + """Tier 1: one independently addressed, independently versioned piece of the + document. + + The value is transit-as-JSON in a JSONField, so the column holds JSON rather + than a string containing JSON: the admin can read a leaf, and the field-wise + merge of a channel leaf that docs/architecture.md describes as fifteen lines of + Python is possible over it. `version` is the entity tag a conditional write + compares — RFC 7232, not a bespoke invention. + """ + + project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name="leaves") + path = models.CharField(max_length=300) + value = models.JSONField() + version = models.PositiveBigIntegerField(default=1) + updated = models.DateTimeField(auto_now=True) + + class Meta: + ordering = ["path"] + constraints = [ + models.UniqueConstraint(fields=["project", "path"], name="one_leaf_per_path"), + ] + + @property + def etag(self): + return f'"{self.version}"' + + def __str__(self): + return f"{self.path}@{self.version}" + + +class Revision(models.Model): + """Tier 1: a snapshot of the authored layer, with a user and a summary. + + ON AN EXPLICIT TRIGGER, not on every save. tl snapshots a small annotation + layer; arthur's tier 1 will contain cel polygons, so a snapshot per save bloats + the table — docs/architecture.md's "revisions need a coarser trigger". So this + is written by `POST /api/projects//revisions`, which is a "mark version" + button, and never by a save. + """ + + project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name="revisions") + seq = models.PositiveBigIntegerField() + author = models.CharField(max_length=200, blank=True) + summary = models.CharField(max_length=500, blank=True) + document = models.JSONField(help_text="every leaf of the project, by path") + created = models.DateTimeField(auto_now_add=True) + + class Meta: + ordering = ["-seq"] + + def __str__(self): + return f"{self.project.name} r{self.seq}: {self.summary}" diff --git a/frontend/public/index.html b/clips/templates/clips/index.html similarity index 64% rename from frontend/public/index.html rename to clips/templates/clips/index.html index 782f667..2a75220 100644 --- a/frontend/public/index.html +++ b/clips/templates/clips/index.html @@ -1,7 +1,17 @@ - - +{% load static %} +{% comment %} +The host page, served by Django since port-plan step 9. + +It was `frontend/public/index.html`, served by shadow-cljs's `:dev-http`, and that +key is gone. The bundle is unchanged: shadow-cljs writes it into +`static/arthur/js` and staticfiles serves it from there, so `manage.py runserver` +and `shadow-cljs watch app` are the whole dev loop with nothing copying files +between them. + +The CSRF token is rendered so that Django sets its cookie, which is what +`arthur.fx.http` reads to write the `X-CSRFToken` header. Saves are ordinary POSTs +and PUTs with ordinary CSRF protection — no endpoint in this app is exempt. +{% endcomment %} @@ -34,16 +44,17 @@ .picture-rate { display: flex; align-items: center; gap: 6px; margin-top: 7px; font-size: 12px; } .source-path { display: block; margin-top: 8px; font-size: 12px; opacity: .7; } - .source-path input { width: 300px; margin-left: 8px; padding: 3px 5px; - color: var(--fg); background: #1c1f2b; border: 1px solid #2b3040; - font: inherit; } + .source-path select { margin: 0 8px; padding: 3px 5px; + color: var(--fg); background: #1c1f2b; border: 1px solid #2b3040; + font: inherit; max-width: 360px; } .load-status { margin-top: 6px; font-size: 12px; opacity: .75; } .note { opacity: .35; font-size: 12px; max-width: 640px; } + {% csrf_token %}
    - - + + diff --git a/clips/tests/__init__.py b/clips/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/clips/tests/test_api.py b/clips/tests/test_api.py new file mode 100644 index 0000000..69b395e --- /dev/null +++ b/clips/tests/test_api.py @@ -0,0 +1,476 @@ +"""What the server guarantees, as opposed to what the client intends. + +The two interesting groups here are the ones that make the tier split a property +of the system rather than a convention in ClojureScript: + + A KEY DESCRIBES ITS BYTES. The server recomputes every tier-2 key it is handed + and refuses a mismatch, so nothing can store a block under a name that is not + the hash of its own descriptor. + + A BLOCK CAN NAME ITS DETECTOR VERSION. Every block names an analysis and every + analysis declares a detector and a version, both enforced here. That chain is + what docs/architecture.md asks for: without it, a model upgrade that silently + reuses old landmarks presents as "the tool got worse" with no event to attach it + to. + +The rest is the load/save round trip, the conditional write, and the footage +manifest that makes the frames the backend's to serve. +""" +import hashlib +import json +import struct +import tempfile +import zlib +from pathlib import Path + +from django.test import TestCase, override_settings + +from clips import blobs +from clips.models import Analysis, Block, Blob, Clip, Footage, Leaf, Project, Revision + +BLOB_DIR = tempfile.mkdtemp(prefix="arthur-test-blobs-") + + +def key_for(descriptor: str) -> str: + return "sha256:" + hashlib.sha256(descriptor.encode("utf-8")).hexdigest() + + +def analysis_descriptor(version="1.0.1"): + # Canonical JSON, written the way arthur.domain.canon writes it: sorted keys, + # no spaces, integral doubles with no point. + return ('{"aspect":1,"detector":"mediapipe","frames":48,"fps":30,"scheme":1,' + f'"version":"{version}"}}') + + +def block_descriptor(analysis_key, role="geom", anchor_avg=2): + return (f'{{"analysis":"{analysis_key}","features":["mouth"],' + f'"layout":{{"frames":48,"scale":16384,"stride":16,"tracks":1,"type":"int16"}},' + f'"observation":null,"params":{{"anchor-avg":{anchor_avg}}},' + f'"role":"{role}","scheme":1,"tracks":["outer"]}}') + + +def png(width=4, height=3): + """The smallest valid PNG of a given size, written by hand. + + So that `blobs.png_size` and the ingest path are exercised without Pillow. The + one thing the backend needs from a PNG is its IHDR, and this is a PNG with one. + """ + def chunk(kind, payload): + return (struct.pack(">I", len(payload)) + kind + payload + + struct.pack(">I", zlib.crc32(kind + payload) & 0xFFFFFFFF)) + + ihdr = struct.pack(">IIBBBBB", width, height, 8, 2, 0, 0, 0) + raw = b"".join(b"\x00" + b"\x40\x40\x40" * width for _ in range(height)) + return (b"\x89PNG\r\n\x1a\n" + chunk(b"IHDR", ihdr) + + chunk(b"IDAT", zlib.compress(raw)) + chunk(b"IEND", b"")) + + +@override_settings(BLOB_ROOT=BLOB_DIR) +class BlobStoreTests(TestCase): + def test_the_same_bytes_are_stored_once(self): + a, size = blobs.write(b"the same bytes") + b, _ = blobs.write(b"the same bytes") + self.assertEqual(a, b) + self.assertEqual(size, 14) + self.assertEqual(blobs.read(a), b"the same bytes") + + def test_a_path_that_is_not_a_hash_is_refused(self): + # The blob route takes its digest from the URL, so this is the check that + # stops `/blob/../../etc/passwd` being a path at all. + with self.assertRaises(ValueError): + blobs.path_for("../../etc/passwd") + with self.assertRaises(ValueError): + blobs.path_for("deadbeef") + + def test_a_png_reports_its_own_size(self): + with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as fh: + fh.write(png(17, 5)) + self.assertEqual((17, 5), blobs.png_size(Path(fh.name))) + + def test_a_blob_is_served_immutable(self): + digest, size = blobs.write(b"bytes on the wire") + Blob.objects.create(digest=digest, size=size, media_type="application/octet-stream") + response = self.client.get(f"/blob/{digest}") + self.assertEqual(200, response.status_code) + self.assertIn("immutable", response["Cache-Control"]) + self.assertEqual(f'"{digest}"', response["ETag"]) + self.assertEqual(b"bytes on the wire", b"".join(response.streaming_content)) + + def test_an_unknown_blob_is_a_404_and_not_a_traceback(self): + self.assertEqual(404, self.client.get("/blob/" + "0" * 64).status_code) + self.assertEqual(404, self.client.get("/blob/nonsense").status_code) + + +@override_settings(BLOB_ROOT=BLOB_DIR) +class Tier2Tests(TestCase): + def post(self, url, payload): + return self.client.post(url, data=json.dumps(payload), + content_type="application/json") + + def register_analysis(self, version="1.0.1"): + descriptor = analysis_descriptor(version) + key = key_for(descriptor) + response = self.post("/api/analyses", { + "key": key, "descriptor": descriptor, + "detector": "mediapipe", "version": version, + }) + self.assertEqual(201, response.status_code, response.content) + return key + + def test_an_analysis_is_its_own_descriptors_hash(self): + key = self.register_analysis() + row = Analysis.objects.get(key=key) + self.assertEqual("mediapipe", row.detector) + self.assertEqual("1.0.1", row.version) + # Idempotent: the same inputs are the same key are the same row. + again = self.post("/api/analyses", { + "key": key, "descriptor": analysis_descriptor(), "detector": "mediapipe", + "version": "1.0.1", + }) + self.assertEqual(200, again.status_code) + self.assertEqual(1, Analysis.objects.count()) + + def test_a_key_that_is_not_the_hash_of_its_descriptor_is_refused(self): + response = self.post("/api/analyses", { + "key": "sha256:" + "0" * 64, "descriptor": analysis_descriptor(), + }) + self.assertEqual(409, response.status_code) + self.assertIn("not the hash", response.json()["error"]) + self.assertEqual(0, Analysis.objects.count()) + + def test_an_analysis_without_a_detector_version_is_refused(self): + # The rule docs/architecture.md is most insistent about, enforced where a + # client cannot forget it. + descriptor = '{"detector":"mediapipe","frames":48,"scheme":1}' + response = self.post("/api/analyses", { + "key": key_for(descriptor), "descriptor": descriptor, + }) + self.assertEqual(400, response.status_code) + self.assertEqual("version", response.json()["missing"]) + + def test_a_block_is_stored_under_the_hash_of_its_inputs(self): + analysis = self.register_analysis() + descriptor = block_descriptor(analysis) + key = key_for(descriptor) + response = self.post("/api/blocks", { + "key": key, "descriptor": descriptor, + "data": "AAECAwQFBgc=", "state": "AAE=", + }) + self.assertEqual(201, response.status_code, response.content) + row = Block.objects.get(key=key) + self.assertEqual("geom", row.role) + self.assertEqual(analysis, row.analysis_id) + # Two hashes, and they are not the same hash: the key is over the inputs, + # the blob's digest is over the bytes. + self.assertNotEqual(key[7:], row.data.digest) + self.assertEqual(8, row.data.size) + + fetched = self.client.get(f"/api/blocks/{key}").json() + self.assertEqual("AAECAwQFBgc=", fetched["data"]) + self.assertEqual("AAE=", fetched["state"]) + self.assertEqual(descriptor, fetched["descriptor"]) + + def test_a_block_whose_analysis_is_unknown_is_refused(self): + descriptor = block_descriptor("sha256:" + "f" * 64) + response = self.post("/api/blocks", { + "key": key_for(descriptor), "descriptor": descriptor, "data": "AA==", + }) + self.assertEqual(400, response.status_code) + self.assertIn("analysis the server does not know", response.json()["error"]) + + def test_a_block_that_does_not_say_what_its_elements_are_is_refused(self): + analysis = self.register_analysis() + descriptor = ('{"analysis":"%s","layout":{"frames":48},"role":"geom","scheme":1}' + % analysis) + response = self.post("/api/blocks", { + "key": key_for(descriptor), "descriptor": descriptor, "data": "AA==", + }) + self.assertEqual(400, response.status_code) + self.assertIn("valid readings", response.json()["error"]) + + def test_only_the_missing_blocks_are_asked_for(self): + analysis = self.register_analysis() + here = key_for(block_descriptor(analysis)) + self.post("/api/blocks", { + "key": here, "descriptor": block_descriptor(analysis), "data": "AA==", + }) + elsewhere = key_for(block_descriptor(analysis, anchor_avg=3)) + response = self.post("/api/blocks/missing", {"keys": [here, elsewhere]}) + self.assertEqual([elsewhere], response.json()["missing"]) + + def test_a_detector_upgrade_gives_a_block_a_new_name(self): + # The end-to-end statement of the requirement: the same measurements under + # a new model version are a different, additional block, and the old one is + # unreachable from the new document rather than wrong. + old = self.register_analysis("1.0.1") + new_descriptor = analysis_descriptor("1.0.2") + self.post("/api/analyses", {"key": key_for(new_descriptor), + "descriptor": new_descriptor}) + for analysis in (old, key_for(new_descriptor)): + descriptor = block_descriptor(analysis) + self.post("/api/blocks", {"key": key_for(descriptor), + "descriptor": descriptor, "data": "AAEC"}) + self.assertEqual(2, Block.objects.count()) + # One set of bytes, two names: the upgrade renamed the block and did not + # duplicate it on disk. + self.assertEqual(1, Blob.objects.filter(block_data_for__isnull=False).distinct().count()) + + +@override_settings(BLOB_ROOT=BLOB_DIR) +class DocumentTests(TestCase): + """Tier 1: load, save, and the conditional write.""" + + def setUp(self): + self.project = Project.objects.create(name="a project") + descriptor = analysis_descriptor() + self.analysis = key_for(descriptor) + self.client.post("/api/analyses", data=json.dumps( + {"key": self.analysis, "descriptor": descriptor}), + content_type="application/json") + block = block_descriptor(self.analysis) + self.block = key_for(block) + self.client.post("/api/blocks", data=json.dumps( + {"key": self.block, "descriptor": block, "data": "AAECAwQFBgc="}), + content_type="application/json") + + def put(self, url, payload, **headers): + return self.client.put(url, data=json.dumps(payload), + content_type="application/json", **headers) + + def leaves(self): + # Transit-shaped, because that is what a leaf actually holds: a map with a + # cache marker, keyword keys, and a frame-keyed inner map. + return { + "clip/c1/timing": ["^ ", "~:fps", 30, "~:frames", 48], + "clip/c1/node/mouth": ["^ ", "~:id", "~:mouth", "~:z", "a1"], + "clip/c1/channel/mouth/geom.pts": [ + "^ ", "~:animated?", True, "~:dense", + ["^ ", "~:store", self.block, "~:offset", 0, "~:stride", 16], + ], + "clip/c1/channel/mouth-in/vis": [ + "^ ", "~:animated?", True, "~:keys", ["^ ", "~i0", True, "~i12", False], + ], + } + + def save(self, leaves=None, blocks=None): + return self.put(f"/api/projects/{self.project.id}", { + "name": "a project", + "clips": [{"cid": "c1", "name": "take", "analysis": self.analysis, + "leaves": leaves if leaves is not None else self.leaves(), + "blocks": blocks if blocks is not None else [self.block]}], + }) + + def test_a_document_comes_back_exactly(self): + response = self.save() + self.assertEqual(200, response.status_code, response.content) + self.assertEqual(4, len(response.json()["written"])) + + loaded = self.client.get(f"/api/projects/{self.project.id}").json() + self.assertEqual(1, len(loaded["clips"])) + clip = loaded["clips"][0] + self.assertEqual("c1", clip["cid"]) + self.assertEqual([self.block], clip["blocks"]) + self.assertEqual(self.analysis, clip["analysis"]) + # The whole point: byte-identical values, including the integer frame keys + # transit writes as "~i0". A JSON round trip that stringified them would + # come back "0" and the part would hold its first pose forever. + self.assertEqual(self.leaves(), clip["leaves"]) + + def test_an_unchanged_leaf_keeps_its_version(self): + # What makes an entity tag worth having: a save where one channel moved + # invalidates one leaf's etag, not the whole document's. + self.save() + first = {leaf.path: leaf.version for leaf in Leaf.objects.all()} + moved = self.leaves() + moved["clip/c1/channel/mouth-in/vis"] = [ + "^ ", "~:animated?", True, "~:keys", ["^ ", "~i0", False], + ] + response = self.save(moved) + self.assertEqual(["clip/c1/channel/mouth-in/vis"], response.json()["written"]) + self.assertEqual(3, response.json()["unchanged"]) + after = {leaf.path: leaf.version for leaf in Leaf.objects.all()} + self.assertEqual(2, after["clip/c1/channel/mouth-in/vis"]) + self.assertEqual(first["clip/c1/timing"], after["clip/c1/timing"]) + + def test_a_removed_node_removes_its_leaf(self): + self.save() + fewer = {k: v for k, v in self.leaves().items() if k != "clip/c1/node/mouth"} + response = self.save(fewer) + self.assertEqual(["clip/c1/node/mouth"], response.json()["removed"]) + self.assertEqual(3, Leaf.objects.count()) + + def test_a_save_does_not_disturb_another_clip(self): + # A save is not the only way the document changes, so a save that cleared + # what it did not mention would undo a collaborator. + Leaf.objects.create(project=self.project, path="clip/c2/timing", value=["^ "]) + self.save() + self.assertTrue(Leaf.objects.filter(path="clip/c2/timing").exists()) + + def test_a_leaf_addressed_to_another_clip_is_refused(self): + response = self.save({"clip/c9/timing": ["^ "]}) + self.assertEqual(400, response.status_code) + self.assertIn("not addressed to clip", response.json()["error"]) + self.assertEqual(0, Leaf.objects.count()) + + def test_a_document_naming_blocks_the_server_lacks_is_refused(self): + # Referential integrity across the tiers. Saved without this, the document + # loads into a blank stage on any other machine. + response = self.save(blocks=[self.block, "sha256:" + "a" * 64]) + self.assertEqual(409, response.status_code) + self.assertEqual(["sha256:" + "a" * 64], response.json()["missing"]) + self.assertEqual(0, Leaf.objects.count()) + + def test_every_write_bumps_the_projects_version(self): + before = Project.objects.get(id=self.project.id).seq + self.save() + self.assertEqual(before + 1, Project.objects.get(id=self.project.id).seq) + + # --- the conditional write --------------------------------------------- + + def test_a_leaf_write_carries_an_etag(self): + self.save() + url = f"/api/projects/{self.project.id}/leaves/clip/c1/node/mouth" + got = self.client.get(url) + self.assertEqual('"1"', got["ETag"]) + + ok = self.put(url, {"value": ["^ ", "~:id", "~:mouth", "~:z", "a2"]}, + HTTP_IF_MATCH='"1"') + self.assertEqual(200, ok.status_code) + self.assertEqual('"2"', ok["ETag"]) + self.assertEqual(["^ ", "~:id", "~:mouth", "~:z", "a2"], + self.client.get(url).json()["value"]) + + def test_a_stale_write_is_refused_and_says_what_is_there(self): + # 409 with the current value, so the client can offer keep-mine / + # take-theirs. A PUT that replaced unconditionally is the bug where the + # loser's work disappears silently. + self.save() + url = f"/api/projects/{self.project.id}/leaves/clip/c1/node/mouth" + self.put(url, {"value": ["^ ", "~:z", "a2"]}, HTTP_IF_MATCH='"1"') + stale = self.put(url, {"value": ["^ ", "~:z", "a3"]}, HTTP_IF_MATCH='"1"') + self.assertEqual(409, stale.status_code) + self.assertEqual(2, stale.json()["version"]) + self.assertEqual(["^ ", "~:z", "a2"], stale.json()["value"]) + # And the value on the server is the one that won, not the one refused. + self.assertEqual(["^ ", "~:z", "a2"], self.client.get(url).json()["value"]) + + def test_an_unconditional_write_still_works(self): + # Conditional writes are the protocol, not a requirement: the first write + # of a leaf has no etag to match. + url = f"/api/projects/{self.project.id}/leaves/clip/c1/stage" + response = self.put(url, {"value": ["^ ", "~:width", 320]}) + self.assertEqual(200, response.status_code) + self.assertEqual('"1"', response["ETag"]) + + def test_if_match_star_requires_the_leaf_to_exist(self): + url = f"/api/projects/{self.project.id}/leaves/clip/c1/nothing" + self.assertEqual(409, self.put(url, {"value": []}, HTTP_IF_MATCH="*").status_code) + + # --- revisions --------------------------------------------------------- + + def test_a_revision_snapshots_the_authored_layer(self): + self.save() + response = self.client.post( + f"/api/projects/{self.project.id}/revisions", + data=json.dumps({"summary": "first pass", "author": "olive"}), + content_type="application/json", + ) + self.assertEqual(201, response.status_code) + revision = Revision.objects.get() + self.assertEqual(4, len(revision.document)) + self.assertEqual(self.leaves(), revision.document) + # Coarse on purpose: a save does not write one, because tier 1 will hold + # cel polygons and a snapshot per save bloats the table. + self.save() + self.assertEqual(1, Revision.objects.count()) + + +@override_settings(BLOB_ROOT=BLOB_DIR) +class FootageTests(TestCase): + """Tier 3, and the thing that makes the frames the backend's to serve: the + manifest names every frame by URL.""" + + def bundle(self, frames=3, absence=None): + root = Path(tempfile.mkdtemp(prefix="arthur-test-bundle-")) + (root / "frames").mkdir() + for i in range(frames): + (root / "frames" / f"{i + 1:04d}.png").write_bytes(png(8, 6) + bytes([i])) + (root / "audio.wav").write_bytes(b"RIFF....WAVEfmt ") + manifest = {"fps": 12, "frames": frames, "dir": "frames", + "audio": "audio.wav", "source": "IMG_8608.MOV"} + if absence: + manifest["feature-absence"] = absence + (root / "manifest.json").write_text(json.dumps(manifest)) + return root + + def ingest(self, root): + from django.core.management import call_command + from io import StringIO + + call_command("ingest_bundle", str(root), stdout=StringIO()) + return Footage.objects.get() + + def test_a_bundle_becomes_footage_with_a_url_per_frame(self): + footage = self.ingest(self.bundle(frames=3, absence={"eye-r": [[1, 2]]})) + self.assertEqual(3, footage.frames) + self.assertEqual((8, 6), (footage.width, footage.height)) + self.assertEqual(12, footage.fps) + self.assertEqual({"eye-r": [[1, 2]]}, footage.feature_absence) + + manifest = self.client.get(f"/api/footage/{footage.id}").json() + self.assertEqual(3, len(manifest["urls"])) + self.assertTrue(all(url.startswith("/blob/") for url in manifest["urls"])) + self.assertEqual(f"sha256:{footage.digest}", manifest["footage"]) + self.assertTrue(manifest["audio"].startswith("/blob/")) + self.assertEqual({"eye-r": [[1, 2]]}, manifest["feature-absence"]) + # The frames are in order, and each one is fetchable. + first = self.client.get(manifest["urls"][0]) + self.assertEqual(200, first.status_code) + self.assertEqual("image/png", first["Content-Type"]) + + def test_ingesting_the_same_bundle_twice_is_one_footage(self): + root = self.bundle() + self.ingest(root) + self.ingest(root) + self.assertEqual(1, Footage.objects.count()) + + def test_a_bundle_whose_count_disagrees_with_its_frames_is_refused(self): + from django.core.management import call_command + from django.core.management.base import CommandError + from io import StringIO + + root = self.bundle(frames=3) + (root / "frames" / "0003.png").unlink() + with self.assertRaisesMessage(CommandError, "refusing an inaccurate footage"): + call_command("ingest_bundle", str(root), stdout=StringIO()) + + def test_the_footage_list_does_not_carry_every_url(self): + # A list of takes should not be a list of six hundred URLs each. + self.ingest(self.bundle()) + listed = self.client.get("/api/footage").json()["footage"] + self.assertEqual(1, len(listed)) + self.assertNotIn("urls", listed[0]) + + +class PageTests(TestCase): + def test_django_serves_the_page_at_both_urls(self): + for url in ("/", "/index.html"): + response = self.client.get(url) + self.assertEqual(200, response.status_code, url) + body = response.content.decode() + self.assertIn("/static/arthur/js/main.js", body) + self.assertIn("/static/mediapipe/vision_bundle.js", body) + self.assertIn('id="app"', body) + # The token is rendered so Django sets its cookie, which is what the + # save path reads to write the X-CSRFToken header. + self.assertIn("csrfmiddlewaretoken", body) + + def test_the_detector_reports_a_version_derived_from_the_model(self): + # The version is the package version plus the model asset's own hash, + # because a version string in the client is one somebody has to remember to + # bump, and the server is the thing that serves the model. + report = self.client.get("/api/detector").json() + self.assertEqual("mediapipe", report["detector"]) + self.assertNotEqual("unknown", report["version"]) + self.assertTrue(report["model"].startswith("sha256:")) + self.assertIn("+", report["version"]) diff --git a/clips/urls.py b/clips/urls.py new file mode 100644 index 0000000..4874732 --- /dev/null +++ b/clips/urls.py @@ -0,0 +1,30 @@ +"""The API, which is nine endpoints and no framework. + +The shape is RFC 7232 over addressed resources: a leaf is a resource, its version +is an entity tag, and a conditional write answers 409. docs/architecture.md is +explicit that this part is not a bespoke invention — "optimistic concurrency +control over addressed resources with an entity tag" is what HTTP has done for +thirty years — so the plumbing here is deliberately boring. + +WRITES ARE ON HTTP AND STAY THERE. When the websocket arrives it carries presence +and broadcasts, and not writes: auth, idempotency, status codes, retries and +conditional requests all come for free here, and a dropped socket cannot lose a +write. +""" +from django.urls import path + +from . import views + +urlpatterns = [ + path("detector", views.detector), + path("footage", views.footage_list), + path("footage/", views.footage_detail), + path("projects", views.projects), + path("projects/", views.project_detail), + path("projects//leaves/", views.leaf_detail), + path("projects//revisions", views.revisions), + path("analyses", views.analyses), + path("blocks", views.blocks), + path("blocks/missing", views.blocks_missing), + path("blocks/", views.block_detail), +] diff --git a/clips/views.py b/clips/views.py new file mode 100644 index 0000000..d2c0355 --- /dev/null +++ b/clips/views.py @@ -0,0 +1,578 @@ +"""The API's implementation. + +Two things in here are load-bearing and neither is Django. + +THE SERVER VERIFIES EVERY TIER-2 KEY IT IS HANDED. A key is the sha256 of a +canonical descriptor, and this recomputes it and refuses a mismatch. That is what +makes content addressing a property of the system rather than a convention in the +client: nothing can store bytes under a name that does not describe them. + +It hashes THE TEXT IT WAS SENT rather than re-rendering the descriptor from parsed +values, and that is the honest arrangement rather than a shortcut. JS prints an +integral double as `1` and Python prints `1.0`, so a scheme where both sides +re-render the numbers would disagree on the first parameter whose value happens to +be whole — and the failure would be an upload that 409s with nothing wrong. The +bytes are the contract; the schema on top of them is a convention, and the two +fields this file actually reads out of that schema are checked separately. + +AND IT REFUSES A BLOCK WHOSE ANALYSIS IT DOES NOT KNOW. Every block descriptor +names an analysis, and every analysis declares a detector and a VERSION. So the +chain from a stored block to the model version that produced it cannot be broken +by a client that forgot a step — which is the whole point of +docs/architecture.md's insistence that the cache key include the detector version. +A model upgrade that silently reused old landmarks would otherwise present as "the +tool got worse", with no event to attach it to. +""" +import hashlib +import json +from functools import lru_cache +from pathlib import Path + +from django.conf import settings +from django.db import transaction +from django.http import FileResponse, HttpResponse, JsonResponse +from django.shortcuts import render +from django.views.decorators.http import require_http_methods + +from . import blobs +from .models import Analysis, Block, Blob, Clip, Footage, Leaf, Project, Revision + +KEY_LENGTH = 71 # "sha256:" + 64 hex + + +# --------------------------------------------------------------------------- +# helpers + + +def _body(request): + try: + return json.loads(request.body or b"{}") + except json.JSONDecodeError as exc: + raise Bad(f"the request body is not JSON: {exc}") from exc + + +class Bad(Exception): + """A 400 with a message, raised where the problem is noticed.""" + + def __init__(self, message, status=400, **detail): + super().__init__(message) + self.message = message + self.status = status + self.detail = detail + + +def _error(exc: Bad): + return JsonResponse({"error": exc.message, **exc.detail}, status=exc.status) + + +def _check_key(key, descriptor): + """The verification. A key is the sha256 of the descriptor stored beside it.""" + if not isinstance(key, str) or len(key) != KEY_LENGTH or not key.startswith("sha256:"): + raise Bad(f"not a content address: {key!r}") + if not isinstance(descriptor, str) or not descriptor: + raise Bad("a key without its descriptor addresses nothing") + actual = hashlib.sha256(descriptor.encode("utf-8")).hexdigest() + if actual != key[7:]: + raise Bad( + "the key is not the hash of its descriptor", + status=409, + expected=f"sha256:{actual}", + given=key, + ) + try: + return json.loads(descriptor) + except json.JSONDecodeError as exc: + raise Bad(f"the descriptor is not canonical JSON: {exc}") from exc + + +def _blob(b64, media_type="application/octet-stream"): + import base64 + + digest, size = blobs.write(base64.b64decode(b64)) + blob, _ = Blob.objects.get_or_create( + digest=digest, defaults={"size": size, "media_type": media_type} + ) + return blob + + +# --------------------------------------------------------------------------- +# the page + + +def page(request): + """The host page. This replaced `frontend/public/index.html` at step 9, and + `:dev-http` in shadow-cljs.edn went away with it.""" + return render(request, "clips/index.html") + + +# --------------------------------------------------------------------------- +# the detector +# +# WHY THE SERVER ANSWERS THIS. The analysis key has to include the detector +# version, and a version string in the client is a string somebody has to remember +# to bump. The server serves the model, so it can hash the model — and then the +# version is a fact about the bytes that produced the landmarks rather than a +# claim about them. + + +@lru_cache(maxsize=4) +def _model_digest(path: str, mtime: float) -> str: + return blobs.digest_file(Path(path)) + + +def _package_version() -> str: + pkg = Path(settings.BASE_DIR) / "frontend" / "package.json" + try: + deps = json.loads(pkg.read_text())["dependencies"] + return deps["@mediapipe/tasks-vision"].lstrip("^~") + except Exception: + return "unknown" + + +@require_http_methods(["GET"]) +def detector(request): + model = Path(settings.BASE_DIR) / "frontend" / "public" / "mediapipe" / "face_landmarker.task" + if not model.exists(): + # Honest rather than fatal: detection will fail at the MediaPipe boundary + # with a better message than this one could give, and an analysis stamped + # "unknown" is a take somebody can still look at and re-freeze later. + return JsonResponse({"detector": "mediapipe", "version": "unknown", "model": None}) + digest = _model_digest(str(model), model.stat().st_mtime) + return JsonResponse( + { + "detector": "mediapipe", + # The package version AND the model's own hash. Either alone can change + # while the other does not, and both change the landmarks. + "version": f"{_package_version()}+{digest[:16]}", + "model": f"sha256:{digest}", + } + ) + + +# --------------------------------------------------------------------------- +# tier 3: footage +# +# THE MANIFEST NOW CARRIES URLS. It used to carry a directory and the loader built +# `frames/0001.png` itself, which quietly made the frame layout a shared secret +# between a shell script and a ClojureScript namespace. The server names every +# frame instead, so the frames can move into the blob store — or later be uploaded +# from the browser by wasm ffmpeg — without the client learning anything new. + + +def _footage_json(footage: Footage, urls=True): + out = { + "id": str(footage.id), + "label": footage.label or footage.source, + "source": footage.source, + "fps": footage.fps, + "frames": footage.frames, + "width": footage.width, + "height": footage.height, + "footage": f"sha256:{footage.digest}", + "audio": f"/blob/{footage.audio.digest}", + "feature-absence": footage.feature_absence or {}, + } + if urls: + out["urls"] = [f"/blob/{f.blob.digest}" for f in footage.frame_set.select_related("blob")] + return out + + +@require_http_methods(["GET"]) +def footage_list(request): + return JsonResponse( + {"footage": [_footage_json(f, urls=False) for f in Footage.objects.all()]} + ) + + +@require_http_methods(["GET"]) +def footage_detail(request, footage_id): + try: + footage = Footage.objects.select_related("audio").get(id=footage_id) + except Footage.DoesNotExist: + return JsonResponse({"error": "no such footage"}, status=404) + return JsonResponse(_footage_json(footage)) + + +@require_http_methods(["GET"]) +def blob(request, digest): + """Raw bytes, immutable. + + `immutable` is not optimism here, it is the definition: the name IS the hash of + the content, so a cached copy cannot be stale. That is what makes serving 600 + frames out of this cheap enough to do on every load. + """ + try: + row = Blob.objects.get(digest=digest) + path = blobs.path_for(digest) + except (Blob.DoesNotExist, ValueError): + return JsonResponse({"error": "no such blob"}, status=404) + response = FileResponse(open(path, "rb"), content_type=row.media_type) + response["Cache-Control"] = "public, max-age=31536000, immutable" + response["ETag"] = f'"{digest}"' + return response + + +# --------------------------------------------------------------------------- +# tier 2: analyses and blocks + + +@require_http_methods(["POST"]) +def analyses(request): + """Register an analysis artifact's identity. Idempotent: the same inputs are + the same key are the same row.""" + try: + data = _body(request) + key = data.get("key") + descriptor = data.get("descriptor") + parsed = _check_key(key, descriptor) + for field in ("detector", "version"): + if not parsed.get(field): + raise Bad( + f"the descriptor does not declare a {field}: a cache key that " + "omits the detector version lets a model upgrade silently reuse " + "old landmarks", + missing=field, + ) + footage = None + if data.get("footage"): + digest = str(data["footage"]).removeprefix("sha256:") + footage = Footage.objects.filter(digest=digest).first() + if footage is None: + raise Bad("the analysis names footage this server does not have", + footage=data["footage"]) + row, created = Analysis.objects.get_or_create( + key=key, + defaults={ + "descriptor": descriptor, + "detector": parsed["detector"], + "version": str(parsed["version"]), + "footage": footage, + }, + ) + return JsonResponse({"key": row.key, "created": created}, status=201 if created else 200) + except Bad as exc: + return _error(exc) + + +@require_http_methods(["POST"]) +def blocks_missing(request): + """Which of these keys the server does not have. + + The return on content addressing, as one request: a save uploads the blocks + that are new and nothing else, so re-saving a document after a knob-free edit + moves kilobytes. + """ + try: + keys = _body(request).get("keys") or [] + if not isinstance(keys, list): + raise Bad("keys must be a list") + have = set(Block.objects.filter(key__in=keys).values_list("key", flat=True)) + return JsonResponse({"missing": [k for k in keys if k not in have]}) + except Bad as exc: + return _error(exc) + + +@require_http_methods(["POST"]) +def blocks(request): + """Store one dense block: its bytes, its optional absence mask, and the + descriptor its key is the hash of.""" + try: + data = _body(request) + key = data.get("key") + descriptor = data.get("descriptor") + parsed = _check_key(key, descriptor) + role = parsed.get("role") + if not role: + raise Bad("a block's descriptor names its role") + if not parsed.get("layout", {}).get("type"): + raise Bad( + "a block's descriptor must say what its elements are: an Int16Array " + "and a Float32Array over the same bytes are both valid readings and " + "only one of them is the block" + ) + analysis_key = parsed.get("analysis") + analysis = Analysis.objects.filter(key=analysis_key).first() + if analysis is None: + raise Bad( + "this block names an analysis the server does not know; register the " + "analysis first, so that every stored block can name the detector " + "version that produced it", + analysis=analysis_key, + ) + if not data.get("data"): + raise Bad("a block with no bytes") + with transaction.atomic(): + row, created = Block.objects.get_or_create( + key=key, + defaults={ + "descriptor": descriptor, + "role": role, + "analysis": analysis, + "data": _blob(data["data"]), + "state": _blob(data["state"]) if data.get("state") else None, + }, + ) + return JsonResponse({"key": row.key, "created": created}, status=201 if created else 200) + except Bad as exc: + return _error(exc) + + +@require_http_methods(["GET"]) +def block_detail(request, key): + import base64 + + try: + row = Block.objects.select_related("data", "state").get(key=key) + except Block.DoesNotExist: + return JsonResponse({"error": "no such block"}, status=404) + out = { + "key": row.key, + "descriptor": row.descriptor, + "data": base64.b64encode(blobs.read(row.data.digest)).decode("ascii"), + } + if row.state_id: + out["state"] = base64.b64encode(blobs.read(row.state.digest)).decode("ascii") + response = JsonResponse(out) + response["Cache-Control"] = "public, max-age=31536000, immutable" + return response + + +# --------------------------------------------------------------------------- +# tier 1: projects, clips, leaves + + +def _project_json(project: Project): + leaves = list(project.leaves.all()) + clips = [] + for clip in project.clips.all(): + prefix = f"clip/{clip.cid}/" + clips.append( + { + "cid": clip.cid, + "name": clip.name, + "footage": str(clip.footage_id) if clip.footage_id else None, + "analysis": clip.analysis_id, + "blocks": sorted(clip.blocks.values_list("key", flat=True)), + "leaves": {leaf.path: leaf.value for leaf in leaves if leaf.path.startswith(prefix)}, + } + ) + return { + "id": str(project.id), + "name": project.name, + "seq": project.seq, + "palette": project.palette, + "clips": clips, + } + + +@require_http_methods(["GET", "POST"]) +def projects(request): + if request.method == "GET": + return JsonResponse( + { + "projects": [ + {"id": str(p.id), "name": p.name, "seq": p.seq, + "updated": p.updated.isoformat()} + for p in Project.objects.all()[:100] + ] + } + ) + try: + data = _body(request) + project = Project.objects.create(name=data.get("name") or "untitled") + return JsonResponse(_project_json(project), status=201) + except Bad as exc: + return _error(exc) + + +@require_http_methods(["GET", "PUT"]) +def project_detail(request, project_id): + try: + project = Project.objects.get(id=project_id) + except Project.DoesNotExist: + return JsonResponse({"error": "no such project"}, status=404) + if request.method == "GET": + return JsonResponse(_project_json(project)) + try: + return _save(project, _body(request)) + except Bad as exc: + return _error(exc) + + +@transaction.atomic +def _save(project: Project, data): + """A whole-document save: one clip's leaves replace that clip's leaves. + + SCOPED BY CLIP, not by project. A payload that carries clip `a` does not + disturb clip `b`'s leaves, because a save is not the only way the document + changes — a single-leaf conditional write is — and a save that cleared + everything it did not mention would be a save that undoes a collaborator. + + A leaf whose value is unchanged keeps its VERSION. That is what makes the + entity tag mean something: a save of a document where one channel moved + invalidates one leaf's etag, not all four hundred. + """ + if data.get("name"): + project.name = data["name"] + if data.get("palette"): + project.palette = data["palette"] + + written, removed, unchanged = [], [], [] + for spec in data.get("clips") or []: + cid = spec.get("cid") + if not cid: + raise Bad("every clip in a save names its cid") + leaves = spec.get("leaves") or {} + prefix = f"clip/{cid}/" + for path in leaves: + if not path.startswith(prefix): + raise Bad( + f"leaf {path!r} is not addressed to clip {cid!r}", + clip=cid, path=path, + ) + + keys = spec.get("blocks") or [] + have = set(Block.objects.filter(key__in=keys).values_list("key", flat=True)) + if missing := [k for k in keys if k not in have]: + # Referential integrity across the tiers, enforced where it can be: + # a document that names blocks the server does not hold would load + # into a blank stage on any other machine. + raise Bad( + "this clip names tier-2 blocks the server does not have; upload them " + "before saving the document that points at them", + status=409, missing=missing, + ) + + analysis = Analysis.objects.filter(key=spec.get("analysis")).first() + footage = None + if spec.get("footage"): + footage = Footage.objects.filter(id=spec["footage"]).first() + clip, _ = Clip.objects.update_or_create( + project=project, + cid=cid, + defaults={"name": spec.get("name") or "", "analysis": analysis, "footage": footage}, + ) + clip.blocks.set(Block.objects.filter(key__in=keys)) + + existing = {leaf.path: leaf for leaf in project.leaves.filter(path__startswith=prefix)} + for path, value in leaves.items(): + leaf = existing.get(path) + if leaf is None: + Leaf.objects.create(project=project, path=path, value=value) + written.append(path) + elif leaf.value != value: + leaf.value = value + leaf.version += 1 + leaf.save(update_fields=["value", "version", "updated"]) + written.append(path) + else: + unchanged.append(path) + for path, leaf in existing.items(): + if path not in leaves: + leaf.delete() + removed.append(path) + + seq = project.seq + 1 + project.seq = seq + project.save() + return JsonResponse( + { + "id": str(project.id), + "seq": seq, + "written": sorted(written), + "removed": sorted(removed), + "unchanged": len(unchanged), + } + ) + + +@require_http_methods(["GET", "PUT"]) +def leaf_detail(request, project_id, leaf_path): + """One leaf, conditionally. + + `If-Match` and a 409 whose body carries the CURRENT value, so the client can + offer keep-mine / take-theirs. A PUT that replaced unconditionally is the bug + docs/architecture.md calls out in tl: the loser's work disappears silently, and + for a painted cel that is the class of bug that ends trust in a tool. + """ + try: + project = Project.objects.get(id=project_id) + except Project.DoesNotExist: + return JsonResponse({"error": "no such project"}, status=404) + + leaf = project.leaves.filter(path=leaf_path).first() + if request.method == "GET": + if leaf is None: + return JsonResponse({"error": "no such leaf"}, status=404) + response = JsonResponse({"path": leaf.path, "value": leaf.value, "version": leaf.version}) + response["ETag"] = leaf.etag + return response + + try: + data = _body(request) + except Bad as exc: + return _error(exc) + if "value" not in data: + return _error(Bad("a leaf write carries a value")) + + match = request.headers.get("If-Match") + if leaf is None: + # ANY `If-Match` on a leaf that does not exist is a failed precondition, + # `*` included: RFC 7232 gives `*` the meaning "the resource must already + # exist", which is exactly the write a client makes when it believes it is + # editing something. Creating it instead would turn "somebody deleted this + # node" into a silent resurrection. + if match: + return JsonResponse( + {"error": "no such leaf", "path": leaf_path}, status=409 + ) + leaf = Leaf.objects.create(project=project, path=leaf_path, value=data["value"]) + else: + if match and match not in ("*", leaf.etag): + response = JsonResponse( + { + "error": "stale write", + "path": leaf.path, + "version": leaf.version, + "value": leaf.value, + }, + status=409, + ) + response["ETag"] = leaf.etag + return response + leaf.value = data["value"] + leaf.version += 1 + leaf.save(update_fields=["value", "version", "updated"]) + + seq = project.bump() + response = JsonResponse({"path": leaf.path, "version": leaf.version, "seq": seq}) + response["ETag"] = leaf.etag + return response + + +@require_http_methods(["GET", "POST"]) +def revisions(request, project_id): + """Mark a version: one snapshot of the authored layer, with a summary.""" + try: + project = Project.objects.get(id=project_id) + except Project.DoesNotExist: + return JsonResponse({"error": "no such project"}, status=404) + if request.method == "GET": + return JsonResponse( + { + "revisions": [ + {"seq": r.seq, "author": r.author, "summary": r.summary, + "created": r.created.isoformat(), "leaves": len(r.document)} + for r in project.revisions.all()[:100] + ] + } + ) + data = json.loads(request.body or b"{}") + revision = Revision.objects.create( + project=project, + seq=project.seq, + author=data.get("author") or "", + summary=data.get("summary") or "", + document={leaf.path: leaf.value for leaf in project.leaves.all()}, + ) + return JsonResponse({"seq": revision.seq, "leaves": len(revision.document)}, status=201) diff --git a/docs/animation-model.md b/docs/animation-model.md index ec02118..d7a407e 100644 --- a/docs/animation-model.md +++ b/docs/animation-model.md @@ -93,7 +93,18 @@ frames where that feature is occluded and later reappears: :eye-l {:id :eye-l :subject :face-1 :area :eye :nodes [:eye-l :eye-l-in :iris-l :pupil-l] :params {}} :mouth {:id :mouth :subject :face-1 :area :mouth - :nodes [:mouth :mouth-in :teeth] :params {}}} + :nodes [:mouth :mouth-in] :params {}} + ;; The teeth are their OWN feature and not three nodes of the mouth. A feature + ;; carries the params of exactly one area, and the teeth have an `:area :teeth` + ;; of their own — the otsu threshold, the tongue rejection, the radial contour's + ;; vertex budget — which could not be reached if they were part of `:mouth`. + ;; The coupling that made them look like the mouth's is real and is enforced + ;; elsewhere: `:teeth` is STENCILLED by `:mouth-in`, and a node whose stencil drew + ;; nothing is dropped, so an absent mouth takes the teeth with it without either + ;; of them sharing an absence mask. An earlier draft of this block listed them + ;; together; the code is right and this document was wrong. + :teeth {:id :teeth :subject :face-1 :area :teeth + :nodes [:teeth] :params {}}} :groups {:eyes-1 {:id :eyes-1 :kind :eye-pair :subject :face-1 :members [:eye-r :eye-l] :params {}}} diff --git a/docs/architecture.md b/docs/architecture.md index 18c4ab3..b1ffaf2 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -527,6 +527,102 @@ becomes addressable as a path; and two people keying different frames of one par merge field-wise with no merge algorithm at all. `selectKeys` returns an array today — change it before anything depends on the order. +### Serving tiers 2 and 3 + +Built at step 9. Above this point the tiers are a rule about what is allowed on +the wire; this is the shape that enforces it. + +**One store for both, named by the sha256 of the bytes.** Once tier 3 is decoded +by the app rather than by a shell script it becomes the same kind of thing as tier +2 — a cache with a hash — so there is one place that writes bytes, one that reads +them, and one URL shape: + +``` +GET /blob/ raw bytes, Cache-Control: immutable +``` + +`immutable` is not optimism there, it is the definition: the name IS the hash of +the content, so a cached copy cannot be stale. That is what makes serving six +hundred frames out of it cheap enough to do on every load. + +**Two kinds of hash, and they are not the same hash.** A blob is named by the hash +of its BYTES, which is what makes an identical frame in two extractions one file. +A derived thing — an analysis artifact, a dense block — is named by a hash over its +INPUTS, which is what lets a client ask for the block the current settings want +*before* anything has computed it, and what makes a stale bake unreachable rather +than wrong. So a `Block` row has both: `key` over the inputs, and a foreign key to +the blob whose digest is over the bytes. Conflating them would break the half of +addressing that answers questions about work not yet done. + +``` +POST /api/analyses {key, descriptor} idempotent +POST /api/blocks/missing {keys} -> {missing} +POST /api/blocks {key, descriptor, data, state} +GET /api/blocks/ +GET /api/footage/ the manifest, with a URL per frame +``` + +**The server verifies, rather than trusting a name it was handed.** It recomputes +`sha256(descriptor)` for every key and refuses a mismatch; it refuses an analysis +whose descriptor does not declare a detector and a version; it refuses a block +whose analysis it does not know; and it refuses a document naming blocks it does +not hold. The chain from a stored block to the model version that produced it +therefore cannot be broken by a client that skipped a step — which is what the +cache-key rule above actually requires, as opposed to recommends. + +It hashes the descriptor TEXT rather than re-rendering it from parsed values, and +that is not a shortcut. JS prints an integral double as `1` and Python prints +`1.0`, so a scheme where both ends re-render the numbers disagrees on the first +parameter whose value happens to be whole — and the failure is an upload that 409s +with nothing wrong. The bytes are the contract; the schema on top of them is a +convention, and the two fields the server reads out of that schema are checked +separately. + +**A manifest names frames; it does not locate them.** Until step 9 the client +fetched `manifest.json` and built `frames/0001.png` itself, which made the frame +layout a shared secret between a shell script and a ClojureScript namespace. The +manifest now carries a URL per frame, so the frames can live in the blob store — +or, when wasm-ffmpeg extraction arrives, be uploaded into the same store by the +app — and the client learns nothing new when that happens. The producer changes; +the shape does not. + +**The document stores what a block IS, not what it holds.** A block's element type +is in its own descriptor, which is the only place it is written down: an +`Int16Array` and a `Float32Array` over the same bytes are both valid readings, and +only one of them is the block. That makes the descriptor load-bearing rather than +documentation, which is the right way round for the thing a key is the hash of. + +### Leaf paths, as built + +The list under **Make the merge unit small instead of clever** is the design; this +is what step 9 implemented, for the subset that exists: + +``` +clip//name clip//subject/ +clip//timing clip//feature/ +clip//stage clip//group/ +clip//source clip//node/ +clip//measured/ clip//channel// +``` + +Two departures from the design above, both because step 8 moved settings. + +`params/:area` is **not** a leaf. That path came from a draft where params were one +blob per clip, and two people tuning teeth and eyes collided on every slider move. +Settings now live on the subject, the feature and the group, and a feature has +exactly one area — so the feature leaf already *is* the area-scoped leaf, and +splitting it again would separate a feature's params from its identity. + +`measured/` is one leaf holding several channels, which contradicts "every +channel gets its own". `:head`'s measured channels are not authored: a freeze +writes them together and a re-freeze replaces them together, and `head-mode` reads +them to write `:channels`. A leaf per measured channel would offer a write nobody +can make. + +A leaf path is "/"-delimited and an id is one segment of it, so a namespaced id — +`:eye-r/iris`, as drawn under **The node, decomposed** — is written `eye-r~iris`, +and `~` is then refused inside a name. That is the whole of the escaping. + ## Collaboration `../tl` already has the model, and it is the right one to copy: diff --git a/docs/port-plan.md b/docs/port-plan.md index 5b8935c..8462fc4 100644 --- a/docs/port-plan.md +++ b/docs/port-plan.md @@ -2,16 +2,20 @@ Self-contained. You should not need any prior conversation to execute this. -**Implementation status (2026-09-27):** steps 0–7 are in the CLJS frontend. -Step 6 reads extracted footage from the manifest, detects landmarks with local -MediaPipe assets at full source cadence, and runs the same freeze path as the -synthetic take. The scene time map can sample the frozen roto at a lower picture -fps without changing source analysis, duration or audio. Step 7 adds dense -eyelids, shared gaze, brows and pixel-derived teeth. Step 8's data model now -has stable feature identity, feature-level presence, explicit eye pairs and -shared parameter definitions. A manifest can now supply known feature absence -intervals through measurement and freeze. Automatic per-feature detection, -parameter editing and scoped regeneration remain. +**Implementation status (2026-09-28):** steps 0–9 are in. Step 6 reads extracted +footage, detects landmarks with local MediaPipe assets at full source cadence, and +runs the same freeze path as the synthetic take. The scene time map can sample the +frozen roto at a lower picture fps without changing source analysis, duration or +audio. Step 7 adds dense eyelids, shared gaze, brows and pixel-derived teeth. +Step 8's data model has stable feature identity, feature-level presence, explicit +eye pairs and shared parameter definitions; a manifest can supply known feature +absence intervals through measurement and freeze. Step 9 adds the Django backend, +the three-tier split, content-addressed tier 2 with the detector version inside +every key, leaf addressing for tier 1, and project load/save that round-trips. + +**Still open.** Step 8's parameter UI and scoped regeneration, and automatic +per-feature detection. Everything under "Out, and do not build it" below, which +step 9 did not touch. ## What arthur is @@ -59,17 +63,40 @@ arthur/ src/arthur/** namespace root stays arthur.* whatever the dir is called test/arthur/** static/arthur/js/ shadow-cljs output, collected by Django staticfiles + static/arthur/audio.wav the synthetic take's clock. NOT extract.sh's output — + that is tier 3 and lives in the blob store + var/blobs/ the content-addressed blob store: tiers 2 and 3. Gitignored docs/ js/ index.html serve.py extract.sh the old tool — see "the oracle" ``` +The namespaces step 9 added, since the list under **Namespaces** in +`docs/architecture.md` predates them: + +``` +domain/sha256.cljs SHA-256, synchronous and pure, byte-compatible with hashlib +domain/canon.cljs the one canonical text for a descriptor, so hashing it means + something +domain/leaf.cljs leaf addressing: the document as path -> value +domain/wire.cljs transit for tier 1, base64 for tier 2 +domain/project.cljs clip <-> the document and blocks that travel +flow/address.cljs tier-2 keys, and the invalidation table they are built from +fx/http.cljs the only namespace that talks to the server +events/project.cljs save and open +``` + `clips` is a naming call, not a constraint — it is the Django app holding Project, Clip, Footage, Analysis, Leaf and Revision. Rename in one line if something fits better. -Dev runs two processes: Django serves the page, `shadow-cljs watch app` rebuilds -into `static/arthur/js`. Set `:output-dir "../static/arthur/js"` in -`shadow-cljs.edn`. +Dev runs two processes and they do not talk to each other: Django serves the page, +`shadow-cljs watch app` rebuilds into `static/arthur/js`, which is already +`:output-dir` in `shadow-cljs.edn`. `:dev-http` is gone. + +```sh +mise exec -- python manage.py runserver 8778 # from the repo root +cd frontend && mise exec -- npx shadow-cljs watch app +``` ## Toolchain @@ -352,10 +379,50 @@ group. Retain source measurements so a setting change can regenerate affected channels without re-detecting footage. Time-varying parameter values and all parameter controls are deferred to the UI pass. -### 9 — backend -Django project, the `clips` app, models for Project/Clip/Footage/Analysis/Leaf, -and project load/save. Round-tripping a project through the server is the proof -the model serialises. +### 9 — backend — DONE +Django project, the `clips` app, models for +Project/Clip/Footage/FootageFrame/Analysis/Block/Leaf/Revision/Blob, and project +load/save. Round-tripping a project through the server is the proof the model +serialises. + +Django was the easy half; the tier split was the work. What it came to: + +**Tier 2 keys are content addresses over every input**, and the detector version +is in every one of them, through the analysis id that each block descriptor names. +`flow/address`'s `block-knobs` is the invalidation table, and it is not trusted: +`address-test` re-freezes the take once per knob and asserts the biconditional — +a block's bytes changed if and only if its key changed. That test found two +things reading the code would not have. `brow-pos` does not depend on +`contour-avg`, because the brow RING is smoothed and the raise is not. And the +first version of the test was itself wrong: a 3% perturbation of `gaze-gain` +moves every sample inside the grid cell `quantize-snap` had already rounded it +into, so the bytes came out identical and the knob looked like an input the block +did not have. + +**The server verifies what it is handed.** It recomputes every key from the +descriptor stored beside it and refuses a mismatch, refuses an analysis that does +not declare a detector version, and refuses a document naming blocks it does not +hold. It hashes the descriptor TEXT rather than re-rendering it from parsed +values, because JS prints an integral double as `1` and Python as `1.0` — a +scheme where both sides re-render breaks on the first parameter whose value +happens to be whole. + +**Tier 3 is served by hash.** `extract.sh` still decodes; `manage.py +ingest_bundle` hashes the result into the blob store, by hard link. The manifest +the client receives now carries a URL per frame, so the frame layout stopped being +a shared secret between a shell script and a ClojureScript namespace. The +cache-busting `?v=` on every frame URL went with it: a blob's name is the hash of +its bytes, so a stale copy is not a thing that can happen. + +**Leaf addressing exists**, with conditional writes and a monotonic project +version, so the sync design has nothing to retrofit. The socket, presence and +broadcasts are still out of scope. + +Two loose ends from step 8 closed on the way. `pack` no longer takes a +`(track, frame)` predicate whose call sites each derived a feature from an index — +every track names the feature it follows, which deleted five hand-maintained +mappings and handed `flow/address` the same list for its observation digest. And +the `presence-check` binding in a `let` nobody read is now an ordinary `doseq`. **Output is not in this plan.** The `.take` writer in `js/take.js` was for driving an Animator Pro render script and it is not where this is going: the diff --git a/frontend/README.md b/frontend/README.md index 8fe9c2e..9717139 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -6,7 +6,9 @@ what order; this file is only how to run it. ## Once ```sh -mise install # from the REPO ROOT: java 21+, node 20, clojure, python +mise install # from the REPO ROOT +pip install -r requirements.txt # the Django half; one dependency +mise exec -- python manage.py migrate # the document database cd frontend && npm install ``` @@ -33,6 +35,18 @@ Run them separately if a compile error is in the way. must be 21+ and node 20.19+. On an nvm node 20.11 shadowing the pinned one, things fail in ways that read like the code being broken and are not. +### And the Django one + +```sh +mise exec -- python manage.py test clips # from the REPO ROOT +``` + +Thirty-one tests over the API: the blob store, key verification, the load/save +round trip, the conditional write, and the footage manifest. The two groups worth +reading are the ones that make the tier split a property of the system rather than +a convention in ClojureScript — the server recomputes every tier-2 key it is +handed, and refuses a block whose analysis does not declare a detector version. + ### And the browser one Step 5's done-criterion is a PICTURE, and no assertion in `cljs.test` can check @@ -40,14 +54,21 @@ one: a take that resolves to the right numbers and draws nothing would pass ever test in `arthur.flow.freeze-test`. A blank canvas under a perfectly correct transport is the bug class unit tests miss, and it has happened here once. -So there is a second suite that drives a real Chrome over CDP. It needs the dev -server up: +Step 9's is a picture too, for a different reason: the ways a document survives a +round trip LOOKING correct are the interesting ones. So the suite now also saves +the take, reopens it, and checks the frames are the same pixels. + +It drives a real Chrome over CDP, and needs both processes up: ```sh +mise exec -- python manage.py runserver 8778 # from the REPO ROOT cd frontend && mise exec -- npx shadow-cljs watch app # in one shell cd frontend && mise exec -- npm run browser # in another ``` +`ARTHUR_URL` overrides the page it drives; it defaults to +`http://localhost:8778/index.html`, which since step 9 is Django's. + No dependencies. Playwright is not installed and CDP needs none — `node --experimental-websocket` has a global `WebSocket` and `--headless=new --remote-debugging-port=N` is the whole of the other side. It @@ -58,13 +79,21 @@ eye as well as by count. ## The app +Two processes, which do not talk to each other: + ```sh +mise exec -- python manage.py runserver 8778 # from the REPO ROOT cd frontend && mise exec -- npx shadow-cljs watch app ``` -Then open **** — with the `/index.html`, not -bare `/`. This shadow-cljs does no directory-index resolution, so `/` is a 404 -whatever the roots are. +Then open ****. Django serves the page from +`clips/templates/clips/index.html`, and staticfiles serves the bundle out of +`static/arthur/js`, where `shadow-cljs` already writes it — so nothing copies files +between the two. + +`/index.html` still works, and that is deliberate: it is the URL the browser suite +has used since step 5, when shadow-cljs's `:dev-http` did no directory-index +resolution and the suite learned to ask for the file. Four built-in clips, on buttons in the transport: @@ -82,29 +111,44 @@ The demo scene itself is `src/arthur/demo/scene.edn`. Both the synthetic take and real footage use `src/arthur/flow/take.cljs` for the measurement order and `src/arthur/flow/freeze.cljs` for the landmark-to-channel conversion. -### Real footage (port steps 6–7) +### Real footage (port steps 6–7, served by the backend since step 9) -From the repo root, extract a clip, then click **load frames** in the CLJS app: +Two commands from the repo root, then pick the take in the app and click +**load frames**: ```sh -./extract.sh /path/to/clip.mov +./extract.sh /path/to/clip.mov # decode to frames + audio + manifest +mise exec -- python manage.py ingest_bundle ``` -This keeps every source frame and writes `frames/0001.png` onward, `audio.wav`, -and `manifest.json` at the repo root. The manifest supplies the exact frame -count, source fps and audio path. Variable frame rate sources are rejected until -the manifest and clock carry per-frame timestamps. +`extract.sh` keeps every source frame and writes `frames/0001.png` onward, +`audio.wav` and `manifest.json`. Variable frame rate sources are rejected until the +manifest and clock carry per-frame timestamps. -To keep multiple takes or compare with a previous extraction, pass a bundle -directory and enter its manifest path in the app: +`ingest_bundle` then hashes all of it into the content-addressed blob store under +`var/blobs` — by hard link, so 112MB of PNGs is not copied — and registers one +`Footage` row. From then on the frames are the backend's: `GET /api/footage/` +answers with a manifest carrying **a URL per frame**, and the app fetches those. + +That replaced a shared secret. Until step 9 the page fetched `/manifest.json` off +the filesystem and built `frames/0001.png` itself, with shadow-cljs serving the +repo root — so the frame layout was agreed between a shell script and a +ClojureScript namespace, and "where are the frames" was answered by a directory +listing. The cache-busting `?v=` that used to hang off every frame URL went with +it: a blob's name is the hash of its bytes, so re-extracting gives a frame a +different URL rather than overwriting one. + +To keep several takes, pass a bundle directory; each ingests separately and both +stay selectable in the app. ```sh ./extract.sh /path/to/clip.mov scratch/my-take -# source manifest field: /scratch/my-take/manifest.json +mise exec -- python manage.py ingest_bundle scratch/my-take ``` -`scratch/` is ignored by Git. The directory contains its own frames, audio and -manifest, so extracting it does not replace another take's files. +`scratch/` is ignored by Git, as are `frames/`, `audio.wav` and `manifest.json` at +the root — all of it is extraction output, and tier 3 does not belong in the repo. + Loading detects one face per frame, measures the mouth, eyes and brows from landmarks and the teeth from source pixels, then freezes them into channels, and adds a button for the footage clip. Detection happens once when you load; @@ -124,13 +168,42 @@ inclusive, matching PNG filenames. The eye remains the same feature when it reappears; the other eye and the mouth continue through the gap. This is an input annotation, with no UI for editing it yet. -MediaPipe's JS, wasm and model are under `public/mediapipe/` and served locally. -No CDN is used by this app. See that directory's README for provenance. +MediaPipe's JS, wasm and model are under `public/mediapipe/`, served by Django's +staticfiles under `/static/mediapipe/`. No CDN is used by this app. See that +directory's README for provenance. + +The server reports what it serves at `GET /api/detector`: the package version plus +the **sha256 of the model asset**, and that string goes inside the content address +of every block a detection produces. Asked rather than assumed, because a version +constant in the client is one somebody has to remember to bump — and +`docs/architecture.md` is explicit that a model upgrade silently reusing old +landmarks presents as "the tool got worse", with no event to attach it to. Port 8778 is deliberately not 8777. `python3 serve.py` from the repo root still runs the old JS tool on 8777, and the two are meant to run side by side. -From step 9 Django serves the page and `:dev-http` goes away. +## Saving + +**save** and **open** in the transport. A save is three requests, in an order that +is the tier split: + +1. the **analysis** record, so every block stored afterwards can name the detector + version that produced it. The server refuses a block whose analysis it does not + know. +2. ask which **blocks** are missing, and upload only those. +3. the **document** — tier 1, as leaves. The server refuses a clip that names + blocks it does not hold, so a saved document cannot load into a blank stage + somewhere else. + +The status line says what happened: `saved r3 · 64 leaves · 8 blocks`. Saving an +unchanged document says `0 leaves · 0 blocks`, which is both halves of the +addressing working at once — an unchanged leaf keeps its version, and a +content-addressed block is already there. + +Two things are deliberately visible as failures. Saving `swarm` is refused, +because its blocks have hand-written names and a document may only name content +addresses. And **open** takes the most recently updated project and shows its first +clip: there is no project browser, and the store holds one clip at a time. ## The oracle, which is finished @@ -152,6 +225,7 @@ and pixel extraction. Its comments encode bugs that actually happened. ``` src/arthur/domain/ pure. No re-frame, no DOM, no flow/. +src/arthur/fx/ the only namespaces that talk to the network src/arthur/flow/ the stages. `(f params inputs) -> output`, no state. src/arthur/synth.cljs the synthetic track. In src/ because the take PLAYS it — it stands in for flow/detect, and a tool that needs a @@ -160,10 +234,14 @@ src/arthur/synth.cljs the synthetic track. In src/ because the take PLAYS it src/arthur/demo.cljs the hand-written scene, read from demo/scene.edn src/arthur/demo/take.cljs the synthetic source for the shared flow/take path src/arthur/ui/canvas.cljs indexed raster blit to the display canvas +test/arthur/support/ machinery shared between suites; not tests itself test/browser/ drives a real Chrome over CDP. Not run by `npm test`. -public/index.html dev host page. Django replaces it at step 9. +public/mediapipe/ vendored wasm and model, served under /static/mediapipe/ ``` +`public/` holds nothing but those assets now. The host page that used to sit beside +them is `clips/templates/clips/index.html`. + ## Two evaluators, on purpose `domain/scene` has both `eval-frame` and `resolver`, and they are not diff --git a/frontend/shadow-cljs.edn b/frontend/shadow-cljs.edn index 977814f..41ed051 100644 --- a/frontend/shadow-cljs.edn +++ b/frontend/shadow-cljs.edn @@ -10,25 +10,32 @@ {:source-paths ["src" "test"] :dependencies [[reagent "1.2.0"] - [re-frame "1.4.3"]] + [re-frame "1.4.3"] + ;; The document's wire format. JSON would do for the shape of tier + ;; 1 but not for its VALUES: channel keys are a map by FRAME + ;; NUMBER and every id is a keyword, and JSON has neither, so a + ;; save would quietly turn `{0 v}` into `{"0" v}` and `:mouth` + ;; into "mouth". Transit is JSON on the wire, so Django stores a + ;; leaf in a JSONField and the admin can still read it. + [com.cognitect/transit-cljs "0.8.280"]] - ;; Dev server for the CLJS half, on a different port from serve.py (8777) so the - ;; old tool and the port can run side by side. js/ remains the source for the - ;; measurement stages not yet ported. + ;; THERE IS NO :dev-http, since step 9. Django serves the page — one template, + ;; out of `clips/templates/` — and shadow-cljs only builds into the staticfiles + ;; tree, which is what `:output-dir` below already did. So the dev loop is two + ;; processes that do not talk to each other: ;; - ;; Two roots: `public` holds the host page, `..` is the repo root so the bundle - ;; at /static/arthur/js/ resolves, and so manifest.json, audio.wav and frames/ - ;; are reachable for real footage. + ;; mise exec -- python manage.py runserver 8778 (from the repo root) + ;; cd frontend && mise exec -- npx shadow-cljs watch app ;; - ;; THE ORDER IS LOAD-BEARING. The repo root has an index.html too — the old - ;; tool's — so with `..` first, /index.html would quietly serve the prototype - ;; instead of the port. That would look like the CLJS build having regressed to - ;; a suspiciously complete tool rather than like a misconfigured server. + ;; What went away with the key was a set of problems rather than a feature. The + ;; two roots it needed — `public` for the host page and `..` for the repo root, IN + ;; THAT ORDER, because the root has the old tool's index.html and serving that one + ;; instead would look like the port having regressed to a suspiciously complete + ;; tool — were a way of reaching frames/, audio.wav and manifest.json off the + ;; filesystem. Those are tier 3, and tier 3 is now the backend's, by hash. ;; - ;; Open /index.html, not /. This shadow-cljs does no directory-index resolution, - ;; so bare / is a 404 whatever the roots are. Django serves the page from step 9 - ;; and this whole key goes away. - :dev-http {8778 ["public" ".."]} + ;; 8778 is still deliberately not 8777, which is still the old JS tool's under + ;; `python3 serve.py`. The two are meant to run side by side. :builds {:app {:target :browser diff --git a/frontend/src/arthur/core.cljs b/frontend/src/arthur/core.cljs index 6ed9e1c..15cf9c4 100644 --- a/frontend/src/arthur/core.cljs +++ b/frontend/src/arthur/core.cljs @@ -4,8 +4,9 @@ port-plan step 3: the hand-written scene plays at 30fps against audio, scrubs, and runs at ½× and ¼×." (:require [arthur.db :as db] - [arthur.events.footage] + [arthur.events.footage :as footage] [arthur.events.playback] + [arthur.events.project] [arthur.subs.playback] [arthur.subs.render] [arthur.ui.player :as player] @@ -26,6 +27,10 @@ (defn init [] (rf/dispatch-sync [::init]) + ;; What the server already holds, asked for once. The list is small — a row per + ;; ingested take — and having it before the first click is what lets the footage + ;; picker be a picker rather than a path to type. + (rf/dispatch [::footage/refresh]) (reset! root (rdc/create-root (js/document.getElementById "app"))) (mount) (player/start!)) diff --git a/frontend/src/arthur/db.cljs b/frontend/src/arthur/db.cljs index 9e28ad7..ce5a591 100644 --- a/frontend/src/arthur/db.cljs +++ b/frontend/src/arthur/db.cljs @@ -22,8 +22,14 @@ frame space, not a rate and not a size — and they sit on the scene map only because there is one clip per scene today. Copying them by hand into this table is how one of them comes to disagree with the scene it describes." - [label scene store] - (merge {:label label :scene scene :store store :audio "/audio.wav" + [label-key label scene store] + (merge {:label label :scene scene :store store + ;; A static asset since step 9, and not the repo root's `audio.wav`. + ;; That file is `extract.sh`'s output — tier 3, which the backend now + ;; serves by hash — and the synthetic take needs a sound of its own so + ;; that the clock has something to run against with no footage ingested. + :audio "/static/arthur/audio.wav" + :cid (name label-key) :display-fps (:fps scene)} (select-keys scene [:fps :frames :width :height]))) @@ -35,10 +41,10 @@ `:head` written as a dense track in one and as framed identity in the other, so the button that switches between them switches a document field and nothing else." - {:demo (clip "demo" demo/scene nil) - :swarm (clip "swarm" @swarm/scene @swarm/store) - :take (clip "take" @take/scene @take/store) - :take-locked (clip "locked" @take/locked @take/store)}) + {:demo (clip :demo "demo" demo/scene nil) + :swarm (clip :swarm "swarm" @swarm/scene @swarm/store) + :take (clip :take "take" @take/scene @take/store) + :take-locked (clip :take-locked "locked" @take/locked @take/store)}) (def default {;; --- the document --- @@ -53,8 +59,16 @@ ;; size — and it is why ui/player no longer hardcodes 320x200. :clip (select-keys (:take scenes) [:fps :frames :width :height :audio :display-fps]) + ;; Which ingested footage to detect, and what the last load said. The list + ;; comes from the server — tier 3 is the backend's since step 9 — so there is + ;; no path to type any more. :footage {:id nil :label nil :loading? false :status nil - :manifest-path "/manifest.json"} + :available [] :chosen nil} + + ;; The document's own identity on the server. `:seq` is the monotonic project + ;; version: a client that sees a delta with `seq > local + 1` refetches, which + ;; is what will make staleness self-healing once there is a broadcast to miss. + :project {:id nil :cid nil :name nil :seq nil :busy? false :status nil} ;; --- transport --- ;; diff --git a/frontend/src/arthur/demo/take.cljs b/frontend/src/arthur/demo/take.cljs index 276cc18..e368eec 100644 --- a/frontend/src/arthur/demo/take.cljs +++ b/frontend/src/arthur/demo/take.cljs @@ -26,7 +26,8 @@ written two ways. That is the claim \"stabilisation is a channel, not a mode\" made checkable by eye: switching between them is a document edit, tier 1, and not one byte of tier 2 differs." - (:require [arthur.flow.freeze :as freeze] + (:require [arthur.flow.address :as address] + [arthur.flow.freeze :as freeze] [arthur.flow.take :as take] [arthur.synth :as synth])) @@ -74,9 +75,16 @@ ;; The head as filmed. `:take-locked` is the same freeze with this one ;; field changed, which is the point. :head :as-filmed - ;; Provenance. A content hash once the analysis is an artifact the - ;; backend stores; until then, honest about what it actually is. - :analysis "synth:mulberry32/seed-1"})) + ;; Provenance, and now a content address. There is no detector here, so + ;; the generator IS the detector and its seed is the source: two synth + ;; takes at different seeds are different analyses, which is the same + ;; statement content addressing makes about two model versions. + :analysis (address/analysis {:detector "synth" + :version "mulberry32" + :seed 1 + :frames frames + :fps fps + :aspect aspect})})) (def frozen (delay (freeze/clip params @measured))) diff --git a/frontend/src/arthur/domain/canon.cljs b/frontend/src/arthur/domain/canon.cljs new file mode 100644 index 0000000..4085b45 --- /dev/null +++ b/frontend/src/arthur/domain/canon.cljs @@ -0,0 +1,77 @@ +(ns arthur.domain.canon + "One canonical text for a map, so that hashing it means something. + + A content address is a hash of a DESCRIPTION of every input, and a description + only addresses anything if the same inputs always write the same bytes. A CLJS + map has no key order, `pr-str` will happily print `{:a 1 :b 2}` in either order + between runs, and JSON has no canonical form of its own. So this is the one + place that decides. + + The text is VALID JSON, deliberately. The server stores it beside the key and + verifies `sha256(descriptor) == key` (clips/views.py), and it also has to read + two fields out of it to enforce that a detector version was declared at all. + Hashing the text the client sent, rather than recomputing it from parsed + values, is what keeps that check free of a cross-language float-formatting + agreement nobody could hold: Python writes `1.0` where JS writes `1`, and a + scheme where both sides re-render the numbers would break on the first integral + double. The bytes are the contract; the schema on top of them is a convention. + + It is also meant to be READ. A stale bake presents as a picture that will not + update, and the descriptor is the only thing that can say which input moved, so + it is short, flat where it can be, and never has a 229-frame mask inlined — + see `arthur.flow.address`, which digests masks before they reach here. + + Three refusals, all of them cases where a canonical text is not possible or + the key would be ambiguous: + + A KEYWORD VALUE. Keys are keywords and become their names, because a key is + a name and nothing else. A keyword VALUE is refused instead of being named, + because then `:mouth` and \"mouth\" would hash alike, and the server would be + reading a field whose type depended on the caller's mood. Callers convert at + the boundary, which is also what makes the stored JSON clean. + + A SET. Unordered, so there is no one text for it. Sort it into a vector at + the call site, where it is obvious which order was meant. + + NaN OR INFINITY. Neither is JSON, and both mean a measurement went wrong + upstream of here — silently addressing it would cache the mistake." + (:require [clojure.string :as str])) + +(defn- number->text [x] + (when-not (js/Number.isFinite x) + (throw (ex-info "a descriptor cannot hold NaN or infinity" {:value x}))) + ;; `(str 1.0)` is "1" and `(str 0.12)` is "0.12": JS prints the shortest decimal + ;; that round-trips, so this is stable without a format string. + (str x)) + +(defn- key->text [k] + (cond + (keyword? k) (subs (str k) 1) ; :a -> "a", :roto/b -> "roto/b" + (string? k) k + :else (throw (ex-info "a descriptor key is a keyword or a string" + {:key k :type (type k)})))) + +(declare write) + +(defn- write-map [m] + (str "{" + (str/join "," (map (fn [[k v]] (str (js/JSON.stringify (key->text k)) ":" (write v))) + (sort-by (comp key->text key) (seq m)))) + "}")) + +(defn write + "The canonical JSON text of a descriptor value." + [v] + (cond + (nil? v) "null" + (true? v) "true" + (false? v) "false" + (number? v) (number->text v) + (string? v) (js/JSON.stringify v) + (map? v) (write-map v) + (set? v) (throw (ex-info "a descriptor cannot hold a set: sort it into a vector where the order is visible" + {:value v})) + (keyword? v) (throw (ex-info "a descriptor cannot hold a keyword VALUE: name it at the call site, so \"mouth\" and :mouth cannot address the same block" + {:value v})) + (sequential? v) (str "[" (str/join "," (map write v)) "]") + :else (throw (ex-info "not a descriptor value" {:value v :type (type v)})))) diff --git a/frontend/src/arthur/domain/leaf.cljs b/frontend/src/arthur/domain/leaf.cljs new file mode 100644 index 0000000..7f13381 --- /dev/null +++ b/frontend/src/arthur/domain/leaf.cljs @@ -0,0 +1,183 @@ +(ns arthur.domain.leaf + "Leaf addressing for tier 1: the document as a map of PATH -> value. + + This is the shape docs/architecture.md's sync design needs, built now so that + there is nothing to retrofit later. Multiplayer is out of this step's scope and + the addressing is not, because the addressing is the part that cannot be added + afterwards: it decides what a write is, and therefore what two people can do at + once. + + clip//name a label + clip//timing fps, frames + clip//stage width, height + clip//source the analysis record this came out of + clip//subject/ a tracked subject and its params + clip//feature/ one feature: area, nodes, params + clip//group/ an eye pair and its shared params + clip//node/ one node: kind, parent, stencil, z, time + clip//channel// one channel + clip//measured/ the measured channels a re-freeze owns + + WHY THESE BOUNDARIES. Last-writer-wins only clobbers when its unit is too big, + so the cut is chosen so that the things people do simultaneously land on + different leaves. Every node has its own leaf, because two people adding nodes + would otherwise collide always. Every channel has its own, because keying the + mouth and keying a brow are the same size of edit as each other and nothing + like the same edit. With fractional `:z` there is no separate draw-order leaf to + contend on, which is the second thing fractional indices buy. + + WHY PARAMS ARE NOT SPLIT BY AREA. docs/architecture.md's list has + `clip/:cid/params/:area`, from a draft where params were one blob per clip and + two people tuning teeth and eyes collided on every slider move. Step 8 moved + settings onto the subject, the feature and the group, and a FEATURE HAS EXACTLY + ONE AREA — so the feature leaf already is the area-scoped leaf, and splitting it + again would only separate a feature's params from the feature's identity. + + WHY `measured` IS ONE LEAF AND CHANNELS ARE NOT. `:head`'s measured channels are + not authored: they are written together by a freeze and replaced together by a + re-freeze, and `head-mode` reads them to write `:channels`. A leaf per measured + channel would offer a write nobody can make. The authored channels beside them + are one leaf each, because a hand writes one at a time. + + A LEAF PATH IS \"/\"-DELIMITED and an id is one segment of it, so a namespaced id + — docs/architecture.md draws one as `:eye-r/iris` — is written `eye-r~iris`. + `~` is then refused inside a name, which is the whole of the escaping and is why + it is one character rather than a scheme." + (:require [arthur.domain.sha256 :as sha] + [clojure.string :as str])) + +;; --------------------------------------------------------------------------- +;; ids and paths + +(defn segment + "An id -> one path segment." + [id] + (let [s (if (keyword? id) (subs (str id) 1) (str id))] + (when (str/includes? s "~") + (throw (ex-info "an id cannot contain ~: it is the namespace separator inside a leaf path" + {:id id}))) + (str/replace s "/" "~"))) + +(defn unsegment + "One path segment -> the id it names." + [s] + (keyword (str/replace s "~" "/"))) + +(defn- prop->path + "A channel's property vector -> one path segment. `[:geom :pts]` is \"geom.pts\" + and `[:vis]` is \"vis\"." + [prop] + (let [parts (map #(subs (str %) 1) prop)] + (doseq [p parts] + (when (or (str/includes? p ".") (str/includes? p "/")) + (throw (ex-info "a channel property cannot contain . or /: both are path punctuation" + {:prop prop})))) + (str/join "." parts))) + +(defn- path->prop [s] + (mapv keyword (str/split s #"\."))) + +;; --------------------------------------------------------------------------- +;; the split + +(def scene-keys + "Every top-level field of a scene, and the reason `leaves` refuses one it does + not know: a field added to the scene without a leaf is a field that saves + silently and comes back missing. The failure is a document that loses something + on every round trip, which is the one bug a persistence layer must not be able + to have. Add the field here and to `leaves` and `scene` in the same commit." + #{:name :frames :fps :analysis :subjects :features :groups :width :height :nodes}) + +(def ^:private node-channel-keys #{:channels :measured}) + +(defn leaves + "One clip's scene -> path -> value. + + A leaf whose value would be empty is OMITTED rather than written as `{}`, and + that is what makes the round trip exact: the demo scene has no `:fps` and the + root node has no `:channels`, and a codec that invented them would hand back a + scene that is not `=` to the one it was given." + [cid scene] + (let [unknown (remove scene-keys (keys scene))] + (when (seq unknown) + (throw (ex-info "the scene has a field with no leaf to save it in; see arthur.domain.leaf/scene-keys" + {:unknown (vec (sort-by str unknown))})))) + (let [at (fn [& parts] (str/join "/" (into ["clip" (segment cid)] parts))) + some-leaf (fn [path v] (when (seq v) {path v}))] + (apply merge + (some-leaf (at "name") (select-keys scene [:name])) + (some-leaf (at "timing") (select-keys scene [:fps :frames])) + (some-leaf (at "stage") (select-keys scene [:width :height])) + (some-leaf (at "source") (:analysis scene)) + (concat + (for [[id v] (:subjects scene)] {(at "subject" (segment id)) v}) + (for [[id v] (:features scene)] {(at "feature" (segment id)) v}) + (for [[id v] (:groups scene)] {(at "group" (segment id)) v}) + (for [[id n] (:nodes scene)] {(at "node" (segment id)) + (apply dissoc n node-channel-keys)}) + (for [[id n] (:nodes scene) + :when (seq (:measured n))] {(at "measured" (segment id)) (:measured n)}) + (for [[id n] (:nodes scene) + [prop ch] (:channels n)] + {(at "channel" (segment id) (prop->path prop)) ch}))))) + +(defn scene + "The inverse of `leaves`, for one clip. Paths belonging to another clip are + ignored, so a project's whole leaf map can be handed straight in." + [cid leaves] + (let [want (segment cid)] + (reduce + (fn [acc [path v]] + (let [[kind a b] (drop 2 (str/split path #"/"))] + (if-not (= want (second (str/split path #"/"))) + acc + (case kind + "name" (merge acc v) + "timing" (merge acc v) + "stage" (merge acc v) + "source" (assoc acc :analysis v) + "subject" (assoc-in acc [:subjects (unsegment a)] v) + "feature" (assoc-in acc [:features (unsegment a)] v) + "group" (assoc-in acc [:groups (unsegment a)] v) + "node" (update-in acc [:nodes (unsegment a)] merge v) + "measured" (assoc-in acc [:nodes (unsegment a) :measured] v) + "channel" (assoc-in acc [:nodes (unsegment a) :channels (path->prop b)] v) + (throw (ex-info "not a leaf path" {:path path})))))) + {} + ;; Sorted, so `node` lands before `channel` and `measured` under one id and + ;; the node map is merged INTO rather than over. `update-in ... merge` makes + ;; the order not matter; sorting makes it not matter for a reason. + (sort-by key leaves)))) + +;; --------------------------------------------------------------------------- + +(defn problems + "Human-readable reasons this leaf map is not a document. Empty means it is one. + + The dense check is the tier discipline, stated where a save can enforce it: a + document that named `\"take/geom\"` would be a document that only means anything + on the machine that produced it, and the whole point of tier 2 being + content-addressed is that it does not have to travel with tier 1 to be found." + [leaves] + (let [nodes (into #{} (keep (fn [path] + (let [[_ cid kind id] (str/split path #"/")] + (when (= "node" kind) [cid id])))) + (keys leaves))] + (vec + (concat + (for [[path v] (sort-by key leaves) + :let [[root cid kind id prop] (str/split path #"/")] + :when (or (not= "clip" root) (nil? cid) + (not (#{"name" "timing" "stage" "source" "subject" "feature" + "group" "node" "channel" "measured"} kind)))] + (str (pr-str path) " is not a leaf path")) + (for [[path _] (sort-by key leaves) + :let [[_ cid kind id] (str/split path #"/")] + :when (and (#{"channel" "measured"} kind) (not (contains? nodes [cid id])))] + (str (pr-str path) " addresses a node with no node leaf")) + (for [[path v] (sort-by key leaves) + :let [[_ _ kind] (str/split path #"/")] + :when (and (= "channel" kind) (:dense v) + (not (sha/key? (:store (:dense v)))))] + (str (pr-str path) " names tier 2 as " (pr-str (:store (:dense v))) + " — a dense channel in a saved document names a content address")))))) diff --git a/frontend/src/arthur/domain/project.cljs b/frontend/src/arthur/domain/project.cljs new file mode 100644 index 0000000..abedd4a --- /dev/null +++ b/frontend/src/arthur/domain/project.cljs @@ -0,0 +1,100 @@ +(ns arthur.domain.project + "A clip <-> the document that travels. The tier split, as a pair of functions. + + `save` takes what `flow/freeze` produced — `{:scene ... :store ...}` — and + returns two things that are allowed on the wire for different reasons: + + :leaves TIER 1. The document. Nodes, channels, subjects, features, groups, + time maps, the analysis record. Kilobytes, and every byte of it + authored or authorable. + + :blocks TIER 2. The dense blocks the document NAMES, each with the + descriptor its key is the hash of. Megabytes, content-addressed, + and not part of the document — a bake inside the shared document is + a system that puts 48KB on the wire per vertex drag. + + ONLY WHAT THE DOCUMENT NAMES TRAVELS. The blocks are selected by walking the + leaves for dense store keys, not by taking the store wholesale, so a store that + has accumulated a block nothing points at does not upload it. That is also the + check that the split is honest: if a channel named a block the store did not + have, `save` would say so here rather than producing a document that loads into + a blank stage somewhere else. + + THE BYTES ARE NOT IN THE DOCUMENT AND THE TYPE IS NOT IN THE BYTES. A block's + element type comes out of its own descriptor, which is the only place it is + written down: an Int16Array and a Float32Array over the same bytes are both + valid readings of them, and only one is the block. That makes the descriptor + load-bearing rather than documentation, which is the right way round for the + thing a key is the hash of." + (:require [arthur.domain.leaf :as leaf] + [arthur.domain.wire :as wire])) + +(defn block-keys + "Every tier-2 key a leaf map names, in a stable order." + [leaves] + (->> (vals leaves) + (keep (comp :store :dense)) + distinct + sort + vec)) + +(defn- block-type + "A block's element type, out of its descriptor." + [descriptor] + (or (get-in (js->clj (js/JSON.parse descriptor)) ["layout" "type"]) + (throw (ex-info "a block's descriptor does not say what its elements are" + {:descriptor descriptor})))) + +(defn save + "One clip -> the JS object a save PUTs, ready for `JSON.stringify`. + + A JS object rather than CLJS data, and `load` takes one back, because this is + the wire boundary and both ends of it should speak the wire: a test can then + round-trip a clip through `JSON.parse(JSON.stringify(...))` and be running the + same conversion the network runs, rather than a CLJS-shaped rehearsal of it. The + one thing a keywordising `js->clj` would quietly break is the leaf paths — + `:clip/c1/node/mouth` is a keyword whose `name` is \"c1/node/mouth\", so the + \"clip/\" would be lost on the way back in. + + Refuses a document `domain/leaf` calls unaddressable, which is where a hand-made + scene with placeholder store keys — `demo/swarm`'s \"swarm/pos\" — stops rather + than being uploaded as a project that means something only on the machine that + made it." + [cid {:keys [scene store]}] + (let [leaves (leaf/leaves cid scene) + ps (leaf/problems leaves)] + (when (seq ps) + (throw (ex-info (str "this clip cannot be saved: " (first ps)) + {:problems ps}))) + (let [out (js-obj)] + (doseq [[path v] leaves] + (aset out path (wire/encode-json v))) + #js {:leaves out + :blocks (into-array + (map (fn [k] + (let [{:keys [data state descriptor]} + (or (get store k) + (throw (ex-info "the document names a block the store does not have" + {:key k})))] + #js {:key k + :descriptor descriptor + :data (wire/base64 data) + :state (when state (wire/base64 state))})) + (block-keys leaves)))}))) + +(defn load + "The parsed response -> `{:scene :store}`, which is what `flow/freeze` returns + and therefore what the player already knows how to play." + [cid ^js doc] + (let [leaves (.-leaves doc) + tier1 (into {} (map (fn [path] [path (wire/decode-json (aget leaves path))])) + (js-keys leaves))] + {:scene (leaf/scene cid tier1) + :store (into {} + (map (fn [^js b] + [(.-key b) + (cond-> {:descriptor (.-descriptor b) + :data (wire/typed (block-type (.-descriptor b)) + (.-data b))} + (.-state b) (assoc :state (wire/bytes-of (.-state b))))])) + (array-seq (or (.-blocks doc) #js [])))})) diff --git a/frontend/src/arthur/domain/sha256.cljs b/frontend/src/arthur/domain/sha256.cljs new file mode 100644 index 0000000..30d7c6f --- /dev/null +++ b/frontend/src/arthur/domain/sha256.cljs @@ -0,0 +1,148 @@ +(ns arthur.domain.sha256 + "SHA-256, synchronous, in pure ClojureScript. + + WHY NOT `crypto.subtle`. It is async, and every caller here is a pure function + in the `(f params inputs) -> output` shape: a content address is computed in the + middle of `flow/freeze`, inside a `let`, and a promise there would turn the + whole stage inside out. `crypto.createHash` exists in node and not in the + browser, which is worse — the tests would be hashing with a different + implementation from the app. + + WHY NOT A DEPENDENCY. It is sixty lines, it never changes, and the thing it has + to agree with is not another JS library: it is Python's `hashlib`. The server + recomputes the key of every block and every analysis it is handed and refuses a + mismatch (see clips/views.py), so a disagreement between the two languages is + not a hash that looks different — it is an upload that 409s with nothing wrong. + `sha256-test` therefore pins the digests that `hashlib` produced, including the + 55/56/63/64 and 119/120-byte cases either side of both padding boundaries, + which is where a hand-written implementation is wrong if it is wrong at all. + + SIGN. JS bitwise operators work on 32-bit SIGNED integers, so `bit-xor` and + `bit-shift-left` hand back negative numbers, and a negative number entering an + addition mod 2^32 is off by 2^32. Every intermediate that feeds an addition is + therefore normalised through `u32`. That is the bug this implementation would + have, and it is invisible on short inputs — `\"abc\"` passes with the sign bug in + place on some rounds — which is the other reason the vectors above are pinned." + (:require [clojure.string :as str])) + +(def ^:private round-k + (js/Uint32Array. + #js [0x428a2f98 0x71374491 0xb5c0fbcf 0xe9b5dba5 0x3956c25b 0x59f111f1 + 0x923f82a4 0xab1c5ed5 0xd807aa98 0x12835b01 0x243185be 0x550c7dc3 + 0x72be5d74 0x80deb1fe 0x9bdc06a7 0xc19bf174 0xe49b69c1 0xefbe4786 + 0x0fc19dc6 0x240ca1cc 0x2de92c6f 0x4a7484aa 0x5cb0a9dc 0x76f988da + 0x983e5152 0xa831c66d 0xb00327c8 0xbf597fc7 0xc6e00bf3 0xd5a79147 + 0x06ca6351 0x14292967 0x27b70a85 0x2e1b2138 0x4d2c6dfc 0x53380d13 + 0x650a7354 0x766a0abb 0x81c2c92e 0x92722c85 0xa2bfe8a1 0xa81a664b + 0xc24b8b70 0xc76c51a3 0xd192e819 0xd6990624 0xf40e3585 0x106aa070 + 0x19a4c116 0x1e376c08 0x2748774c 0x34b0bcb5 0x391c0cb3 0x4ed8aa4a + 0x5b9cca4f 0x682e6ff3 0x748f82ee 0x78a5636f 0x84c87814 0x8cc70208 + 0x90befffa 0xa4506ceb 0xbef9a3f7 0xc67178f2])) + +(defn- u32 [x] (unsigned-bit-shift-right x 0)) + +(defn- rotr [x n] + (u32 (bit-or (unsigned-bit-shift-right x n) (bit-shift-left x (- 32 n))))) + +(defn- pad + "The message, padded: a 0x80 byte, zeros, and the bit length as a big-endian + 64-bit integer. The length is written as two 32-bit halves because a JS number + cannot hold a 64-bit integer and nothing here will ever hash 512MB." + [^js bytes] + (let [n (.-length bytes) + total (* 64 (js/Math.ceil (/ (+ n 9) 64))) + out (js/Uint8Array. total) + bits (* 8 n)] + (.set out bytes) + (aset out n 0x80) + ;; The high half is the bit count above 2^32; exact for any input JS can hold. + (let [hi (js/Math.floor (/ bits 4294967296)) + lo (u32 bits)] + (dotimes [i 4] + (aset out (+ total -8 i) (bit-and 0xff (unsigned-bit-shift-right hi (* 8 (- 3 i))))) + (aset out (+ total -4 i) (bit-and 0xff (unsigned-bit-shift-right lo (* 8 (- 3 i))))))) + out)) + +(defn digest + "SHA-256 of a Uint8Array, as a Uint8Array of 32 bytes." + [^js bytes] + (let [msg (pad bytes) + h (js/Uint32Array. #js [0x6a09e667 0xbb67ae85 0x3c6ef372 0xa54ff53a + 0x510e527f 0x9b05688c 0x1f83d9ab 0x5be0cd19]) + w (js/Uint32Array. 64) + v (js/Uint32Array. 8)] + (dotimes [block (quot (.-length msg) 64)] + (let [base (* 64 block)] + (dotimes [i 16] + (let [o (+ base (* 4 i))] + (aset w i (u32 (bit-or (bit-shift-left (aget msg o) 24) + (bit-shift-left (aget msg (+ o 1)) 16) + (bit-shift-left (aget msg (+ o 2)) 8) + (aget msg (+ o 3))))))) + (dotimes [j 48] + (let [i (+ j 16) + x (aget w (- i 15)) + y (aget w (- i 2)) + s0 (u32 (bit-xor (rotr x 7) (rotr x 18) (unsigned-bit-shift-right x 3))) + s1 (u32 (bit-xor (rotr y 17) (rotr y 19) (unsigned-bit-shift-right y 10)))] + (aset w i (+ (aget w (- i 16)) s0 (aget w (- i 7)) s1)))) + (.set v h) + (dotimes [i 64] + (let [a (aget v 0) b (aget v 1) c (aget v 2) d (aget v 3) + e (aget v 4) f (aget v 5) g (aget v 6) hh (aget v 7) + s1 (u32 (bit-xor (rotr e 6) (rotr e 11) (rotr e 25))) + choice (u32 (bit-xor (bit-and e f) (bit-and (bit-not e) g))) + t1 (+ hh s1 choice (aget round-k i) (aget w i)) + s0 (u32 (bit-xor (rotr a 2) (rotr a 13) (rotr a 22))) + maj (u32 (bit-xor (bit-and a b) (bit-and a c) (bit-and b c))) + t2 (+ s0 maj)] + (aset v 7 g) (aset v 6 f) (aset v 5 e) + (aset v 4 (+ d t1)) + (aset v 3 c) (aset v 2 b) (aset v 1 a) + (aset v 0 (+ t1 t2)))) + (dotimes [i 8] + (aset h i (+ (aget h i) (aget v i)))))) + (let [out (js/Uint8Array. 32)] + (dotimes [i 8] + (dotimes [b 4] + (aset out (+ (* 4 i) b) + (bit-and 0xff (unsigned-bit-shift-right (aget h i) (* 8 (- 3 b))))))) + out))) + +(defn hex + "Lowercase hex of a byte array, which is the form `hashlib.hexdigest()` gives + and therefore the form a key is written in." + [^js bytes] + (str/join (map (fn [i] (.padStart (.toString (aget bytes i) 16) 2 "0")) + (range (.-length bytes))))) + +(defn of-bytes [^js bytes] (hex (digest bytes))) + +(def ^:private utf8 (js/TextEncoder.)) + +(defn of-string + "UTF-8 first, and that is not a detail: a descriptor holds source filenames, so + a clip called \"café.mov\" hashes to what Python's `hashlib` gives for the same + bytes only if the encoding is agreed. `TextEncoder` is UTF-8 by definition." + [s] + (of-bytes (.encode utf8 s))) + +(defn key-of + "The form a tier-2 key is written in everywhere: \"sha256:<64 hex>\". + + PREFIXED, because a bare hex string in a document says nothing about what + produced it, and the first time this changes algorithm every stored key has to + be readable as the old one. It is also what makes a descriptive placeholder + key — the `\"take/geom\"` these replaced — impossible to confuse with an address." + [s] + (str "sha256:" (of-string s))) + +(defn key? + "Does this string name a content address? + + A string test and not a lookup, on purpose: tier 1 must be checkable without + tier 2 in hand, which is the whole point of the split. It is what `domain/leaf` + uses to refuse a document carrying a placeholder key like the \"take/geom\" that + content addressing replaced." + [s] + (boolean (and (string? s) (re-matches #"sha256:[0-9a-f]{64}" s)))) diff --git a/frontend/src/arthur/domain/wire.cljs b/frontend/src/arthur/domain/wire.cljs new file mode 100644 index 0000000..dc10d57 --- /dev/null +++ b/frontend/src/arthur/domain/wire.cljs @@ -0,0 +1,102 @@ +(ns arthur.domain.wire + "The document's wire format, and the bytes' one. + + TRANSIT, not JSON, and the reason is the two things docs/animation-model.md is + most specific about. A channel's keys are a map BY FRAME NUMBER, and JSON has + only string keys, so a save through `JSON.stringify` turns `{0 v, 4 v}` into + `{\"0\" v, \"4\" v}` and every id in the scene from `:mouth` into `\"mouth\"` — a + document that reloads as a subtly different type and fails somewhere downstream + of where it broke. Transit carries integers, keywords and vector keys as + themselves, and its output is still JSON, so the server stores a leaf in a + JSONField and the admin can read it. + + TRANSIT LOSES SORTEDNESS, which is why `domain/channel` says keys are a PLAIN + map and builds the sorted index at read time. Nothing here re-sorts anything: + a codec that returned a sorted map would work locally and stop working after one + round trip, which is the failure the plain-map rule already prevents. + + The bytes are separate and base64, because tier 2 is typed arrays and transit + has nothing to say about them. `channel/dense-at` reads a block as + `{:data :state }` and both sides of the wire must hold + byte-for-byte the same array — a handle that names a sha256 has to name the + bytes you actually hold." + (:require [cognitect.transit :as t])) + +(def ^:private writer (t/writer :json)) +(def ^:private reader (t/reader :json)) + +(defn encode + "A tier-1 value -> the transit-JSON text that goes in a leaf." + [v] + (t/write writer v)) + +(defn decode + "The inverse. Whatever comes back is ordinary CLJS data." + [s] + (t/read reader s)) + +(defn encode-json + "A tier-1 value -> transit as a PARSED JSON value, ready to go in a request body. + + Transit's output is a JSON string, so a leaf could travel as a string and the + server could store it as one. It travels parsed instead, so that the column + holding it is a JSONField holding JSON rather than a JSONField holding a string + that happens to contain JSON. Two things need that: the admin, where a leaf is + either readable or it is a blob, and the field-wise merge of a channel leaf that + docs/architecture.md describes as fifteen lines of Python — which is fifteen + lines over transit's own `[\"^ \", \"~:keys\", ...]` and impossible over an + opaque string." + [v] + (js/JSON.parse (encode v))) + +(defn decode-json + "The inverse of `encode-json`." + [json] + (decode (js/JSON.stringify json))) + +;; --------------------------------------------------------------------------- +;; the bytes + +(def ^:private chunk-size + "Not `chunk`, which is `cljs.core/chunk`. 8192 characters per `apply`." + 8192) + +(defn base64 + "A typed array -> base64 of its bytes. + + Chunked through `String.fromCharCode`: `apply` with a few hundred thousand + arguments overflows the stack, and a 600-frame geometry block is exactly that + size. The failure is a RangeError from inside a save, which points nowhere near + the array that caused it." + [^js block] + (let [bytes (js/Uint8Array. (.-buffer block) (.-byteOffset block) (.-byteLength block)) + parts (js/Array.)] + (loop [i 0] + (when (< i (.-length bytes)) + (.push parts (.apply js/String.fromCharCode nil (.subarray bytes i (+ i chunk-size)))) + (recur (+ i chunk-size)))) + (js/btoa (.join parts "")))) + +(defn bytes-of + "base64 -> a Uint8Array." + [s] + (let [binary (js/atob s) + out (js/Uint8Array. (.-length binary))] + (dotimes [i (.-length binary)] + (aset out i (.charCodeAt binary i))) + out)) + +(defn typed + "base64 -> the typed array a block of this element type is read through. + + The type is a FIELD the block carries rather than something inferred from its + length, because an Int16Array and a Float32Array over the same bytes are both + valid readings and only one of them is the block." + [type s] + (let [u8 (bytes-of s)] + (case type + "int16" (js/Int16Array. (.-buffer u8)) + "float32" (js/Float32Array. (.-buffer u8)) + "uint8" u8 + (throw (ex-info "a block's element type is \"int16\", \"float32\" or \"uint8\"" + {:type type}))))) diff --git a/frontend/src/arthur/events/footage.cljs b/frontend/src/arthur/events/footage.cljs index f3e6633..c1a5d7f 100644 --- a/frontend/src/arthur/events/footage.cljs +++ b/frontend/src/arthur/events/footage.cljs @@ -1,5 +1,9 @@ (ns arthur.events.footage - "Load and freeze extracted footage once, outside the playback loop." + "Load and freeze ingested footage once, outside the playback loop. + + The frames come from the server by URL since step 9 — see `flow/ingest` — and the + detector's identity comes from the server too, because it goes into the content + address of every block this produces." (:require [arthur.events.playback :as pb] [arthur.flow.detect :as detect] [arthur.flow.ingest :as ingest] @@ -15,8 +19,7 @@ raw (atom []) interiors (atom []) dims (atom nil) - total (:frames manifest) - load-id (.now js/Date)] + total (:frames manifest)] (js/Promise. (fn [resolve reject] (letfn [(next-frame [i] @@ -25,7 +28,7 @@ (resolve (assoc (detect/fill-gaps @raw) :dimensions @dims :interior @interiors)) (catch :default error (reject error))) - (-> (ingest/image! (ingest/frame-url manifest i load-id)) + (-> (ingest/image! (ingest/frame-url manifest i)) (.then (fn [image] (let [wh [(.-naturalWidth image) (.-naturalHeight image)]] @@ -55,19 +58,24 @@ (.catch reject))))] (next-frame 0)))))) -(defn- build-clip [manifest {:keys [dense detected dimensions interior missing first-real]}] +(defn- build-clip [manifest detector + {:keys [dense detected dimensions interior missing first-real]}] (let [[w h] dimensions frozen (take/footage manifest {:dense dense :detected detected :dimensions dimensions :interior interior - :presence (:presence manifest)}) + :presence (:presence manifest) + :detector detector}) scene (:scene frozen)] (assoc (select-keys scene [:fps :frames :width :height]) :display-fps (:fps scene) :scene scene :store (:store frozen) - ;; Re-extraction often overwrites audio.wav under the same name. A new - ;; URL makes the element fetch the new sound when this clip is loaded. - :audio (str (ingest/audio-url manifest) "?v=" (.now js/Date)) - :label (or (:source manifest) "footage") + ;; No cache-buster. The audio is a blob named by the hash of its own + ;; bytes, so re-extracting gives it a different URL rather than + ;; overwriting this one — which is what the `?v=` here used to work + ;; around. + :audio (ingest/audio-url manifest) + :label (or (:label manifest) (:source manifest) "footage") + :cid (or (:id manifest) "footage") :summary (str (:frames manifest) " frames · " w "×" h " · " (:fps manifest) " fps" (when (pos? missing) @@ -77,35 +85,61 @@ (rf/reg-fx ::begin! - (fn [path] - (-> (ingest/manifest! path) - (.then (fn [manifest] + (fn [footage-id] + (-> (js/Promise.all #js [(ingest/manifest! footage-id) (ingest/detector!)]) + (.then (fn [[manifest detector]] (rf/dispatch [::progress "loading MediaPipe…"]) (-> (detect/landmarker!) (.then (fn [model] (rf/dispatch [::progress "loading frames…"]) (-> (detect-frames! manifest model) - (.then (fn [track] (build-clip manifest track))))))))) + (.then (fn [track] + (build-clip manifest detector track))))))))) (.then (fn [entry] (let [id (store/install! entry)] (rf/dispatch [::loaded id (:summary entry)])))) (.catch (fn [error] (js/console.error error) - (rf/dispatch [::failed (or (.-message error) (str error))])))))) + (rf/dispatch [::failed (or (ex-message error) (.-message error) (str error))])))))) + +(rf/reg-fx + ::list! + (fn [_] + (-> (ingest/available!) + (.then (fn [footage] (rf/dispatch [::listed footage]))) + (.catch (fn [error] + (rf/dispatch [::failed (or (ex-message error) (str error))])))))) + +(rf/reg-event-fx + ::refresh + (fn [_ _] {::list! nil})) + +(rf/reg-event-db + ::listed + (fn [db [_ footage]] + (update db :footage merge + {:available (vec footage) + :chosen (or (:chosen (:footage db)) (:id (first footage))) + :status (when (empty? footage) + "no footage ingested — ./extract.sh, then manage.py ingest_bundle")}))) + +(rf/reg-event-db + ::choose + (fn [db [_ id]] (assoc-in db [:footage :chosen] id))) (rf/reg-event-fx ::load (fn [{:keys [db]} _] - (if (get-in db [:footage :loading?]) - {} - {:db (assoc db :footage (assoc (:footage db) :loading? true - :status "reading manifest.json…")) - ::pb/pause! nil - ::begin! (get-in db [:footage :manifest-path])}))) - -(rf/reg-event-db - ::set-manifest-path - (fn [db [_ path]] (assoc-in db [:footage :manifest-path] path))) + (let [chosen (get-in db [:footage :chosen])] + (cond + (get-in db [:footage :loading?]) {} + (nil? chosen) + {:db (assoc-in db [:footage :status] + "no footage ingested — ./extract.sh, then manage.py ingest_bundle")} + :else + {:db (update db :footage merge {:loading? true :status "reading the manifest…"}) + ::pb/pause! nil + ::begin! chosen})))) (rf/reg-event-db ::progress diff --git a/frontend/src/arthur/events/project.cljs b/frontend/src/arthur/events/project.cljs new file mode 100644 index 0000000..1ab6262 --- /dev/null +++ b/frontend/src/arthur/events/project.cljs @@ -0,0 +1,195 @@ +(ns arthur.events.project + "Save and open: the document over HTTP. + + THE ORDER OF A SAVE IS THE TIER SPLIT, and it is not an arrangement of + convenience — each step is the precondition for the next one to be checkable: + + 1. the ANALYSIS record, so that every block stored afterwards can name the + detector version that produced it. The server refuses a block whose + analysis it does not know, for exactly that reason. + 2. ask which BLOCKS are missing, and upload only those. A re-save after a + document edit moves kilobytes, which is the whole return on content + addressing. + 3. the DOCUMENT. The server refuses a clip that names blocks it does not hold, + so a saved document cannot load into a blank stage somewhere else. + + Open is the same order backwards: the document, then the blocks it names. It + needs no analysis step, because the document carries the analysis record — a + content address alone would make a take unreadable the first time a detector + upgrade orphaned one, and \"sha256:7f2…\" is not an answer to \"which model + produced this\". + + Nothing here touches app-db except through events. The promise chain lives in an + fx, which is the only thing in this namespace that is not pure." + (:require [arthur.domain.project :as project] + [arthur.events.playback :as pb] + [arthur.footage.store :as store] + [arthur.flow.address :as address] + [arthur.fx.http :as http] + [re-frame.core :as rf])) + +(defn- analysis-payload [analysis] + #js {:key (:id analysis) + :descriptor (address/analysis-descriptor analysis) + :footage (:footage analysis)}) + +(defn- block-keys [^js doc] + (into-array (map #(.-key %) (array-seq (.-blocks doc))))) + +(defn- upload-missing! + "POST the blocks the server said it does not have, and nothing else. + + ONE AT A TIME. `Promise.all` over eleven uploads is the obvious way to write + this and it made sqlite answer \"database is locked\" on a save — which reaches + the page as a 500 with nothing wrong with the request. The backend was fixed too + (WAL, and a busy timeout, in server/settings.py), and this stays sequential + anyway: the uploads are a few kilobytes each, nothing is waiting on them, and a + burst of parallel writes to buy nothing is how the same bug comes back the first + time a take has sixty blocks instead of eleven." + [^js doc] + (-> (http/POST "/api/blocks/missing" #js {:keys (block-keys doc)}) + (.then (fn [^js answer] + (let [missing (set (array-seq (.-missing answer))) + todo (filterv #(contains? missing (.-key ^js %)) + (array-seq (.-blocks doc)))] + (-> (reduce (fn [chain block] + (.then chain (fn [_] (http/POST "/api/blocks" block)))) + (js/Promise.resolve nil) + todo) + (.then (fn [_] (count todo))))))))) + +(defn- ensure-project! [id name] + (if id + (js/Promise.resolve id) + (-> (http/POST "/api/projects" #js {:name name}) + (.then (fn [^js created] (.-id created)))))) + +(rf/reg-fx + ::save! + (fn [{:keys [id cid label clip]}] + (let [analysis (:analysis (:scene clip)) + doc (project/save cid clip)] + (-> (ensure-project! id label) + (.then (fn [pid] + (-> (if analysis + (http/POST "/api/analyses" (analysis-payload analysis)) + (js/Promise.resolve nil)) + (.then (fn [_] (upload-missing! doc))) + (.then (fn [uploaded] + (-> (http/PUT (str "/api/projects/" pid) + #js {:name label + :clips #js [#js {:cid cid + :name label + :analysis (:id analysis) + :leaves (.-leaves doc) + :blocks (block-keys doc)}]}) + (.then (fn [^js saved] + (rf/dispatch [::saved pid cid label + (.-seq saved) + (count (array-seq (.-written saved))) + uploaded]))))))))) + (.catch (fn [error] + (js/console.error error) + (rf/dispatch [::failed (or (ex-message error) (str error))]))))))) + +(rf/reg-fx + ::open! + (fn [id] + (-> (if id + (js/Promise.resolve #js {:id id}) + ;; No id: the most recently updated project, which is what "open" means + ;; when there is no project browser yet. + (-> (http/GET "/api/projects") + (.then (fn [^js listed] + (or (first (array-seq (.-projects listed))) + (throw (ex-info "there is no saved project to open" {}))))))) + (.then (fn [^js row] (http/GET (str "/api/projects/" (.-id row))))) + (.then (fn [^js loaded] + (let [^js clip-json (first (array-seq (.-clips loaded)))] + (when-not clip-json + (throw (ex-info "that project has no clips" {}))) + (-> (js/Promise.all + (into-array (map #(http/GET (str "/api/blocks/" %)) + (array-seq (.-blocks clip-json))))) + (.then (fn [blocks] + (let [doc #js {:leaves (.-leaves clip-json) :blocks blocks} + cid (.-cid clip-json) + clip (project/load cid doc) + scene (:scene clip) + entry (merge + (select-keys scene [:fps :frames :width :height]) + {:label (str (or (.-name clip-json) cid) " (saved)") + :cid cid + :display-fps (:fps scene) + :scene scene + :store (:store clip) + ;; The audio is the clip's, and a + ;; document does not carry it: tier 3 + ;; is by hash and the scene names the + ;; analysis, not the sound. Until the + ;; footage id is in the document, the + ;; synthetic take's is the one that + ;; keeps the clock running. + :audio "/static/arthur/audio.wav"})] + (rf/dispatch [::opened + (store/install! entry "project") + (.-id loaded) + (.-name loaded) + (.-seq loaded)])))))))) + (.catch (fn [error] + (js/console.error error) + (rf/dispatch [::failed (or (ex-message error) (str error))])))))) + +;; --------------------------------------------------------------------------- +;; events + +(rf/reg-event-fx + ::save + (fn [{:keys [db]} _] + (let [id (:scene/current db) + clip (store/entry id)] + (if (or (:busy? (:project db)) (nil? clip)) + {} + {:db (update db :project merge {:busy? true :status "saving…"}) + ::save! {:id (:id (:project db)) + :cid (or (:cid clip) (name id)) + :label (or (:label clip) (name id)) + :clip clip}})))) + +(rf/reg-event-fx + ::open + (fn [{:keys [db]} _] + (if (:busy? (:project db)) + {} + {:db (update db :project merge {:busy? true :status "opening…"}) + ::pb/pause! nil + ::open! (:id (:project db))}))) + +(rf/reg-event-db + ::saved + (fn [db [_ id cid label seq written uploaded]] + (update db :project merge + {:id id :cid cid :name label :seq seq :busy? false + :status (str "saved r" seq " · " written + (if (= 1 written) " leaf" " leaves") + " · " uploaded (if (= 1 uploaded) " block" " blocks"))}))) + +(rf/reg-event-fx + ::opened + (fn [{:keys [db]} [_ clip-id project-id name seq]] + (let [clip (store/entry clip-id)] + {:db (-> db + (assoc :scene/current clip-id + :clip (select-keys clip [:fps :frames :width :height :audio :display-fps])) + (update :project merge + {:id project-id :name name :seq seq :cid (:cid clip) + :busy? false + :status (str "opened " name " r" seq)}) + (assoc-in [:playback :frame] 0) + (assoc-in [:playback :playing?] false)) + ::pb/pause! nil}))) + +(rf/reg-event-db + ::failed + (fn [db [_ message]] + (update db :project merge {:busy? false :status (str "failed: " message)}))) diff --git a/frontend/src/arthur/flow/address.cljs b/frontend/src/arthur/flow/address.cljs new file mode 100644 index 0000000..809380b --- /dev/null +++ b/frontend/src/arthur/flow/address.cljs @@ -0,0 +1,185 @@ +(ns arthur.flow.address + "Tier 2 keys: what a dense block is NAMED, and what that name is made of. + + Until step 9 a block's key was a descriptive string — \"take/geom\", + \"footage/iris-pos\" — and `flow/freeze` said of them: \"they become the blocks' + sha256 when the backend arrives and nothing above here changes, which is the + point of a handle.\" This is that, and nothing above it did change. + + A KEY IS A HASH OVER INPUTS, NOT OVER BYTES. Both are content addressing and + they answer different questions. Hashing the bytes tells you whether two blocks + are identical; hashing the inputs tells you, BEFORE computing anything, which + block the current settings want — which is the question a cache is asked. It is + also what makes a stale bake unreachable rather than wrong: change a knob and + the scene names a key that no longer exists, so the worst case is a re-freeze. + Nothing in the system can serve old landmarks under new settings. + + THE DETECTOR VERSION IS IN IT, and docs/architecture.md is explicit about why: + a model upgrade that silently reuses old landmarks presents as \"the tool got + worse\", with no event to attach it to. It enters through the ANALYSIS id, which + every block descriptor names, so it cannot be in one block's key and missing + from another's. + + WHICH KNOBS. `block-knobs` below is the invalidation table: for each block, the + settings its BYTES depend on. Getting it wrong in either direction is a bug with + a different symptom — too few and a knob silently does nothing until a reload, + too many and every unrelated tweak throws away a good bake — so it is not + trusted. `address-test` re-freezes the take once per knob and asserts the + biconditional: a block's bytes changed if and only if its key changed. That is + what keeps this table honest, because reading it will not. + + Not a namespace with state, and not a registry: every function here is + `(f inputs) -> string`." + (:require [arthur.domain.canon :as canon] + [arthur.domain.sha256 :as sha])) + +(def ^:const scheme + "The addressing scheme's own version, inside every key. + + If the shape of a descriptor changes — a field added, a field's meaning + revised — then keys computed the old way name bytes produced by code that no + longer exists. Bumping this makes every one of them unreachable in one edit, + which is the cheap version of a migration." + 1) + +;; --------------------------------------------------------------------------- +;; the analysis artifact + +(defn analysis-descriptor + "The canonical text naming one analysis artifact: which detector, at which + version, over which source. + + `:fps` and `:aspect` are in here rather than in the block descriptors, and that + is not an arrangement of convenience. Both are properties of the FOOTAGE — the + source cadence and the pixel aspect of the frames it was decoded from — and both + reach tier 2 bytes: aspect through every landmark that is de-anisotropised + before a fit, and fps through every dwell that is specified in seconds + (`condition/quantize-snap`'s gaze and brow cells, `resolve-blink`'s hold). A + block inherits them by naming the analysis, so they cannot be in one block's key + and missing from another's. + + `:source` is in it and `:name` is NOT. A clip's name is a label a human types; + two clips of the same footage under different names are the same analysis and + must share it, which is the whole return on addressing." + [{:keys [detector version source footage frames fps aspect seed]}] + (when-not (and (string? detector) (seq detector) (string? version) (seq version)) + (throw (ex-info "an analysis names its detector and the detector's VERSION: an upgrade that silently reuses old landmarks is the failure content addressing exists to prevent" + {:detector detector :version version}))) + (canon/write (cond-> {:scheme scheme + :detector detector + :version version + :frames frames + :fps fps + :aspect aspect} + source (assoc :source source) + footage (assoc :footage footage) + seed (assoc :seed seed)))) + +(defn analysis + "An analysis record with its `:id` filled in. The record is tier 1 — it says + what produced the clip's channels — and the id is what `:generated :analysis` + carries on every generated channel." + [record] + (assoc record :id (sha/key-of (analysis-descriptor record)))) + +;; --------------------------------------------------------------------------- +;; the observation masks + +(defn- feature-name + "A feature id as a descriptor string. `canon` refuses a keyword value on + purpose — so that \"mouth\" and :mouth cannot address the same block — and this + is the naming it insists happens at the call site. `nil` is the whole face, + which is what a track with no feature follows." + [id] + (if id (subs (str id) 1) "face")) + +(defn observation + "A digest of exactly the absence data one block reads. + + Digested rather than inlined, for two reasons. A descriptor is meant to be READ + — a stale bake presents as a picture that will not update, and the descriptor is + the only thing that can say which input moved — and a 229-frame boolean mask + inlined in it would bury the knobs it sits beside. And it is per-block: the eye + block reads `:eye-r` and `:eye-l`'s presence and no other feature's, so a gap in + one brow does not rewrite the mouth's address for nothing. + + `nil` features mean the track follows the whole face's detection rather than a + feature's presence, which is what the head's three blocks do." + [features {:keys [detected presence]}] + (let [wanted (sort-by str (distinct (keep identity features))) + masks (into {} (map (fn [id] [id (mapv boolean (get presence id))])) + (filter #(contains? presence %) wanted))] + (when (or detected (seq masks)) + (sha/key-of (canon/write {:scheme scheme + :detected (when detected (mapv boolean detected)) + :presence (into {} (map (fn [[id m]] [(feature-name id) m])) + (sort-by (comp str key) masks))}))))) + +;; --------------------------------------------------------------------------- +;; the blocks + +(def block-knobs + "Per block, the settings its BYTES depend on. The invalidation table, and the + thing `address-test` refuses to take on trust. + + Two entries worth reading twice, because both are asymmetries a reasonable + person would call a mistake: + + The EYE block does not depend on `blink-cut`. A blink is a `[:vis]` key on the + eye's interior — tier 1, editable, a handful of transitions — and the lid + geometry underneath it is the same either way. `iris-size` and `pupil-size` are + missing for the same reason: both land on framed channels, not in a block. + + The TEETH block depends on `aperture-cut`, which nothing else in the table does. + `condition/interior` will not smooth a contour on a frame the teeth are not + shown on, and whether they are shown starts with the mouth being open — so the + mouth's threshold reaches the pixel geometry, while the mouth's own vertex + budget does not reach the teeth at all (the crop is taken from raw landmarks). + It reads like a mistake in both directions and is neither." + {"geom" [:anchor-avg :contour-avg :verts] + "head-pos" [:anchor-avg] + "head-rot" [:anchor-avg] + "head-scale" [:anchor-avg] + "eyes" [:anchor-avg :contour-avg :eye-verts :lash-weight] + "iris-pos" [:anchor-avg :contour-avg :gaze-gain :gaze-step] + "brows" [:anchor-avg :contour-avg :brow-verts :brow-gain :brow-step :brow-weight] + ;; `brow-pos` and not `contour-avg`: the ring is smoothed and the RAISE is not. + ;; `condition/brows` takes the end heights straight from measure, medians them + ;; for a rest position and snaps them onto a grid, and never passes them + ;; through `condition/contours`. Asserted, not assumed — the biconditional in + ;; address-test is what found it here. + "brow-pos" [:anchor-avg :brow-gain :brow-step] + "teeth" [:anchor-avg :aperture-cut :blob-grow :cavity-erode :min-area + :teeth-on :teeth-smooth :teeth-verts :tongue-reject :top-bias]}) + +(defn block-descriptor + "The canonical text naming one dense block. + + `:tracks` is in it and so is `:layout`: two blocks over the same inputs that + pack a different number of tracks, or the same tracks in another order, are + different bytes at the same offsets, and a reader that trusted the key would + hand the left eye's geometry to the right one." + [{:keys [role analysis params features tracks layout observation]}] + (let [knobs (or (get block-knobs role) + (throw (ex-info "no invalidation table for this block role: add it to block-knobs in the same commit as the block, or its key cannot change when its bytes do" + {:role role :roles (sort (keys block-knobs))}))) + missing (remove #(contains? params %) knobs)] + (when (seq missing) + (throw (ex-info "a knob this block's bytes depend on was not passed to the freeze" + {:role role :missing (vec missing)}))) + (canon/write {:scheme scheme + :role role + :analysis analysis + :params (select-keys params knobs) + :features (mapv feature-name features) + :tracks (vec tracks) + :layout layout + :observation observation}))) + +(defn block + "`{:key :descriptor}` for one dense block. The descriptor travels with the bytes + — see `arthur.domain.leaf` and clips/views.py — because the server verifies + `sha256(descriptor) == key` on upload rather than trusting a name it was handed." + [spec] + (let [text (block-descriptor spec)] + {:key (sha/key-of text) :descriptor text})) diff --git a/frontend/src/arthur/flow/detect.cljs b/frontend/src/arthur/flow/detect.cljs index a2986dd..50cccf0 100644 --- a/frontend/src/arthur/flow/detect.cljs +++ b/frontend/src/arthur/flow/detect.cljs @@ -6,7 +6,13 @@ (defn landmarker! "Initialize once, using the vendored wasm and the local model. CPU also works - in browsers where a GPU delegate initializes but fails on its first frame." + in browsers where a GPU delegate initializes but fails on its first frame. + + Under `/static/` since step 9: the assets still live in `frontend/public/mediapipe` + — 26MB of wasm and model that has no business being copied into a second place in + the tree — and Django's staticfiles serves that directory under the `mediapipe/` + prefix. Still no CDN, which is the property that matters: the only thing in this + tool that would silently require a network is the one thing that must not." [] (if-let [model @instance] (js/Promise.resolve model) @@ -14,12 +20,12 @@ (if-let [vision (aget js/window "Vision")] (let [resolver (aget vision "FilesetResolver") landmarker (aget vision "FaceLandmarker") - ready (-> (.call (aget resolver "forVisionTasks") resolver "/mediapipe/wasm") + ready (-> (.call (aget resolver "forVisionTasks") resolver "/static/mediapipe/wasm") (.then (fn [fileset] (.call (aget landmarker "createFromOptions") landmarker fileset #js {:baseOptions - #js {:modelAssetPath "/mediapipe/face_landmarker.task" + #js {:modelAssetPath "/static/mediapipe/face_landmarker.task" :delegate "CPU"} :runningMode "IMAGE" :numFaces 1}))) diff --git a/frontend/src/arthur/flow/freeze.cljs b/frontend/src/arthur/flow/freeze.cljs index cd093a3..0ac8a9b 100644 --- a/frontend/src/arthur/flow/freeze.cljs +++ b/frontend/src/arthur/flow/freeze.cljs @@ -34,7 +34,8 @@ decisions about the mouth cavity, blink and teeth without thinning geometry." (:require [arthur.domain.channel :as ch] [arthur.domain.geom :as geom] - [arthur.domain.ring :as ring])) + [arthur.domain.ring :as ring] + [arthur.flow.address :as address])) ;; --------------------------------------------------------------------------- ;; fixed point @@ -74,22 +75,49 @@ a performance asset rather than a cost. `demo/swarm` holds the same layout and is the load test for it. - `:ctor` makes the array — a function and not a type, because `new` is not - something a value can carry — `:scale` is the fixed-point scale or nil, and - `:absent` an optional (track, frame) predicate. The state is per track, so one - occluded eye can be absent while its partner still has a value. A full-face - miss marks every track absent. + `:type` names the array — \"int16\" or \"float32\" — rather than handing over a + constructor, because the type is also a field in the block's descriptor and the + two must not be able to disagree. `:scale` is the fixed-point scale or nil. + + ABSENCE IS PER TRACK, and `:features` is what says whose. Each track names the + feature it follows, so one occluded eye can be absent while its partner still + has a value; `nil` means the track follows the whole face's detection and no + feature, which is what the head's blocks do. `absent?` is then asked + `(absent? feature f)` and never about a track index. + + An earlier shape passed a `(track, frame)` predicate instead, and each call site + derived a feature from an index — `(if (< i 2) :eye-r :eye-l)` — so the + predicate and the vector of tracks beside it had to agree BY HAND, in five + places, with a left/right swap for a failure mode. docs/port-plan.md warns about + that swap twice: every part is still roughly where it belongs, so it survives + inspection. Naming the feature per track deletes the derivation, and it hands + `flow/address` the same list for the block's observation digest, so the key and + the mask cannot disagree either. + + `:missing` is an additional per-track predicate for absence that is not a + feature's: the teeth have no contour on a frame no contour could be extracted + from, which is a different fact from the teeth being occluded. Written with `dotimes` and `aset` rather than as a fold, and that is the exception rather than the rule in this codebase: the destination is a typed array, so there is nothing to accumulate into and a collection idiom here would allocate a seq per frame to throw away." - [{:keys [ctor scale absent]} tracks] + [{:keys [type scale features absent? missing]} tracks] + (when-not (= (count tracks) (count features)) + (throw (ex-info "every track of a block names the feature it follows" + {:tracks (count tracks) :features (count features)}))) (let [n (count tracks) nf (count (first tracks)) stride (count (first (first tracks))) + ctor (case type + "int16" #(js/Int16Array. %) + "float32" #(js/Float32Array. %) + (throw (ex-info "a block's element type is \"int16\" or \"float32\"" + {:type type}))) data (ctor (* n nf stride)) - state (when absent (js/Uint8Array. (* n nf)))] + gone? (fn [i f] (or (and absent? (absent? (nth features i) f)) + (and missing (missing i f)))) + state (when (or absent? missing) (js/Uint8Array. (* n nf)))] (dotimes [i n] (let [track (vec (nth tracks i)) base (* i nf stride)] @@ -109,16 +137,55 @@ :track i :frame f :component k}))) q) v)))) - (when (and state (absent i f)) + (when (and state (gone? i f)) (aset state (+ (* i nf) f) ch/absent-bit)))))) - {:data data :state state :stride stride :frames nf :scale scale + {:data data :state state :stride stride :frames nf :scale scale :type type + :features features :offsets (mapv #(* % nf stride) (range n))})) +(defn- block + "Pack the tracks and NAME the result: `pack`'s block plus the `:key` it is + stored under and the `:descriptor` that key is the hash of. + + Addressing happens HERE, beside the packing, rather than at the call sites, + because a block referenced under one key and stored under another is a handle + into somebody else's array — the failure the key exists to make impossible. + + `spec` is the block's identity for `flow/address`: its role, the tracks by name, + and the analysis and settings its bytes came out of. `obs` is the absence data, + which the descriptor digests down to one line." + [{:keys [role analysis params tracks] :as spec} opts obs values] + (let [features (:features opts) + blk (pack opts values) + named (address/block + {:role role :analysis analysis :params params :tracks tracks + :features features + :observation (address/observation features obs) + :layout {:type (:type blk) :scale (:scale blk) + :stride (:stride blk) :frames (:frames blk) + :tracks (count tracks)}})] + (merge blk named))) + +(defn- stored + "Blocks -> the tier-2 store they go in: key -> what is kept under it. + + THE DESCRIPTOR TRAVELS WITH THE BYTES. It is not in the document — tier 1 stays + the authored layer and a descriptor is derived — and it is not thrown away + either, because the server verifies `sha256(descriptor) == key` on upload and + will not take a name on trust. So it rides in tier 2, where a cache entry + knowing what produced it is the ordinary arrangement. `channel/dense-at` reads + `:data` and `:state` and ignores the rest." + [& blocks] + (into {} (map (juxt :key #(select-keys % [:data :state :descriptor]))) blocks)) + (defn- dense - "Track i of a packed block, as a DENSE channel definition." - [store-key blk i generated] + "Track i of a packed block, as a DENSE channel definition. + + The block names its own key, so a channel cannot be pointed at one block and + stored under another's address." + [blk i generated] {:animated? true :interp :hold - :dense (cond-> {:store store-key + :dense (cond-> {:store (:key blk) :offset (nth (:offsets blk) i) :stride (:stride blk) :frames (:frames blk)} @@ -361,43 +428,44 @@ "Freeze eyes and brows into their own dense blocks and scene nodes. This owns only representation: the landmark correspondence, blink and pose choices have already been settled by measure and condition." - [name absent {:keys [eye-verts brow-verts analysis contour-avg anchor-avg]} + [absent? obs {:keys [eye-verts brow-verts analysis contour-avg anchor-avg] :as params} {:keys [eyes brows]}] - (let [eye-k (str name "/eyes") - iris-k (str name "/iris-pos") - brow-k (str name "/brows") - brow-pos-k (str name "/brow-pos") - provenance (fn [by extra] - {:by by :analysis analysis + (let [provenance (fn [by extra] + {:by by :analysis (:id analysis) :params (merge {:anchor-avg anchor-avg :contour-avg contour-avg} extra)}) - eye-block (pack {:ctor #(js/Int16Array. %) :scale geom-scale - :absent (when absent (fn [i f] - (absent (if (< i 2) :eye-r :eye-l) f)))} - (mapv #(rings->flat % eye-verts) - [(:lash-r eyes) (:lid-r eyes) - (:lash-l eyes) (:lid-l eyes)])) - iris-block (pack {:ctor #(js/Float32Array. %) - :absent (when absent (fn [i f] - (absent (if (zero? i) :eye-r :eye-l) f)))} - [(:iris-r eyes) (:iris-l eyes)]) - brow-block (pack {:ctor #(js/Int16Array. %) :scale geom-scale - :absent (when absent (fn [i f] - (absent (if (zero? i) :brow-r :brow-l) f)))} - (mapv #(rings->flat % brow-verts) - [(:ring-r brows) (:ring-l brows)])) - brow-pos-block (pack {:ctor #(js/Float32Array. %) - :absent (when absent (fn [i f] - (absent (if (zero? i) :brow-r :brow-l) f)))} + named (fn [role tracks features type values] + (block {:role role :analysis (:id analysis) :params params + :tracks tracks} + {:type type :features features :absent? absent? + :scale (when (= "int16" type) geom-scale)} + obs values)) + ;; Each block's tracks, named, in the order they are packed — and the + ;; feature each one follows, in the same order. The two vectors are read + ;; together on purpose: this is the mapping `pack` cannot check for itself, + ;; and `each-dense-track-follows-its-own-features-presence` is what pins it. + eye-block (named "eyes" + ["lash-r" "lid-r" "lash-l" "lid-l"] + [:eye-r :eye-r :eye-l :eye-l] + "int16" + (mapv #(rings->flat % eye-verts) + [(:lash-r eyes) (:lid-r eyes) + (:lash-l eyes) (:lid-l eyes)])) + iris-block (named "iris-pos" ["iris-r" "iris-l"] [:eye-r :eye-l] "float32" + [(:iris-r eyes) (:iris-l eyes)]) + brow-block (named "brows" ["ring-r" "ring-l"] [:brow-r :brow-l] "int16" + (mapv #(rings->flat % brow-verts) + [(:ring-r brows) (:ring-l brows)])) + brow-pos-block (named "brow-pos" ["pos-r" "pos-l"] [:brow-r :brow-l] "float32" [(:pos-r brows) (:pos-l brows)]) eye-node (fn [id z track] {:id id :name (clojure.core/name id) :kind :poly :parent :head :z z - :channels {[:geom :pts] (dense eye-k eye-block track + :channels {[:geom :pts] (dense eye-block track (provenance :roto/eyelid {:verts eye-verts})) [:style :color] (ch/framed :skin-dark)}}) inner-node (fn [id parent z track shut] {:id id :name (clojure.core/name id) :kind :poly :parent parent :z z - :channels {[:geom :pts] (dense eye-k eye-block track + :channels {[:geom :pts] (dense eye-block track (provenance :roto/eye-opening {:verts eye-verts})) [:style :color] (ch/framed :eye-white) @@ -406,7 +474,7 @@ iris-node (fn [id parent track radius] {:id id :name (clojure.core/name id) :kind :disc :parent parent :z "a1" :stencil parent - :channels {[:xform :pos] (dense iris-k iris-block track + :channels {[:xform :pos] (dense iris-block track (provenance :roto/gaze nil)) [:geom :radius] (ch/framed radius) [:style :color] (ch/framed :iris)}}) @@ -417,9 +485,9 @@ [:style :color] (ch/framed :pupil)}}) brow-node (fn [id z track] {:id id :name (clojure.core/name id) :kind :poly :parent :head :z z - :channels {[:geom :pts] (dense brow-k brow-block track + :channels {[:geom :pts] (dense brow-block track (provenance :roto/brow {:verts brow-verts})) - [:xform :pos] (dense brow-pos-k brow-pos-block track + [:xform :pos] (dense brow-pos-block track (provenance :roto/brow-raise nil)) [:style :color] (ch/framed :brow)}})] {:nodes {:eye-r (eye-node :eye-r "a2" 0) @@ -432,28 +500,29 @@ :pupil-l (pupil-node :pupil-l :iris-l) :brow-r (brow-node :brow-r "a4" 0) :brow-l (brow-node :brow-l "a5" 1)} - :store {eye-k (select-keys eye-block [:data :state]) - iris-k (select-keys iris-block [:data :state]) - brow-k (select-keys brow-block [:data :state]) - brow-pos-k (select-keys brow-pos-block [:data :state])}})) + :store (stored eye-block iris-block brow-block brow-pos-block)})) (defn- interior-part "Freeze the pixel-derived radial contour under the mouth cavity. Missing contours use the dense block's absence bit; contrast decides editable :vis." - [name {:keys [analysis teeth-verts cavity-erode tongue-reject blob-grow - top-bias teeth-on teeth-smooth]} absent-feature + [{:keys [analysis teeth-verts cavity-erode tongue-reject blob-grow + top-bias teeth-on teeth-smooth] :as params} absent? obs {:keys [contours shown]}] - (let [key (str name "/teeth") - absent (fn [_ f] (or (nil? (nth contours f)) - (and absent-feature (absent-feature :teeth f)))) - empty-points (vec (repeat (* 2 teeth-verts) 0)) + (let [empty-points (vec (repeat (* 2 teeth-verts) 0)) values (mapv (fn [ring] (if ring (into [] (mapcat (juxt :x :y)) ring) empty-points)) contours) - block (pack {:ctor #(js/Int16Array. %) :scale geom-scale :absent absent} - [values]) - generated {:by :pixels/teeth :analysis analysis + blk (block {:role "teeth" :analysis (:id analysis) :params params + :tracks ["contour"]} + {:type "int16" :scale geom-scale + :features [:teeth] :absent? absent? + ;; Not the feature's absence: a frame no contour could be + ;; extracted from has no teeth to draw whether or not the + ;; teeth were occluded, and the two reasons are different facts. + :missing (fn [_ f] (nil? (nth contours f)))} + obs [values]) + generated {:by :pixels/teeth :analysis (:id analysis) :params {:cavity-erode cavity-erode :tongue-reject tongue-reject :blob-grow blob-grow :top-bias top-bias :teeth-verts teeth-verts @@ -461,10 +530,10 @@ {:nodes {:teeth {:id :teeth :name "teeth" :kind :poly :parent :mouth-in :z "a1" :stencil :mouth-in - :channels {[:geom :pts] (dense key block 0 generated) + :channels {[:geom :pts] (dense blk 0 generated) [:style :color] (ch/framed :teeth) [:vis] (keyed-visibility shown generated)}}} - :store {key (select-keys block [:data :state])}})) + :store (stored blk)})) ;; --------------------------------------------------------------------------- ;; the clip @@ -474,7 +543,9 @@ blocks they read. `(f params inputs)`, no state. params - :name names the clip and its store keys + :name labels the clip. It is NOT in any key: two clips of the same + footage under different names are the same analysis and the + same blocks, and sharing them is the return on addressing. :fps the clip's rate. FRAMES is not a parameter — it is `(count outer)`, because a freeze that could disagree with its own input about the length of the take would. @@ -489,7 +560,11 @@ interior is not present :head :locked | :as-filmed | :per-plate :kept frames, for :per-plate only - :analysis which analysis artifact these measurements came from + :analysis the analysis record these measurements came from — detector, + VERSION, source, source cadence and pixel aspect. Its `:id` is + a content address over all of that, every block's key is a hash + over that id, and `flow/address` says why the version being in + there is the one field that must not be forgotten. :anchor-avg :contour-avg the stage-4 knobs. Freeze does not use them; it RECORDS them, because `:generated` is what lets the UI offer a re-freeze at @@ -537,29 +612,39 @@ (when (not= nf (count track)) (throw (ex-info "feature presence track must match the clip" {:feature id :frames nf :actual (count track)})))) - absent (when (or detected presence) + ;; Asked `(absent? feature f)`, where a nil feature is the whole face. A + ;; feature with no presence track is present whenever a face was found. + absent? (when (or detected presence) (fn [id f] (or (and detected (not (nth detected f true))) (and (contains? presence id) (not (nth (get presence id) f)))))) - head-absent (when detected (fn [_ f] (not (nth detected f true)))) - geom-k (str name "/geom") - head-k #(str name "/head-" %) + obs {:detected detected :presence presence} prov (fn [by extra] - {:by by :analysis analysis + {:by by :analysis (:id analysis) :params (merge {:anchor-avg anchor-avg} extra)}) - rings (pack {:ctor #(js/Int16Array. %) :scale geom-scale - :absent (when absent (fn [_ f] (absent :mouth f)))} - [(rings->flat outer verts) (rings->flat inner verts)]) + rings (block {:role "geom" :analysis (:id analysis) :params params + :tracks ["outer" "inner"]} + {:type "int16" :scale geom-scale + :features [:mouth :mouth] :absent? absent?} + obs + [(rings->flat outer verts) (rings->flat inner verts)]) ;; The anchor, inverted and split into its three components. Three blocks ;; and not one: they are three channels, they have three strides, and a ;; single block would need a per-component offset table to say so. inv (mapv invert transforms) - xf (fn [f] (pack {:ctor #(js/Float32Array. %) :absent head-absent} - [(mapv f inv)])) - pos (xf (fn [t] [(:tx t) (:ty t)])) - rot (xf (fn [t] [(:theta t)])) - scale (xf (fn [t] [(:s t) (:s t)])) + xf (fn [role f] + ;; The head follows DETECTION and no feature's presence: an + ;; occluded eye does not mean the head was not there. That is + ;; what the nil feature says. + (block {:role role :analysis (:id analysis) :params params + :tracks [role]} + {:type "float32" :features [nil] :absent? absent?} + {:detected detected} + [(mapv f inv)])) + pos (xf "head-pos" (fn [t] [(:tx t) (:ty t)])) + rot (xf "head-rot" (fn [t] [(:theta t)])) + scale (xf "head-scale" (fn [t] [(:s t) (:s t)])) ;; Which knobs each channel records is not decoration, it is the ;; invalidation table written down where a re-freeze can read it. The ;; anchor depends on `anchor avg` alone. The rings depend on it and on @@ -568,11 +653,16 @@ ;; measure reports the inner ring's own height and nothing smooths it. anchor-prov (prov :anchor/similarity nil) roto (fn [by] (prov by {:verts verts :contour-avg contour-avg})) - features (when (and eyes brows) (feature-parts name absent params inputs)) - interior (when teeth (interior-part name params absent teeth)) + features (when (and eyes brows) (feature-parts absent? obs params inputs)) + interior (when teeth (interior-part params absent? obs teeth)) scene {:name name :frames nf :fps fps + ;; Tier 1 says which analysis its channels came out of, in full. + ;; The id alone would make the document unreadable the first time + ;; a detector upgrade orphaned a block: "sha256:7f2…" is not an + ;; answer to "which model produced this take". + :analysis analysis ;; A gap changes channel state, never these IDs or pair links. :subjects {:face-1 {:id :face-1 :params {}}} :features (merge @@ -610,9 +700,9 @@ :head {:id :head :name "head" :kind :group :parent :face :z "a1" - :measured {[:xform :pos] (dense (head-k "pos") pos 0 anchor-prov) - [:xform :rot] (dense (head-k "rot") rot 0 anchor-prov) - [:xform :scale] (dense (head-k "scale") scale 0 anchor-prov)}} + :measured {[:xform :pos] (dense pos 0 anchor-prov) + [:xform :rot] (dense rot 0 anchor-prov) + [:xform :scale] (dense scale 0 anchor-prov)}} ;; The outer lip ring is the dark band OUTSIDE the interior, and ;; that three-layer structure — dark ring, pale interior, teeth @@ -620,28 +710,27 @@ ;; as a blob. So it keeps every frame and is never hidden. :mouth {:id :mouth :name "mouth" :kind :poly :parent :head :z "a1" - :channels {[:geom :pts] (dense geom-k rings 0 (roto :roto/lips-outer)) + :channels {[:geom :pts] (dense rings 0 (roto :roto/lips-outer)) [:style :color] (ch/framed :skin-dark)}} :mouth-in {:id :mouth-in :name "mouth interior" :kind :poly :parent :mouth :z "a2" - :channels {[:geom :pts] (dense geom-k rings 1 (roto :roto/lips-inner)) + :channels {[:geom :pts] (dense rings 1 (roto :roto/lips-inner)) [:style :color] (ch/framed :mouth-dark) [:vis] (visibility params inputs (prov :roto/mouth-aperture {:aperture-cut aperture-cut}))}}} (:nodes features) (:nodes interior))} - presence-check (doseq [id (keys presence)] - (when-not (contains? (:features scene) id) - (throw (ex-info "presence track names no feature in this scene" - {:feature id :features (keys (:features scene))})))) - ;; Tier 2, behind a handle. The keys are descriptive because there is no - ;; hashing yet; they become the blocks' sha256 when the backend arrives - ;; and nothing above here changes, which is the point of a handle. - store (merge (into {} (map (fn [[k blk]] [k (select-keys blk [:data :state])])) - {geom-k rings - (head-k "pos") pos, (head-k "rot") rot, (head-k "scale") scale}) + ;; Tier 2, behind a handle, and now behind a content address: every key is + ;; a sha256 over the analysis, the settings and the absence data that + ;; produced the bytes under it. Nothing above this line changed when they + ;; stopped being "take/geom", which is the point of a handle. + store (merge (stored rings pos rot scale) (:store features) (:store interior))] + (doseq [id (keys presence)] + (when-not (contains? (:features scene) id) + (throw (ex-info "presence track names no feature in this scene" + {:feature id :features (keys (:features scene))})))) {:store store :scene (head-mode {:mode head :kept kept} {:scene scene :store store})})) diff --git a/frontend/src/arthur/flow/ingest.cljs b/frontend/src/arthur/flow/ingest.cljs index c657309..8569056 100644 --- a/frontend/src/arthur/flow/ingest.cljs +++ b/frontend/src/arthur/flow/ingest.cljs @@ -1,6 +1,25 @@ (ns arthur.flow.ingest - "Read a pre-extracted take. The manifest owns timing and the exact frame count." - (:require [clojure.string :as str])) + "Read an ingested take. The manifest owns timing, the exact frame count, and — + since step 9 — the URL of every frame. + + WHAT CHANGED, AND WHY IT IS NOT A DETAIL. This used to fetch `/manifest.json` off + the filesystem and then build `frames/0001.png` itself, with shadow-cljs serving + the repo root. So the frame layout was a shared secret between a shell script and + this namespace, and \"where are the frames\" was answered by a directory listing + that nothing could version. + + Now the server names every frame and this asks it. The manifest carries a URL per + frame, so the frames can live in a content-addressed blob store — or, when the + in-browser wasm-ffmpeg extraction docs/architecture.md describes arrives, be + uploaded into the same store by the app itself — and nothing in here learns + anything new. That is the whole point of tier 3 being addressed rather than + located. + + The cache-busting `?v=` that used to hang off every frame URL went with it. It + was there because re-extracting overwrote `frames/0001.png` under the same name; + a blob's name IS the hash of its bytes, so a stale copy is not a thing that can + happen." + (:require [arthur.fx.http :as http])) (defn feature-presence "Expand one-based, inclusive absence intervals from a manifest into boolean @@ -30,36 +49,53 @@ (defn- valid-manifest [m] (let [fps (js/Number (:fps m)) - frames (js/Number (:frames m))] + frames (js/Number (:frames m)) + urls (:urls m)] (when-not (and (js/Number.isFinite fps) (pos? fps) (js/Number.isInteger frames) (<= 1 frames 900) - (string? (:dir m)) (seq (:dir m)) - (string? (:audio m)) (seq (:audio m))) - (throw (ex-info "manifest.json needs fps, frames (1–900), dir and audio" {:manifest m}))) - (assoc m :fps fps :frames frames + (string? (:audio m)) (seq (:audio m)) + (sequential? urls) (every? string? urls)) + (throw (ex-info "a footage manifest needs fps, frames (1–900), audio and a url per frame" + {:manifest (dissoc m :urls)}))) + (when-not (= frames (count urls)) + ;; The count is the manifest's and the URLs are the manifest's, so a + ;; disagreement between them is the server contradicting itself — and it + ;; would present as a take that is silently short. + (throw (ex-info "the manifest's frame count and its list of frames disagree" + {:frames frames :urls (count urls)}))) + (assoc m :fps fps :frames frames :urls (vec urls) :presence (feature-presence frames (:feature-absence m))))) +(defn available! + "Every ingested take the server holds. `manage.py ingest_bundle` is what puts one + there." + [] + (-> (http/GET "/api/footage") + (.then (fn [json] (:footage (js->clj json :keywordize-keys true)))))) + (defn manifest! - [path] - (-> (js/fetch (str "/" (str/replace path #"^/+" "")) #js {:cache "no-store"}) - (.then (fn [response] - (when-not (.-ok response) - (throw (ex-info "manifest.json was not found; run extract.sh first" - {:status (.-status response)}))) - (.json response))) + "One take's manifest, including a URL per frame." + [id] + (-> (http/GET (str "/api/footage/" id)) (.then (fn [json] (valid-manifest (js->clj json :keywordize-keys true)))))) -(defn- asset-url [path] - ;; Manifest paths are relative to the extraction root, served at / in dev. - (str "/" (str/replace path #"^/+" ""))) +(defn detector! + "Who is about to do the detecting, as the server understands it: the MediaPipe + package version and the hash of the model asset it serves. + + ASKED RATHER THAN ASSUMED, because this string ends up inside every block's + content address, and a version constant in the client is one somebody has to + remember to bump. The server serves the model, so it can hash it — and then the + version is a fact about the bytes that produced the landmarks." + [] + (-> (http/GET "/api/detector") + (.then (fn [json] (js->clj json :keywordize-keys true))))) (defn audio-url [manifest] - (asset-url (:audio manifest))) + (:audio manifest)) -(defn frame-url [manifest i load-id] - (str (asset-url (str (str/replace (:dir manifest) #"/+$" "") - "/" (.padStart (str (inc i)) 4 "0") ".png")) - "?v=" load-id)) +(defn frame-url [manifest i] + (nth (:urls manifest) i)) (defn image! [src] (js/Promise. diff --git a/frontend/src/arthur/flow/take.cljs b/frontend/src/arthur/flow/take.cljs index 8fb75b7..a0cce80 100644 --- a/frontend/src/arthur/flow/take.cljs +++ b/frontend/src/arthur/flow/take.cljs @@ -1,6 +1,7 @@ (ns arthur.flow.take "The shared landmark-to-channel path for synthetic and detected takes." - (:require [arthur.flow.condition :as condition] + (:require [arthur.flow.address :as address] + [arthur.flow.condition :as condition] [arthur.flow.condition.brows :as condition-brows] [arthur.flow.condition.eyes :as condition-eyes] [arthur.flow.condition.interior :as condition-interior] @@ -53,12 +54,25 @@ "A real manifest and its detected landmarks through the same measurement and freeze path as the synthetic take. The source cadence stays in :fps; picture sampling is a root time map applied only after this artifact exists." - [manifest {:keys [dense detected dimensions interior presence]}] + [manifest {:keys [dense detected dimensions interior presence detector]}] (let [[w h] dimensions params (merge knobs - {:name "footage" :fps (:fps manifest) :aspect (/ w h) + {:name (or (:source manifest) "footage") + :fps (:fps manifest) :aspect (/ w h) :stage [320 200] :fit-motion? true :expose 1 :head :as-filmed - :analysis (str "mediapipe:1.0.1/" (:source manifest))})] + ;; The detector's identity comes from the server, which + ;; hashes the model asset it serves rather than trusting a + ;; version string somebody has to remember to bump. See + ;; `flow/address`: a model upgrade that silently reused + ;; these landmarks is the failure this prevents. + :analysis (address/analysis + (merge {:detector "mediapipe" :version "unknown"} + detector + {:source (:source manifest) + :footage (:footage manifest) + :frames (:frames manifest) + :fps (:fps manifest) + :aspect (/ w h)}))})] (build params {:dense dense :detected detected :interior interior :presence presence}))) diff --git a/frontend/src/arthur/footage/store.cljs b/frontend/src/arthur/footage/store.cljs index 21a6cd8..a11b74b 100644 --- a/frontend/src/arthur/footage/store.cljs +++ b/frontend/src/arthur/footage/store.cljs @@ -1,14 +1,28 @@ (ns arthur.footage.store - "Loaded clip artifacts live outside app-db. The db keeps only their id." + "Clips loaded at RUNTIME live outside app-db. The db keeps only their id. + + Two things arrive this way and they are the same kind of thing: footage that has + been detected and frozen, and a project opened from the server. Both are + `{:scene ... :store ...}` — which is what `flow/freeze` returns — plus the clip + facts the transport needs, and both hold typed arrays that have no business being + in a map every mounted subscription compares." (:require [arthur.db :as db])) (defonce ^:private loaded (atom nil)) (defonce ^:private serial (atom 0)) -(defn install! [entry] - (let [id (keyword "footage" (str (swap! serial inc)))] - (reset! loaded (assoc entry :id id)) - id)) +(defn install! + "Hold one loaded clip, and hand back the id app-db will refer to it by. + + ONE AT A TIME, on purpose: a second loaded clip is a second megabyte-scale store + with nothing to evict it, and the timeline that would want several is out of + scope. `kind` only names the id — `:footage/3`, `:project/4` — so that a clip's + origin is legible in the db without a lookup." + ([entry] (install! entry "footage")) + ([entry kind] + (let [id (keyword kind (str (swap! serial inc)))] + (reset! loaded (assoc entry :id id)) + id))) (defn entry [id] (if (= id (:id @loaded)) diff --git a/frontend/src/arthur/fx/http.cljs b/frontend/src/arthur/fx/http.cljs new file mode 100644 index 0000000..d594c37 --- /dev/null +++ b/frontend/src/arthur/fx/http.cljs @@ -0,0 +1,55 @@ +(ns arthur.fx.http + "The one place that talks to the server. + + Everything here returns a promise of a PARSED JS VALUE, not of CLJS data, and + that is deliberate: a leaf is transit, and `domain/project` reads it straight out + of the response object. A keywordising `js->clj` on the way past would turn the + leaf path \"clip/c1/node/mouth\" into a keyword whose name is \"c1/node/mouth\", + losing the prefix — a corruption that only shows up on the way back in. + + CSRF IS NOT EXEMPTED. The page renders `{% csrf_token %}`, so Django sets its + cookie, and every unsafe request carries it back in the header Django looks for. + Nine lines against `@csrf_exempt` on an API that writes the document." + (:require [clojure.string :as str])) + +(defn csrf-token [] + (some (fn [pair] + (let [[k v] (str/split pair #"=" 2)] + (when (= "csrftoken" (str/trim (or k ""))) v))) + (str/split (or (.-cookie js/document) "") #";"))) + +(defn- fail + "Turn a non-2xx into an ex-info carrying what the server said. + + The server's message is the useful one — \"this clip names tier-2 blocks the + server does not have\" — and a status code alone would put the interesting half + of it in a console nobody is watching." + [response body] + (throw (ex-info (or (some-> body .-error) + (str "the server answered " (.-status response))) + {:status (.-status response) + :body (when body (js->clj body :keywordize-keys true))}))) + +(defn request! + ([method url] (request! method url nil)) + ([method url body] + (-> (js/fetch url + (clj->js (cond-> {:method method + :cache "no-store" + :headers (cond-> {"Accept" "application/json"} + body (assoc "Content-Type" "application/json") + (not= "GET" method) + (assoc "X-CSRFToken" (or (csrf-token) "")))} + body (assoc :body (js/JSON.stringify body))))) + (.then (fn [response] + (-> (.text response) + (.then (fn [text] + (let [parsed (when (seq text) + (try (js/JSON.parse text) (catch :default _ nil)))] + (if (.-ok response) + parsed + (fail response parsed))))))))))) + +(defn GET [url] (request! "GET" url)) +(defn POST [url body] (request! "POST" url body)) +(defn PUT [url body] (request! "PUT" url body)) diff --git a/frontend/src/arthur/subs/playback.cljs b/frontend/src/arthur/subs/playback.cljs index 41f7102..c8b176e 100644 --- a/frontend/src/arthur/subs/playback.cljs +++ b/frontend/src/arthur/subs/playback.cljs @@ -19,3 +19,6 @@ (rf/reg-sub ::height (fn [db _] (get-in db [:clip :height]))) (rf/reg-sub ::audio (fn [db _] (get-in db [:clip :audio]))) (rf/reg-sub ::footage (fn [db _] (:footage db))) +;; The document's identity on the server. Not derived and not large — an id, a +;; name, the project version and the last thing a save or an open said. +(rf/reg-sub ::project (fn [db _] (:project db))) diff --git a/frontend/src/arthur/ui/shell.cljs b/frontend/src/arthur/ui/shell.cljs index 924ce42..a38667a 100644 --- a/frontend/src/arthur/ui/shell.cljs +++ b/frontend/src/arthur/ui/shell.cljs @@ -9,6 +9,7 @@ [arthur.db :as db] [arthur.events.footage :as footage] [arthur.events.playback :as pb] + [arthur.events.project :as project] [arthur.subs.playback :as sub] [arthur.subs.render :as render] [arthur.ui.player :as player] @@ -38,7 +39,9 @@ picture-fps @(rf/subscribe [::sub/display-fps]) current @(rf/subscribe [::render/scene-id]) expose @(rf/subscribe [::render/exposure]) - {:keys [id label loading? status manifest-path]} @(rf/subscribe [::sub/footage])] + {:keys [id label loading? status available chosen]} @(rf/subscribe [::sub/footage]) + {project-name :name :keys [busy?] project-status :status + project-seq :seq} @(rf/subscribe [::sub/project])] [:div.transport [:div.row [:button {:on-click #(rf/dispatch [::pb/toggle])} @@ -61,10 +64,15 @@ [:button {:class (when (= id @(rf/subscribe [::render/scene-id])) "on") :on-click #(rf/dispatch [::pb/select-scene id])} (or label "footage")]) - [:button {:disabled loading? + [:button {:disabled (or loading? (nil? chosen)) :on-click #(rf/dispatch [::footage/load])} (if loading? "loading…" "load frames")] [:span.gap] + ;; The document, over HTTP. Two buttons, because the round trip is the proof + ;; the model serialises and a proof nobody can run is not one. + [:button {:disabled busy? :on-click #(rf/dispatch [::project/save])} "save"] + [:button {:disabled busy? :on-click #(rf/dispatch [::project/open])} "open"] + [:span.gap] (doall (for [r db/rates] ^{:key r} @@ -100,11 +108,26 @@ [:button {:class (when (= r picture-fps) "on") :on-click #(rf/dispatch [::pb/set-picture-fps r])} (if (= r fps) "source" (str r))]))]) - [:label.source-path "source manifest " - [:input {:type "text" :value manifest-path :disabled loading? - :on-change #(rf/dispatch [::footage/set-manifest-path - (.. % -target -value)])}]] - (when status [:div.load-status status])])) + ;; The takes the SERVER holds, since step 9. There is no path to type any + ;; more: `./extract.sh` decodes a clip and `manage.py ingest_bundle` registers + ;; it, and from then on the frames are addressed rather than located. + [:label.source-path "footage " + [:select {:value (or chosen "") :disabled loading? + :on-change #(rf/dispatch [::footage/choose (.. % -target -value)])} + (if (seq available) + (doall (for [{:keys [id label frames fps]} available] + ^{:key id} + [:option {:value id} + (str label " · " frames "f @" fps)])) + [:option {:value ""} "nothing ingested"])] + [:button {:disabled loading? + :on-click #(rf/dispatch [::footage/refresh])} "refresh"]] + (when status [:div.load-status status]) + (when (or project-name project-status) + [:div.load-status + (when project-name (str "project " project-name + (when project-seq (str " r" project-seq)) " · ")) + project-status])])) (defn- stage [] ;; The canvas is the STAGE's size, and the stage is the clip's — not a constant diff --git a/frontend/test/arthur/domain/canon_test.cljs b/frontend/test/arthur/domain/canon_test.cljs new file mode 100644 index 0000000..5217742 --- /dev/null +++ b/frontend/test/arthur/domain/canon_test.cljs @@ -0,0 +1,65 @@ +(ns arthur.domain.canon-test + "A content address is only an address if the same inputs always write the same + bytes, so these are the ways that could stop being true." + (:require [cljs.test :refer [deftest is testing]] + [arthur.domain.canon :as canon])) + +(deftest key-order-does-not-change-the-text + ;; The reason this namespace exists. Two maps that are `=` must hash alike, and + ;; CLJS map iteration order is not part of `=`. + (is (= (canon/write {:b 2 :a 1 :c 3}) + (canon/write {:c 3 :a 1 :b 2}) + (canon/write (into {} [[:c 3] [:b 2] [:a 1]])))) + (is (= "{\"a\":1,\"b\":2,\"c\":3}" (canon/write {:a 1 :b 2 :c 3})))) + +(deftest the-text-is-valid-json-because-the-server-reads-two-fields-out-of-it + (let [text (canon/write {:detector "mediapipe" :version "1.0.1" + :params {:anchor-avg 2 :contour-avg 1} + :tracks ["outer" "inner"] :scale 16384}) + back (js->clj (js/JSON.parse text))] + (is (= "mediapipe" (get back "detector"))) + (is (= "1.0.1" (get back "version"))) + (is (= 2 (get-in back ["params" "anchor-avg"]))))) + +(deftest an-integral-double-is-written-without-a-point + ;; JS and Python disagree here — `1` against `1.0` — which is exactly why the + ;; server hashes the text it was sent instead of re-rendering the values. + (is (= "1" (canon/write 1.0))) + (is (= "1" (canon/write 1))) + (is (= "0.12" (canon/write 0.12))) + (is (= "-0.5" (canon/write -0.5))) + ;; And a double that needs all its digits keeps them: shortest round-trip, not + ;; a fixed precision, or two different takes would share a key. + (is (= "0.5625" (canon/write 0.5625))) + (is (= (str (/ 1 3)) (canon/write (/ 1 3))))) + +(deftest a-namespaced-key-keeps-its-namespace + (is (= "{\"roto/lips-outer\":1}" (canon/write {:roto/lips-outer 1})))) + +(deftest strings-are-escaped-by-a-json-writer-and-not-by-hand + (is (= "{\"source\":\"a \\\"quoted\\\" clip.mov\"}" + (canon/write {:source "a \"quoted\" clip.mov"}))) + (is (= "{\"source\":\"café.mov\"}" (canon/write {:source "café.mov"})))) + +(deftest nil-and-the-booleans-are-json-and-not-omitted + ;; Omitting a nil would make {:presence nil} and {} the same address, and those + ;; are a take with no absence data and a take whose absence data was forgotten. + (is (= "{\"a\":null,\"b\":false,\"c\":true}" (canon/write {:a nil :b false :c true}))) + (is (not= (canon/write {:presence nil}) (canon/write {})))) + +(deftest a-keyword-value-is-refused-rather-than-named + ;; Because then :mouth and "mouth" would address the same block, and the field + ;; the server reads would have a type that depended on the caller. + (is (thrown-with-msg? ExceptionInfo #"keyword VALUE" (canon/write {:role :eyes}))) + (is (thrown-with-msg? ExceptionInfo #"keyword VALUE" (canon/write {:roles [:eyes]})))) + +(deftest a-set-is-refused-because-it-has-no-one-text + (is (thrown-with-msg? ExceptionInfo #"sort it into a vector" (canon/write {:kept #{1 2}})))) + +(deftest nan-is-refused-because-it-would-cache-a-measurement-that-went-wrong + (is (thrown-with-msg? ExceptionInfo #"NaN or infinity" (canon/write {:scale js/NaN}))) + (is (thrown-with-msg? ExceptionInfo #"NaN or infinity" (canon/write {:scale js/Infinity})))) + +(deftest nesting-is-ordered-all-the-way-down + (is (= (canon/write {:a {:z 1 :y [{:q 1 :p 2}]}}) + (canon/write {:a {:y [{:p 2 :q 1}] :z 1}})))) diff --git a/frontend/test/arthur/domain/leaf_test.cljs b/frontend/test/arthur/domain/leaf_test.cljs new file mode 100644 index 0000000..d26c0de --- /dev/null +++ b/frontend/test/arthur/domain/leaf_test.cljs @@ -0,0 +1,110 @@ +(ns arthur.domain.leaf-test + "Leaf addressing has one property that matters above every other: nothing is + lost. A persistence layer that drops a field saves a document which comes back + subtly smaller, and the loss is discovered later, by somebody whose work is + already gone. + + So the assertion is exact equality on the real scenes — the frozen take in both + head modes, the hand-written demo, the swarm — rather than on a fixture, and + `scene-keys` makes a field added without a leaf fail loudly instead." + (:require [cljs.test :refer [deftest is testing]] + [arthur.demo :as demo] + [arthur.demo.swarm :as swarm] + [arthur.demo.take :as take] + [arthur.domain.channel :as ch] + [arthur.domain.leaf :as leaf])) + +(deftest every-real-scene-survives-the-split-exactly + (doseq [[label scene] [["the frozen take" @take/scene] + ["the locked take" @take/locked] + ["the hand-written demo" demo/scene] + ["the swarm" @swarm/scene]]] + (testing label + (is (= scene (leaf/scene :c1 (leaf/leaves :c1 scene))))))) + +(deftest the-leaves-are-the-paths-the-sync-design-names + (let [ls (leaf/leaves :c7 @take/scene)] + (is (contains? ls "clip/c7/timing")) + (is (contains? ls "clip/c7/stage")) + (is (contains? ls "clip/c7/source")) + (is (contains? ls "clip/c7/node/mouth")) + (is (contains? ls "clip/c7/channel/mouth/geom.pts")) + (is (contains? ls "clip/c7/channel/mouth-in/vis")) + (is (contains? ls "clip/c7/feature/eye-r")) + (is (contains? ls "clip/c7/group/eyes-1")) + (is (contains? ls "clip/c7/subject/face-1")) + ;; `:head`'s measured channels are written together by a freeze and replaced + ;; together by a re-freeze, so they are one leaf and not three. + (is (contains? ls "clip/c7/measured/head")) + (is (= 3 (count (get ls "clip/c7/measured/head")))))) + +(deftest a-node-and-its-channels-are-different-leaves + ;; The boundary that lets two people key different parts without meeting. A node + ;; leaf carries structure and no geometry. + (let [ls (leaf/leaves :c1 @take/scene) + n (get ls "clip/c1/node/mouth")] + (is (= {:id :mouth :name "mouth" :kind :poly :parent :head :z "a1"} n)) + (is (nil? (:channels n))) + (is (:animated? (get ls "clip/c1/channel/mouth/geom.pts"))))) + +(deftest a-field-with-no-leaf-is-refused-rather-than-dropped + ;; The invariant that keeps the round trip exact as the model grows: a scene + ;; field nobody gave a leaf to would save silently and come back missing. + (is (thrown-with-msg? ExceptionInfo #"no leaf to save it in" + (leaf/leaves :c1 (assoc @take/scene :sequences [])))) + (is (= leaf/scene-keys (set (keys (assoc @take/scene :name "x")))) + "scene-keys has drifted from what a frozen scene actually holds")) + +(deftest an-absent-field-stays-absent + ;; A scene with no fps must not come back with `:fps nil`. `=` is the test, and + ;; the demo scene is the case: it has no analysis record and its root has no + ;; channels. + (let [ls (leaf/leaves :c1 demo/scene)] + (is (not (contains? ls "clip/c1/source"))) + (is (not (contains? (leaf/scene :c1 ls) :analysis))) + (is (not (contains? (get-in (leaf/scene :c1 ls) [:nodes :root]) :channels))))) + +(deftest a-namespaced-id-is-one-path-segment + ;; docs/architecture.md draws a node as `:eye-r/iris`, and a leaf path is + ;; "/"-delimited, so the two have to be reconciled somewhere. + (let [scene {:nodes {:eye-r/iris {:id :eye-r/iris :kind :disc :parent nil :z "a1" + :channels {[:geom :radius] (ch/framed 2)}}}} + ls (leaf/leaves :c1 scene)] + (is (contains? ls "clip/c1/node/eye-r~iris")) + (is (= scene (leaf/scene :c1 ls)))) + ;; `(keyword "a~b")` rather than a literal: ~ is unquote in CLJS source. + (is (thrown-with-msg? ExceptionInfo #"cannot contain ~" + (leaf/segment (keyword "a~b"))))) + +(deftest another-clips-leaves-are-ignored-rather-than-merged + ;; A project's whole leaf map can be handed in for one clip, which is what makes + ;; a two-clip project one fetch. + (let [a (leaf/leaves :a @take/scene) + b (leaf/leaves :b demo/scene)] + (is (= @take/scene (leaf/scene :a (merge a b)))) + (is (= demo/scene (leaf/scene :b (merge a b)))))) + +;; --------------------------------------------------------------------------- +;; what a document may not contain + +(deftest a-placeholder-tier-2-key-is-refused + ;; `demo/swarm` names its blocks "swarm/pos", which is exactly the descriptive + ;; key content addressing replaced: a handle that only means something on the + ;; machine that made it. It is a fine load test and not a document. + (let [ps (leaf/problems (leaf/leaves :c1 @swarm/scene))] + (is (seq ps)) + (is (some #(re-find #"names tier 2 as \"swarm/pos\"" %) ps) (pr-str (first ps))))) + +(deftest a-frozen-clip-has-no-problems + (is (empty? (leaf/problems (leaf/leaves :c1 @take/scene)))) + (is (empty? (leaf/problems (leaf/leaves :c1 @take/locked))))) + +(deftest a-channel-leaf-for-a-node-that-is-not-there-is-named + (let [ls (dissoc (leaf/leaves :c1 @take/scene) "clip/c1/node/mouth")] + (is (some #(re-find #"node with no node leaf" %) (leaf/problems ls))))) + +(deftest a-property-with-path-punctuation-in-it-is-refused + (is (thrown-with-msg? + ExceptionInfo #"cannot contain . or /" + (leaf/leaves :c1 {:nodes {:a {:id :a :kind :poly :parent nil :z "a1" + :channels {[:geom :pts.x] (ch/framed [0 0])}}}})))) diff --git a/frontend/test/arthur/domain/project_test.cljs b/frontend/test/arthur/domain/project_test.cljs new file mode 100644 index 0000000..0a6de19 --- /dev/null +++ b/frontend/test/arthur/domain/project_test.cljs @@ -0,0 +1,146 @@ +(ns arthur.domain.project-test + "The done criterion of port-plan step 9, made mechanical. + + \"Round-tripping a project through the server is the proof the model + serialises\" — and the proof has to be an assertion rather than a look, because + the ways a document survives a round trip LOOKING correct are the interesting + ones: a frame key that came back a string, an absence mask that came back all + zeroes, a dense block read as the wrong element type. Every one of those plays + back as a slightly wrong performance rather than as an error. + + So what is compared is the OPS, frame for frame, through both evaluators, in + every frame order — the same machinery scene-test uses to hold `eval-frame` and + `resolver` to each other, which is the strictest statement available about two + scenes being the same scene. + + This runs the conversion the network runs — `JSON.parse(JSON.stringify(...))` — + and not the network. `clips/tests.py` puts the same document through Django, and + the browser suite drives the real thing end to end; what is asserted here is the + half that does not need a server to be wrong." + (:require [cljs.test :refer [deftest is testing]] + [arthur.demo.take :as take] + [arthur.domain.channel :as ch] + [arthur.domain.project :as project] + [arthur.domain.scene :as scene] + [arthur.flow.freeze :as freeze] + [arthur.support.ops :as ops])) + +(defn- wired + "A clip out and back, over a wire that is really only JSON." + [cid clip] + (project/load cid (js/JSON.parse (js/JSON.stringify (project/save cid clip))))) + +(def ^:private before (delay @take/frozen)) +(def ^:private after (delay (wired :c1 @before))) + +(deftest what-comes-back-is-a-valid-scene + (let [ps (scene/problems (:scene @after))] + (is (empty? ps) (pr-str ps)))) + +(deftest the-document-comes-back-equal + ;; Stronger than it needs to be and worth having: not merely equivalent, EQUAL. + ;; Any drift here is a field the codec is rewriting, and a field that is + ;; rewritten once is rewritten again on every save. + (is (= (:scene @before) (:scene @after)))) + +(deftest every-frame-resolves-to-the-same-ops-before-and-after + ;; The assertion. Both evaluators, both scenes, every frame order — so a block + ;; that came back with its offsets shifted, or a cursor that seeks differently + ;; over a rebuilt key map, has nowhere to hide. + (let [n (:frames (:scene @before)) + paths {"specification" [ops/specified ops/specified] + "playback" [ops/resolved ops/resolved] + "spec vs playback, after" [ops/specified ops/resolved]}] + (doseq [[label [f g]] paths + [order fs] (ops/orders n)] + (let [a (f (:scene @before) (:store @before)) + b (g (:scene @after) (:store @after))] + (testing (str label ", " order) + (doseq [frame fs] + (is (= (a frame) (b frame)) + (str label " disagrees at frame " frame " going " order)))))))) + +(deftest the-blocks-come-back-byte-for-byte + ;; A handle that names a sha256 has to name the bytes you actually hold. + (is (= (set (keys (:store @before))) (set (keys (:store @after))))) + (doseq [[k entry] (:store @before)] + (let [back (get (:store @after) k)] + (is (= (.-constructor (:data entry)) (.-constructor (:data back))) + (str k " came back as a different element type")) + (is (= (vec (array-seq (:data entry))) (vec (array-seq (:data back)))) + (str k " came back with different numbers")) + (is (= (some? (:state entry)) (some? (:state back))) + (str k " gained or lost its state mask"))))) + +(deftest the-locked-take-round-trips-too + ;; The other head mode, because it is the one whose `:head` channels are FRAMED + ;; rather than dense: a codec that only handled dense channels would pass + ;; everything above and lose the locked take's identity transform. + (let [locked {:scene @take/locked :store @take/store} + back (wired :c1 locked) + a (ops/resolved (:scene locked) (:store locked)) + b (ops/resolved (:scene back) (:store back))] + (is (= (:scene locked) (:scene back))) + (doseq [frame (range 0 take/frames 7)] + (is (= (a frame) (b frame)) (str "frame " frame))))) + +;; --------------------------------------------------------------------------- +;; the state masks +;; +;; freeze-test's presence assertions, re-run on the other side of the wire. This +;; is the part most likely to survive looking correct: a mask lost in transit +;; shows up as a part that is drawn on a frame it was not observed on, which is a +;; pose invented out of its neighbours rather than a blank or an error. + +(def ^:private windows + {:eye-r (set (range 10 15)) + :eye-l (set (range 20 25)) + :brow-r (set (range 30 35)) + :brow-l (set (range 40 45))}) + +(def ^:private gappy + (delay (freeze/clip (assoc take/params :name "gappy") + (assoc @take/measured + :presence + (into {} (map (fn [[id gap]] + [id (mapv #(not (contains? gap %)) + (range take/frames))])) + windows))))) + +(deftest an-absence-mask-survives-the-wire + (let [back (wired :c1 @gappy) + at (fn [clip id path f] + (ch/value-at (get-in (:scene clip) [:nodes id :channels path]) + f (:store clip))) + ;; Every dense track of the eye, iris, brow and brow-position blocks, and + ;; the feature whose gap it must follow — the same table + ;; `each-dense-track-follows-its-own-features-presence` pins. + tracks [[:eye-r [:geom :pts] :eye-r] + [:eye-r-in [:geom :pts] :eye-r] + [:eye-l [:geom :pts] :eye-l] + [:eye-l-in [:geom :pts] :eye-l] + [:iris-r [:xform :pos] :eye-r] + [:iris-l [:xform :pos] :eye-l] + [:brow-r [:geom :pts] :brow-r] + [:brow-l [:geom :pts] :brow-l] + [:brow-r [:xform :pos] :brow-r] + [:brow-l [:xform :pos] :brow-l]]] + (doseq [[id path owner] tracks + [feature gap] windows + f gap] + (if (= feature owner) + (is (ch/nothing? (at back id path f)) + (str id " " path " is present at " f " after the round trip, with " + feature " occluded")) + (is (not (ch/nothing? (at back id path f))) + (str id " " path " follows " feature "'s gap at frame " f + " after the round trip")))))) + +(deftest an-occluded-feature-is-still-not-drawn-after-the-wire + ;; Presence is not visibility, on the far side too: the node is dropped from the + ;; frame rather than hidden, and its partner is not. + (let [back (wired :c1 @gappy) + drawn (into #{} (map :node) ((scene/resolver (:scene back) (:store back)) 12))] + (is (not (contains? drawn :eye-r))) + (is (contains? drawn :eye-l)) + (is (contains? drawn :mouth)))) diff --git a/frontend/test/arthur/domain/scene_test.cljs b/frontend/test/arthur/domain/scene_test.cljs index b783a42..95dba73 100644 --- a/frontend/test/arthur/domain/scene_test.cljs +++ b/frontend/test/arthur/domain/scene_test.cljs @@ -13,7 +13,8 @@ [arthur.domain.node :as node] [arthur.domain.palette :as pal] [arthur.domain.raster :as raster] - [arthur.domain.scene :as scene])) + [arthur.domain.scene :as scene] + [arthur.support.ops :as ops])) (defn- poly [id parent z pts color & [extra]] (merge {:id id :kind :poly :parent parent :z z @@ -27,9 +28,7 @@ (defn- ids-at [scene f] (mapv :node (scene/eval-frame scene f))) -(defn- pts-of [op] - (mapv (fn [i] [(aget (:pts op) (* 2 i)) (aget (:pts op) (inc (* 2 i)))]) - (range (:n op)))) +(def ^:private pts-of ops/points) ;; ---- structure ---- @@ -264,22 +263,16 @@ ;; z paths, holds a cursor per channel and reuses one point buffer per node, and ;; every one of those is a way to be subtly wrong on some frames and not others ;; — which presents as a bad take rather than as an error. - (let [s demo/scene - res (scene/resolver s) - n (:frames s) - snapshot (fn [ops] - (mapv (fn [op] - (cond-> (dissoc op :pts :i) - (:pts op) (assoc :points (pts-of op)))) - ops))] - (doseq [[label fs] [["forward" (range n)] - ["backward" (reverse (range n))] - ["random access" [0 71 5 5 40 6 70 1 23 24 25 24 23 0 47 48]] - ["every third" (range 0 n 3)]]] + ;; The frame orders and the snapshot live in `arthur.support.ops`, because the + ;; same comparison is what proves a scene survived the server — see + ;; flow/project-test. + (let [s demo/scene + spec (ops/specified s nil) + fast (ops/resolved s nil)] + (doseq [[label fs] (ops/orders (:frames s))] (testing label (doseq [f fs] - (is (= (snapshot (scene/eval-frame s f)) (snapshot (res f))) - (str label " at frame " f))))))) + (is (= (spec f) (fast f)) (str label " at frame " f))))))) (deftest the-resolver-reuses-one-buffer-per-node ;; At 30fps per-frame allocation is the only thing that will make this stutter, diff --git a/frontend/test/arthur/domain/sha256_test.cljs b/frontend/test/arthur/domain/sha256_test.cljs new file mode 100644 index 0000000..5b7bbe0 --- /dev/null +++ b/frontend/test/arthur/domain/sha256_test.cljs @@ -0,0 +1,51 @@ +(ns arthur.domain.sha256-test + "The digests below came out of Python's `hashlib`, which is the implementation + this one has to agree with: the server recomputes the key of every block and + every analysis it is handed and refuses a mismatch, so a disagreement between + the two languages is an upload that fails with nothing wrong. + + The lengths are chosen, not arbitrary. 55 and 56 bytes are either side of the + point where the length field no longer fits in the first block, and 63/64 and + 119/120 are the block boundaries themselves. A hand-written SHA-256 that is + wrong is almost always wrong exactly there, or wrong about sign — see the + namespace docstring — and a sign bug is invisible on short inputs." + (:require [cljs.test :refer [deftest is testing]] + [arthur.domain.sha256 :as sha])) + +(defn- a [n] (apply str (repeat n "a"))) + +(deftest the-digests-are-the-ones-hashlib-gives + (doseq [[input expect] + [["" "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"] + ["abc" "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"] + ["abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" + "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"] + [(a 55) "9f4390f8d30c2dd92ec9f095b65e2b9ae9b0a925a5258e241c9f1e910f734318"] + [(a 56) "b35439a4ac6f0948b6d6f9e3c6af0f5f590ce20f1bde7090ef7970686ec6738a"] + [(a 63) "7d3e74a05d7db15bce4ad9ec0658ea98e3f06eeecf16b4c6fff2da457ddc2f34"] + [(a 64) "ffe054fe7ae0cb6dc65c3af9b61d5209f439851db43d0ba5997337df154668eb"] + [(a 119) "31eba51c313a5c08226adf18d4a359cfdfd8d2e816b13f4af952f7ea6584dcfb"] + [(a 120) "2f3d335432c70b580af0e8e1b3674a7c020d683aa5f73aaaedfdc55af904c21c"] + ["arthur" "befa156f0283eb0062beb9b86e16a413e1cf8c5135e5518d5c4fa321ce0c7b6b"]]] + (is (= expect (sha/of-string input)) + (str (count input) " bytes")))) + +(deftest a-non-ascii-descriptor-hashes-as-utf-8 + ;; A descriptor holds source filenames, so this is reachable from a clip called + ;; "café.mov" and not a curiosity. UTF-16 code units would give another answer. + (is (= "3392aa2b9d70af3b1de0c4d4f7bc6fcd02e1df8079263bb7cda7b1b71704a90a" + (sha/of-string "café — naïve ✓")))) + +(deftest raw-bytes-hash-too-because-a-block-is-bytes + (is (= "40aff2e9d2d8922e47afd4648e6967497158785fbd1da870e7110266bf944880" + (sha/of-bytes (js/Uint8Array. (into-array (range 256))))))) + +(deftest a-key-says-which-algorithm-produced-it + (is (= (str "sha256:" (sha/of-string "abc")) (sha/key-of "abc"))) + ;; The point of the prefix: a key cannot be mistaken for the descriptive + ;; placeholder — "take/geom" — that content addressing replaced. + (is (re-matches #"sha256:[0-9a-f]{64}" (sha/key-of "abc")))) + +(deftest one-changed-bit-changes-the-key + ;; The whole property everything above this file relies on, asserted once. + (is (not= (sha/of-string "anchor-avg:2") (sha/of-string "anchor-avg:3")))) diff --git a/frontend/test/arthur/domain/wire_test.cljs b/frontend/test/arthur/domain/wire_test.cljs new file mode 100644 index 0000000..f3592e7 --- /dev/null +++ b/frontend/test/arthur/domain/wire_test.cljs @@ -0,0 +1,91 @@ +(ns arthur.domain.wire-test + "What the wire format has to carry, stated as the things JSON would have lost." + (:require [cljs.test :refer [deftest is testing]] + [arthur.demo.take :as take] + [arthur.domain.channel :as ch] + [arthur.domain.leaf :as leaf] + [arthur.domain.wire :as wire])) + +(defn- round [v] (wire/decode (wire/encode v))) +(defn- round-json [v] (wire/decode-json (wire/encode-json v))) + +(deftest a-frame-key-comes-back-a-number + ;; THE reason this is transit. Keys are a map by FRAME, and `{"0" v}` is not + ;; `{0 v}`: `value-at` would find no key at frame 0 and the part would hold its + ;; first pose forever, on a document that looked fine. + (let [c (ch/keyed {0 true 4 false 12 true})] + (is (= c (round c))) + (is (every? number? (keys (:keys (round c))))) + (is (= true (ch/value-at (round c) 13))))) + +(deftest an-id-comes-back-a-keyword + (is (= {:id :mouth-in :kind :poly :parent :mouth :z "a2"} + (round {:id :mouth-in :kind :poly :parent :mouth :z "a2"}))) + (is (keyword? (:id (round {:id :mouth}))))) + +(deftest a-channels-property-vector-survives-as-a-map-key + ;; `:channels` is keyed by `[:geom :pts]`, and a format with string keys only + ;; would have to invent an encoding for that — which is what leaf paths do for + ;; addressing and what the wire format must NOT have to do for values. + (let [m {[:geom :pts] (ch/framed [0 1]) [:vis] (ch/framed true)}] + (is (= m (round m))) + (is (vector? (first (keys (round m))))))) + +(deftest a-keyed-channel-comes-back-a-plain-map-and-not-a-sorted-one + ;; Transit loses sortedness, which is why `domain/channel` says keys are a PLAIN + ;; map and builds the sorted index at read time. Asserted so that nobody + ;; "improves" the codec into a sorted map that works until the first round trip. + (let [c (round (ch/keyed (into {} (map (juxt identity str)) (range 20))))] + (is (map? (:keys c))) + (is (not (sorted? (:keys c)))) + (is (= (vec (range 20)) (ch/frames c))))) + +(deftest the-numbers-come-back-as-themselves + (is (= {:a 0.5625 :b -1 :c 1e-9 :d 0 :e 16384} + (round {:a 0.5625 :b -1 :c 1e-9 :d 0 :e 16384})))) + +(deftest an-empty-vector-stays-an-empty-vector + ;; `:over` is present and empty by design — port-plan step 2 scope — and + ;; `channel/check-unimplemented!` throws on a NON-empty one, so a codec that + ;; turned `[]` into nil or into `[nil]` would either lose the field or refuse to + ;; play the document back. + (is (= {:over []} (round {:over []}))) + (is (= [] (:over (round (ch/keyed {0 1})))))) + +(deftest a-whole-leaf-map-round-trips-through-parsed-json + ;; What a save actually does: transit, then parsed so the column holds JSON. + (let [ls (leaf/leaves :c1 @take/scene)] + (is (= ls (into {} (map (fn [[p v]] [p (round-json v)])) ls))))) + +;; --------------------------------------------------------------------------- +;; the bytes + +(deftest a-block-comes-back-byte-for-byte + (doseq [[label array] [["int16" (js/Int16Array. #js [0 1 -1 32767 -32768 12345])] + ["float32" (js/Float32Array. #js [0 1.5 -0.25 1e-8])] + ["uint8" (js/Uint8Array. #js [0 1 255])]]] + (testing label + (let [back (wire/typed label (wire/base64 array))] + (is (= (vec (array-seq array)) (vec (array-seq back)))) + (is (= (.-constructor array) (.-constructor back))))))) + +(deftest a-real-sized-block-does-not-overflow-the-stack + ;; `String.fromCharCode.apply` with a few hundred thousand arguments throws a + ;; RangeError from inside a save, pointing nowhere near the array that caused it. + ;; A 600-frame geometry block is that size, so the chunking is load-bearing. + (let [big (js/Int16Array. 600000)] + (dotimes [i 600000] (aset big i (- (mod i 65536) 32768))) + (let [back (wire/typed "int16" (wire/base64 big))] + (is (= 600000 (.-length back))) + (is (= (aget big 599999) (aget back 599999)))))) + +(deftest a-view-into-a-block-encodes-only-its-own-bytes + ;; `dense-at` hands out SUBARRAYS, so a caller can reach this with a view whose + ;; byteOffset is not zero. Encoding the whole underlying buffer would silently + ;; store the neighbouring tracks too. + (let [whole (js/Int16Array. #js [1 2 3 4 5 6]) + view (.subarray whole 2 4)] + (is (= [3 4] (vec (array-seq (wire/typed "int16" (wire/base64 view)))))))) + +(deftest an-unknown-element-type-is-refused + (is (thrown-with-msg? ExceptionInfo #"int16" (wire/typed "float64" "AA==")))) diff --git a/frontend/test/arthur/flow/address_test.cljs b/frontend/test/arthur/flow/address_test.cljs new file mode 100644 index 0000000..0e4327b --- /dev/null +++ b/frontend/test/arthur/flow/address_test.cljs @@ -0,0 +1,217 @@ +(ns arthur.flow.address-test + "Content addressing has one failure mode in each direction, and reading the + table in `flow/address` will catch neither. + + A KNOB MISSING from a block's table gives two different sets of bytes the same + name. The symptom is not an error: it is a slider that appears to do nothing + until something else forces a reload, and then does everything at once. That is + the bug docs/architecture.md describes as \"the tool got worse\" with no event to + attach it to. + + A KNOB TOO MANY throws away a good bake on an unrelated tweak. Invisible while + everything is fast, and the reason baking exists once it is not. + + So the table is not trusted. `every-knob-that-moves-a-block-renames-it` freezes + the same synthetic take once per knob and asserts the biconditional per block: + the bytes changed if and only if the key changed. It is the same shape of + assertion as `each-dense-track-follows-its-own-features-presence` in + freeze-test, for the same reason — a hand-maintained mapping needs a test that + fails when the hand is wrong." + (:require [cljs.test :refer [deftest is testing]] + [arthur.domain.params :as params] + [arthur.domain.sha256 :as sha] + [arthur.flow.address :as address] + [arthur.flow.freeze :as freeze] + [arthur.flow.take :as take] + [arthur.synth :as synth])) + +;; Short on purpose: the property is about which inputs reach which block, and it +;; holds at any length. Twenty-four freezes of the 229-frame take would be a +;; minute of test time to assert nothing extra. +(def ^:private frames 48) +(def ^:private fps 30) + +(def ^:private dense-track (delay (synth/synth-dense frames {:seed 3}))) + +(defn- params-at [overrides] + (merge take/knobs + {:name "addr" :fps fps :aspect 1 :stage [320 200] + :expose 1 :head :as-filmed} + overrides)) + +(defn- freeze-at + "Measure AND freeze at these settings, which is what a re-freeze does: several + of the knobs act in stage 4, so a fixture that only re-froze would hold most of + them still and pass whatever the table said." + [overrides] + (let [p (params-at overrides) + p (assoc p :analysis (address/analysis + (merge {:detector "synth" :version "mulberry32" + :seed 3 :frames frames :fps (:fps p) + :aspect (:aspect p)} + (:detector overrides))))] + (freeze/clip p (take/measure p {:dense @dense-track})))) + +(defn- bytes-of [{:keys [data state]}] + (str (sha/of-bytes (js/Uint8Array. (.-buffer data))) + "/" (if state (sha/of-bytes state) "-"))) + +(defn- by-role + "role -> {:key :bytes}. The role comes out of the block's own descriptor, which + is how a block is identified across two freezes that renamed it." + [clip] + (into {} + (map (fn [[k entry]] + [(get (js->clj (js/JSON.parse (:descriptor entry))) "role") + {:key k :bytes (bytes-of entry)}])) + (:store clip))) + +(def ^:private base (delay (by-role (freeze-at {})))) + +;; The knobs whose effect is upstream of `flow/take/measure`: they are read by +;; `measure/interior`, which runs over SOURCE PIXELS in events/footage before any +;; of this. A synthetic fixture has no pixels to move, so the biconditional cannot +;; be asserted for them here and `the-teeth-table-is-asserted-at-the-descriptor` +;; asserts the half that is assertable instead. +(def ^:private pixel-knobs + #{:cavity-erode :tongue-reject :blob-grow :top-bias :teeth-verts :min-area + :teeth-on :teeth-smooth}) + +(defn- bump + "A different, still valid value for a knob — and a LARGE difference, which is + not laziness about picking one. + + Several of these knobs feed `condition/quantize-snap`, which rounds onto a grid: + gaze and brow cells, the blink hold. A 3% change to `gaze-gain` moves every + sample inside the cell it was already in, so the bytes come out identical and + the biconditional reports the knob as an input the block does not have — which + is true of that perturbation and false of the knob. A 75% change crosses cells. + The first version of this test asserted the fixture's resolution rather than the + invalidation table." + [id] + (let [{:keys [type default] must-even? :even?} (get params/definitions id)] + (cond + (and (= :integer type) must-even?) (+ default 2) + (= :integer type) (+ default 1) + (zero? default) 0.5 + :else (* default 1.75)))) + +(deftest every-knob-that-moves-a-block-renames-it + (doseq [id (sort (remove pixel-knobs (keys params/definitions)))] + (let [moved (by-role (freeze-at {id (bump id)}))] + (testing (str id " " (get params/defaults id) " -> " (bump id)) + (is (= (set (keys @base)) (set (keys moved))) + "a knob changed which blocks exist at all") + (doseq [role (sort (keys @base))] + (let [a (get @base role) + b (get moved role)] + (is (= (not= (:bytes a) (:bytes b)) + (not= (:key a) (:key b))) + (str role ": bytes " (if (= (:bytes a) (:bytes b)) "same" "differ") + " but key " (if (= (:key a) (:key b)) "same" "differs") + " — " (if (= (:key a) (:key b)) + (str "add " id " to block-knobs for " (pr-str role)) + (str "remove " id " from block-knobs for " (pr-str role))))))))))) + +(deftest the-teeth-table-is-asserted-at-the-descriptor + ;; Every knob the teeth block declares must reach its key. The other half — that + ;; each one also moves its bytes — needs real pixels, because the crop, the otsu + ;; threshold and the radial contour all happen in `measure/interior` above the + ;; stage this fixture starts at. Stated rather than quietly skipped. + (let [spec {:role "teeth" :analysis "sha256:0" :params params/defaults + :tracks ["contour"] :features [:teeth] + :observation nil + :layout {:type "int16" :scale 16384 :stride 20 :frames 48 :tracks 1}} + base (:key (address/block spec))] + (doseq [id (get address/block-knobs "teeth")] + (is (not= base (:key (address/block (assoc-in spec [:params id] (bump id))))) + (str id " does not reach the teeth block's key"))))) + +(deftest a-block-whose-role-has-no-table-is-refused + ;; The table cannot be forgotten for a new block: without an entry there is no + ;; answer to "which knobs rename this", and a key that never changes is worse + ;; than no key at all. + (is (thrown-with-msg? + ExceptionInfo #"no invalidation table" + (address/block {:role "plate" :analysis "sha256:0" :params {} :tracks [] + :features [] :observation nil :layout {}})))) + +(deftest a-knob-the-freeze-was-not-handed-is-refused + (is (thrown-with-msg? + ExceptionInfo #"knob this block's bytes depend on" + (address/block {:role "geom" :analysis "sha256:0" + :params {:anchor-avg 2} :tracks ["outer"] + :features [:mouth] :observation nil :layout {}})))) + +;; --------------------------------------------------------------------------- +;; the detector version + +(deftest the-detector-version-reaches-every-block + ;; THE requirement, and the reason a key is a hash over inputs rather than over + ;; bytes: after a model upgrade the old blocks must be UNREACHABLE, not merely + ;; different. Every block, because a version in one key and not another is the + ;; same bug with a smaller blast radius. + (let [upgraded (by-role (freeze-at {:detector {:version "1.0.2"}}))] + (is (= (set (keys @base)) (set (keys upgraded)))) + (doseq [role (sort (keys @base))] + (is (not= (:key (get @base role)) (:key (get upgraded role))) + (str role " survived a detector upgrade under its old name")) + ;; And nothing was recomputed: same numbers, new name. That is what makes + ;; this a cache-key change and not a re-analysis. + (is (= (:bytes (get @base role)) (:bytes (get upgraded role))))))) + +(deftest an-analysis-without-a-version-is-refused + (is (thrown-with-msg? ExceptionInfo #"detector's VERSION" + (address/analysis {:detector "mediapipe" :frames 1}))) + (is (thrown-with-msg? ExceptionInfo #"detector's VERSION" + (address/analysis {:version "1.0.1" :frames 1})))) + +(deftest the-analysis-id-is-a-hash-of-its-own-descriptor + (let [a (address/analysis {:detector "synth" :version "mulberry32" :seed 1 + :frames 229 :fps 30 :aspect 1})] + (is (= (:id a) (sha/key-of (address/analysis-descriptor a)))) + (is (sha/key? (:id a))))) + +;; --------------------------------------------------------------------------- +;; the rest of what a key is made of + +(deftest the-same-inputs-give-the-same-keys + ;; Twice, independently — not the same clip read twice. Map order, `delay`s and + ;; `Math.round` are all places a second run could differ, and a key that is not + ;; reproducible addresses nothing. + (is (= (into {} (map (juxt key (comp :key val))) (by-role (freeze-at {}))) + (into {} (map (juxt key (comp :key val))) (by-role (freeze-at {})))))) + +(deftest a-key-is-the-hash-of-the-descriptor-stored-beside-it + ;; What the server checks on upload, checked here too, because if it can only + ;; fail on the wire it fails as a 409 with nothing wrong. + (doseq [[k entry] (:store (freeze-at {}))] + (is (sha/key? k)) + (is (= k (sha/key-of (:descriptor entry))) + (str "the descriptor stored under " k " is not what that key hashes")))) + +(deftest a-presence-gap-renames-only-the-blocks-that-read-it + ;; The observation digest is per block. A brow occlusion must not rename the + ;; mouth's block: that would be correct and useless, throwing away every bake in + ;; the clip on one feature's gap. + (let [gap (set (range 10 15)) + with (by-role (freeze/clip + (assoc (params-at {}) :analysis + (address/analysis {:detector "synth" :version "mulberry32" + :seed 3 :frames frames :fps fps :aspect 1})) + (assoc (take/measure (params-at {}) {:dense @dense-track}) + :presence {:brow-r (mapv #(not (contains? gap %)) + (range frames))})))] + (is (not= (:key (get @base "brows")) (:key (get with "brows")))) + (is (not= (:key (get @base "brow-pos")) (:key (get with "brow-pos")))) + (doseq [role ["geom" "eyes" "iris-pos" "head-pos" "head-rot" "head-scale"]] + (is (= (:key (get @base role)) (:key (get with role))) + (str role " was renamed by a gap in a brow"))))) + +(deftest the-clips-name-and-stage-are-not-in-any-key + ;; Tier 1 facts. Two clips of one take under two names, at two stage sizes, are + ;; the same analysis over the same bytes, and sharing them is the return on + ;; addressing. A name in the key would make every rename a re-freeze. + (let [other (by-role (freeze-at {:name "another take" :stage [640 480]}))] + (doseq [role (sort (keys @base))] + (is (= (:key (get @base role)) (:key (get other role))) role)))) diff --git a/frontend/test/arthur/flow/freeze_test.cljs b/frontend/test/arthur/flow/freeze_test.cljs index 7ab1ab2..1db91e0 100644 --- a/frontend/test/arthur/flow/freeze_test.cljs +++ b/frontend/test/arthur/flow/freeze_test.cljs @@ -33,6 +33,11 @@ (defn- node [id] (get-in @scene* [:nodes id])) (defn- chan [id path] (get-in (node id) [:channels path])) +(defn- block-of + "The typed array a dense channel reads, through its own handle." + [ch] + (:data (get @store (:store (:dense ch))))) + (defn- pts-at "The mouth's [:geom :pts] at frame f, as a flat CLJS vector." [id f] @@ -127,8 +132,11 @@ (doseq [path [[:xform :pos] [:xform :rot] [:xform :scale]]] (is (nil? (:scale (:dense (get-in (node :head) [:measured path])))) (str path " should be plain Float32"))) - (is (instance? js/Int16Array (:data (get @store "take/geom")))) - (is (instance? js/Float32Array (:data (get @store "take/head-pos"))))) + ;; Reached through the channel's own handle rather than by naming a key. A key + ;; is a hash now, so a test that wrote one out would be asserting a digest. + (is (instance? js/Int16Array (block-of (chan :mouth [:geom :pts])))) + (is (instance? js/Float32Array + (block-of (get-in (node :head) [:measured [:xform :pos]]))))) (deftest a-value-past-the-block-s-range-is-refused-rather-than-saturated ;; Saturating reads as articulation flattening off at the extremes — a bad @@ -305,10 +313,17 @@ ;; asking for a different stage moves and rescales the same geometry rather than ;; re-measuring anything. (let [big (freeze/clip (assoc take/params :stage [640 480] :name "big") - @take/measured)] + @take/measured) + key-of (fn [sc] (:store (:dense (get-in sc [:nodes :mouth :channels [:geom :pts]]))))] (is (= [640 480] [(:width (:scene big)) (:height (:scene big))])) - (is (= (vec (array-seq (:data (get @store "take/geom")))) - (vec (array-seq (:data (get (:store big) "big/geom"))))) + ;; Stronger than it was, and for free: the stage is not an input to tier 2, so + ;; the two clips do not merely hold equal bytes — they name the SAME BLOCK, and + ;; a stage change cannot invalidate a bake. The clip's name is not an input + ;; either, which is why "big" and "take" still agree. + (is (= (key-of @scene*) (key-of (:scene big))) + "a different stage is a different document over the same tier 2") + (is (= (vec (array-seq (:data (get @store (key-of @scene*))))) + (vec (array-seq (:data (get (:store big) (key-of (:scene big))))))) "the geometry is the same numbers at either stage size") (is (not= (:value (get-in (:scene big) [:nodes :face :channels [:xform :scale]])) (:value (chan :face [:xform :scale])))))) diff --git a/frontend/test/arthur/support/ops.cljs b/frontend/test/arthur/support/ops.cljs new file mode 100644 index 0000000..6f5cf06 --- /dev/null +++ b/frontend/test/arthur/support/ops.cljs @@ -0,0 +1,59 @@ +(ns arthur.support.ops + "Comparing two evaluations of a scene, frame for frame. + + `domain/scene` has two evaluators on purpose — `eval-frame` is the + specification and `resolver` is what playback uses — and scene-test's central + assertion is that they agree in forward, backward and random frame order. + Step 9 needs the same comparison for a different question: that a scene which + has been through the server produces the same ops as the one that went in. + + Shared rather than copied, because the interesting part is not the equality — + it is the FRAME ORDERS. The resolver holds a cursor per channel and reuses one + point buffer per node, so it can agree on a forward pass and disagree on a + scrub, and a copy of this list that forgot 'backward' would test the easy half. + + `snapshot` is what makes ops comparable at all: a resolved op carries `:pts` as + a VIEW into a reused buffer, so two ops from different frames can be `=` while + naming the same array, and holding one and then asking for the next frame + changes what the first one says. Reading the points out is what pins the frame." + (:require [arthur.domain.palette :as pal] + [arthur.domain.scene :as scene])) + +(defn points + "An op's points as a vector of [x y], read out of its buffer." + [op] + (mapv (fn [i] [(aget (:pts op) (* 2 i)) (aget (:pts op) (inc (* 2 i)))]) + (range (:n op)))) + +(defn snapshot + "Ops -> comparable data. `:i` goes too: it is the draw-order index, and it is a + function of the scene rather than of the frame." + [ops] + (mapv (fn [op] + (cond-> (dissoc op :pts :i) + (:pts op) (assoc :points (points op)))) + ops)) + +(defn orders + "The frame orders any two evaluators have to agree in, over `n` frames. + + Random access is a fixed list rather than a shuffle: a failure that only + reproduces one run in five is worse than no test." + [n] + [["forward" (range n)] + ["backward" (reverse (range n))] + ["random access" (filterv #(< % n) [0 71 5 5 40 6 70 1 23 24 25 24 23 0 47 48])] + ["every third" (range 0 n 3)]]) + +(defn specified + "(fn [f] -> snapshot) through `eval-frame`, the specification." + ([scene store] (specified scene store pal/index-of)) + ([scene store palette] + (fn [f] (snapshot (scene/eval-frame scene f store palette))))) + +(defn resolved + "(fn [f] -> snapshot) through `resolver`, the playback path." + ([scene store] (resolved scene store pal/index-of)) + ([scene store palette] + (let [res (scene/resolver scene store palette)] + (fn [f] (snapshot (res f)))))) diff --git a/frontend/test/browser/take.mjs b/frontend/test/browser/take.mjs index a595ffb..6337ff1 100644 --- a/frontend/test/browser/take.mjs +++ b/frontend/test/browser/take.mjs @@ -1,5 +1,7 @@ -// Drives a real Chrome at the running dev server and checks that the frozen -// take is a MOVING MOUTH on a canvas. +// Drives a real Chrome at the running server and checks two things that no +// assertion in cljs.test can: that the frozen take is a MOVING MOUTH on a canvas, +// and that a document which has been through the server comes back as the same +// picture. // // This exists because port-plan step 5 is the first step whose done-criterion is // a picture, and a picture cannot be asserted from cljs.test. A take that @@ -11,10 +13,13 @@ // nothing: `node --experimental-websocket` has a global WebSocket and // `--headless=new --remote-debugging-port=N` is the whole of the other side. // -// cd frontend -// mise exec -- npx shadow-cljs compile app -// mise exec -- npx shadow-cljs watch app # or `server`, for :dev-http -// mise exec -- node --experimental-websocket test/browser/take.mjs +// Since step 9 the page is Django's, so the suite needs the backend up rather than +// shadow-cljs's `:dev-http`, which is gone. ARTHUR_URL is unchanged because the +// port is unchanged — 8778 was never 8777, which is still the old JS tool's. +// +// mise exec -- python manage.py runserver 8778 # from the REPO ROOT +// cd frontend && mise exec -- npx shadow-cljs watch app +// cd frontend && mise exec -- node --experimental-websocket test/browser/take.mjs // // Writes a PNG per sampled frame into test/browser/out/ so that "it drew // something" can be checked by eye as well as by pixel count. @@ -198,6 +203,11 @@ const SEEK = (f) => `(() => { return el.value; })()`; +// Everything the page has to say about loading, saving and opening. Read off the +// page rather than out of app-db, for the same reason the playhead is: what the +// page SHOWS is what a person would check. +const STATUS = `[...document.querySelectorAll('.load-status')].map((d) => d.textContent).join(' | ')`; + const CLICK = (label) => `(() => { const b = [...document.querySelectorAll('.transport button')] .find((b) => b.textContent.trim() === ${JSON.stringify(label)}); @@ -312,6 +322,71 @@ async function main() { `${new Set(during.map((p) => p.hash)).size} distinct of ${during.length}`); await page.shot('take-playing'); + // --- it round-trips through the server --- + // + // THE DONE CRITERION of port-plan step 9, end to end: tier 1 over HTTP, tier 2 + // as content-addressed blocks, and the same frames on the far side. The ops are + // compared frame for frame in arthur.domain.project-test, which is the strict + // version of this; what only a browser can check is that the whole path — the + // CSRF header, the block upload, the leaf write, the reload, the typed arrays + // rebuilt out of base64 — draws the same pixels at the end of it. + async function statusMatching(pattern, tries = 120) { + for (let i = 0; i < tries; i++) { + const text = await page.eval(STATUS); + if (pattern.test(text)) return text; + await sleep(250); + } + return null; + } + async function sample(frames) { + const out = []; + for (const f of frames) { + await page.eval(SEEK(f)); + await sleep(120); + out.push(await page.eval(PROBE)); + } + return out; + } + + const FRAMES = [0, 10, 28, 80, 160]; + check(await page.eval(CLICK('take')), 'back to the take, for the round trip'); + await sleep(150); + const sent = await sample(FRAMES); + + check(await page.eval(CLICK('save')), 'save is clickable'); + const saved = await statusMatching(/saved r\d+/); + check(saved !== null, 'the document saves', saved ?? (await page.eval(STATUS))); + // Eleven blocks the first time. The COUNT is not asserted — that is a fact + // about the freeze, not about saving — but that some went up is. + check(/· [1-9]\d* blocks?/.test(saved ?? ''), 'and its tier 2 went with it', saved ?? ''); + + // Again, unchanged. Content addressing means the second save uploads nothing + // and rewrites nothing: this is the assertion that the keys are stable across + // two independent freezes of the same take, and that an unchanged leaf keeps + // its version rather than being rewritten. + check(await page.eval(CLICK('save')), 'save is clickable again'); + const resaved = await statusMatching(/saved r\d+ · 0 leaves · 0 blocks/); + check(resaved !== null, 'saving an unchanged document writes nothing', + resaved ?? (await page.eval(STATUS))); + + check(await page.eval(CLICK('open')), 'open is clickable'); + const opened = await statusMatching(/opened /); + check(opened !== null, 'the project opens', opened ?? (await page.eval(STATUS))); + + const back = await sample(FRAMES); + await page.shot('take-round-trip'); + check(back.every((p) => p.drawn > 200), 'the reopened take draws', + back.map((p) => p.drawn).join(',')); + check(FRAMES.every((f, i) => sent[i].hash === back[i].hash), + 'every sampled frame is the same picture after the round trip', + FRAMES.filter((f, i) => sent[i].hash !== back[i].hash).join(',') || 'all identical'); + check(back[1].toneSet.includes(MOUTH_DARK), + 'and the open mouth still has an interior on the far side'); + // The reopened clip is not one of the built-ins: this is the document that came + // back from the server, not the one that was in the page all along. + check(!back[0].scene.includes('take'), 'the picture is the reopened document', + JSON.stringify(back[0].scene)); + check(page.logs.length === 0, 'no errors on the console', page.logs.slice(0, 3).join(' | ')); } finally { diff --git a/manage.py b/manage.py new file mode 100755 index 0000000..7d4bba0 --- /dev/null +++ b/manage.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +"""Django's command line, at the repo root. + +At the root rather than in a subdirectory so that every `python manage.py` works +with no `cd`, and so that the two halves of the repo — this and `frontend/` — are +peers. `mise install` from here sets up both. +""" +import os +import sys + + +def main(): + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings") + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Django is not importable. `mise install` from the repo root creates " + "the venv; then `pip install -r requirements.txt`." + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == "__main__": + main() diff --git a/manifest.json b/manifest.json deleted file mode 100644 index b67b3e5..0000000 --- a/manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"fps":24,"frames":105,"dir":"frames","audio":"audio.wav","source":"ScreenRecording_09-24-2026 16-26-57_1.mov"} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..5bc4225 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,10 @@ +# The backend's whole dependency list, and it is meant to stay this short. +# +# No DRF: the API is nine endpoints over JSON, and a document whose values are +# transit is one Django ORM JSONField and a `json.loads` — a serializer layer +# would be a second description of a shape that already has one in +# arthur.domain.leaf. No Pillow either; the one thing the backend needs from a PNG +# is its dimensions, which is a 24-byte header read in clips/blobs.py. +# +# Channels arrives with the websocket consumers, which are out of step 9's scope. +Django>=5.0,<6.0 diff --git a/server/__init__.py b/server/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/server/asgi.py b/server/asgi.py new file mode 100644 index 0000000..3f4b49e --- /dev/null +++ b/server/asgi.py @@ -0,0 +1,12 @@ +"""ASGI entry point. + +ASGI and not only WSGI because the collaboration design in docs/architecture.md +puts presence and document deltas on a websocket. Those consumers are out of step +9's scope; this is the half of their setup that costs nothing now. +""" +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings") +application = get_asgi_application() diff --git a/server/settings.py b/server/settings.py new file mode 100644 index 0000000..5cf59ac --- /dev/null +++ b/server/settings.py @@ -0,0 +1,122 @@ +"""Settings for arthur's backend. + +It serves three things and they are three different kinds of thing, which is most +of what there is to know about this file: + + THE PAGE. One template, which replaced `frontend/public/index.html` at step 9. + It pulls the shadow-cljs bundle out of staticfiles, so `manage.py runserver` and + `shadow-cljs watch app` are the whole dev loop with nothing copying files + between them. + + THE DOCUMENT (tier 1). Small, authored, in the database. + + THE BLOBS (tiers 2 and 3). Large, immutable, content-addressed, on disk under + `var/blobs`. Never in the database, and never in a migration. +""" +from pathlib import Path + +BASE_DIR = Path(__file__).resolve().parent.parent + +# Dev default. The deployment that needs a real one will set it, and until there +# is a deployment, a checked-in placeholder that says so beats a checked-in secret +# that does not. +SECRET_KEY = "dev-only-not-a-secret-arthur" +DEBUG = True +ALLOWED_HOSTS = ["localhost", "127.0.0.1", "[::1]"] + +INSTALLED_APPS = [ + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.messages", + "django.contrib.staticfiles", + "clips", +] + +MIDDLEWARE = [ + "django.middleware.security.SecurityMiddleware", + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.common.CommonMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", +] + +ROOT_URLCONF = "server.urls" +WSGI_APPLICATION = "server.wsgi.application" +ASGI_APPLICATION = "server.asgi.application" + +TEMPLATES = [ + { + "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [], + "APP_DIRS": True, + "OPTIONS": { + "context_processors": [ + "django.template.context_processors.request", + "django.contrib.auth.context_processors.auth", + "django.contrib.messages.context_processors.messages", + ], + }, + }, +] + +# WAL and a real busy timeout, because a save is a BURST of writes: one analysis, +# then a block per dense channel, then the leaves. Under the default rollback +# journal and a 5-second timeout, the block uploads of one save fail with +# "database is locked" — which surfaces in the page as a 500 with nothing wrong, +# and in the browser suite as a document that will not save. WAL lets readers and +# one writer proceed at once, and the timeout makes the writers queue instead of +# giving up. The client serialises its uploads as well (see events/project), so +# this is the belt to that braces. +# +# The ceiling this has is the one docs/architecture.md already names for tl's +# process-local ROOMS: one writer. It is a single-worker arrangement, and moving +# off it is a Postgres URL rather than a change to anything above this line. +DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", + "OPTIONS": { + "timeout": 20, + "init_command": "PRAGMA journal_mode=WAL; PRAGMA synchronous=NORMAL;", + }, + } +} + +AUTH_PASSWORD_VALIDATORS = [] +LANGUAGE_CODE = "en-gb" +TIME_ZONE = "UTC" +USE_I18N = True +USE_TZ = True + +DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" + +# --- static ----------------------------------------------------------------- +# +# Two roots, and the second is the interesting one. `static/` is where +# shadow-cljs writes the bundle (`:output-dir "../static/arthur/js"`), so the +# build lands straight in the staticfiles tree. The vendored MediaPipe is served +# under the prefix `mediapipe/` from where it already lives in `frontend/public/` +# — 26MB of wasm and model that has no business being copied into a second place +# in the tree, and that `collectstatic` picks up from there. +STATIC_URL = "/static/" +STATICFILES_DIRS = [ + BASE_DIR / "static", + ("mediapipe", BASE_DIR / "frontend" / "public" / "mediapipe"), +] +STATIC_ROOT = BASE_DIR / "var" / "static" + +# --- blobs ------------------------------------------------------------------ +# +# Tiers 2 and 3 live here, named by the sha256 of their own bytes, fanned out two +# levels so no directory holds a hundred thousand entries. Deliberately NOT under +# `static/`: a blob is served by a view that can set immutable cache headers and +# refuse a path that is not a hash, and `collectstatic` has no business walking +# gigabytes of frames. +BLOB_ROOT = BASE_DIR / "var" / "blobs" + +# The port the browser suite expects by default, and not 8777, which is still the +# old JS tool's under `serve.py`. Both are meant to run side by side. +DEV_PORT = 8778 diff --git a/server/urls.py b/server/urls.py new file mode 100644 index 0000000..a134005 --- /dev/null +++ b/server/urls.py @@ -0,0 +1,16 @@ +from django.contrib import admin +from django.urls import include, path + +from clips import views + +urlpatterns = [ + # `/index.html` as well as `/`, because that is the URL the browser suite has + # used since step 5 — shadow-cljs's dev server did no directory-index + # resolution, so the suite learned to ask for the file. Keeping both means + # ARTHUR_URL can stay pointed at the same place and only the port moves. + path("", views.page, name="page"), + path("index.html", views.page), + path("api/", include("clips.urls")), + path("blob/", views.blob, name="blob"), + path("admin/", admin.site.urls), +] diff --git a/server/wsgi.py b/server/wsgi.py new file mode 100644 index 0000000..fb6e225 --- /dev/null +++ b/server/wsgi.py @@ -0,0 +1,6 @@ +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings") +application = get_wsgi_application() diff --git a/static/arthur/audio.wav b/static/arthur/audio.wav new file mode 100644 index 0000000000000000000000000000000000000000..147862981ea689fa7145e1afbb0f55d89fabe6da GIT binary patch literal 670460 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

    J&kn!uF`oS=-(>60oRp`A+P&4qONBlD zqVFnq&>7_7`a0}vbQ-*r;%YH;+W?(#_M~=afTJVO2t5e1E>i}p|NX=qZU9=$oL|Rh zV^$_Z7d~e*&Rd_b-Z$+H`ZDaIC5Md`4She0p*0KP%WhgkgaOlt3($Q?`%R8uWuEL73w zkM7xUD4+CE9_C6<2OW}1XpQdr9HQIV0^(*)H#=dIrU`LwFwI?Bu zXw?}6#EV&<^2-Fq_<^V1!0P?Y4E@c@DL1ZS*0l4<%l_ckXkn24OINh8ra&*UK!vrY zzd%)$NCp709|q~fny@3V zpneS{{*D-|KZrftLPV8OqOsfX50RQs_Yn?NY6`#;P zpyem9=sPgasJ%TLtu;e#v#F>9Y3E#1MUlaf5K7Yfp<5haO2U$C}Y#K zOG-oL2TCukSi=43_4t`PSq;pu;r}wOD^_Z6^$c-jC%CS*WZz&lAGu>Xupm3M-~Q10 z9PQmFMXkc;s%Um~pt{CkJ%Rku6us~fw%YLHdw?vhT92^r3crutXp1vaNnYx_!dy8< zEYEvssISnYUCL+>HJ*IvRI#(W){Ppx)R*nbdOP=&J!no=1W+b6&f;Iz#Le!=N(}0K z^6kSwjhf>s{#C)_SC7sV*jbWB|sM z&F!*$i6ezvExk#su-XgcETwrB1v9Ltsx4M|KI(Z!>SSR|BU04*{OxM4qGos#M_%ma)woTb1_;0UOB=DTD6Rg$;%bBK^2FKse={-YqKz75@`0m{$opqHH}xz z#1rV{-^X)q0v7d^F9uGu*vr`>bSuGU2xF)tOE;~uur$n(x}}=uk3f-gW>)K>%aClm zlRVCT?(_I<1@I=u{RQsrzC6m$>=#D0{VrwH^+tc+YH+7P7}QFr>AU)**FtUbnD z8(WZ-r`F<9l;z!rk4?u@7^_7L4KuPjcygE#@CiynWr+cOE^$#y%KHH2rSjY-GO)QIO3_%0A&N57UQ@= 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 _iV0kMNm;|-a9xT+b`k6eW1~6=<%dj zo!0qnM9Pog9j%c5_Hb&-Gv}N-k-Qk5t4G14*N~8B&^k^Fw2Pv5GZ%a`1Uj%wr(IYo zW4%0$e=`Mm=nj}A1)B0jWaan}QTUY=JIgtopySkp(;VhPZAJFY4f47UJ8vB17W;k@ zn)n_6+n*daIaf-MPYL9owdv;Uw_xAuh6*yfu=K>PoP~DV$$8_M#^4O}?nGytNw^rR z`fKj-d#rbJ!;XXhkMsWlB;ZE=HWMt`3tajVYgvk&t^>~b2(5Dx3>lA=VK&PK5T?_someGNPMhDf7h87)lCulfmko-r>s=Nwtdrjc z;(x1#{67NjAB!IA34QnCXAAI3b|UdtkX$FxJ}KeGN@yy(92Ft5pNMRlBiM(V(VBOt8k)kd6Y@eWs=W;$f04@RnX&u_7Y8@Kz2$=R3IR;PSyQvML>IBa zumDUn4_&zj+#E~1@kwO6vRpr(-a+r$ynhAF&WK zVQI8SS2@|eD)=TX@5;-*j$_5kfJT3aITiCW8nF#1aVo3&54`#fDCsw(cW$WO32yeA z9|87V!+xa2&YVo%Q{vcyvE^c`p;Pn6ri#4?=gvo-Hek>1ut#%2$+fWItQf2aet8pb z!B^1OVa{*_i>iOtk?>++pnJZ1(s&5UN$0n|bHQ&{tGZ?X2!WSfU^E?fc2~c?|!& zeFV)PFHZFHU(Wa)y1FO)S^}M!3h&)bRz%N^8HG!bg?5FsVtphiS4`vtRV#33;brKJ zCX+tyv!*{0b^e;iPpol#d?Dmvch=Xcu}`rir@&VO!d`VmUfR>86T4<_*mMc;aOh@y z0JA}16VQ?~K);*t{OQNbKVYGAbC>V2CbPhV z%i*}qpv5EbL}D!JQdrKfg6Btq{U@N^Mk8Z;pqXmGCr=W2GMDgQjJL-?qQ$WSUk=t_ zz2H-QiFefjleXe$20m@X@8$WNeUB=!igl5(?K!$*s}DfG&Wu?cvlgwoFXlIngXFh; zf&T2x`-*Y?Yf#NWxcpZ*-VQEi3mjw5jARUe&gw#AR)99*j(TAkJ2mEc^#5O2@Ag-m zgYI~Ij&x-djFmcUD6 zK`sr@q3Ppq#T}2^8@Dm;+qhM6i{s|TjgA`-*E+6JT*K(}Ey9t@GmCKPM<;=JiU=}M( zoa<(vjPjthykPZ=JPKlUH$x7Mf_f)_B)amM;-J-ZJc_~(J>h~4SPw>l?Q6LmN}mDs zThlWesk#zr`aL_pis#N^n1QUmlqfG~=4EF>!(4E_wk!$$Er8~ zy9M7}nOE~73-YiFeX&53LIdOB%}e;jZ?m7Pp_`{-E}%90BLl2YPl-OWtN52_ot~fo z>qo}JH^<10&4l)Je)~=KYc=~dj=xM|7ncyRx4*Fc*0+EXK0{|&pY7kDyr>>ywzTy*aU}rW#ciF?YCz#TX0oKDi-=Gh#Sl4Xb*<0*M zH+ZfNyY&?KC{e;?;vmQ2yQ84tE6B+lSc{E$?-aOO+iovc_(QPxta7(M><65)6WX~1 z7R)0F*YUiaMX%bQ&KOf}KChQCnlxC2XO-aFnp~N^()&XZ*7VK<7uk`?Nbw0ga*2?; z&M9fZ?ha-rr=lCR=8f+u(e?)qtr_^c_}zM2Gq0_GUX2voihkP_ILf|dN1=(+?6_G} zcF<1Fk%YV&JM?DY$c9}}6lqWqzHNjZ*&AQO7-oD-LMn_6{dxMp$8GuR3uHs(!&{UB zRC9;u$W0Dsb6gJ^d?(h;VkmAL5@%FE-fzLJZ*UJz;IWswGZLMUChjTEPNv3dWXATN zSSh=pjyYtz4`DT(12Z@H$+kihi`maU@KN1>iCeO>ZIGdb(7gxIX#)dS*M!$!g9G)~ zj>nf8Ss>kcWg@o4Pwc2UZ1!%vi1xb_vNNLo$HuzS~y-RR0SA+BuSk6ZMj$d7cY5bjy8Tq!8kPA#3$c*Een zMR20^65GH=X4u;YMju_2^J0bH1lG^qANmK(ocShLf%ay(fwlJsyLo_5e+AzU0kgDV zZC^w}) zI5>d_VjL*%E;iUT5c*ko?>M&P&+L=aw4HoB9~*iM>+>f3(}f*r0ov%q^MP0kAMn=| z=*j)y(JSNx-V0|;1gcMpY;mU0ZgzJTR(3zIYgEJB8J_LI*|Zz%$*T45WPpii$%Sy) zWc2J?d{bl4O%ePBPk^zUMv#%`MM1^op^qjZfB*HcXHH&nCW5m(ooHuOs5Pl=*kgM$ z+0n2n=*Vf!H94B0b(iH6!+7aFT5jl+C5ue-w4xWN#`7+oySqSAZ5`fgZJZWs2Y9;(RSN02{?eRhJbQVT{WE_zJydxE&)!bx zdO199m7RTjc7Rqd;Xkv_av5~s^JtqV(YZO%a8`4SWli_Ojn4Jh3X&WG71RkjQ(9Pp zPTtD8e}+BTAGGV7v-a@ZATZ4gq~s@j!q}rVan48@!LC?eT7$iChM7p`9ei?Q0|Kf^ zj)0YMPlJ1#!{3vTBF5QP^8YlfE957T*p*}2wooY4xP8tiZ(P(xDC zcr^Ra86tK9h;me&w6U0b{}eeqlf#}sb{DY^^8{9G0xM}x4=WDM|F#Q#)TeAU`dJ>e z*MZ$gKI9#CAlSj#o#wb7E7X}`H?Zfkvx-%?nrPN(Z&suykM7tKb|8y-qqKuMovPUa ztTPbpr^iNX%}$=*qVKk%|BfTkE)#jW5wy<0yY&?2XMXroZ5M~+yvX@~z46}ldpnP#U$LsOJiS=+=ahR5((LeSA7M4JH)$_!`1e2 z%?r20CR`xqxep%Q3YYH1_V96tbJ@fG8a_K^fwK$ExGD_3Lak7kiMarg-+`?;Va>%c$uI<3m17OU43n(odT+skYORBqo8A69_L zQ=M5|D^#5$*oJrZ=biSQ><*5u#X0kW3Y}$_h&XZNP1GN9nBz3G_z<*M3Oeh|Cq`i- zS+{ES>Zq`oRInHCK+3A5V zqBGv!=2Y=C#Xr%4XRSi^*efBAx((jn)*Q|73fCn%Q@Z1g^Kc z{C6DRA|;GqZsjkhz)N?@ZO+9?mqzEBIoTF};6SwNc)ShMV?IV_PGsjs@ydXpX`5ry zHsWZ&p0p1!uh;3`+ZJ25JTl?Y81og5g1t8)2khQA3pp?hn@F#{lYh0{>}}|bw#sOY zXP_}BIN7P|G>FkD9UG90PW^G_+Na3Oao`~1V0Oaj&rUdV(s^qAK_Bf{iSk$wS&7CZ zpj|J+w`LK1i$?tf%{q+L><#kmjCK1Op7`Eay?yB;+J)6`z{*!7GFF|O_6|f-M+aMX zC42f6pPq%iYrgYBd_oJ@<2Cs6e?v~#fjK+6vJ{$BJEbK!U^3TxF(EBjwhek_80+7T z`^%5l$GI(8!4YlX&SfAC{cV?#%;%u}-?0jAQH}8wc%=c6sa|+;#!=Nahe-dz5bs}z zZ+0d-F_G84#D~5culoV)%1!(>k$q|(JPR%Gr@zTAeS*FE1Mk_7$9+2%>k=}9M&S`| z&(0PHbD4GfC;Vn^?NTJPbJm(8OUzKs5%6u2;AQ;-^!_7weKsrKAI#bWyikZ}9$aJOX$04_`fCbjeb}aBe68bg~-_3ta(?W7_Yz!bvWvCG=>{q z=UtQW)NSUh7qBDKVhP&iE}H1p7Bt!qT>3t;atc?n7`(9+d>!e?%pi^zkcg2CG(XNx zSMQ_g7ee9RqvH;-(t1j6Az6~6wKAitoQG5&l-QZ9h`z*XyFjb2>_ns!HCbp~BF$Fh3~NmLx2mz#WxjAT=!Ltdrf|BPtGN3azWLHYNwAMYT`oPP8N zHl@{2>O!&0J75xfCEM$>F8HM^c%=w-zTHQQzy&2hA@=hs&$9y9wlUOmAIIif54Log zqScw7fGTETX<4WHK6aqdzjoktCy8lYbY#t5=hZ$uoHOWb>Q2}Sb_N{=QngdUJkH=; zYx`aI;QjU)Y>2g36F#bkZnBTKmPQ|V>^;8cL*A?ZXeJN)-P!SO64&7CGk7)XY-i2) zJaC~FpfO&%TCQcs?CRlENauJ@w11+x zVNtHMk<;!Ry|^>^e*l#64rdsNj26Mp<1ALF+Y@OD=XDxrdk}&h^S!es{3boU#V5t> zu3IN0x|4i{aE^~zW2e-cVYUGugB9wVk*tT1t>!@AN3t5JF2Sx9h4$>m`WU?JjFBSj zW*2sN2J%kY+XeMmb!t73HQR^rC)%&su6RxYan^(r%Hr@GCWUs=;!7+}?!qh3+dFs@ z^fL~})7XbB<__3AMz@_|P?z`ALO(u7ytGiTj-Czv#L7^0H6Hrzv!EOA;3M3FMf@3> z+Ntb)p}P*qpGL^rlAx=!AS?T>82j7{_SgugFNVwdKndkQOex5Xx`ehljjZ$kzpyc` zgzA8k$iJQFz0a{z#^B2vgd}|nE5%y5g-Fa5SSw4=TC>oCA7QCX!oHb}^qj{hzT{ZJ zdzJ**x`bz62T$!~Jb?wFzi#Z?m#qDER(~DWGYR_a2}QrcRhhMA#HAAyJpjvVI6F2A zigEh$UwDGjvm-BZj|0&1R_5C`#rnwA!E<1iojvcqL^gcFnmA?SBVsb2^PVGcYYME) zvPfU&KMZC4$K&n&fL$1YG=3AWUuPmIO<4IC!6n65`JC{5a{N2y=Kag(uWliE^vz1%H@m1k%`+b?;lNukwRqUyK+=27X%!9Pwf>Eqyc-r)Y*;%ABm4Gc{_%vn^R0yPUORrL@o+@vIFL-j4H$m;H-! zU?BW#4?{ciIw$7@Hu}Gy24lmic_hK7af{cCu>FIFGbh(h z8&YhgPsV;;U$Nf1Sb?+9b$aBav#jbuy&mbP529;>kM zhC`=zLmmNITLtIX)8-(UWi6U&DjL-pwstho53KZj0bYDM=q>5_2H0U6{68J3AVPQ* z4!1tVnbZ1K?fKq^2V+vY2;XkI%|G z>R^Sx#IB|z;$$v)c7C4&a%+N~xRa7vtYkDTXhFJ^&a}C37EYddpHYO z^>?By(DkeMQa%FdjYIyJyJTPRY{;e??9G?F^Ce`)N$938cV3WnO3cdKVr}gB;%o!E zygU*z$np~7E5};dZ^=$E=0!Nk#5owo!Oe-U0XKI<>W)WN+Z)9A^l#YP*YT;@P2IWJ zPr@aS;Q2g@d~&wiENtcxtgl{*XTu(4#-5S`>ae4O&@IbY_ft@9BCfSC)@D2Kzyv61 zGxGN@P{4f-{>aMc-%W{}OvNgvL618#J0~(YKRE13WI-;dG#&4V#j3r5F2Bag9%ChT z<56@n)I4@(1}i?DpY{;5w~rmbMnJ>PANi11W+G{v&gMMlRdB{ec;gqO|5-5KFW4=s zdBJ^0hOB z-lTiTm&b$koSC0?3D3$mJN2&`9Pm2(FcnU7K8)SHH*%;ew}IS`v0vx$i9Q5JrU%)S zgnDa1Z%%}G4NPoJyPkUUr+2~OC*g7HvNmIrXsa#5X849xw!6RyDE2RW3Qj4w2wJwI z@OIYGZoqa9T+8$CdGBuCy^j@jUV^h;R&o}*DOsEAEK+N z<&Yp|C^+>ZKUW*glC=k$wy-?{_i~3{BcG?hX@il^&I7KGuCfDCMUHYDKC6Np_WzPl zdET%;X<0$LD48!=EXeT^_~4ubN63o}teoAljhNW`W&`n=f2a_sgq$58 z?qEDVp32~ice|`J_%b~I)pwxU|)htlC{TZwh zzfW#JT3&ai(IYWVG;;3ZS!g^lui62iCU!_EAweHE^&EE+E-JpCV(v5UK#4`v)0?6%(Ev(8B6 zTCB=bNW)m<;T0^m!%*)|sBtYabvbf#0S}{(Ry>;P{UxtV!KUkl72S-Ssuoxg{lOw1 zVM&a{a(;!P8&Tzg{13vB4cDwr2!+TYi=P!VsqRxcY4m}>c z&gMiZS?tm{5nMMDsrx0XqqO}Us*lI|OAIwzZ+H&*dmOuP8?s|QwA&r&tL^I~_>xd; z3%=c6$1pAY!{ili0g>DQ`5i#_#3cL*(z+f0EF8C-6*~rn zPXUt^hI8-6r(!+lQZ@H3KI}&LLVk(4z;O&Nn+#_a<}3@rvdI&z;Ytb;$G*ZI#1J*< z#5(?#kdeFW1GRnwT_y(QH^U0}IVMYNi`Y+N_s0GidoA`^syjgYMm#~epOegw_E2tA#{(i{X1%7&$N zI^f47uulhCh~o2Sml#Y{COTH(M(E>#Zc;4b%}?n2OJK9dgLcXe z_RI(}OTm!_4VDKq`V6*hj$kdELl>Dbr+3%cjrJn?h0jN^jRW|do#$x}zH=cOe3h8S zNf5$TKJz)>seQNxx$_g!=V#vQ^bWn0QLnxJ&_GuxvL2StQ(W_XIO7NQ|dSX?*fq%X_C?_4>ij>?{U6AKS0t1*~3C`fDwN z<7>fV*;xat%*9Dgzk8OSFL4JWxbN!;If)9JA=i=ETLBQvMX1GSm{em`(J3g-$wE%b zwpYb2q)I|Ub|g|QESP%Sb5{1}XLe^QSgIfUV_!NmiE6V8g^{06un#4;lJ2bgCSvSQ zvr0X=<5xi^DHHAFI_iSX${+#OCOn07$c4rKH95}xpuEAvc`GDrf{#kT9bG`l_v5Rv zi_?%@gP{A0+)o{L{(M3^bjv$bS@w-x7kfPROzh6sNwHO8uObO@#jJ*o4nP@y;0Y}m zpFI8s-1ZoGj6FayH{**S#V2!r*AlX_D{q5~e@~PdsWKYvzn|>tKd6{q!Zp>v9yx`# zVj4Dvb0>$O{pYZEhe31&kuUGyr~ekO@D5_!p-I48%oLmyTHA3vVx68JRgY3+RT<77W% zM;mv-I<>p$1bF#%^g~&YUMjrD=0Z4~=nL-bEo63S=r|t#?olj^9Z0G}c$5;u9ktMh z8}O@@Mc;l6r=}3SSyfYZK# zCn9gH{bA%8tpvR`#rRw{&ip8Akq!-KNBw6w>|>M)1b77=JOriw1{a?oj`S1MJs&Q% z_M;9uNkr8#@auGV%nYfYq3yr9vU{KgGxP1ipTO@|kT&*bu?zoBB!hE9XTj%hhj_l3 z=333ukRRrj*kP~|EBP-v@oT&c(>WIKY(JPbJ?q|xE0_S1{g(6niu{h{>Yrxk>|r?^ zWHt=ms|&ul&$rD$Csu-6ALeY%T)qr-#!)YArwDx_h2i4z+)E>LcwZ3bJow4}s|o08 zyL~vh*U5c}KpvOj(@XI8b&zm!cE&in8FS~5baozS1k%h3+D?qtehkT07|my=*V0G~ zJu;8;o%y($wou4IB-|lZ~S) zYYh9{5IPwHwNHdgJHa2h*|Sq{?oz0H9J}JQ!M^O%hsgB3NaO;1VgQz|T|(DF-(QjK zVAq~$oMi+Q-y8YtOsdzAMX#c9UPE#Y0rh+hPbWd1HUsNVM+$6;*-K9T1$tfFq{~90 z*n8LyC*g=M$Ukd?uWj2SFu`?GU>t zc2Ddtv713eJ((`|2eG9bF$>uF;R%;O8;9dwjY|{v$NeMs|Gb|LoG~r#N?c|9U$MyK zjpTf_;M%rh)!(F6N8Ka(UyHS_^{9n#0t?|1lHeTLT>JlKqKtT5$6*0wihU(^eC#r= zdS2|CvCqby#!s6eW)YfTFJ8^`3ERLfEx|hFc{HQm=5s8`M*~J43w=P%MoFTa;}_CIU4Fz+irl< zFG4G3xz>gP-UWp$Vl}J>{wnC;!ARjM$RBaY2{hnrD6BJ9LPhlGvuL(*c-dNV-4l?u z+ws{ZMK)DIZgqwB-shT~*#0(jV9tn$z7f$rC(#eWv+xB-=_)9@IC8Zaa<@AaH(Y4P`VqIV1b9#58On}{>vE^{hn^1EeJYpO07Sw0`Zj$Tt z4YvG8Snbo;-QD=U(sJ(ukPnCOU}s_l%k!CL!9#8Sq;Y2Z`8Eb`zQ_uuK`w1!?>d7F zGN6wxfxFM~({4zQ5ZO!*R*~^T$o4DEhR>oh-)Ric zI+*IvM;>&(@o*=7|AD2Ww>dGELmV*#d%gXHzi?&nvREl$X+S9;%+W9=22&I`Z*Bm-_GJ6evni=iX*a57Ry?4g3 zUV2HLg6PDjKFGlSWMtT5VhZPQlJK`s(#1p%;f*at%&RLNml5RNkAg1W29v!GMK*>e zoeP{7O1ll+?1vKPaz%Efwda}B0o!twRxdcU$4RTB!?&An`zF_Dr>3&#?#$TpacGpo zpzlp++Lc(8>+r$-@xXV{j&roZ21|mrn1_s?z^+}QCr4)__;~ItSE3!PcKU?VtmIy_ zM{+cAK4j@RD0LeCrI~nRA7MvUVEt4CuQ>U26!+d2{xcK8NsrpC$Y2506qzy zeT)2lA8%VPviR3PL9LKkH9<=G*pJ0%r)^}me~fpm73eKx%u%?!8I|lykV>f%P7?iC zf=#&&Id~Fo`wL7Fi^k6jjdun)i-k6^suQ`tO3?Qm=<+1UBPs7_h)!L=&Rk_W!ZYZ# zw?Sw>ldJM1Shxd{Y6SXk0uN`S_9nlf4j#6&F@GUDC$ej$keL61L+viJg{@no7=z&=kcT^fEdhH zw}V+M|Hoj9T}8gG#UIuKJE;U(;R&wUc_SG>X-?bB4P`fj4`;x0zjBr+9v#COQW2rc z#9BJlFLBI0A}6;)4#gwE7S9F-F91F%O&)DK_;WITmc@8Hrcr6u4G&0BKAR-wCS3dr z^51@yb|de@eY9p@oFz1X>mP~b;7rtk@I~8TYv;xOyM#QPjc=$P5>S~}oc-yEwY8DG z`;VT+PW7~-+~ZLDMRxWpxTY7iv&LSSnrJv)2t4K#%PPOHL?&LWI@FFMo7P8rt-M5SUkj8nBlDosF#tVE;Q7kMa_ zhut~u5)C>CrgdJYS)vD^=JQwx(I*S?p6XCti*PjKGaXpVAyCFb_I*Egeny|p zW0f010g13@H-H955>@JrM(YmO4d58W?@nAX%cm;TnGbZMmWe@o+(pwE=Zg)|QKul+ zV0F5)&I9<=NFr1pvcg}5$lHI&ryR&t=Ttn0#YW$kq5 zT#e_sj_0|fXRsUeU6tn@&IxD&rYO(7K8mmN40!)r?107G-CSgrlb==u3UuPYc4SR7 zy=yI!ZVp(~8D-J*Bcq?+@^@#c>0i^jInVR6*f{6#nmLQg9=Ud%QBE%A{4-g>1yJ{P z)+?GmoeAs9t|3YsW2VYIr}HgB!i~b}?1%Jn9_S}f|0cBEMXb)`Sb|P~vs(8NEYI8Q zk(IUfaB)7~ZK6yWxW5u;s5-2S{&(lQS7CLc2`)vjiJsz{v!PEsM;xE~g?(JWx4sRI zX#gIn#9@tg7i9S)?%iDIjnIKrK}+GyiO|p+NW4Z^$yMO_(x4qHr3-L8h2ARx0(pru zIWem%XEB?}iH)^5x6=tSVnN;k-5iTQg2q&DZX|NFiDL(T%=1L1Gjqm<_=MhtM?XQg znTa%>>+1ovx8g5OWp&jre$ z9vZTW(kR#>EG{#!jZQl6!}&bRvHIpAV<*Fx#)X{-?ev1BAmiO2WqQoE@JQuZOd) zu7RnnZaNF@((|zg8nWlmdT70tw-SJ+o`%+S06s z{qkOg)5mj{pR)&>u{Dfe{*0t>62}j`vYwqWL*1FuW&}GW!#TJ{JDy<$a>5&S>xo0x zCm?Z?@%%AlayG8M07qV)Wkjay`Ps>pe#2Us@Af^iK&0U$p;$aq4|5~}16;xrwS{$@ z@Brgi4ha7lP!Cv?J<}J#P4LbqDbYke8LX&`9WuyK%J?v z1+wzHH9htXcpF}yf;{~KF57@i+09;^54k-_kW!ggb9*Q%&nm&i6+kIYGAaR%@s5>n z&+&V8c)b}?v>z)x9e;&$F4tqNIpfki;$zV48L-7oFvp{K<_nUIT@!y}H*!qh1*N}3 z&RS2hNnXJxS%sL0lcEaozLYWXeC84spFKFXuq*aHi{^Js0#ZFDy2F8yYup7pn zoR0W3*Jeyj&y9MeDC_?ubmk7EVNcRPf3YA}=bnkRensAH2(tErAYY=sa&^(vwU9>D zkSXR>6+_PC0cSeL&J2f)JhFz>&Ko38*?=i3^YaBHQziZvV?@z@cS1?!!+cdI0eH6T z?3sN7te~@h?ggy0o8UTkGfUV=1P7&=4W`7)tpXz5gQ| z@jJ9*)ISctgtOi`lqxd^IOnt2a*asbAnEJ?Q#$?VkKJYpM3K7p?N! z8KKd-I$1XhXGz8io?+#jP&)_AH5Lu+MC4g$Gb{ScQgBZA_fXh8wEjCFFT2-P3in?u ztc2c(TFBITU?;13%{a3g&B&nf-pBs!4|aGJ$y*Q1<}CU$e7ZD0%dxs<{Z@yXozLbJ zg&stp21C{3zzI$jTF8}{ZDMB(vCv7@<~)f0I{M7cf{($oQHG{kT2Dt8a9A(oh1huz zlH$#fU)B{_*cM6G0={p<^IrV@eI)Zt!G!&|o0i}>Z)x#98*tgjt`jFx0Zh7|n&Pc=rjz7h~{RZxQ(FcQ2xu8p;d9!7ZI;D8!Ij$fll$eUOk7Ezi`WM5# zT;`ekbwy<7ek6GxnamWp$d;PFcdLcoaRWuP4{26{UCw^IvH-~8IC*kKT z?7SKLb$&Rc+tmSeZe-=ZXAi#RmAOchX&f^-yP4zeIO{@oWP-Wc|s< zyw78DIIn#0Eq~n&WjLMqGPLp^6rUV!%f>1cgQFrXTNCeqxLJ=_1y-UsE0itprB%d< z1G2aWPKbs6oH{7?W?+>v2Mm`NJ!f@5ZdT5$m$Xo;bSt&WS2qJaJF(dH`-^q_n{~az zUjV-0xP$lP53X_#ck?ZjW+zl@w#R~jokTf}6AhNp~cw2v> zlQ&;w?X4GfcCwlB(z;#3?G3q|V++r}2^77M6`Ri4KjKW*MNVP8&F^;~l->4@JOOVi zFPsE+pA|^VT|L4fM=HBAu>y9GFO0T&9&A?&+H4x6_3PMeeS#;XFLJvti2N;ZtQ;FA_`fxY~zAdBs>P(Ika&vL!adCkeyyN~YJ!|Zf2cGv0jBsc`Q z7>B<44=%WgJi3I8aSml9W41zr_FX@~u9*=KNy&3?yYa6p>}RCo?ZJ7Fef^1dM;xIf{v82>w?^kq^uIwzA{RL zPvHLPP@SKN9!7tZ17;eVZ6VG6$YGVfT)v4{&El|v#SRnmd04}u3^%qYvbQot?C~Qy z=mdJM6tj2==P2v zk**v)uflp;srTw~JC zZrsYs?dO$qNT5Vv@9kUaB*o{TlqjcGk7Ft>DkUAR^mHX+Zhpw;CXwxrsf+n zhQryyS)mMPML7*Q9lvGbx$~0s``M?^xO;Kv*LrRHo9K6K5-7C+_xBR7R^ZUesmO2I z=uNdYbA39)_IIk&pb}+^y&qlNi%5JO8+)+fpMB1?1y~_ zor4+qx8H&TtayJNuJDjwjO~cl+hd*TzZ-*B@(JR*j5=dN&wOD;pLW*xYfr@)y%v%3fRDf+eBhlukR z0~ZUpOm3&s4z-;Gv`g(|K4H2-2d7&9fjkQ@HX80_p5d`~=i0S^-mABD~K z4EC=b6FY+%CPQ6wkk%iw3d>pX4tTc1nsJ)r@%0-_XznB=bVB;&N8|9cpay9=ESJn?b6n{m0qVi;Dze~*N17aTSumw-x*V8Jqw?P^7+*UNkDzuBX z$r&guQ;=1;S-C85OQnDcbMZVCSG|t)S%9>#8{s87Z|l<#T@S~{cbGeT2A@g?VxF(! zQE5cAUs>Whm#`7vhU0ESgNfPwAK0~l+`ZY^dYzIZ6-R@7ju1(h0XJ#oR^|Fy@ZINl zPh%o){}T6IOO*F}Vi~82ap^fd5ub?|z+VaVSYLCd?TTj!u)q2O-rXHp-2lCion00U zpX2%u!99oAwY2DZV=$G_ANIPag3Pe;uQaIO9vJKgc*qWeE74HOQG3&$M=E7Q^Ecp~ zBCMu7FUW3*V{XD}2azwIqBHxTVPC=TZ}*}u=v#ZvDYv%s&8Lz0v3$nJ#uH$qq+Hn_ zd~ze)J)3=bhxhB7>WTNO7Ez04=@J(d4VeKY57FSIa|2*}`oGX`Tz4~N1&;S9UDGr!UL z5N&k5ziBiso7dzdJeJ`tMKR!EgA)8T=FZ(d1^seahZiZ8Zn&+XiaM#Z{V* z-vZ7|g{(P)bU8}4=RZW!3!oo5qAiwlJy*!lFT{71-0@tvlC&($pNaxGtR_LE3uBZT(1EY9ja0p;I@$In9(dsq{_lasI;MsPSqZWW)= z4|)mCwG)*H(#S{!R=FUby~!ufv+HIGMEN-K{yyZXGau5j9@?PJPRb9m7J(M#d-X*Z zpK;h-c^n*PFF_}RRzteh2SYfY zw*sE}iacu#wjK@*EaI+KaRv5N-2v6<9n=?MZ_;_t^cbiy!p_e9{D3=}1Umi(I=V~r zFFO+8N$4dnJ7W~BZrH2hyq*I2^EdQlp6ewz=oilJjQfr7MpEe6nqm$I)%>%N1CY(EOu!f$2 zcC4;!iyR-0E}26n)Mt2;?fG(qSj`dQT|aQ9bq{>Y_R;zXN-*YSC69gZ>>V`|di@S+ zJw{ah78&KqsIy2y=7%{P>xh$$1&_Dp8msYrrNbS)2)%bk#?R$?50k@Z2h_}Dex&BJ zcgg5G$<;6Ab8m2cPqAYE!DIWN2eWmZxxEG+b85&{Y|a!&ssgNz@d-O1IzhvJdwK?9 zKphv^k)MNI@&o+sAzED@blW~C`6#^mKZLJ0ITo(A_xZ!vbZWCR0qGtD#eC{B!Gl5JnB}h?d@-Yy=X{5sn?r9=t>B#4c5}!;#p48(+ zxSl13)*MvSAAXt3e*VH8CSjEd2YjpDT^UNTQ)@G{#7pdI9bZHq@ts&aqn!(qx&dmUofAjIl6nyRu#4VOp-ZC{&`yygF-Lp6A92QlO`N zC&Tw>$u0|=p(oHzeCFFm@s}T1xdW`LSqzuCHocPnvMyJ-GwpdNm>B!o9BfJ_6V7CR z^khdJ{pO*I)JBUrma`Kp*f+b~sO7#u-bA`rf#W2+15ObD>Iu z1D=ON?ci66-PPNe3yMk4HJc^zH}`OcRWuM&OhiJ{#D_V6F5(g>eB zO4=F{$*x<*KQjcnR?C`?W_%_OR~|ibhG*6cr3~k?{^mS)aSFOS1}!<^>L~Xi&71S7 zo)RaE>|aEun@M53Oth`7U>qkga^e=(ag{qargb44m%{p(3v&uOi(;7Tp`XRv`6MK% z8F`(N)eS*2)j}-1^n>X5^TEokfTdB7JgGL=E8WpOqtQ7t0>z1JjE8&d=Fpq76^^k_ zrJb6LpN-*R7NmVD%^#Z!#p*NvivOcr$gya#w~^`A=yoDlpQovICdX(m#jB zodod{_izB|q}AmLxwCfAI|650m3sz?xQ8ybccGG6i>MGXR*TtHs|2=;kfoE=t3X$k zI4bbJ{^}QljoJxHx6;l0@DIVupCQ-nZE25(H9S^w*dzEGsQO#}_va=s?@#3V{L1k& zh$gB(n2v4wen34@W=Xj~MY*AdY)G0+$e^@H5__o~0zN%JVj2QYBD1a4w8!K@Wnc@@ZK;MiS_Y(0>QdN_ZI>p31QZQ*gE3a0!(S>&ds?LuUPP@^`f^ z@5Cp=Q&Rv=vp%l}_GgqsrELEmO>+_nZ5~$&_N)*)ZI|j7*{$|S;Xz=HDM->K(BJn^ zocXqPPK|cqNmjo+nNbbNgn9*EUTeBPbjFv~ldSnc`1RhQrqhn$&R}gs)uUaDYvFOL zL3M34d~bEhuC9-lvl)FMUI`tP?6+8(zm;Qm^MkaVYIKF{*CW`JJIScp2v2+t9yix; z4A=H9=v<$;)uKJo4V^j62+%hmmNN2Z#bkaYqgf{Z^JEXBHs6#_`@E$i|`Uiyd=~0GeOBl+Rf+?c^qFF7?bC3*F04 zv;Fr6iD)I@uSoNYXp<;9Z>^}2^ZRHBqfg1XUt>Lqx$C6xl(ugX=-F=1%BNEBm|R>A z`Y#9n7Gl-Xvr10vivvlSA!2`XBeA>r*4^O>et_PMh;QTA$#Y{Y(IK8Y$|p{vU(8FUV-+^iiIB%|<1R#vkTY`E)<8==nIw72RN+w9WJ{iYza_zLX3io=Z6ub|6KV2?dyvL3)Lb!Lqn@lL`q z|C|1O6-)ChH3;YV-&(NC zxt*BG2RqD;k9J1vz)z8ZbErOm8q9_H5bhbk6?EY}ZFompByJ17!MwvNe21CU&G}0w z4kMC1;AAYO z(*TRZI>wH8FnY7UZ-Wuu30l+sG2MA>AePrSB%vM==}`~#%77F$fry<;zJrJ8csq3C zqzJnZ+o$nYa{r>PjdtrgM-JdMVn=tVlDbFrk@FmUIQ8W+$5}qHhqG*i#y5dKoS5__ z-)P?6$7GsJ#kVpA^f8jF>xJH^hqkxtXMQBF)$00}wfD{N&`*DwpVp)8faA4c%sl#E z#?Cm_^*#2**$;z)TpSj5>pgZwFWj*3aK5qmlE!;yBO9EDtbgGY6spx>EMz|@(JUvW z!ePGEOuOUAP3KYC?Pod^Y@Mus^SaFS(_Yg*m>vw_VdecJ;O3mj$VTv#wn;ah**!jBt|ITK4Bl(VUOE}~dSQrEVNx{}9CZzU9qX!6wkCQCu_isz9lwxj!d`bcF`T z!O6?uZ!4;yx14Ezst6BDCjtSMu36YVU* zQ5*}l0a|A;x?ncDy zs(EdN*|AE&inYIuv#Q16=5;BvM)93y9y%9(7Su73-={z!^Mj4MI#{<_xGTbANuVj; zX~m9}KX&%-39q+9x|-GX09jn6o ze725VH#^$-D1P=^-m!5ZcBEm2|Qz+h!b-QuJ&!I}U(qa5zhgSrp*Ei%cKGYSfoANQgT9TQdSdm4I?4Hu zAV(7;VX~pWpJP4hu)0Q|2clE^fT}ve6>9Rv9Iem^&NXyZJF~9lY?zljG*|(Xq3oGh z#tWd^Wzh0!=y)-&ICW5OxZL1*2Z!H!@afj2<$FSDTk*3D`pGTg$Lrz3$#^1W4+4^$yM|Zu;PTQ&8N)@%%(x9`J z@;z(OjAoWg`_AW$C*qL~d8OyuxP9$#Kg#~9yi$rasKE1jtaNJ*r-9XEWu*Luyk=EP zKUT3D8mbFxZ+-Y64rN|XXuJU{XO8}B$ceE*(##C`I8I|RyHvS2i9>Yy0n%s~uR9IP z9O`MvO6AgYq|GFLpA_WOTy}FV@&3u^s<%Mc`ufFM)4{r51U;tKo5|x-_FBBXioeXl zZ#RthSquFtSKE_o?uTr)2Sc;qU9zIj`_nV=A`&($(%noDJK>%}_UuD4n1`?sY91e~ z68FXVqFu0OnxKQKqTPxGEtV^E8+(GEnLuwDKxOHOTjk@gPCimIHif^88&_ZltMbfw zR!uoaO?LJrx-1ww?g5&f3_Z+e|I}P&cdmtIw4cpeS0?@(5VW-?zjLKmkyH9Q6M=&g z@GTf&c?e0N#!A8e=D_|7cDAC#ygBQ*tk6jjXw_^)v!}%_N}5NZS|cA;|C-5dg|2>f zvG(KG;`$j2LpN3=n{94KtAZeFe^*{vhmn={IrrH-N2_mc2d}tZ4=0{n@sn^Z;HH*@W-*{p@sljMD(2ma_$*V)%PB`rWO$$JZ0cyhOLY{OdHi-mRszvk~)U+1v?FM_;&CqGFqzybcYk7v%qJ%x|qH19dh-_P+l z!}C-8b|UzO4{)|`pwzi=!9-A*dUXKTVppbDIIM_qdc1i=ZJ|#!O?j?dJ)4QWjbn$- zqX7@W*Q>a9J?Wo9H+o{63qA0GYKJ~%3P&s4J46Lw+;_;)xCQ&r?oAN zJoP|&SVyNuFiQFcuUSE_-ECjco;ZYfXAQ0mdS$jGj?a3 z+)6Q{-v6QTuktWnWKEg1S4W{vW%g#|r&D>Bf>@@86*lKYo!30@Z`3cp0v;3RLFGmU zm|>NMBRP3i$yn7#S<&QJa~XKuzJQ`xGftjH#}+3luBLr9R3bWi(s>cBq4@6XH;dk(iVB#KzplZn=ovcRY0Du$p`wdU-Cg ze0D0XNqxK@buw9g@x z^`<|G1z;_l8Kv4M#aUIW7K%eJdX$X~xz0uStQ{M&A+IyQlj2MJrW->{j&~(F@-j7l zF@IQ8uU%`GL#rh+@osg<;~bChUi+)cPw6;vb7TwGkb_TIPoYh0Pkkq{8%s5kVTDf< z_}gxn_5~OlETPFki`zMUHixkUyA>=(3hTxF5i9sG^7A~Ahuhe~b`+1tJA35;eeEOm zwgXSiYA}HntV?+;5-e5Dq9(sSok3Q38o`v--uCVXk z2S{maVVnfvM3YWPXQS6vW{CK${xB|U6wx?TNwlH82CPGJGPV6{oh`K$Sz_eNs=*o1 z!&E3j^k+85n<2MTU1zV?mZ1XUWo+99=)u;=8~eoAImO8mZ$bU$fee7&w7#87-8|Uf zO@h{Z87U&_@U;$sD$Tqc2`x?tR>2gsg*6*i3RrVA7w?AhO|P=K1#3VZ>mT68-2pwC z{qQUIaFGACm;7mWk)L>O$JD6qJE~DQfYh{VbsI4Q;|SJFErRZ6!ns-=AE3QQ2G3zX zED*aF_Cmkg4X0B;way`F&V4sQ|5r!LRKPD*4oO)GSy?dT?I~rIv*|eWlbO$&1<9HT zEtLhYc0N4Ug^{ZIt)By>Sv6lC`^9x>$a(cW+ez1KrU6`uexK>AhP8su;n~Rb@8zz} zz<*W@Sznnm$lRJB+|~h4S|jDeg(=XPy$ZgAqV{kc0t1|eF0J2=!)KG6{Iql&*^#_X zdN4j$h(1P6FD%TnV&pRyA?v(jA?-5?n zI(&n7>F;+ojP%_C3U>x{{qShP@4niKzv`9KDs3H5g=cbljG4n9AVsGH3HoL5BB&8| zah1lFHp639b;hH;txrx05`7X$XkC60wB?H&RudXev$ML@5D$TPZ-b>GiZv#%3xxeA z=g0G2B6+gnRMF@v?5jzq*OahFkGz zp|_4)?S8OlWl+jwK4T?_a}eU$$=}Hen}YZR z18(^eKKm1o)MH4}vfPJVahijcv|IHc-$#S |l^H9M2e&IqNk7o9)V3cLIxc5V;o zAuab^6XZJzn%xA=oWcithkG+`(w_KxpdMpb)}HF=c@vwdKQv^m(=2Fe6%uw2_n{R2 zk6w96=}zEW&MbH))02T|53pOr&CVjL4`d>D1Mzy0kb__eoac5v-Uq zti0BnQ+e!=-IaA{h@E9$pyz`>!_`q1v}fht1UEYm%zP_nlMMpl^@4JZTR9P_EIXVJ zY^Og`%Pt%L=O!BFbd4(P+sja|T_-wnuKo`&@R*?U?Fgn{-Faji;UQzqTi6S8M^CeB z7r>tPvCE7EC+AMnbN$xOYI&)BvxXxF_w_%2tQE3mg)~79y$S{%^gs%!v(%T1IJB3i zvAWL6?20u}1Fcjntj(k7_}hHvzaR?hN0aegSwIYSU{RMDU9Asw+2h*G;pd>Z>|9ZD zEXgZeulA>i*eoAq`c!CcIGRZAHs;=v71h=?U#K%H*bNCkh}E5l?6+>-{MR)>BdlUI z%wTiY%=@gGTyFQXR(xKq)s;Q4>e~#(&se?n@R~lOsJDpt=pu;e8oZhkq>+_-vCB^$ zxY8M}S-?H=Nn7Y?0F>o4lf@v3mBAM~pWjAdSG>Yq+Gjc|pG*U`$qgly<5S(B&hL@p zw-cp9KEDLk?MeoPvz}{{1CcuB5|llj9e5HC=LRUJ6I!Yyx+Xtd*O18NH1_xg6=cov zOD#hm+)I>!+?bM}Wo%s=qkHuh>f7ELq!D^GLHW|&F~Nx@Z8gw}}@xzC|( z?d$v@Yu%GIdJ)NBB}e8EBl;Hvdl6LoS9tsvp9~FH42|iemj=*g9o}CRzj%3QzZ&cN zCX~4xdGQC9&!ccq5u}Lz9qW_yPu7RNw8zXsFkYCS^?WpVzwPo7brp(5dgkV@&q5(0 zx|dlEBaHH(o`IZ5UuVWxHGUE4Y(|7Je|uFQWEX!8K6iV}ZG$6L!z20&KM9(}ZU-MB z=gpuT3u2LSmLtLJQ*jVEXjdk)aIKQH;#<2;FGW0SWo^QJuySI2B3Alp_uFqQ69~CN zpl@wLD?+Umb-KE~br;5X$=`uokKf`zJ;+L{-|m;nG>0 z(>U;_NW2|x z`wa5w2%ol(%~ojrFL>Aw>Zw99^0&O@LU-0blP28eyhme z^YEw)ZRF(M?SA$jlr1NkeHsfNmW6hryxH2wdwsEek#1%v4CSzn>qWk&1nZxcYmKra zGa_-UaVz_Pd+pN}W$}(gJ5NP>ydV7JLqGyi{eM&uZ5Q6R(bRSX7zS3D2bR!l>uif} zvGBh`3ytG5dUW6BY8oLMj9b0JJ(Yor)Ma|%oW9Z*$vhERI~E_@P`+~;kEen69gKO+@p`6`-q%o_;7^nG3zaqgNVb$*PiuR8k)_#YMzJ^w& zq5Xz{dYj;te;Ny=DAq~F&>zjrzG_I|nn++fBWu<5K=SrQADZcE)=XD)q&T=EubBbc z4a93qx;aN<4$(wUw8?O&@n>X!UB<40bq_*OD}y%B1{{smvMKo3oZD^HxP6ck;EzX< z4LPAzXVTl<;Z=~8QmX<~mkmnD80gAu1f_UIR%A5D!I?VN&)UIm0Tj@b-O3IJXXktu zf?Z^n;>>VjW)7=X?0(%m>{(BCaUxdpXPoB)(4%zsEc>07Zgofa>=q>dX(U%#R@~ju zS0N47f!dv!7ga8FM|u{9uhf4R;a6wSehPoDXU*5bPa8Rli2dtewHlRQ0rzgiLuAh! z`>ZZ!#U`_E_I{kttILoE3;5 j~lskK;U$Nh+8_yoMy2m9h(j(6Cj&V1?<&SvLK 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�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 z¥_-&xpIrCQ|->N%jFhPdZXoncu6nj=Fg{o;HY%2Tq#s+Nz*0#L_4v9U#e=EH5Y zkaU}-s7VotZ^750EQ?`E#Sua{RPG%wPVH@7Kfk>o)W!Is40xZ8hXO1la+ztCo2Pgi z@&nk?6uq}ELf{qb(K-(!-LG|1ms$v_)gPPRT7+l(w$?7I?FWlB#8ICqoAageK3B$& z`F?p|>*V)({LP-dsCDmxGCk)Otz6XF`1x*Q`&^$Im0PEl#s5IxHSXWvH{&@THhC{^ zY?Y_Cf!R$qDYCVJ&vh+UuykP1;Uyun#8!syKM#;?nw($b{JdvX4@UUO8Z z_}cFY6VO#>MLDhUMwf_`&jMpN?^PSy{NxP5CvQiFGL+%7f>ZsZ%NZlXCWdpDKFp$Zz>m-VVky-sJsU*)M!C zFX!U!FV7qLX16ORUV!?PkGGxH9-Y$Oez=_CN2eU1x;r&8@9s$6*iq3uk};)7j^(~p z{slGiEgK0~?G#&hJ}Wl@p3t0z70Pw!lAs!IV2*#tO6gw!ab?S|FKWHH*{F-!-?~{< zs0f=mFfiD%uEwHTy^lZH=%CAT^c0O8l{fLOHr-`T>KeblH5)(i_+F=lxqq?C9@Dl@ zc+-wWIpUvJwf1kA5AdRVgQvv?d`y+Acg4@Xxw?^`RSWl%YCOJI&B*oDl-%00cf_l_ zJ3jZ_Rb9-c$A6pMQhnYpd;O*u-8b}!>u0~}@n70*>mC2>z4vsRoBvOBYY&LIxJ-Gk zrg~OMT2wgyqs0ah&{enm%BGh_T0%wS-1FWyGFOpI&aArk&&ZPj!F2Q3H8zu z5yOabI3|m}^t~_$8sFFVJ-h;%Y0w58njg^(*8HfBYOH1t?k}Cr zC`Rk=Y)zDT8-4!FfM-v>+~`gFh^(K^ArEV%g0G4ZM`R#Qq?I9myUcV>mF|vYkP-qufZ<2*6GQ#TOf_2gBdLlQTN_uWms(S^jo^A#lI+7I;+ujqe0GN5*^Zco%L;5*3ZysXt5%Yh#3=(@RbGiK%Hg^uGo zA;PkjoW{;G8x5{8rPI-o&FmXpVji2H!)Ef4hM%CXq(13#Iggw?DxDPA$eWwv*EB=E zmG2>|s2_~@1RL$@=FV5L2$*pCUYb{z_v&}M&N6DW(V%DgEI?64{{))t^nX~6Ki=y} z$%PtMi~JaDAO5H8y0ubHzdW)dw;+Rk)g`H>=+(UU^mhMB_O!#v_$4IO@Qf%*TFjvv$hn^_TR7hma!Ax8Rw ze|_>X^n#Fir2F=nya9YLok>n?-FSOz1|8)$W&) z(0}uRjU3VWi1nX6%^Y)JtLDb8jahTxpvLc;+EjL(hTA8CC*t!RXKd25v`M{9;2AHC$%Ss z=YQc(9@rk?K)$!nopCQOcW5-~d3AGVM!xg5|KEy%Wu=!cY=D;2K!N95Lv)W~Jr?f_ zi}l2+f6hW#*Z-N1F;?2a$rA659vtF#`L7##FTdd*{VpZ2>!vI5jcM<(-gVu?iGt!^ z)bU)CMqV>)G|I##fSx-HsaoWZ6I&ES9vOIhW9WrQ~ut&e{+Ww}`%6fdId!5o) z9+g7h3sZ8vuWV0b9Iwg(e7|$yo>KhPec}f_3%8b){AQ2jCHcw!%{u5It?rQz$4(lt zygHSxt8{}1sVtQnhZ+sLx_pmhSKv=ZHqM!PCmub`{1BxF(XGV_bm(7T={)h`8AM_~c z?P7H}tKaTgP(OyheXDyhw)5kB;N!@6S+9KR`f1g|W*<@hZPPFEMF%!;|3(fT08M6D z^Of_VSf2H>OKR>$fA-P2{cSNa)b<|RrjnSh-dm=}tS+7^eO2#zZ&C8eS<8>Mot1@U zE$Ph<4U|hKw)JJjTo~9QvR@RV-B83PzxkUGYZ03qCk?@Cd!2I4SF+7|=TNKvc=6+> zd-U!fpbza=t%U+j^C^IB91s?ggd?}=BXHXCDgfh*fG2 z`DT>Fbgab(R$quIsYek1S&z0wOgz}sB71Ir$lgPd@RemXtRBlZw&9}cK`>n4X8LXz z=cD(Zst*VuOzG}MGFFz`HH}NTR~D8b@Z>?g*XSF?HiW^smLHYQq)SjEQes;BLPmK|dd#QWt(=RGwJxj;JTrvei^>Yu2!KuRTF+Km}-mM?( z^TXiR4>RASZR085xM8cvMm^rDjN%SuA9uMo!rrgrP@8ge#|1UB7JRrB1A2CPH(BGM zGoafwHFLB3JI!I3+0Q}(#1|M0H)IEN`jXYfIMegX8j9^8;*c+duVOyjmA{0kG;lt( zKO(e6oyU0$BdW5-t4;RGs2Elgj1{GSBU}00MhY|wzsu~vx5C867stmklXxzwr8jOo z8hQG+VfW%t;v5>4ushr>^ULTp64lPA^T6}fc}px|!|Q!{bB0!*cZ{ysI)jeBD`txb zLDw$b19%{#3Q!LfxyI-B4lH6UG3<93j17AP9}DKM_w0kS*m}>x9qAs5&PB!l>O4YV z@K;3x*JoMfMX5ZB8q{p?UG-+8FPpE-;rmca%2B#%^&^G_Rag)Eni~i zykmIXp1rzXJ_%NodUt;I0X>G{QMNs-k@JrHn|CxPMrQyyW?6OG=9H9mvOK^4VI0^9 z1M!gUm6g#q1h-NBm~{rr4c>wK3n#}|q1vzSj4R+wvnVQtUEgi9kXR{uJ5hbik zCM1wjq1E6A-E7~URtM_fpPg(x?*4h%cIt-KlTY_;7xwKJOn<--Jx~E;V?roNxHw z^m&i<@PO~*X5)X{)4ac}ZRA<*?3xd)@I_25Tn{W%3~rp6QO$Qt_5{{5a{c`d=B;t<_K$he|C)?-Vu4Vhcw<*)~FHMf8urQJTdyVo%j~G z6PsiwRp-3C|M4+Ahl#O6c5}P_S7p6SWNMU|q=-KW`MejGmK zBTmSsVw|YhF(a;Mwn9-I)9;!AeBr^|`d>4f=L6AlmRUXcwcd_0#xKrpjmnyx8a2A? z=`M0i+4y4`Rch`}Z98Kcg=Z8Oo?HBP#=X9cXwdDvMkMw4(RcfkjmvWym*+HEZJ%iT zQu#f<@$cPcgx)*n^or3G8b2dU0>2% zxS;PZpLP{JGOX~0!9~^0 z6SH!uZp$`HWL;&+mTP^001hoVXeGSl2c35c@E2u|)PP&zPH7w6H{MmOrmpSH#bWxH z?vM=>h3z=u1^!aSaB%N9VzQcV>;CvgmO5NLJC5&4zpdMmt)#Tc-ZXg!`!>#0szD=8 zY9xNBU$%~3)EHK)YaHWa$x&l?!OKONgA4Z6{E^W!Pj>`8Q*<%oQ;TBE30*dE#DCuL z>FyxAtrz089q})E4cG9xp1-lx`4>HlE8{g?_k8M?y~7$kHeNh78WbAy3rEcN!TW#J z+|(6rQSVjb)m*-{*RE;5>E^4P*T2;{!KFH;sFz=HQfFJ;=DB5aMvoHr_*rMQiQ&#{ z8!HDMs;(ut$I#;xubmrQHo=lko+?f2z9@0j7~-?}$K@(na8_)Qp1 z{Mkj-5PB+MTj@Z^;$qCxy<_1Y)yjbH3ZbJ6BR~7N=E%UF{k43NqS>VO1OtXAqH+nw zA~qPkMxod$?66bh&D7q(f>i&}c-o;Ac$Z$;w%A1!v+eX6kDh16`|_TlouWI;f!V7= zTB9Lf@LXL&ML_BUp;2(D?Td9NDDki8E%B4q$iwr$`?d4**6(%MyunlFgJIr?Sg3_O zWLneYZ`DDL8XY)<`Vnkil^&R~|7rw4es1es3wlka8V;rRfr=X**)#e^Hij<(o3{p! zbF4cdYa_n)ZrK0uQ`TzlWLekEU(qkYnm#ljbkuQnvFArEkM25~PiK)YvvV;k=Gi_) zu5h@$vwslreJ8{a`-(U7&a6G%WgC6vFW$?*`cW2nFtM)g(bYZvPB!?eVpD2(H0i#P zMZT;@U!8cbP{c2{QTr6Hsw&nG_ME=`$T$3V0mf(Z`f`9 zo>c+tF^^%330uaIe@p9u+J9VCwf$_P_)#q{>`%?IP7y~>s|E!I*x(8IEtv8jYqih; zL)K7VcQNP(`ipvr{v~H*1wY+t@~JEdMLxDeFBQm&-aojJRs=nA2h;M$J+?wv5q{ov z&|MDW;_k`!R)c}#IW)&c4rp|~9sZ*%6bxx_J;dR%A)}-8=ry@!*WP^9J6qpMQH^T4 zfgy;dRMV50kW zSDg#2N_AW#)5tHz;(|j%o>%WU)k5ocf2_|G((nfT|LXKXH%jeu-LytulJ@6Xz3+Lwd$m+XS51X_9*FdKH<&*@50 z?s{lz(qbVleELP5TH%Fsv_-7LBhzh4SF7Wi6K^TT++kuqZ`EAdyxXSv;A%{%yRFmA zeaSR`hi3NELrRuTLFl1v4-W^qU)y~PH|}Y>t8D&%`u{#vxIU=oAK3ero{*Mj#683> zT)ppFZ<@>NXFoRVH_Yqx+xY(&hZ}{z;~r2G+G_F#u?=Y+(R`yfaA14{^PdlgDR}cVM|g&E zlRV3jnUjb6ejBu$W(VH}3!5F0c^>F3RG4=N_fbDEa9y6H-fJ-NZ}-SIT-U2&{=pSd z!=sWK3OqGM@X-NDMfv+FDWKCbwvx46Ee`azqVrwULiJI=(J`MP3R zUH(4OBUKH0hr)Qi(HW!lqdMx!*3ZxPJT)ty|N7)Xs`2_>8-Mk>HW>TO?UQN?`zL3k z>!0oJ_6|c-&9w1%S7()<$<{eud5XaVSiLjG1LNC_n~LIX^8IMc95qFCG!8DxKG1u@ z)t0x!Wzr|&^Zk#pc3C#$%KQ-;2z-?9hoWB-Z|bMnn4k9Od-qxzN+>MO)v@7J7X7B1 z4nDu>{#R}8Zw#ORRgoxG`46i?`qA|1@Av;tC&XSKwO{p~ANT4t*;TmyW$l}O53KD) zMYr_IPc0gKciz?UlZS&5c2t|rovJ)3m(uood(Rx0N49&%jPHO=4m*5h8D9P_T?~0u z+$-p#S6|+!gSO-6@E46PekC2GF<&X6N#Q6OXp)z4!B?HmUqU(`g;nux-i_5!uc(ej_1!B zzeHX0z>psqJ+Z~!y-pW&lRoY2tl4>Br`26L%BOTp@G;oB$_+6f762XrlytFbH&uCJ zFUmg3-_kLo_=sJDabjJDlgskbRKBD&=&aTtIK{_Xe`Jzzaa7`cHLHsE>Rt|=dY~@x zcyE_YkJZWHh{$wa+erImW6kP_*)0nKDG+mxic?6aH5j)XH-9Kn{2{MZHPhf_VYkVG zK(=rsmg%Tf8W^2!kLzBQ3EfvLLAKfmTzNV##*KWll?@ZZvoLj$K4l+Ty{?`v(c5=T zDUJ`mmB0OeePg<(`*h{;MR2+H=~cQAqI#;*Z*B!pBlM;Tx5LlUZ+a*I`QB}( zYYj6{`-Ig6xu+!|(%qwPr8&Dr`$C!a1swy8;H6vB2T$&v)+ZHd!`B#oyZ*)4+~azv zYoq7sO6pUtKf7LZP$rd?Dj+GSStX%wP#9g4zR(SR#M{s#^1|MKexFxI;`(3Et5^2_ zz~8>oSRXP=bY&R+B>$sz{uaxx^&`HZ6Y`H z)#fPOyX!kQqvC_-1h@NFKFXr(5Osv*8u6@{9{Xdx9 zkeJW6FPDVCK;6%n(DIW*dQNORA>ZTJj_Qahqjh+*OhtiN11Z9P#OzX8xJ%oPori6* zz}6_M6P^}zKyzx9Rw()OCucRp(=;8hQlRQj%C-zWfuX((zhPx$An>tNJFy+=nN&Tj z-nv7{Lau7n-t)w+ioB8>6;6*V5&v6eNG3=X{i01}{=nwp6S(4+cm2)1Pc@P$vq6#R z;qRGmvQ6V>gT@jKqZj81tlB7}v8I;nIYo0Y8j3`##EbHdwI{B&sxo}3wffwsnU%TO zB1}o$7%>9>ndWh;7lPfY@_KBW2ty7CLv!TmhEM*;t{t3GzeX|4 z%UTy*i5E5-hTaKXRvH|mh7I<}EAhAb#urRJ1Wm)i>a!+~n{}G@l}bd`T0IL-)>_Xt zyB~FyBX3SY<%JXG^Spi!^XOTP10B_6=$|tAxNbrN!-tl=Ux9e=S-;~*r9hA{NqT5^BJd)?3R&hkzKeeqY}^ltoxs zISIW3KRbCAd<8x2VR9ooL(LNx`{wC?nF4EqiZ^3`SHS zwQhLes>sGG*juA2P2`QsCOTJ*CyVpbM(Ho6mBwtlt@o;Qq|fSG@9tjK08<(FT+Kc& zLv9$lW&T3MWq9Qx7iE26UFNq})fDqV*bS^T985az_|wbvs@PcmSl)W*t_?mYo5L4@ z605b8iNNdhtZ_ZKoT?gB(#n3~;M1XdUZ0{vH>#K+@5bD)N=6ZT#G8IaV_5#dXofMa z-`K*D!=qF2W@d=?$pWj9-nIF$O|Prl#VQ|~>U?gzC7M3V^ho?SJUICU7FM3-v7IBCdRKWazBMl7 z9gPSY5_C!CrYo=hY@Gd3)j&;09q`h9%V3W@p>H?0hR3&3=WFm^SLin|Z&l>6(iHy} zRr*1l*eqiNZyb9ZPY{#p{?mKaC&;P#gbp#V17iuRO2@8&9Ak0dLc_1rVyXR5y`f@H zRufjud*XY2qyKqr-<&)+*3~LN-A~V0Y5;sP^<`M9RJrk!hN7ov_NWO#KX~G(>^-qk zC~UrNVy7I?jMj%)N8iJKZTy}>AgVtlJOgSz7e(Db#vxeW&v>%|Ql_Q3MFD%B3_ zog?deLi7I2_6Q^DtIh5kI!0B4!$YCBsbXK$H7YTUeCV8KaGJ(!!K@p2ITq16jTk-* zb+&CAMRGwqPrml3iK^d z{XTqn`6T+kdb915-@V7ZpTjq#3CHqp-8b?g+-Sv7kTV;^Y(ooX*Z%ejO;7p0QML#bYs7C5eT*L20TG*+jc2mjw1UVJ$O2#x4)xFRZLjKYDqLbx^HQGB z85-xwF~eIhCF$aMgttCA3CLBBbLW{wY)ZHc>#)HTLE~YuLlha+&CB!|{W8InLKlr_ z+Dhu3uWsZHmF-VXD4iTO-y2q^3pVUm_2PNc`eOysY3epe)mTE{u9gK@Ww9{YSq-|Hcu{Y#?VxRx~h}H(fe5| zf@~1Rz|UK8u=Uhqi7!X}k7{Zfcw=?J*5<XO+b zdn&uA!;IWL{`v4T$LeN%Q+-XB1U@VqtjfuXOEn4eM#N2vN2NTxc4(cbca>}R3p_7* zb!wEbWZo=ab};d9@-Pb)<Ki8ZO3G%)Zbz{?VY!~ZF!VU^PgXm zFHD0$P=Jc{S<+v^Vs zt$Rcm;Id^%^=8m_m6G%7ldlc6Q@gN5V|K?zvZ~+x%aZW4hZR*1VboHl5ov!qf6d6H z`|_hkr)ZeAEJmBUzQ<10IX;JdaE?TxgRO~oYn-o}ou}}O z;m!Yh@?>WQpOG>sn=4}EXTZWeT5OsN56t@zRSy3LTE1A;8A>jj^4Hej;Q?Qp=PORT zs!cA}ZA1xp-aL#eTD2i~YI#(5;atJ-ux5uM3UuZCHjE{6j6H`1eyaO3x~D9qLx4Q| zU@x6nhUSdP`cvpWd9wFIJB5#Nbe;%ynAkzpk7!~%_PlsQgz>iNIT$?;g_=E1Hm204 zLZL2c4@DJfEU>a@cMJ_%weV~Zty{HdIGmyg{`_OIIJD`gn5@%yF-o9&2XwU$X-w-u z`0h{!RpjS{hFnyB=CblK-w2z)CHYC)wNn=5XW=40EGzTf3B$lFpmm2JB^8!k$_DWBL{gP}`}oz4RNEWBrHg_y~@A$oe$6dj14 zTu=3GJV`1)*zn7=66#_)6ha{kR6FD|b*2$U2${>iXJsG``HKMku<(}v%ol9I3E*^?*S5%Wcy>>ctm zut@hq$^M+q)VZx>G(3kUv@vdu!gX=luPm!I>h4A~jfMBi=K5bcdpN`pLXj;5MeUOK zW2o)%24sh2!1**daZs-(WMSnH)%0+yMIDZM~c zh#uBjFjfNy<3X*Zw%29fd2GA%>9NK_?s;{%xx8`xx;AT{#J!7DWGF0 zF31xyYGGTCYMiUbobM`$BI#xurBE_R356Vf?5G`+b1@p#mR;WeR0l3;&JX_gC;K1f zk70XJ_YnNgbfa1PseEJ6C#2|$ZC`6-(LDO*v{vAwT-%JesbBrua-cH2MCuK2Ml0daGW|z0A8x=i#=cj7NCg$= zpXw2WiFXNU5X19kv04AoXBK&|LyyrKLV*I4l;Y38YRm&3i|Q5ixv;x|F!O6yoBSD= zp7{lzr?9N=gLr^`xH^9Pby*`i0DEQob?D_^s03T5&&q{jrJ7Ta8Ys`u(N{;T?swp% zFvUkShM-vL_3=RN)6q`u>%CS%F5UW}AHb+XHP)OP`9YbN|Bt5gfZKBX;`n<%MHzqn z?GP$Sloh2kG$SJuNM9e95Xx_5&MZM8{>#Z zh0O4Mg~#+nlh%=mZ)<*|Inn0-^&$Sz7m06vxc-R|a8;3X#kgH}5)}=A54UCXEb|OcLRr?2=SnEsN z5M|e4P>$IT#%#<1w7Zq%Tx??nFanex4RGOc%U1z7P6nh-K$ipi8 z@zfhUf*v#^<>ZA%qE6BU{nd0y+l}P!b!N-dG zkzRtBgvDacB{P(@FF0D+v4m!3YYe%-g znzEW+-=G*&`cv#j)S1`Uvr?>@znW(w03ryQMPer*k;ES0Orz1_qEFzYq<$KbGk*Y)>nQt+|;&{BjQejbF~8)_6YoQwx*+{T4d8n42rm*x!T7S0ruw zU9|F`bbFakV>9z=DxWQ4J(vTvf`=L53)1Q`9y*(7={Q!P7J;2Y`*R&Vlc&&p46D@w z!&H84%~~t?xjM(W+(lr)ivVKAd}Qa)sa85;Vt?LZ(#y*?jjTIri1Z_IMnhyFeEU|!>z zw8G6eS;p$KGDS<%`~a&T<)UVZe8_9j6RiYNuhH*4FHxMfs2a}ei3_~Ve(J=51Z~cV zb)MR-;-iV>Yj(qQ{!iuCuV6QtF)#)0VP`-+>Ao`WJ}wEV`Ku!jE%LqCz9z;_7xmleJ&tO=zK=ph$C) zIwhaBcBE&x6zVkht~KY@L!y7(dW>_BKx)zrpxmZO8X3>FTK5#LSew&sS^L4e^exK8 z&A&6_Rj;p^s$N^g*`Qxo*&$siFT~-|EAkPq#b;OnWr){frm&ilc53L5uEb(! z-F2(fGqYa)ZGDq6M%_q^jfFgGy{Ts_$$Y2gY#kfp!eXD8gT0b_Gj8(@{Q9pX ztIT#aBU2r|GW1|BogP^^o1W;?(`z~P#c)3R<=9L9=Hy8n0pFa6-()Vlb`JdX4Y;eB zt7dz=jUKXuPnY8xS6xx-=W`GyYeWw^AW7e!{LW^ z`%`N!z%RwZ5$&>yV$v>a5abXOY^Ar=ZtC?YESwk$KQ}_4 z{il}n0q3??P1M%QUyb_6QT12IsbA$PmnE9CK2tqS@BH%gjrM{02wDZfvEPJBMP8oI z^{ilT`S1enPz>1B>3r%{_6yp`)mR5@R72Y)FsPlYh7UN7TS7ZF<7TVq0d}OVui18b-cCM@>(1#*copz)71A1sP zjwsfiIB3#ARd{Qif9*E?6yl=luh!>b^^aL1W+K^7FVMHe6wwPKVwh2RZY3JEfF6Kc#wSw7FYRd8TD;U|+H>{UTexl5k*O*Zno(bjjk~F7w z%2jWd0_0Zu`<+s^;69FcOS8n?dBjtx3OnE(AEZs z)NJ;jT_2Ps#sJM|mD{Ty=tr~CW*PEJo#P|uc_r&WzsLK$U&;D-oAsc+Vm6}L&|8zo ztiZh6ktk4$jezNm4?JTtQpJeOE4hmI5^sK$ zJGP?NY}+Z^+1MoM9>m^!7zw9EdB7SmHc>kb07ySWJH-y;ZXV&@hVWh_;z4|GUFYo_TRg|x(-jZm*Sdp7ZeV zn*n$h`GNKE=hwj7e=2#cHHd+VOJ9iysM)Pm`Tj(F{vtY<340MXWQOn?zDJ<>b+*j8)XbkOR3okZbv<; zr=vF0-eV1!8+96U!p*%h-_u+>QSU|V6E9X?Y?i3rJM#$5x-y^KYcnPj$g)-0+nKbZ zp&6f6pjmAorxjB~OW)kRztOJ5Be5gJ7H0cT#zOo5TV6-!GJD5aWxpxu*dH-+YT1sW zeAn*R&b<1qeAXz0)pYX{f18t}t(vX)k?MU?&H|oA1JDmAFO)Mc;ydjay}nvpAEFa{ zij-CFuuD`t>jlM_{o8c_Q8yjHnBWYRPCsTGXq@gel_kd86`c@W+&L=Nqt}=nn7sTX1%LV zI0kCRi_$wafA3w5Kk}#o5n(A*C~}Hg{hFjLsW*vgAU?tF+C4K^jVjt}-WaOA^~_!m zzn=bhJ<5RxAJq$DZAXWZoy@VB7yA6H!!zU0NR^q|-nS7g5qZ^Oq>R0|Z%06kIW6+A z&ec1QU_8|$td2J~!aP1}X!SE_I~rp*C#e-HLTp#D%JiU!?kzU0@dqOiwfMCjJJ&$u zh?_Z}NBOKo*Ac~u4x5z|-J6-Af2JyHBI^FEU{z1jdt;=c4A(1?j@FMp3sLg5i}bJS zNzd_2NbBO^sAK3i*vXiwSLk;(|3tKg9q3N#W%hp5W3SGs4(AA(duL9|4n`)r2I$Q$ zN>n5=t6anSV^K!!PhvKi>#-JhcOfHlDdS^Kl!$WHRon*G?gMwfFY){bkw~HsDV3~1 z7AMax@crQY19=}Z?ty=$!-M=6rG8N2|MvF03n|i{z0IMx3u$l*|HV%4kCZW!tSjf$ zXKJ>9RUBr3SrH`)q1C_#qA|!7qARO@(f>hZt5}WdDEddFW-U4Ks-~dTJew@&r&9D# z4DtJkuo@u`yvp0*`d8u0YYXSUB4tsTQ*~L&J!wV8%lUBo^WptX4f#fWuGS3q^SRRVco%4GW);-oS0V~%8CPKCd$jUN7c_U?{9`)?ROVdA zah=w&8>zG7t2R>Q#MdG>`cUq|8PYN;0bLte+J?SsR))M<>(M-HweN^(Ys)H?!k?iQ zEV8i_V-A-{t&b0=SIU0XnOPLb8^YAFWm=g1&sLU?yX zlvszv{EC&UztrqH=TRJJI}VkDPl>%Kw~tOAMt((1iC(Venn$eEOz+BRuIeyLjiHc+ zP_EUCW&~On*cm#u?(lLnPV`}}hYs0>JDBJKmyVD!XJ{KAndDPx0)}iUO*q-jX zz*PQ&?Mp`>MaD3Nx}VR9unkt;YXK zNtT+Y*@SVnuenjy`rN0McRgf?dZ1YMQAeosE6@CRBr6K_hv~x+K~(8!E?QNtLH+Pd z{)f$N#)BPZD!|`MLjmFwSn*?Ybt`vmr0EOvkI&%lW_mw|{r5CBo4(7b(B(7GxDisb zwfmx1i>c5*c{}X`Vh!69@cog{@lf_0o@ia9E%CO*F2048Ag_|_!{?Acv*6lBqSW8*#r!#Qr+&64^DN%z zp^U9v6i$Mph>LoD;yF#AExW*V~o;DYJGvI zXh%cAA_taXz4~A6RNQ4Pd#P6KGjghoeT(mFhvh(MRO3;Tm%h#Mm*(vQsmAv=^Scl9 zujfQ`yC2c7#mSP+^`-oe{kNeXiTk-f6e3su6J1Bt0remwsCIUhR(|9Y`~U8R^>6@k zpcJDmHz@-pnoDssbgh5qaNZrlY6x3JKazKR9CWES=o~24tmV_-EYbJk6vjj;WDbEI zqqF%hO}kR;UA!O1Q^P-$yVSR}2Qt{Wt~QIkS=Y1KuW9wanu>M7S{C{-CPBXwQhZX( zZ|U<+XsbUoCq775Xv`?%P1usgD9r#jkNaxu)ysKq$JUyBvkTEt>=D@reWVTgh_TG} z=qJ|@uMZ7J?4vGNyH+bjr1Bx8hS>rWkr{SX83*+~$y#}a&qY>wh7~pq&0{Ioy^7gT z+wh+B-RRBHHnBT~o>}FcUO2JbMPAo~TZd88t86um*&AJ;Hai#@5xfTtaX32VD6kVI z3mL(HwmYTIf(b5xqHoPgY4w*2%fd@!9EGk58P;E+^(<*+)avqU}(w z5yzjHHT%BXJxVk?@iw&oM9EvlTxt!j|0}uPW80~+bV|~mq%+p`anOAd_ zVl!=KCG6trwHE9nCLUx-xXwOFnwEn8wM63E42tz3225FK*y=zj`C!&{S=NksSNkx( zBHlaSdnAj~nCEY-I4h5}?96~y?)=WfRTw!=cKcK}we#^8Ja6FI%oh-`(wZb~8Dm1$ z{W#+4_Iig4DKB?NI+n8kN2 zzmc~%QsE=EyVrhI5aB|~FT=gC|rzZ4$~Jy<=cc6unUel0$Nd9ns#2gh>_}mqhLHy`K(sup zYSeRiJfB#3C^oN{UG(-F~6wJXjWnsn7OFcr=Fp$WM@XTLg{xCqqc$ZivEXRGfr9_QO_#+ zlpJ^#V`5FOb=l_0J;SIt0^`$b`&F8;Z(PMlig6k9?~DzI{vaZ?7}QZwXdGuD-v+jV z6$094D|mP|v$Q`*oZ3nhb5hK!*4Gu4k*>u(p<;brM%T>fJQRAc?$UZrsYrYhJ-TN3 znjdN0*xC=P`>e1tA6Lu8`j9L5{QRWVnICBt$Cd2sKGwLH$1A0)#pu6Mx2eqNYquT+ z{TWZy?lQ+}FSw9)v{tEH$)0`I`<8$@^|f0mwUtp;x09EOMrxLT*$h(9Q^`sk!~aLn zCGO|hT1W9B?73~uwwZvAz33=YlkNHxBP`a&MBdHeF^$I*#yq;|s2e@cEa({*fyewo z^V&o$GJjBsreJs#(mKndZR;#V;QJU#zF2!%digNAtE88@qZbq>BINEdA^zBn)Ph0 zi!;?e*-cuOQR8ckqW;FZ%!byIUE1t;WNiE(9!EeCW`e6n#hNg)RlCxjIr60Fa&r{Y zMBhgS_cl99?rcu3xLmuSGOOQ}pVrfEWL+4!HqXxvV0IlbcS7nlP98abW*I8AjlRi$ zl)A>c)nffbUF0iPoYjEltVtD-31u~JhV-^uyO|xz0+DV#f*C(nnpn4BcApYI=EpmZ zj>L8;4Ud(PYOQ^vgz5=uGSRhFX`(#QA8H+)5=gsO&S|cR*RmtY2eoh4o$q$n*?q@# zuSfQa9;)Zi%qhF^m|L}&*Jdyohh4&&R%SDY`iJJs~e zS@k3v(cOIfQnKfu-*-gB=hEKJ3yK+v?Xr-t!z9}o&7*|8y8PT^!Nsp#AW=**U z*UR~wMIWSSp!K*qrG8u1pp^_)vC8|fw(m)~z7X)LdPoNKs`biqvH2$OzSI@VFW9 zLQzAMM#kywuJkZ`RMc1Nyn0~&T}w1k8?YTTh!sL|a6gg1S(mT5)*!}%JwqeAp zjaA>zYmxYjUmLT&lZf^}C_qo4@p>!QTR|~)Qczmj-SiY*s|kuvD`hv}y?$(?MS2GG z8#IQR-P`>1z{$~CP@nW!Z-JEvQoMd=t28P>Q&N`Lvw=f@ICowVJvQ$CME0;ENZg#j zDN_TsPoVKY{S4+m*=f%;Ztj)ulz96xj&`@v<0vAv5y!x|H40TW$qIcrMuVcipq^;) zsLj_@IxO^<}CpGcqE<-jeve%!}5!=Za4aMmD;>=gCKBYCa%VGXi* zBSSc{IU3e5Td#Z%=ktuc;I8I~T!D6|U8G;P9&@D@9`$PGTG(yWu6$w_p2XGf&bV;J zDrLV$nrU(Cp)e+4R4Gkh9 zscN)QV<07Jzwi&8QJ;rib1B{)fkq!nL$Ai2%|Z7!1;#=BU7w~^3V|P>oYn5OcEcFA zI)^oy5sgy&H=g?~GC^rzPKTXomqAD7rHZ(!m&jZ(^A^mqc7*(|P7%4<=8K6LA-?O= z=+j1b#0C#^5_z|^lOy2V@@3J#1I_Ib{COh0SzW5X&)j0Y;*YXcti6!eeuSC?9~=ox+|D{V-r@x>4|VWoCoz&a}l*8)DP7X zwdLeO)>hh6pbGRR4-vsbG!tW!Euc{C7vuBh{)O(V=T)w3Pao^q&qr=sPp*&Ld~lHk zZ$(PfWN59`~zuo^n^D`opH+o@;vZ3Z|p2R_Xu6}j|^lR0~fsAY^M%yZd=z?t3mB`HI znMRK%5eL;^%__CSp*}}zam1X`zp1{Whs{oBYN4X-M;=Vfxp|5n%b27H%yLF^*u%op zE1_S)d^_{mt@xD+MdBIFH&3xmWM8ur^;5{#qYnOY_7)GtJ>po?IJOyGX7SACj0@nv zRyRaNf`~v`-z&Jg$nv#XdL`GaCorDXo9#Wh70NS?AU=on(&AMqh3zIPBD1{OJW=hg zsN%KG)~K+Z7>q(27l^K2YPo6#=9!2f82Amw1EVvAyw?0XDXSyY&<=VQmqy%H{Yb`s zoMUSr>u`Lzur#d)L<)%96!(p)Vv*QHa}a|{|6sW^WeI}+0&s8!$57&d$Si3nxnP%NnK#A-x%zk&bP^SFs;vEI8A%Q5DD zC(rU$`#Xq2Wh_x_2QlM(sB_p)cr53Y=gwn|S?i}v)ebZ-(CanEpiQbhAtr#`o9#;? zVvSwy0+&&=Bt4?$?L`Kq8F|*KSRE^U*MrKmj>MpDj`nK=(zv1V?G`-S+b(*z7{_rF zt5?jPh%2^bf9*fB3-vaM@*%dAnuWO@QnY8ZYAt-EW&^5MnAdNFSrl5eB(pTk>$J;? zF#+QM;Wsn-w}tr&ai)^XQH7|lI4x?ul6GvAFf7_0HS==g3FCOR~VylZZdc)aF< z>g%-T!>SQc0OcxCA8rPw5;t%@%qKKHBg&Y^vc57tQTiDhQ})R{<(<|xdZl_h{^l-> zXUmQ4G8{U+GZJ=<2)cH8QD;7f@e&uw&J|{+HDQFcR?XfN1=tKYGcAhN_=SsUROP7sV_|EmC=toqbAh&4Em)RdyJZsWdQa!dwP%qN9?h0kft? zq8(^_)3so%L7F#jP}!m1Tk9}nh#Wo8zQtXLDl$g}s0@ zuutF^G#RyRGYSX5)$hQsVy3q~l`d@BnO9?DUY2Z3`;lBsjQ#>L0h~j`*=k_kKSCHKTFXXr4&Db$EwzD~+cv<#1x*B=Y8?8Mu zU952sALT{v!c1oE2&=e7ZHfMEu0|tG*4%G{YV?!tu9hvuJXwcpCbCsDYDBf5dAriI zfm5jQUI!1+KW-lAT|D!%q*4Ph$tA^w|F9fFCx#ec0%+( z>jB!siJWbZVTTB{>MP+&es85kv&1cxT}q|s0W2Dp5j;7p-WzkC%s~=C(@ZRF3_UDr z(q?iPYHdMeii%Gr5{*>WA?eZPA@{{@GvYE5zsNYUJtpGyn@kmr6^_LmQ>g-comY1z8v~EDh*?RaccaS<@wo zq?qk`j~_{McVC+85qJpfLH%&D$HZ3Bdmz@*$h4QQ&GU@j&7NT@64c5lBO&Ub#w66e z?BcHGsh7uUTn;~v(L{y^)v2Jx_F%Q%ZDPSGvU+-*H6 z@?^8W&GA;Vj|!nUzFrG;eyb}2(a(%mvm%U623B7~*0x?6D_YbK?WtiEhbRk1nypAx z*HR}CizmJpdn(?Crqphx$t}d=_65Uv|?3GO6M{?}! z9d1nC7(vuDdj!$Fls(E)BhsQe8(C6vSdmeZd)6avE%8t2aAvu<`mM&*W9VJ3XT=!> zl&fl`&c%K)dr%*Xct0YXNZZ<&w?W0)qSq5Ax&|$zL&_5rxz28b4bdK~XQ%__eZ8cA zsD+$~USa>@W>hJ3K%3AXt{tlny$>tGTyQZ3M#EpM8hsi{Hf|-l+kBoy#d3AK=^Hc$ zE^Jpjk#6E%?5L@ZZT+yh_h$OkNfe{5CxVGJI_9-ri+*6wNc-Fk!g8^0asrVayKI{+ zI0gP|2c{)t11_f?-u_H-`A>L=-SajQz>W;j#d10OElj8RMe=cbZw2gxngGW#&g`SR{UzHTrO^o ziP2E2HtjwiSXOf0K}m-((w-HZNX zu8N%dp`^_#4~;JAd3+jq`ZDw_>bM>NBNfq^M;RDM16G}CyP7Exp0S7`7%vOFb|ae6 ze<@Hx)G|*`+(c_q+R;m6^i0GE?LB=Z)}!q12x~OPSYn_H>di4vO5b;5o*Q9jMhwRY zcX*9OrWz_3fE08X153a>Oz&;xm17q5%Y=|6!aju_18o<_Jt+B0XxKT?TdlqsnG$ACSaqUqZSJmB>dIODNd7`y zK_8M@#_m1~(eG28IE=rX4J_z*&nPkeP`ZOa^ z>4ipO=U}~5#_P?g3Vp?x=Dql^9wjz9f$cdY!BfbCCsUmN@f0H+0@oIW*zO8ew23WM zlg&IrDL&Si`K9{Z%;yz}&^%tTN#xPd@6rq+IjjA(qH9!OpQ>p(PNJFp${3sVq^C0M zIY&x_DS4qIr3X{KtYSlV;TBU?5E+nwWEfWJG6dXr_otJkGZQ%{YL~U^TkB53QTh` zD_t4N8!6p2BHgH;yAGpIr|Znfu9;(Rpx@7hPtQn}r}oKYc(xYF#DBFDEAH*2GCb)g zQGt028p=&%pWMh6`6$0X#{=P{rM85_t9})HK;Ab};E5FTA5i#iPwEmR4W>2|BwJDrWSAaaqT(rX&!?05u zpwX#gTMK4K0JUE|;o-B@4;V4Z&<*uY*wvsN+TrflqW|q@)&+`}>aCTumxAlVN3XOx ztosrD`cgCuJLwq_l>3{xX%s|XMPwT54~$;QfzA^hg{`DFs%2cueDd8nospp~{z_;G zdE&|DDoB6&KZA02C5o1Ije%PgpwH|`=t}>!)y>KTbDHJY;rR$eRx?vX(+q5%kP6{v z(~~5h(2E*UNvv`upOUN|53{-S|(Gz+fM$5`_EfehlJLkA|OQ5%DZ>p7B zU9Zehchk-=B4fXV_mj3_w((;01+xO}K%&puoZ|3A8)J|HgAV=1?Pb=<^U$cd$RcwE zW@n%j4uqQTMK>{)KZ<=`NS6OBB$mwAmORr0a6^s`t54eKzuGt-jZ; z^wh@oE|hWRW|~bOeS@U@vW$%$GV_ofXSt_+ThE0e11-LF^3?^xrST$lc6-l@Nn&k} z-Ws)NpVi+7!N~`vPpt@-OWR+>>NcYd(O1KGMZtWE<=fdu{aTEn@W`3R z;H?bIga4d(MOwrb7!_ zS9+Jt`xCoWUDao`RXL~`PNKqDx7(j+Vt6lZBl_sWtsh(Tl$H}(VQ%Kfcsx5sz6jZ zp#RRzPedEGuKilx*)31bZATn^EXMe|um$3dkuz)E-bC~oE{g&)7Ig%I=<{kO0ZedlWHI-`J<}5{B zyj3RJ+(zb<31$zfv#8}5Ay+#TE5r(l-LJGd)q#ziN42qgsoR>xDYBTlqOr}u>adRC z2=2^yuK6k2K6*Dqh*4H(1BqxJF=yk5ftnr_Hr53j;n%K^Lt7i8=iF$p*^O#U)*nRX zLG+B07n_+bcIv0_Ksz@?9fsDL2r$NT%`r31t3DD`Zxx8!Xt=66iI$>u!_gDUHFP79 zoQUGvsoh#jwTtV~RYF_wQ+1P$OeDPq%CR_3a zeDg1%huCSyxTLu>@&vu+S_5IBf5CWbMd+`xzFWOKFhatn+9Sy*>(xXQu+GRzZfoH6 zOsRWIfnr!*$-|6Uv7f?+K8QRhd9g8I^99X6d?;lM4re_?HxoY-H`7miWtWHD`G@X( zKkr>%Bhu&Q)~clsU?ufs9Y!w@SBw!lF<-@tzm99MhpX%NQZ%Q~lFYOf_aXd-+Oc8D zTHT;WMKpZ%Rw*kw!bPr!`L9xjJ{9G)_KJ3A*elYt8oGJ$a^Q%o80oZ6q>@wFDP_oq z?dBRC(9PqLFUdco+V7dbm&k3~m%HFovWu+6llwYnqc$B`%yZMWN$ zep9O>#gKX*4MiPAO~qUVGrb~nQ(QH@7M$q`RNZ@C#+Vn`V25rH(a&&3WGH$rr^ zo@wjFJFDVvWnH*FxgE$D?ZF3+KZVt0_Rv6N3u#ri_QqVXeD}N#WxFdH06Ww7?IQT z=Glo_K5ovpTs$h~MIj4r?)a*lw0p)Wk+6wo-iMJy7koQ!?spLABA4I7=?(A$Q!J(mlw;C zef1r$cSqyZPImjb?RTPf7wGgJ-z+F~6Fnk&FwE_w9Bm}+QzfGTKF%NX6kHVwQHlx2Ru^rCeQ~Nm9x=d zQ0%VotVeu7|BXC&_vnW&N56`3Cy%DBWNw3hVcW}-#Ws{G#gsOyEwUM`-__0$J4#JP z%8X3WZqTC|uyOOgNiQCZE+S98kH;`x-<9Gt{dn#N=e{FRt>`*ZWiLJxXa07crA_&? zzwsE>to7!b-uz1a#8|slrx_9AljxT*&s2}1+%{?!tT9vq>n9X*$-Knqmt~fsev;@l zXpMupDtZF#KcPNz0&6f3K#XTt(IC1-ne-67-`poHQFRXUQe%s}OKYd?QgH-F(K@tF zK&wohNaXLx(FiYv`PPA{CWVNGC;F8hX}P^QMrJ6A1-B*5lwN4(YA2cCapwKGCOwYY zwAL_$x6`~Ts4Y1mb0j#*^NMwORQOV_O4 zbu01pvW3N^C1(Ft|GSSlNctl;vWoQmx%R{zo{ZjYgi??7T}i{g9gRYbq#F^LE73B< za_ET9!}^8xXds>Wyd8d!Huy;NiJZ%$8F3tQMCy?}ayE}feA*oUiJvybn{p{t4{dn% zaXEU6NcQq;(SZ8!to_i7v&*lCB)|CM@aboehuW}WgD!+47{v`tgy^pu@yl&#PV^sG zRbnpZk^gFim9XHgm(hdmnlM-JLUfgma8o^j*F)iEXNxqc)u;s-NMm+Svl`R&Vifa^ zw4ZwpL?a0;My>yDIJZcZccS5lV=3B$t3WOPR*r6eZ*eWvP3%f@C0Ec4UxVHoJq>~4 z9sO1hhHm0d->30qJ%6I+n$@qx7`aY%H_&5fzlN{*^snMZQ1Q7~P<7}o@efqJs`%&p zgS-vcB~Nm_PjeN^@noIFth`s;l27`u$C1U)BGm1ogHhcIWK zaE;&d{07?ZD^OlV*7G4C*_x~I2AumSX6HOs$!~DDif{>|3^iEmc568ui^j3Ojd!l7 zvl!(^;W!r~hxdjnT*H`mfG7OLDmoZh+==~9;!Z@5h zV_7vXA5kaLgC#EA;rOQ1`F}<}sOS8`=&nRV5M@I&^~vbfB4{q;K0k&s2cn4#!D3y- zoqUKUa}Oi-0NR~0XAQdC-OzalsQf98@j9AKUq-br*0lY$hVWZ4R@DCcV-47SO^e$+ zbx}}^-HWX*3VCD|yoyX*2fz3ej`L}fhTn0WqRwoEBdEcA!Z*e(^qX4EA||f-pkAhf zxL0$I>;t9${7gouEn}v|c^NAsdZb^$7!QYXyP`9j71|9=eI~Kb2cc!hvmf^C3&bvm zKr?zJyYb2W(EZiSqMFcU{IWe`90&*Yb~39<^dGA?qtjno_H79Nt;x4anv0=bz0t>V zeCseTXI)fb9*;mKwC6lsxDqi!_GP}z>a|j%E_Wbm#sO$H(%%=XfpUCzBD4QB8uvS_ zjDwRLIh9|22TgtrZ`L;a4=4iGi4>UgeVOs{9OEEXn09L!xQ7120~x1=98KH>?FVrI z%;c(@sOKuy^0kazU9Pe+baw+|Hjt}q%&+wK)#uwgSoN21wfe=+;EuFMTJoL96J@x{ zz&>okt18fHOU6-su@%2Kf#bH}m{&6Tr}2yGa0>eXC=Ua5T90ByMxAV_l(X`R@)-}i^uUbv||qPYsi7mc`u^DN^B0Xt<0*D;>RHy zUV;LrzyW5nvaN-mgD2=cq|j>rHUsi5BFrYL@tR;CUqZu z5Bp)ORbm#cm&(BmsRX6lJG#JJZ)dzuVje1Rgc2~<(5cM7C{?tLJGbY!tNeBD*6xK1 zS=pa)?Pjyh;Qp2}BHGX|v4iM4O6&7e?$%hK+++o3wl+lF)3}(K7xoQNdRi~mw%&OsQZ*=EYw6xGA`EZ@8Y$(MsczJaxtyUll~9CKc2DK3l40iitECv z?H@R=TD^Wr^%X1KtfDW)vG!wJqkD+HAG-?a1rldWeEwg!=Rm3U&ED1QC8)=%pN~8 zDvPiahrv7VWhR!f$NSLQ!yN5yC{tfc4`MY9c?{!M>%o*cjrqQxjFWO?!M20Pe#X7- z1BJYa267?i-%wnIRdy2cX^*0>ST7$i7nR_X)zQE7_N?Rzl)EA*Ze*^1E3OOwY{BTw zPc@t?imS7R7Z?3a=0}yHVaVHyp^1Bn4#}El^|QZ`TooDFD)7z^in8nn@(CLw3D>aC z|B8=9MqLJ9lv}xW_JTWJg_g01QkLpjt?a05JJ}{H=oeL#Rm;w0J3iZt&QgVIv!Zo> zuJQsTXQAjVyri?Z-xJ}Slla97x;0G18#$W)ThI;uq6^hGMW1nvkHV+wGyfIgfmQJ2 z$nlRX+RSK8X9i2a!@DA3yTP6GCY}v1?uUkSH+5`k`dzqUYw8bWw5;1H&AqMVUY-O$`c`_Hv2|x z%UR5ewXZvi58+xbWCltXt%Y|khfc-6`-}DYKC8vP5+5>-uOvPGdB##7%PY)4pOj5C zgw-(*8lTCUFf;SXN;L9v2rE(yzLLz6{cS2Rdk4Y4^kFC!tOhU3zSWq=?d-Xcb$9^p zYQhJl0JCPkWqh=uc5vi3pd%~0?HeTahPVf2r!Rocjd$D+CwhUs%Li3h>&-SoYRC{qjVrwi7|1FU@!jt4+-udtSv z@cb+>2K%d6n;?pe`3~x6)-goCp?18|OL{B+#iVYXzOi!E`qZ1DX{#KJZ`_qMGWY^?*aG@&2Xzi$-&VY83BRs~&3OUb zya~O$TOeP|8a$70S|e4iW1p^2?*NWe0~PV2&dSty#7r&JJV^41-<+ zjbA_F)jWDY#S6LK*-*T>S}(D}{wP*A+`CAbERvbgOQRZD(I%+Qem`nK+6HTxYmrsW zvfs$eOE>B&RvubEZf&wyGa_#nb6jnEQOU#>w}wd%g;Z`GOEox>-gbSqMybw(hlrW1 zZ{|jLj5Q1T5pRJS#JbkUehYJM#e|rh)*N5U-q8i&Dn9E9cNz?j8p!^)!^!RbFpiv- zhp=Y*!`1FV$A6LTKCfaoP9e+vm4uAAs%UM|x}ptav~Q-P;SY2&{E;m6jby8D=G{-J zx8e67C$3?iFL-Q9dw$LL8<2OOkpF1MH+wKo=J=vu+=p#C6%>t$oPRjJ{n6w{E~mrL zeDW-x$L@HHYnlvIkKihea)}q+8X7!4rHFM z#N%)glwp^5dn?qYcS2=4z#m=w-{QTC_oQ2Vq4=MC4|>IyM3wwC|32T4Z_GF6Kj(ku z+wvdtHTlwfSw25sp0DGZFL*sGe=UC}-;{4*zYqER-F#KPKL3_qlqmi^Uz@*@zmzY` zKgqvjpD*&a@_G4~{E_^Ld~`lNpPElj+bj9B{K#Co|Kokvf}z3}k4XptfpnB!awzd0P9Y2J~3Kr11Q zX*Y#l?1*ax%$NVjb8D2sz>;tX#cEgR*$W2c3yTxc2(9ryC)l( zJ(S&@-J0FRV-T;$XU}BMW)JhaU)G!Vk7N&IL-?*wHkf^fWcO$HW%u%GApaj=pF6VK z*>6DBm*+dO+p?S4I%OASmt^g-tFz0pn%ObgVLVPkw>cpzmmL7e!Cyr`7yVXLT(n2F zNA?qR_7Obp4X`?=aP{MnxX~laTP1Xo*_^0ZC7Zg zA?wHJZ-wL|H$rGWnGwWFXtgEKN4`c%7+V+dYZ`LU9yOxtMkj}t;YWI`9%ZeIl06qX zy9YUWA%3n-Sng)nPhxJ`kmFnpPgrw2BvN19;-iZ5L{IxtZ>7KN^x{K{cjZOJrHc>Z zb$ztd8i^vy6z>BSmSO)R`KB~9xmR%ssB#Ci@eS0rp2zA$fiL9GKt03r{yawI@0QC*&_e|8GO@zvU%aJ*A5G zryofz`0kC|Syf)&4!5rY4enR;EzGv2wW{!$MXc;0P-8Pz^vlfe0omc%fmx~S zXSjwr(reLft7Io<6|;S^3>wIb%4Ln9kiO8)z0hHwtXI}Qdm>wqeV+Z0{g3U}?9Xg_ z_H*_{wkG=|Tbq5EeZ^x9@4w1E%|6T4XWwRjW&0K?70xO&Ei@>cUZ_`SR%l=7R_Ix{ zr_j65xo}CLRiPuFv?!ccXi})fp8FNDLNUkvHv5<}P0yxgPi3Pxe=n%`>a1;cHY?=l z>=1PF3T*$)euFQnV~;=w>;j*XOI-xDoecL@hcGMiTeO0ONRbDTJ~yz1XH}H`Ch(-1 z%zhPmyPS?xs|k&qz@tXWls}s_UmL#F42gCXRMrkzR*!nUQ~9)J@kzzyiw|e~4=p|f zO8IZ`!E}c?g>TN}x3xINnNZfH(4fD&Fv-CNcw_6O8ove{)qMQM@Wv)kWqZ7PM$bf> zzK%H@4t0x^_Y#`87*TH1(bd#<7O*BpA-^LZVPURcyvm0Mf$^gjlT6u9ov+~2WxW526?FhB=TP{1&YCG*T!B$MAKgOishi=M_i>$b z(3iI%oex6`KLvgN0(j%?$RfLlj)y0{2>)2XjQ&})4>NpJR-QRN7Oqqk8?JrUGrJRh z_ZW}CaJS*v$n5!SUbZ6p2&(E;m_=Q=y_@O zDxCMBYy>=Z5WMud>|&^~Ivle?c4)SLwhKP~F8uHjv^lXzu0scCjZS$i(&13{6+( z`9L_~??~y*=m;C~kKm8X*`)1daLbvD>ceONPcg=C^X(^4?P{LCfUEDw_h-G=;ZCnX zUwszIvkrYQ$EG=zx$BE&CN}j)N%#7*=+Nv;m)r}W*w2w{gAR_po{0TY1vCW zX0Xl8Ud!Hs9>32@70MUREHo-KhN6xwR45!(I05Ra1I3*Ig_SRqE1U>dtjTs#p&Hz; zV&Qn`@QOmO!ob4dLO(cVheEr;r97@KTwmzUqa*K{L#4H#+oPb*tgsE9`+oLDHY zZaJP+F*xgi?r=$Ve%1sEJteD@Wcm(t#%;**&$y%U=zyKEK}5?t8C&;o^j@QE_G*3` z**Y2xr#s&Bc4+)(Gd?vK@x#%F{$Pwh%im;FXP{?IgHm6BKir$&khjVkLuIG4)j+x( z3r&`X&Q8cr%j@S2^E3GLL>_hWM$lXd=otyo{Up2z9%xq;{^9T~gk(DRANhXQ)UPITJ8 z^S{t0K7zB(h3CErJ+6WlSMmQH?)a@lv9F_*PGvQ|0Ph`(Zt)oMzdzbQx4a!|x-FyB z1b%P^<6523J(JOE4yU*=zXJ_J?)-ed2-^N9ugI8O!90#dH+ml%xD;!)DSGHAw6u4* zgTIPO!L`c4WshMbYGlpO2fH!~-Lr1++Sd5ZnxciCkIZe$yH43PSr^9OMn2uXeg7}tooXP6(Uc)2CLbKb`zv~H7vMau=E!(%j2Pn?(mMI zi}xu0KL4DR{Ry(_!=(Ga$ap*qeGbg;LPNVDzm5^?$T(iYIJV5sgZ^sf)!>Xr!57Q% zsKD!!7~2MkE-yfTbF|MxOS_z3c7s#iocBOaYsFTNeXh=Xa^&$?AuF&qwzE2N>=0+U z708aO0i%FUXN?Sadmh>K^FT z1)l#~T(tc&BfAT0>Rz^?&~rcRur66=bkS?F z>!IYXSsPYP6Ku9d**SQI8*|1A=+y=2xF{>h3Og_>o&Ak{_Zju+Z(@NjfD66Mj1EUS zik%=%)J2Jd{EeSxB{V$)OXdmu9{tc&FGuQ~g>I_$<_J5ooAZyM@s(J|UqV}dFwPr! zzZ|aoV$va=f+tJ&eG<)gLmTMJ3K+y=2>PA2$Wzebboloaw&&q7PoOnC!ZrdPGJs8f zGnDAVR&sXw~=IB07EwA&LeZB6`(Mw1`}{NN?g<4=Y1Z$__} z!fIFz_x_`3Z)Ua@-05=c*Gm}nW3gD);LjL@)IJt1V;MZSUy5*?1Z5qHhVUP>EN!Ke z&?(xYZTCs~=xo;BHZo@q|z0 zIS%HynX6_+vWWQNg7?Dq8;xH22K?kFZ2Cj96QS0Y&~N{2Ed1aj?6}hCCTA4RM$fpW za1}a7OLUeRXu$tP``wbQgGW3K{a>CnfEVn7mX~uCW6|>ZAXhJ8-5rl*zc=3gU$H(v zN6%fH{L@cD!{)PFQGX|Qsa0aFvd{KHvp@MTKKGkDuzGHWvN|S2TPuKC{A)9vhK8rE zT#;EU4R756CGN@(#E(>yb#Xj=qp0{VxXqvVk@jPaR7%?6aYUNR!(%G*%j)O`RysFl zPI_?03HTT64JuxWmeVve1v825Br3XvneSrizs7r!?`HG*1!(&@UK!oC#&9LC#P6Ml zF8c!>M=QR5gCARA^cR^G&7hBo%+O-y>NzOmn zt6Zu=B}O2X%U#hWmXJHD4YZAMh36dv38=xldj zML$Y7s71J2`?&!H^z)^l-1ja&Z zH(`@o72g;;{y0YS07kO}lIL*ftTr^)j&Z()&6?qdppWsyY>Y++-pNWv_;to~4BrL* z+cjvMO_`SpNVk&6`>pWj&Dc?E;G0X)^5n2H(f8g&$6JFu+XBZfg_r3Rc&VLwdgEt* z8S49nm`7FotT)2xo=L0qZ~TGBA%B}7!&<`a>LXiDU=$9(H}iec<6pvyI~+=rN121I zSK2tjO<16JL2(ZwXP&?|dl(D*QTCn0m@Z&cKR`$L5?kO`JbY!dQ#nUHj(!drLoLR* z8t-c($?Eg!M0`TW@i?BnY9r&$yBt6HuTR^``zM%NJ%&~a*%$J9IIB3CH>2a}i8dp$5BFk!$WAE|*dAWo0DnPQ zVsc-jVNZs4-^^ORh&50hnmQPo`jruXKk?TE@Ypxl-h|W6=l{HaU(ZG6J%?8P0=COM z`0+>R-7DGmHLQ(S`M;b`K0}`VjMnlOQuZfg-ezX&6OOx_8GHemItCxfOYHkL5_l2P zv0vUE?fW7;ezVb8&O;(v)zuFws>%vI4he8MYpo+xUKQ=96jW9j3&r(!4ODmyyzqJA z6qQ*;BgyQUgbWn#U=EtX4=Gl>mQQI;*ZP zUbO1?EVd+RHXqu25)OWSitOBh?KJ^zX>VAop6yP05S{=lJx=B-?J2Vn>2K#*Yn*4X zcR%h|o83Oj4S9V%yvHo8X>isLp?Wi=tiU@4e?o2K|4rxx_v1}|g7FaXM{QVZWuNQ_ zuK85_)s3(i+Mt15hh^4-$8FiQ=&2V#l~u84_C`Yen&KWy@g|K%e%^>D=0arZN$@uN z<5(rVj;mY&_nrz*h!~WZjQ4Q0z1jM(`tRlQDeUn!d#+}@&9kxUKXRGPH2x#S*2H&z zgLxc-tlw zX}#%U()gIfC$p2pi(ct1ZfDR+(n3aNdDQ$^uB)Xos2KKzJK=hzcWEXG|V8zsbk$D`$SXwbBvhgh` zS`a?f+jw_9^5!3_QiXZQ|2@i98F{-Zt9s@|JtV+Ey>6ls7&5D~63EBpr5y8h3*;92)UQ6f*+ zo%01|;3H<+?yV&lZ94=uhZhckS59MGjreUX%J6Vk#>ZF#sy_i9d?FO?>*_>nj=@&m z7hnC}aPUgJE5};?3+;G4+Xfnqh8Ex=BX3HqfgUnO|Vw<&?FZ0E_ zGGq0TK4S7UW~QvCXoD798*95gGd~yJ@Dp*wnQ(J6X}iJ0pW;|^(Mv}rNq;(ew{;nH zpc;F87o!DPd1=O-=vPN^1&5@}fx74gt(ouk&_)Zi?e^%bcXPBU(9#0r(~F$LJePa_ zwdB?mea-zWW>g+VYV?K5%o#RQu|5*vS18_mriYmGE0GBG;4*dKu`Tdjnni7n^9|@p z&P1Q2a~gNP7QITJQ7s+~p^BzFH{xOU_j>&HN`5(*`FfDeE|MaPh%<6O+k?D&i2oy? zH!&&Am>JCqet{MDKHA^kXh(;qI~B9ZXnhOj;0FBMcd(YMJF(wmb5@Cc1kC?3U%nK4 zX(y|G9o)nysyS5VV)ui3u7PWw4+qsVs>kyr9%mv`T4Q_P0H+eo?P)lfU4uoK`T)*t z@3<}Stxs7a>v;7oYunl(^HIfNl%M>UnG%^qj8Cxg>^V z7Ax3H9Z^ZmHEqwV_kvoj6ng~jFdB~i5O&;H9uG5r(MzW%`{)U_d&50!B0W699$J8Q z^qY;u5|3v(R5^7&4$;vndUUDv@cL{VOe(hyQKP@r) z{q^Tu*8cS3-2gPA?u>JL_Oyc3N(}2qwc_kM5*4MQf16cgU649RTaI0qJ2vA*OcN^z zq*;4M>UXg>f|$`KKzWVW_Y#h5v`JI|(TvQuZO2(fG4!aN)AMD_zu5csxW14*+Hge| zGs<@KF$els##y9AJC=x5VV%F-n#9SC?hhhC*b&eA+RadyeSBU+Hcdj?5VLQ5;_hZx z*#FlarZ+$v4Y7j`PFlx4$un~(GO0vyj-B*tvX%Bl7e5^RSHH`Cygm}0^ceJ$ig+xw zmoCCmXpgPj8ro}!CUZK}SCdB#R?TVbb0Qk=G3d-E!BK0lYFtZ=SxF*Zid$J1dOeBF z)o5>QYY)sMxdff4Eo)4E+?sFBNV-8iWMW;`o6VS*y-%)0le&Vf zBfo6MW`FJ0cv)K|>*z{WLua_{4cIs$R~bRm7h!ju9~nWjB<(1-C!FYr#H~(-+Ur5t zA`=7#kG(z4XO=`oZpln`WERc4n?!cR+ep3*Xw6?E`L-7ALc`iOI|v?JfjH`sXvo#j z&TFCHDfUj~j}T(q5B!VkHgIZ5_DgVs2bmFUW`JFK}! z()lG&*;!Co73ipJim-oyUt|uP>S_4JaQH?)#?=_;$#~_;W4)BeBXJ0{asYm|Vm!!y zp$mV5M|C9{^bEZ66Y(xhAQJr;vhq=MVI$J7BOlig{rf)Y%3twH>qq)xXu4hw;)gp|w^}fKfv;h4eFxfWJM5KC=wEw_~ii zT;{0SPfFA!GoYg9msJb(xo1%eu3+ZWi{%Qv;JsE)^+Nus$yn3+Add$aGkKB`tB29N z$0E&M!aMf{w#&Q3e15=|{f1fJgvVn&7S~2*{&T!2YmtO&i6fY6vx!$9ARXUD^L`7t zy%ZncH0I?oj%ptQE4uE4`&*r5)r&}`O_06jI#y$ypUCWpA!a{Jy}H)U|HiZV!dCMA zz<;abe5c1(Zf-TFI-a$vqDur$vYmt`BZH=vg~ozMCm>(xa;4eWKb1hZOd!Wqqi5~1C?4Yg8nPJOnb{U~^um?T!8+fBnN zfBQZwU*u~w;H{!ci+L3_K_Z+~gFe;f_9kEO7iM=IcW9N7^@?Iv$nVy2zbm<8Q4_>a zd-vGcBKArAw;#Ckt9)Y^P2j)s^#qJAEk zM&vNYLwRD&qn%Xs-HRAym7=&lJJ9K^B@v~^`g*JBorhzQ4^{}FET`VACp%);ldvUJd=Y*X@jLXBT61wfHo#1z_*-b5D_9esv0B#g zSj*~Ilwuh7;-k18nc19cugO(gH+d-6trWDAa3x-eBV(PQpC7s&o;o>#8P|*4z>(Ud>(V=HXqIVRo*Q?N1KbpQD1Y@53M(PA>U1B&R=0$ z2=|pE(pMgBL#_ftF|A7HcETiK37R#d*nx?h$oUr~3gZlBF+pUenaN=Tx`l& zb99{)lR(L|nwiw2V$T_|bUuXNu1fpsVHFKebkX&ON}Kw)`ntUitc}w`-yOIH}O&`uzu}+;V6of zA1H33saP3pO;KfjBR{k@)efPeOCH86yZ=~keK5Q;kYz-U5ph(!fsiuM0cL+jApAz< z`2FF$wl>>rcB`SSx|F}}&o|azAHu8X%n^t&_Vu*lek)^deY`8qJ{VRmzsGB}YVj7W zfc}#08}_!Zv^^0;Yz#aAD@d$EkrKpBw9n9Le)ActN>oH=Uqn)S%!-;6)oh|VT32Bm zon2c3qtV!(1mKO>NW4|y*%d~Hu@^bBNYIj&tFpw)R%ko*pyVSNJM|3Z?gqvox}RiRK^e}i z4rx7HfpHYm-1<U-j9y~~lMfKLVbc3JaE-sQNW|JVWH1p=8sOLx+)NVs2c zJo&q}_3!W#aUQI)Q=>hW5fBf})#%zN$9;=;P@c6c*0p$c4cP4L)hcm@&ge&hjAjO) zJ^1uwh!w5ZL4SZ9PD87@4V_A)2kn!)lLhiP9$x zTqDsHAv#~!ZP2{}quMTnuW~Lc+{Ep&&<+=zw`iA5RVrz+5VU>{;07@R|Q54wd(JOM+HjW`moz1}O} zIm*8Gg#BgZgW4(cp=d2TaW==XiGVB~vgpVo;3IaBvOCUhPmobd`vvYs zdlP%dKHbsBLG+)u6EEJy)!2cnJRIaGW?$aFC+qfau1kAL`_sDEo!Hxf0ITmri^3W@ zWu4v0tc(`zU7oNP^;V*VsVzxqqC!N+mq3;bOVJ}}VOo=QD8JGADG--&g^KFo_=t;I z5~@5Rou>kPst&YXpRF-xt&y&`5=XEHnHE9;U$8PjkMloijMYq}c)7M()h5PMc_M%J#bS7dUFAMZTz47r&KN^O)*rYAZbwrE}2+Thqix!yNa;0 zmXVKI?63Ju97<8<%x@FUeK&G7XXUoU=XDfTXL&rMvl$Jw)*Wf(?aP%6!_s;in`{d6dnxl|kKp=T zX=6Bh$)aiK67z^b55hM$pZvpv@uu}4YVabISzO!oghswI+ ziJPCSQ|pVS;WO*T3{{2){laz4<=4Zp+Rb3G_Q4$1lB}&N+`S#W9sP@-&stFB;e7r( zTGdCy`%*abuu9OC>-93ta;Hu^`I(E36${73vtxDCRL90R4Kr-t+vwLA#R!3<# zWS(^7x49>C)ULx9Pz%q%G58+#!}m~*ajK3dv^C!D?tI@DI=YQl9T~^gc+Jnk?_QbB zT$Q@aN=y9V*W=fCl52gB^`Q=h-)2Oms^Q@7ygGV{2q&fPDxoWp2N|k%r(b9gc z%@}>r(vE|toyUqBg2#F){(|LfMk}Lg(JHff`*)nL|LPmbIi z8ak78Eoz5e)i2=puOnTjBpqQhtMEux+WD;J>sYIuSO?L8%2_WeT8BPiZ^3D7Q_*$A zi_yn89f|S=6tNNhCk^C`t@hJr@PS##;xSOwAbdPmr?|&u%<4eqZ8|GZI^BW<(f&9Z zSzML#XJpx0?IWh}i=1O3y7D-rxEiz3WAhTk?9?A1U(^#Sn#Nb0?R~Cp60x8@oI`Bw z-dG;?sd-$~B9qTX9@A3u5v8qf_^_^ zujuz9g5Pq^HiJ76v-mOoPvDA0&QU_Dv#V!|jwN^S80t^jR!VCvRuM!_WUc7Q)c2<( z(Q~QJtzY?IKGAz>M*;0Py%{?=p1xrzJ_mu}2*%8Q2aVwhB4C;ic{f~5EWg`%-2=I3 zBvJ}cMv4$6wHgT+lHvkpBlU-RZ$Td)NNhmg)uZqvD_g{B8^tyOPCOIu*i1ZY(|Npt z7tEZd325x2h+dB5cXz`nMBN;UTsBf3{p)V#d;{5M67;-?2*V;(bP3QeHd_Dk5 zyM$3F%eef+OxRD^3is%wZO2_{PRmJ;ls=I){I^Gpy_xiW*#qZeMtw1Rxwj~nukt@4 z1=6QoO`l16_QTM|2&kh6vY;)JM?a|b6c->tn(@h%_$J%1T>vLKkM~{K_hG2rUS#Gb z55rGs9}ZE4tt1~zHt^L%-fric7tyt)uMLS7zv4b3`lfbR0-M4PjDIrkdLzoR0{24i z`;z;#XOuCXcQ}U_+KZr_?-Q@8h;+5b;%UeRk;v_sC|33HP)u~bsEE#FN7)kSdh#^K zMK8r_uHi4%mAGW0`Pfx4az~_}&*Aw-+ND@KN{(iYnfEyd+85(nJW4S%Jd#}k^+$Zn z8WTarzE@`YM)uG!#vuBm8EsKk=@qeBY7Zzm>hhIcZU^$P)?9l`&)jx6>HbiZ9{V^!;emI==Vs|M1PH6f8DEARQ zy^p=dvDbKbrJWN-@i5Qs5jf`zJi7~^#)U}WMex`e$7pd^yE-xXee4lpW2Dsb~e-5lr8%84BX=e8+g2 zulg)BITD%@SLRMQ)@^Xd2bmSS;zq}D{ese;c}!MB+9T#s_}ZP&otW6Ykd=3#G4#Q+ ze=UA>@p`Yqvu-3=8QPa^5Wjeoc@{-u7RMH!H+oB(Jz)pfw-WDK&z0GmM?3{BB#~TC zfxn2kD~?D#UaKYAWkQ7dlNpDK(AmClD{)GtQR6Ch6Atc~KO~(w+LVZ3}&(LRSj7bzV`{b#ip2hFQkgddV#ZW#P+u;CsqtvFYDVmTz;lLvl zMd%-5CHe@(5Dt4|FaC>(XqUom@Mx_cQOk|HX#*K8w2zwo0e#pX$GD1lCi564k!8&q zvrpWc{8nUqEqg~#41kf$i#^o_z#9f3c^>B&FGB|_S#|$Q(ow7OA67{CiLBCH!+E0< z^DNeuzM`<#qZ6_|LlH-`;NFFjL{*u_6;9yV#`Dku4ivYc$XR>+4CN|Durft77fb6s z*0YgSePpgUy{;i${(&oP;{5NW`S<8{VlkfZHs{-re)Shu8oeS!Kd|SLf7+O0Zx_(7 zjH8PGWOhMK=G883_E^3g-tN{lX{}let{d@0q=i$Ut%&!T-(uHIBcx}s?#+`DU*fj3 z;`RF7#TvBw;CeJ9kwNrIM<$U-(5-ma0f}=9d-PzPicm5X%_tC``}3)OD5H1hz)fmF ze}^SbWURvL7NIThIK|qC&ItP;Z;iT%psJp+nelKY97}n;oLev5$Gi$XLfoprWfhUt zn1l4Vk-hA;x(XV2nYAwB@KaFM^H@FN055`SX21pXaya|*c|^Yi>!7EyxmwlGM6G`m zDRw{9bq|~M10v>|p(Pg=yU(885%D$dEnbcu6yv?x?|PPu?|9CaIr46t?&;|oW^g?| z=CQBHb^n82i~!p&?r7GVRzzFo#a?->llRovwjNkJ8Ho+#J&W9>7IO@9T9*}UH<8Qu zg;u=%E*c`uM2NS$l6{c0GHas2wt%zV%1n=i2hV~7zk}9mw!uea1TI74or4B30ggT( z#ZtRM1$GY+ZN&U0{kk1^7gkQhIP6_#oK|U~)oS;KHe7|h%=BH#Q!eE*v!HH6g7ksP zj$;)gW`7;~{E0Iqe_PD6RViXL+k4`D_7K6_?t6}y7RW@#@*#Mg_^r1g`T8Rb zeYhfq!Vm9bRg7V@?IfaCbtz+KN1xx&y+b28gex%)e*_X?FSwXi{AQ%{TFz;NRg79W ztQ{@I?p8w*BVDYfWn9rG%(Z#La*zs0JN-$u8K>4zq4<`O=|2YD<7u`Ri6Sp1KVT_Z z$7{TviG}w(pFaVY>d)Stpv*Jjh)1&8L|*-t<1c6Kt%tL_TVLe()kyb_Sia|C4V$ld zE_Uz*31i_>blDr&L!6fT;RRunndNQH%l~;g6Zo0R?~l88C}kHSltM|8Qb~wxEmVGF zS7ghU>>*p0BnnB&QnV`4Mie2E(n?B68%jl4N}}&v|M&Yo{N2~gcV^6T@AI7fe9k%Q z0kNEqur5=uGVGM)2bUW;WzC47)2cp)!y%uDS(EBF2W*3hoDO4XFEjo8}n+3r7P zV(rlEMDoyY+(~0v#`64DXw@kvCueDEBhO&XA4si%2U+!dq1VBzZXee8cJP2L@H(2X zlXXE#TmY`Hc#2poMJz-Nh10R?r|7~)?Db9Td@KGo09R3s>W>PH`ohyXcCOlj{_a*7>OGEJ-bnJt``I&MTWf5(QWlyxw^n#Xx2!ME&;ixsQne zzR34Hz}_jLZ-NfYHD8JRD2w%$4~nsakTbyw5CzaGa~92CNH{b7My|CyF*Y0eX7m)+&Q~fRWTtC~4 zo$@YU8h_9-EWx^%X*R>GM7$9FX5_IRhlt5wm0pMTxS2H*U3(iE!XEt2QV}aOjN53g z_W@RL7F6~uboLVKC`B%UCZ7i1J26v4W-Jm@L&I$?5y z_Of{{yM~6Wlo6fzNX_x^zJ19$Lp8mS2>qenlk-pm=Jq+{$x}#QGcaR$_gzSmzN~a- z{O1nrO)Dt19gpp4HW;d(3aW z&7(d4dndoplluXD;?dOBu}6#+l(?1Pzv%tHjkNbwCtPSbX<5CNN-yVy8?{==yZn@v z*G4ppQe5PS6+OoBjkx4ZZ63S5n$-v~7^_aiMW2HOU~IiP9MhfEAAwCW19`GI#TG5R6qQE$chxXuFAHyp_ND{JmXs*hj?=CKmX&}^R| z1)PPINxe4nfKCjogVbxw*$hGQK8D1689ntL*4K6rpnrkPJxDE5!VyJTDii{D1?ZOT^Z%EDCQe@o9ln3kzIuYGy9^a12mttwypV)r1KVV~T zLb}vL&RmWh zu80)QhdXqLIww1(9iUF;Ao+rvq#)A#T;5R=ncbAgXUEhpzXR$vGT9HxAB8S{kaN&8 zf0$!BHjQUzr%3a*A~v0LwwWDwDu&sl-`Th0V6Xzh(LVob*z=HB;%mZusfy51=w4}m zG5fdw0pE+c)LuM_hAsuIS;yKWm0m-UC3B$8w~;!|k^c($qusp;%6*Gi-D^m(+0cX% zXjm%g?u2GVTlYd2i|*}+Z104qVNm7Ls5#d{vS4*M`M64Y~2Z=4c#k%^6LR*k&bd-~;tXi(Vw^O40ej^Hh)VpbJ^0U0CA9M_odTgX zYV6nisQF^E7)Dc!got1foo^oWdhDr_I0xf`#$DWbqaq&Sk{ug>^EsT` zZT;qp#J3ls6<*-pN2$d#r4*!g&-t zHwYi$UbMYY`oXCc9Okrj=WMLKv7)R#dZ{|QZ{0&VG?%zHW6j06u5+*poNnM$GO;q& zs~K0mnExrq`$cyg#~yGBpvV^EO(KiTIvWoZB_;wQ%po%4;N%~1?B>yp^V#cM+6}&- zQ9z@EVM=8MXw=TKVy(gqD>HEa^1V)+ak{Wrc)<==ZviE`U3Am zPuNLL&XyGEQcEp zOpW{zy&+!D%2)NrCVtVFw{}I)FUC&9q}Ve-OJiyJOHMcpQ?|4}^c3~~jq9noSMkec zmOka1okl6bUfv7nSSLD);uGO5iZjgGIR(qKK)N^L9>s=RXCNlhMEf8{yE?H$EeN$|(VrQ;*a- znv(2nDfZX8t&4cI3KB>eq(rku%xLCbcIiv@V;O6*IOX~2aP4Rgb)6GFjg9Ji-Uo*| zv2h0cJQsOkZSEVa);e}B%)M|{wRp(QJhuz_##HY+DcUJsVQ1~i{Wd!-YQ-5X-$6&> z#LYsV#`>JYS=NBs>me}%8Y29?iR-nVuP#?@M6e#u0+y{c61EHL*PGS4C*?aQXE`ac zD>A^?S1VT8$WiD@Y+Y^@*5G{BpePdDKKTI^C1OfzQpA+6c<(#JUdoqw(L`21h`Kam zYAv(Vmqk#SkJOtK2X0={sZ>TVyiyUuX6!|Yx-R~8lJ;6w#p(|y6Nf3RBB!(?d}dC} zXY#`v(5{(O(PZWkrXwfs$BrMyE)7Jc_rW%C5|5RjScif`gb<(H~VRh-AS5rxjmjfcFN{7J~5VWalY#a ze=1K2rj%yw9u&X8_M{2&~56>LJpp*{a^ zy`Xwr-=Hr#*&Vk(weg;*sTC?J)tVu_E9bO3DeZlv*fP#*F^AQ3*55t`4^M@!r$PfK zr}w^)a$8iHU6`G=>C{5| z;y()=sFBoA^0-;UkB|)Z>ruz;MB6x-PGq;W&}XoQVg6|7@2#{qo2Nx;zRnz*2$BoZ zXU;$~(rwOKbgVYC6$s)O)YbYUVmp;_&PWY&utL3qpc-1So8BrCHV3+23aIMIO z&{_UYY_=9iY$N#Bv%l_mZ79I&3pPx(bT`c=+S${UxQHu1pPfBvMV(GOb02c-OE_RP zyC&Yl3adeI+R3S@o#8lhu3E)CuvqON*%thOQ`=imYkFhKhnItR(qpuLuHAR+{+;VM z?OCa>im0rjO-7Q3*X`L=801)S-c=lw+=bK~S0@&DEhsj-(%WBQ02DG9nz;{3n8{&J zCo@K(=FP=xmFPiQO(I@Xe4!jB{-6{z>(r5Jp>F3vG{bIC^R>su4f;(Dd2+J5GpzLW z`XZ0DM2B$}h*$fh8n>alOeBK@nps>#hd9w)n5cdD$iuG_gz+Hw`J(L%PWD8Ff>phPN7 zty#6>e@Wz*S)Wi3W6eycl5yg!wO*o+ zO8-2LD)@$#dHu39I$kS{0NW+73a?fq3Vb%aRf3~9)z)WHr&yM#@I`o&mxDL8=34$~ z!|&b3?{(u0)P15O9zcIR!kOyX>nE(_T8y?iuXso58SI8;jQLwRrj$2(ETSt!3yr9o zComHh_DuZ4Wk?xoR`s?-8aE-1VFjuEx~-!!w_%o2pI-ahSeI>uRvJTi^ZK1Rl+}aV#RvXxV zt|Oo8h1F&J&&=C>NN{`A+0DYZhSei#a^=rk(4d)nJ0ywEQId-{&@VFUq+S;b80OCY z$~B8K^ax({e%8SWw4w&ZV`_I!xtsXB+6x?U_pj2X)AR7WMEw7$)STP3v2K(5?ny@_eYG6Fp(vQ*Ts_EM{G-n^vKk_FCkN z^X1!MPnZ+!4wWc(d*YvpXEOR`j{l?_9!f0Gi1Y+@YBGoDTC2bx!Hy9DFblh7I?rdG zuzBa{WS&^_ zP?sdet}X6qnYG)+GX^6giCwy=Hm|2beskGmf$}8g`0gb06vI5y|Y~F04m@BhC z&+&@(u^mE;I61q^Jd6I4*j+2jotBiv-qANTGhzLj-H6PWI?q6lcopCKJTlwvLl5JT zjVH$C>$Xy<>aG)JB4c z(Gr2zlzTfYI7RM;G&WpJBDGd+3)&Y%-lF6wR+v5_gzy789TNKqr=3sN7? zEckQS5-+5_p0%DvU5tiLh1$(%kAsJX@}2giGS=1+nitV!jZ#2wN&9V64(O7`3WTXFHsvy>N(_%ds>LDYe@(%3ASIJMYw2Cl|SX=bVrm7eO_bVy9l7 zTCCP4iV(K0OG+Q&f~#|8B{*Mu?^*3^eVlT|siY*yG}>#t(aE+> z%C)AuNQ(8`&(3Z|8Z2kk^;jN+qwj-LjdspthhJn(#nNqtqxL`}S-#y^$~mcYw4;_< z!^pBoWqTi(g~^ZfIE;;^uepKUky-+(*zS2|>y7FuL#*nZ&o5j5E}e+we2Uk7{sM>j zMp1(S^AI|bnwb%4FUtQ?_}3an^Hg`RN>*5pJmCif%!u_LL*droFN>Viday3ceR9u? zQZ`O+`j$q(YM>8|6f|bX#5{C?=j8l>e7|#(`@*fxeG?%mmz~KzI7?KSET<@sH*)1# z)S>^77N1dm?LqB8Wt4U3P83rkTOp&@96^P~ixYNJ`_&3|aS>YQqFP@_*U#yYPL!O^ zG3~@^x{`r+l%~r5a6Hc%KFNB|BI4$(Hmi0*wo<&MC~c$GTC1L+h(m8?o8(h7N?NlY z!24>d(51<0PVHrLH^B>rEdLODmopD=*^9hi zobyyT?=CzkXNlCn>%S07vkdok-m8u!+7$1qMH&eke!`0qA1#hz8s9f5MK6l3cr2B> z3*p{1@b~vfaI4@&Lh19^OI0aowVD;uR#v$?;%s;Ezxqt(%Jre_GVw1vd6@ka?`zez zc&fu#*UB7`rP>U+Q%gwQ66Piwy;k3z4S#4$DSxaqR=3&}&5VFu#_XPDJ${%qYJ{#X zQbieS@5x5#^XpSiRYqDH;VgB#-B~rQys?JNx$9>krL_UY1Q;DZkJocJ+k@=McCK<0 ze6$rxw8MdYzKrJvzuEP1MZ}2f8(aG@4;l0vH~R#MC|wFy$iZe=#U~l#(Q_~xWIkyI z5^fQnUInLql}dr{SasMP8`j3tblfq zJ;%&Bg>D7KIG1vGj1{;lsZwcfe#-pj`RRMh!tn{bU=@p5d8>rPP$;>Kk=rSwIBP0y zvLaV#&%2t?p1Dzb130N!Pu|S#PS*1jK4-P*6HF=|vXjq9bLLxJ)6g;M7tUt` z^4xAH+Rb(ulwxPL5T#$Ri7RG#Bmi z7|)D+X_tYB?Kd>euCe>ZYAyLjd6G^+Cp=VT4D@f@)N z$}Z8ke8J!gGW|`mA{7l6D`yc-7pZ1e>b#gEMLxO2-S*XHQTDrR<5+hW-(S= zmHl>hr;)Y)Ay)>%Jw_DGzmDa*Zh#U>BHx_S{t;*SHfv;d{&UXkFf^*v5@%AI?`r^k zU&SXxDoH(dO*oyi)r$T%y@F7UR2UvO>3bTjF2df6Oti(vV zC)lq@S#!v8vh&y)@~dUB9Q5iBvQ{5)cG}LXkWuzX`z1X?d+KHQ-eauTU!1ksb&>x1 zfL0Y-*%Nv)nRT~LMou(`?aqjOH}h^)h5ZwkBOzy?*F>?J3o>`!g$UqX=rlWVkAngN zBGY`4(or1$K;nPStPoXb2DU$+wnljvuZqMU$^YAX*8J^_=)P7w68}1Y&-CLx<^g;1 ziZg=;@=3b{yv`MT!I`U%?8dSWeYG9Ba(;!rZis8z9Y*AYeLkE@{Sp7KUACH6Ht@=C ze6}dNWyD&kRu^iJTFfxiLY`g1{yV2Ubo1?obalRO|CINvycCre;=IGLAtvGh&cdE} zn|Rs#+#69A2|k&3^+r~=gQAQAk4Kt4%l|9~GrJ7AHk&C0CHD1i;=J0qP zzM_?w_GAiOnXJjF54}mr4WMalT6%FhP@P>{%%UZ%*f*&(vQL-NV<&W__B|cS zv~Q)dPu!JVIh^xumuWGErICgaSZr%|cCq?$zZCc(-2OZKaVq>0BHB)lElvzC%X{sG zYP?E>Pyv3SDD-ai;4b(g#AJWuO8!Bfi+(ZJWOgU?_OTO^-|QXcCMYcUuRwiB4vzEK*jXf0-Ymm149 zbG8smL9WrqU7AWsZ43RZN06@%rgq>1cwA1%9u1w3;IJYk^h53k#XG@N#Db{uG1z#s z;qhhs&Pw>w%4<8eeaF3({YIvhqigxQfi*UYw3=7HOn0d;S0*;dXt2|Qx-;ftG|Jaeykj(cW4u?Z-CkIe@!qVczc2k2e@Bk9zm|9|dy0pc zqiE_LTtmR&+9Slg(k-bUS0DPVj*KjgX3d?(-ozIv<*XDl9xsmQV-9Ozm4No9(_Yit zQogIFUQYd1asT3mo<}nVX<}_#i1-_+GY(-L@ke~4RcPi8#2x&KWZIch$VT==1VljT zFM~clL>h%Ihar1vFS;=0!O24QztOh{h!L|B`uDq$@ZYC2Z~r}O;r@eO^THAK7SdBO zZed)~3eJEt{2hw5zmC4zLHJ-VXXSYrEwGkJ+W8zhvU(>>l$8!gL4(TYNq7}TcC47! zFE`#}-MrLmtlW9>1E5wVw3So$az79%6+!O*iLdDcB|8%4 zqeR8n)8{h&nq9687Z}@BR{5&cjpAP$A|--iWt2YP0^LtL=*DVV~wA$WJkp zXYxPxC9tcuIeU9*sTIOMy}W=}vu9~u-X(g~E}%;J{M`FYbdnxkL7pj{^?vnr0*chw ztaZcE>EF<)F(d0p^roFoArjC&2{D=|c$Hc`TBmk>QkL2KbvNIse`(Iye0*L`(2f#2 z;o{9uze8w!F9SWCWCEGb8U{uU< zDm_9!YtdoGSJh=d@@t~a?Bx+q8CFDF(_tsg9sHt|Vdi+vM+R9X(#ftXMu@EEw@T)l z^qryGw=3taiKi{V>YKlC{)Chuw)GseoS0WL?_q|$eY1>;8Fw_Q*$R#@0x8y7>FO(O zk@X=P6QXX`Ia{4>*PLeDL>@Kcu!Cv`-fL7_&CrX(XtlKyxAT6fT}fRN8V=r8@R>?+ zUKc>y)&ShdH|zNte>WN=7PT4rt1KjUIylUDFz()--|xZ^qVpZN*5{RP%})_M@&yR__vY$>~umlo3|H@HwFu30H39fAwndj9U ztH?pGBo}S(X)zl{@Wi^>hsTK`%lO~5RP5OE+F1>|>DvDTxoNvxe@&j+TAsK0{EI~T z=97Ii&-iF+kJuL_R2+zgwTsUv&c}L9XF)WAW}J{BN>!Uwi&Tjjdb|9GO#1^aRC^j# zlFI|eSVV=#;*{s@p<%T9VKkUC5ydiE38=O-Gv*Y;K^y~l)ofWmbYZA65m(_Pp`IWu z^sc(&3po+cYQwH6mcp#>FziP0otY^=k*EH-_r3NvmitghML8FXf1`mLz9? zCV$T&`(B#Y&Vz@_rHB7lh@(Jy$aWac}jyQYsS+CSh`=dve8 zJhb_~LURAiF8s+ZWRS=uvB*Wb)kM;nd9>ckIQCsw4b~%1B(tbxESCFmc*L$gX3?J| ze*Gdm@CLlH9#3-Pp~Z}BzXv;|DYM|@^IpIn27`W~Dp7Gxc-e#-xC<@>)(xl2sy2DtQf zqUn#rQByhJ38_D<^>6i#RTv`1NAlcWLZaN;B4w|Io+@IaSh1CZp8g$cRIRq1##dI^d*+T;`f^BMu0Z3a?Yn;8;or)Kj%<|6GmE8f^n zSiL~PS-IN@gi?F%Mg8~S)!y9h zW`F%9yan?u;z}06gL6|`c^2njMV8eA9!C9rZr;XD4d!gD(~@V+-N>(cj;r8VeTomU zM~uYmVTJTg^P#uPqi?Kd3P>?^bjUZ_ZNi+QI!(^9%ZKPWX-Ru_MCxnlLydq#`=oJ0 zJLB2es0!a|R}XPBW^#-|iYw9%v`?LOqL@GP#a0*Ex8Ax;Z4Yb9#4s5bw~vecwDfni zeC$1IE>`@g9wYRaBbb`Sj#deEmbUmNPUwN|xl zPNGVcV;3NuLKG*+Bv-~fk{R_*$Q{vk;gR#2dZil3s!b=Y#e#h7;JT_`SQIg}TCNY78t zBY~|+UIIeS2~hTg8!->8M?--K%X}9{WCYUe^B$^d(1270$FYlD0G5&o9}v58zJcs?1Go7VAlk zM!5r{Ijlvs^R(-!Om&rK5zCs(W8?kWAJ4Ly)_JJ!tWOhvX7|D!sYKVeb7Hb+qkvb? zGqe)bDi=FOd)T!s_$KF~@9ni?JW+4mep&WA4|5m93LERRwxtHw9c&i+Yk*DP6zhiu+~OD)O@D77Ng-}HSL9IjL4{-R{3&dv-QtbLWC|5){otr zT5fhXxf31IDMbxhfz%i)T?^eQYFF{N7S?xT?D&@Cb~|7vh{bNtv({Mm|3jnrnd{Ll zb$MSsEb@jYEOK+kT7o@@09vCTIve!ov6#P+?9B-H#VpNaXk0A!f>ak-jkcC^7jIyU zU$lOxH?;?|6`0n8D+jDB5(Q`_kue2vfMT#ksOT*z-ONR{gx>XnjPTiSb1-ynovs)t zV|4+MZJmTDXOR-25;H_TtYokY%^a|QAuDfxpeL{y?4mgpAHdFo52n$=M|s`awin@) zS2*OD7s=F%qq1)1S-wMj)$?#vKy5p-=G~NI>^UJ;)o1d{D|}8Qx7BRcw9Uazd6b(r z)Jt%aGmNab37*CpzGoTVX$9Tv)KhpcwO^g?*A9JRhis*}8A3Ay+N5@=luAS25vf>d zs>f}7LmWhyV-zsRB9MQ9zU)0`y}%35lQrU^1iC;Gw}RDo8v3nRA5z8598E#+H-Ii` zr6^%Z|hyej#}&Z08&$=y@)vLc8#=YFLq}2J9AixYOk|fk-x?y^dMS8 zmm)>H`6F*@p`l-x)^Q7QY_h40~VXAZreS}rH6MFXBpOU2sd zclbY1*#T+hj3E(hp%T|#b4G@pQ6S3ZDGsg7>FlVz3CE(dMj#)QpX#vt*yjgX^C?Kq zN7MC|TSJd6zgHaF+gN^U(>Rbl7uWG9bbA#8E{fNDh)2mLYs3njP($w|HTw{0A=!J% z+6J%4!N9VzWZ=C|03=b&2ces%q1>;f@}+5uK;J`P=rIWwj_on3f< z{V|I@M6SJtB(|=`IwA33pFnfkx8iQXU;FW>CABx~(=5tPJ5cnDyKy1wXP`&Xu z`&9Qw@{WUV9>XJiF3lb;NA7K)qtfTt5q4GD#r*F*L_~Ju*&V>!JIwvx^t17{pJQJ- z*ZB|r{z~VXU-A8Zq~o?Rl%3%6cM?O{fhV~ckMASANIgMo0p3JDF6CaixeV$02DjH! z`(_F9S=;34G>TodIPIuQD95zls!v@R=rgVv_sXEy_VlF;A4 zXhA@l+O@#hA=Ynv1n-GQ2^Hx^iH#L+#a;?itiIr{ofquDpw;W#BT>~xrtN!c=Slt6 zEqsUl(nN5J%FzE8m#h>u8lw##c)?kU!4lFkmk-TX*m+Q-g7Fw*G|sN73q9D=LS0mc zXLcB~vfqkRGsAX&bV{7`B7R zg^P4Ewrw}T?W}`w@-6AruVd}?+^m-N>b2~{O6U~^M1d?zWoM^ZEo0=% ziXUg5g?sy;=;Z|e%gJs55pAy=r*_!6z__3BWcxnY&)4W!SYxy0)_ewk&)B#~Eu&hZ zOT}!rM_+kwyjb*az{olu{pxf-%}P0Q*@^_E-r4+?QqNgcRu!A?(C60s_BDH8IOQtT zS_a#~$yFySm+Zl5?UHCAZC5E%BH4SgaTu@I&&IwMPNWel>?7?@5r`)vFEiLFBOu0RLLW)>oSIVK;O$ha z+Kt3$anNd_@lNFm%d#G!BE_th)_urvS;y`iCNp1F``F(?S~qHT1N#taLF`c{{TopX zxrh+)ck+WXA$+G+ZQv3=V>NJ1=sv{hotS3zkn3*l+i8DJp0y6&)wi>SKC#su`=Bmk zjv`K0v$Dz>XHwdA#a;ncrU%ryxneoQynL`Kq*!CJMmntR5LqCds?m*W*p;s&{O?K_ z0ky-Xw5BZ{DkwX_&*txq6B?r!j@2}lLpw?g$`eT9x!Ac@8yM+!>aEd@`*^Q-6>W6w zcRS;c#Fu=4cQ_;WA>KO;>+E5^XB@})^j%Kr9*8X_-qv5XZc%GkY2GlEM*5y+LM~$e ztS3JYEpDDsI<{Iy9ENo-VlnL3u7`CpaullML^z8(Hi{&rh8$Rs+uB{CD5M@AV5xwsNLn23$ACxCX0G*bW`)sC^ly>T)*Q+?*4&1Uvp`DxzKE+=9PtgK%O zy#(v=*_2!6!zZEBMZhrG>&57V64iTc1?$>R_FWDYj7EGyY)sEybg9uht9L@*?QkY` zb+#9la>7il{Tbfn`$Ojxb*iyBt(8ziZ%^*csWkbR-}MmbqW%-XzAarZ_fdKK9qZ+K zI-x*KX-v@0+F>T7+I$0Ne-Z(2jm}Rg#fSN(PA4-nZEsq;W7`MJ9`pL_R;Sf~+Z#gt z#x#wv=tbBERdmTzDBKzI3$QzaU$_{10pjGuE zV8`Q^1i!=Fl$E{4{6x7}Q7{Y+)3Y5&%*Dz$dtmBom>pHRD}lsL+4aQSq8`f4Dc7ng zM5U;0oA8R+jjG6eXF}OQNLeE4S|8mN{DDIhN?1d!3H=Xiuf*iPgPfViK1ug)W8)6T zF1-UA)Sd|U;BmagUVI6!EP;xqVdbobx_YF!L30)7r&*12!IIyKU)UTU^Co=5PDB!B z^1Wsx)uP*>{LqOc50RpOpxdwc^@Z5d#)RyBc?UjbBjOuZ6RR+*cmw`sN9^Kzv48Dv zve-`%!wlewS=!Qu!*T5;>!M7SqWeO2#Eale?1cNuOkRa$hnrc`%vE|1M8H zO@5)yvJjb`Cg`#0T;(?Wq_fZ=?b+q2*sZIGyM0GR>c6@2P|I4H9!?EZ=wR|SbJmwIS?R%KRMMBTZkx18T5`1J=#<>Sl?+M7a0RoI7n8TR z+Pz6W_OT(J$bEPgn~*4FS<|lMTb||ozh%yE>8Lhmdk^#HpNZazK8(JKc1C|hf75Cs zZ+u2vEG{0O85iYNJT4iRiO-JDiA%*L;ym%;=%?u8XjSxVG(8#>_2xS3GpoK#R3N>! zAMq&G!Z}aEZ-cODZbTzjWKU0paz(JOXNML+laF8x41w0V5Nl`yW!*?5;u>yEQ#z|d zeBxw=x(b<;YuJmnR7A9c4!c0Z_h3^@#%g#9%C%#yajPB3%mj3GCHP--ZpSpX`T%^p zkm}_3$v}ON$MQRQt6%V1cCiLq@qgC9{ZGKncR_9Su^K9(h4dqH;25VyE`^?kagOzg znG~n$_E_?J@)MKnzhi>^7Vdwcqvc_o>zFPjdFW7b3bna*D9KCKuQWVVn=9%}{A4zjNA03Go*@WLajj3AOl8w;hv&m!0^kf?QJA?aK z%-33&yus`5ChsSoaTdQNr;~qdfKU1i)Ore*Pd6xQ1C`SyqMA_Ui0FyvHTL*>_BUT# zKE5ixE^Zxnh&#vK<1TUAxM6%Td;JeIuq2wso;IXw@!#y^)9m4ONS=Lg!9(oRMTGZ1 z=4?hMos%1qE0YV75=nvNlq8enWRGP3%Kn!9CA))TCx8Fsm7HwE|CdTCCpD9XP-^dF zB=f;ufD<=yWxuj=r;#zel6`NF#W)@-@HN(a7tx|JSZ%G5ptIPYPw_fWr8c|{Ts0V~ zTM~T|{T5~7v*K!TBd((hSJ5l(5%-L{#;53gSuT@zi09B3bPin>PKqFzy7j=Ndco>BLxV=5b3 zATOFAA8NBd)sP@%kq~D_#pxVfnA-O^`Ugt=A+2^_#R@!!&Up}7*b$9z0q1-Ksqgg1 zMex8V&Z{NTt{U`~@A%>5dnjgc@+i`v54+ShX^}K%udYpMBvq42Nd=C|$>mACq)E~- z8Hn7Qm%Pj;c0j=w5eXaty{|$R|Ax#veq8MNrD&+z&}5V0={J#EA8}UZir;4y7ZVk= zdzclf_AI>{@3B5!VSXlOeT61^gVmaXKX5zrd^OVeOgi=yV`a}vg;*hyxBuJ+jBn2S)cO`$LgH-b3V)2nR6&7PquXS;%w7wkL-->itP4m z%(=HjqAy04ld;DGbuE8^?p z_E7(*czXOyygdFO{xSYHE}E&BxioWa=7vnOObc#JG7U3VW-4TgW|H_fu68Z&9S^6} zhzrHPL@T35pv#)j-43qqZfx@$xbRV=-X(Nh`VnrOmfV?Kmz3iw_hdiGuFk%aU6S5j z%f69aliix#4X+o5zHUYjJ%X0qnjA~c#ab8$HLZr9^FXytkg=1wmW@c@+-S{9qXtnc z_M&^#hodjI-tdb0vmt#UDn^CSmVfbHJ0q_nYP1kpFbUhrNh#MO9js9@VyNGxrx0?? z`dHdPuj5NjOYNQ3NSBMDqnN$=3L1JI-9J3(mNZN1C)J>u(n;|of0E7qlRe1sH^)&z z7^fy@Bo&jZ;gW7hyE(~9c4#khy$lkf9p5_#nXwH?UI<^XL29XtfI}C6(f^cl)-rGs zT~TJy9YxoChIRQgJUkwG+6B2&9g8)}wTGR49vi7M(&a+*#XoT2dvN0u$s}lENHUn? zUM4tBM&dt-)LoLi!rCrRRwo;f`rDD8Nm2-2stO;O3#tRhRDzF6BfScviECBwW3?2{6bb!7pXHL!h7{3)yMxR_1{}ru? z?vI+X0$bp_4#<&R*daaO^`prC7qGs%K~Wc@8{*_3^s^(oE&FZuCv-@JPPrs$1doqJ z&#k9#e~cV%OkDL5w9pUehDzA>L$Jo*LPF+=&PUdEjYdaLM=PR_qHm)gqdjPceH?qE z1JPg6ztPbsjtj;`&;=glv1Q7~72@;bN^!;b!nksL30!mq+TyDCYVI$KtMIPEaTM>5 zzK&L79o>fOS zu_>pr7lY8=9nmH?C5<`ny2(`>SD@D$BsU_%ZcBP4!;&eKlq z_yaqMo|VI!X$=QVV-??p%Kpw(h^{YJa`v|%3EE&kdxc}7sp#sLqBqdlFGusBqP|Gp zdPu(#T;D%v+0CrXOr-FQP}Nbi_ZqlpI+F8le3PcE<9Sec4qe7~BZofYDmFkx@36|R zVl^#H7Qjo-K!MA+y7%GgZRnOilE2`SLwsg0T(v9tmaE^vReZ(qEqY{kvWNHlm*i%* ztD$Re0bMtWIO9_6PUo^#z~j7~c*!%!s^8$A%kTjPV@bUdZI1Rw#h|I1;=b`Dw8^{i zws>FscYGwyiI2wnk=CCejbDtX#)IP)P+}Z^6+IvIga6{_BRrn&$hl)s#UwI&#g2cA z6zId6pOSoyOOE1VxBa-b!R=CO+?1^w`OR6<-x=URvuD4TQqR!dIiAxY0Zw7fp&D zcjE5(NL5qXgn_h5VyQn2JdS!GW7R;&9VKNEZ(OJ%nTZDBm4gb3fT%**>%T(}B zu!SFB1skF7PdWa3@;Nj!8%fuV^Q@Izm=sA)O%7%EW`D?joP8H=c?)h@mR-fMA^TBw z3sPb)`sS46O!%#C(jNKzZ1NGicNW^d4;I?1*d9lZpN+@X8Hu|9?ePT}j8n19YC~z= zu>+?-S1(3yBBM6q%X}PdiZ(=Rksq%{3!%NKT=8A-eAB2F(&hB%5Wd2DaMa^idIPY9 z8l(S9;fq^s?`*;skxUcdrLJUA8`4MZTsY_yDDVjMv>%H41sV1&l=LxjViofH&E$2c zZw=2jrgD5A9eqlmqi%o)2jSN|30lZh$?|9l!TMJm9%xokh03 zi8r?zZd!xawU);#vC5XGkDZ#~oIdAKE@Txvp5s$5a=(CY7>5Pi7EM|m@3{cl=rDf# z79s}LD%&a5Y}YV6Eh{$6V|7mv3s$7xj>fW&S2z6Ajz|qN&b81zmEri3=$@kJviuyU zb1RNEx`1n|$$MJj^N(PyUgqkyqdN=W@iqY?<$U2!v3K(#!cErTKI1z&jemc@#bVOY%1U)ZN&{XD9!mca~-6WG7~aWP8F-H)n6;Xp+4p zdt0_oc64@fc3$???E6sNp==>|seW>Mat{%NrAU{<@KX&u(@}V$>xh))C!*OD2{!|d z`kX5&KxeD^(d|gJad==0u{z&{*0x07MZZUfqa3a_dW3zE{+ODze0!45-(_rOg}BxPUz$zWOqZfexBn$Bh40J_YOi9UyEIN zMsfr%Y;*Q)Y_(^z^U+7Mxyom=i;*1fWhmnl$BKHm? zr?79AW3_i-$7Vtko3P?CL}qI8+x?)x=b^Fh@psNd*4@B5_e5q5KqA}&?~LJ$AC4Zy zPMt@T;Q91;0%`a_bT1O4JF=o7J-b5B=ySo!h8Af-!5af+hC`U zf$A2*sq4|&P988TE?P0bgV)9 z$8b?&?1HIy{9B?w@smr&Rpa{c|FGiv#P`G_;vwAk#`|v)UmlkuqO+ICz@q3OcBVf5 z=N@Fp{lrhsMpD0y6u2IpcYrf^DVYG}*GtM^EB~1N0IGTd9Wxr6W)#O5{!Yl=pPiC@ z6n+okYdYq)R}SMw|u>PJx6Av~Uv&_q3`={7u; zdx-MQfznsvfo@0B9%W9Hk;C%n+bg2Fobk;_iC$dWAoQ-cyE%GsbdNfqkFO*4aWPSX zvycIK@hA@9V{9e9^9qt?C|a%=xWV1c z-rRiL1UN$sr4thE!t@~5U@s7JQm=C@VK%E1S&iG9eX_dAz5;pD?3UOJQK#mmkEMA8 z5g30V3Af=0{U`7G98P|f9kipyKx9-4_TcJtLdN;TlS-j~i_;meFj}=Dnx_Hr>$|w} z$GNI^;g>()n6lVDt;vEt39W6z%02@t`xd;>!NdmUBd6CzpG7ITU$Xw41ok4C0J+SdBe+gwyeGt|UtMJ@)2YJc9PgHCXvYiH_|>%Y2$$ zhwr=sZL^%eo3h{G?c~L)u8!x>75is8@_Q53=dt7rD6%PfcPbH-&$#Bo`^CQxBTC5v#gA`m_gh)HAx1N4Fz;jXT{4 zFEzwsyN<^b%N7`RvK*sA8w>uOouVN6ur*&!^Q>jnP7_(MonUviide zQ&)7<$`cC8>A3lRWwk&!lT93Z_oCw+{T*)e4c^M1kDeSWu#FnR^PbQ*IM#1BE zqD`*D2dIkvDUH2SmZ;D6M<6U64Vzf&+q(U{0i#YodcrjV@ z&Msu#CveO=_yupFjqIZO0)CC>Yp$jW)Oif~`T;R+C*3{HuT4xN1!9K>L-{@6lNRto zLoAl+Y3#NVvZ@-7ts1O_UT=uard6w&h%+9ULsmbb*}Y=^_F@(>ec7C#5?$XbWv%+oy+ODoLD5ZUA$>?&vw zd&?Oe4B34(;nT>i2gu0uVmF!~tOz;DFOanw;rjx`0$ew-03PR!{|XBv(?M6>N1aH*9U-|{jF@tDpE%GLNh^;=F9gH8+G>n5EA7MA zs)`4GFP`7KSVZ~IUd_>Uv&j5?LyYWnB3_rob%`b465krPB7)bN97<~<65h9p+mTag z$=_D|e>j@PjpGJH%WA~ciI7Rv3hzMme`0Z!;i~JC1L}x(uMIgV z<@WpVS?)j!UP*kQ5NCD(8~Stf${T!gCU)CE^zMyF(KF$U-NY{5f(B+lxkI3!+p#Pf zLPM3{>Aalfer)&O@c8%gXg_ECA5pMkoTr(MOW+TucvWRzE`sXHV5JnJ>b4@+Sr?vZ zg>LDN9RpkBl{AT&qHwi?P%Ak=&Cr^UbyQ$?6DWnX;a|#-u!w^ z&a)`ok;B#OfhV@(g>2*aiK`60$a#2YHxmyS4bLvevpGthxgHkjBqY*T%swo~ig$>H zM~@R**@#zrn0RuT_)>JnjZj((yprpQyPi+Hbw3u@Yj}wRu*0elMcT!_P2-ztpfA6` zdhE|CopO9DR(W5dKE;U|Z_2)a-*J1kF%hsb+58xY|K#k;*_-n#$A0w1>2S$q*%sLW zcqD7dN#-Hie;rY#2Z*tMMvnh1_U=xubp;$9LorQ>?np1Ik>vYu4vS-PSL6Jz$7a5`4Altps1OGex6f_hWyBrJtuj6N6 z12te(M-X3r3Ag5QMCZyobh$ny)p6Im&I z3KVCRo!G5hMEdPIp)d6v9*Uiao+Ns14TjhAKXlzy@b!g6{fto*BEw>r?!U>r98XT8 zI=J!)?cwC0$H_&mW*@ZZui_jA;j=G=+WsQSe;L+yPpprH#3HxjZ{#LVaTzkX8Pd2H z(cz(~=RPpLi{}l!6Lc@|KldSjl0nSlhAyxVsm|k|8xZI zFH3x`X3G8TiPrTezdDLzbUZBXM+UzKQHl=8g(h5iHS|h>_!t?TcZnp8#E!cXyXG*` z`9*B}uAniC5i9x->tQ%MQ3pAj>-a8sWgQrpSwt)PU?Dc-YAzv@SBc174YI>G!9#b$ zNsn@EUlPAFX51UUcM%b;@1Wm2*ld?WF}Gq_-;a!3N*sGT-uB^Kr=q*cBM)k!&#uRV zYKG2egmkFQSzU>Ss|7FD<9P%A*2J4EkDkvTB_M4MVR`LEBW!I3=IQ95%ScJ>rga^S;48THY%PuuRo;4sM zc`bW;4Y8TVT%Wm^lX##h*b?UVSEiBX9Z2mYDF&_H0Iv+k3JNvQQu9c3OkWP?SKf&{ zZvj`Se@nw<`H{OBY}OpC(SOite?Sw5=|>-dHz-DwtpfV&60Dcn>_I)&^E&J*E7y8p zF^=UL>|1IL%QPtRUi@{Z7CZaFTBF;ctLA*71~KANa8EvdtuTMjnXi(7_zmpdtMHA3p3dtf_(I ziff=d@{z0j7fv~x&5|E3N+j$;q;YL>m9Ba_BB+DOYd(tPT8@M8?$c6E& z{DYt>7T}l7i5|oInv`ah?jZ`+2OF(9oOBWXRz6Sw+p$|-!p|9szoWf!dagh5Q5Ikk z-OSnKBeTDi=

    =X7|xKhcy9WGb(NFRmh6b_Mqh;gy!;FMGi|BjBMYc=tN2nIlPl z==W+epRKv39@tsKu|Q`)adxSE1wH&UQrjwg`{d5&l?`a;pHrVXXok=&>k#(W5wwMM z*r(!kh-A)ibDEKzlbmO0O_{avc1J42vm)?(c|7wAu-WV!dV1=s{K>c5m)=f_D>#R_ zXqyRGKW(soDi8zz7fWmhvTF<1{1ws2@9|lFNjWkHYSS)08(z8&&Kg3*?H&C5LhQ>x z==+CU#nBW4iEpiknsTDzWcHgOb0@}6#Vg}a$weND{{lU7F#aR{KK>|P7SHDYdO&HH zVc-9a-SRpT; zdYdfD68w}^WXC_lV)+?b`;YinK`5;Z(zzD<)fv>obZmh4xTXWx&gPD;=9}9gH6CIw zHnYmbkj_2OH*XS|$c?6Hi6#F6Ue=MQ1o``xT+f(z2AS4X@n$kZN8|i(e0i`hXMujn zmDwNfh~JN2A>TR#{;7^#ww*G<^*+X9KX~El z~#J|B!Osk#f^mlMnF+ z{zOnC{(g+adK@pc8=t7hPS{KGIM&8?Y)O0KEx|)vM!sKUzO#xx;q@>LzY z9eC6!InHgFjRxw5KB|nS(#zL#EP_?0&az8KeQd|hocsNJ_CulyC9o>`fz|nx*lIPT z)$`F0(V1lLhl7|}o#yVdah^=!Olj~g^}toN%XGLlcj4*V@dxvv)z`u=!;x2VODXL7qj1LN>^s@#vQzQw zyJuUHjl7MlS0U_@Aw=$e0*i1BD9K6a%FXb40XU;Zrg5ez8uNPaVl_dHT?`7Y0{FL5f}5r0*-N z*RLSME3CkodRZ808y?Bz5nxt+Y~e!Q%|qF*_-VoAS2B<3;RF^U-Y zEm&!15(nFchJB2^XhV#s3|{>gM4HB6ji?(B<28MZy|j??7>T~9hews0Nac_0$tHOH zEu`37&i`TdVGMY`ksL!ghVyqsb{yCBI&uC#vqiBOZYP>I7oPh8-mi#7Gy#pj4R4|p zzk5AVg^}pUx3CLKMAs6boPy?l8G4ya{--V6TprDrn;hvOY@J=USIjO}BT7*fe_lVu{zMTH;TIxZ z>yfulp0FzW!rNo9onK)M_9nTJf3;bcVes`DcAx~lQa|L&YCOV1oZ(&2!nP5x z+!sL~z74+R0}w4c;sfAY@`0!`aKnE4>HHuFa2nasmj zlzp)$8^SFGGC!bEh7i*z7=J_rqa{?f4XJ(`9@6eq0(ZtTJ|78m99mex`VPc)uZ%@m z4qYMjH$eB*#ztw(?Z%`P+H*K@;b*{wn%iDUOz;CV{+~%fq-`VibR-ta5`59`h};)J zzBVR~GX|-(4o{;98srXmbOx0F7Lmt~(ILBt*JqL%v&n|uPXzxSY^mG8bT>hhT#AQv zHqxtDQaH&AzvqExa-k)2^C)j}dU6`K2&BbP)wq&|qQ zpTQ14l{1=L$Q3zf=H$xR_up?EhyObzr*O^%IhVl&H$eG)bMDW1Dd&frQs|1u$c>x< zHT8ymUPSh6A!?cjermukJWTBJXSn!AuIY93ZBcf<2N8!?@Xd2!3w4j@#veoXrSOuv zW**9{${fsGl)Fvt@wuPOy&(7O+=Fu8oV#4^{qVpunTeU6nMUyTVL1K)tjKclUTA7G ztDZmlkf>=B;#fa%W#jSn#HSP_yZ!~V|0rHkLuBe6ICNt6j_h^B?#{{<&lZ5gPXjky zI9oJZEL)Cf_jO#&ok-aih*0E*L&k!HIF?+2CA<=U=`v#HkCVaphS)ETdNHEW2Z_I}K_Wbebo(FPe_8PL zTd_9oN0L@2uDb(mFc4W%3~BU!b^&s~W42+oMz&(MEO@)p*^9t@x6JlOE3D*Pk05ud z6L}bcRNaV#EeN%>!&7;b)o|K_6>)p8G_1folxFwLX***gOWwO68p%n+cCK;KPkYYk zVRD)$|p#y)VUitWbv@Cs-sr_~X0xO~xWw?&BEGF@d;? zeXs1e{2=dhZo~l2@NOikojQEyNPg9>ZPy`}&cW9?2F-1Tx939(?XkDcC6@3TdG0rf z?oB51B@(+fDE=}?31gbOS;KFz6n1j^2EF?$RV4?q`&idJc;IF6xobk-t*}G;lQW-) zZLYt)2~5y`Nl~QiwOFHCbkovWlKoT!)y1Bi$Qr&+jxHzHdC+J#DCJc&&;c?Z<*;lT zljpdd$Xb6;n*HNDsS0RM1gZg=?MnFK5;Q{zkXpH@kognOX$P`q6Ea`}vgRGW=LNjj zNl;r~q>i-KkXT-6BG`Xp(XPe*dWbb@N7VHKcK7cTgS#BBavDBOS0te5xobJ>vDtuI zBXoIlH2R(V|NS5eUc}-xHnkW0RbjmB21GJDv*yFtgURfXJ#tH_l*d8fkhCeKd`IvqSL^{3r34;;l;JtsWq+v6YzV3Njlru~P0O{?P-PZHDD= zJ?C^4(VYtTVtMiJ{z8L&hUffdija8@eee=m%E;{7XsI=LJMVE@ja1!;f4Z9}yEv@N z@uk|aD|ex}#^XoN#$#LwFMNe}dYIU|x#tU!`wfV@IX%q@%JzM+^NV%H6FGBdpN&Cs zje^$tk@*&vWfxgHsoBrP?y>FR-v)3_C6H>xQ{UT8C-%s;gUff=O`l__eoBtW388jb zu&c($cq~>jI`72}*H)9+Iq-F2*H5ue(}<8w=54(febubwveW4`#sn~bi zK4UZa4yTVT#)_~$`5mI{8=z>rd)h0WcG@4;<6`LdD)^us=QD!+pUE{X#y+qcuM;o6CWhy%)q});PQ%79s&g?rW%q|0 zp-?CDbz#q(#1|$)+=cG%2OkcFrloJYM@>)bL&ihnb`-R0{%~mCZsPVu>4k-72Ez%K z&YRIQ&fp3B3Jq`KI$wvQ^a!S4t&7+-mh1fJVO*)**v7C@<5|^_Ty>bq-i>Ty$26ON zBUb*UWbvI>S`yk7yDS!dH^=u_MZ2KmKheEXXjy19^p3g#IoqCJ8qHoVNUhON@NS$0 zZMC`mCkw)ZXJgfu<81BxWM_=a$>%l1kFfip6DY)*bcdrSfdXBOwA_L}bO4>6fMLks z0ToR1QN_3~1QM_y+U*REV#GSilCM3Vtg^FXFCJWgI=%^3VFxnLz0s4yh>T1? zTaF;!I6TGGS&7#VU$6(3<8Am^&Eb`+h$2(x*q_wyq)t@25&hzXq0_J$b|N|6h8D-+d9{LKDih1j;Aic`*8Bje_!ge=5{}nW zt6u!~CmdfPQ+K6xqzOJ(5q6;x6lcwA8)&W*nxH3EkG=ElB4m$^Aw0G>zH`Fe>)zZC zO?hi(Dl?Yjuh~z=>VG>${6jAS=iih&(H*EJXM6#kWFg{}N7BsJr*O^7*v3otkvq7USE_J^dXg2mouA@AYH_vpi*CUgcj0WDJ~0ixe-1u* z56Nmjo1Ll6;}nq+`0~}^j$2qiyZnak6roGpX!P1dq?>Dfa$2k%C&t4UcB2>$-`s_c z=tL&(CZv5`tR?$;pAC)Kv+Fq5yAO^OulONy-1%EZj-G)^rz2S&gd^_d44su>uVkmI zcjvKHFy7n4+R4-QjkGJ&6eQK-tjzPoA(SegBi;58hm6wr?FCSDeYDo?oYN4_Zvt9& z7CQN5=;s3>4L?E4$8()dWUp*Wr&aM>uD}*;g5T95YK>gIg-n^KyXw$zdERvfIoLeW zQ6gkki7$l$=OP>KM=k^@&F@x64UfqQ1;) zn%Ru#HW8;0Y5SBo(?0Z4D2o+%E}xJ`&4)V8Ml@+fUM-zkiJ?EoDSX3m^pUe=e}%q2 zL(;#C++ECGFF=0VFKZ&wMoe8t{KxCjX!Y=auSUXFN+nEwyn#H#A5P`IF!HtxRCF%9 zV%6uh*h4L$`Cd@aXuj!DG=y_sojmAVNps7)v6}ybqECa4M8s9+TpM%PeXt1<#XhP| z&J?k22NZkW+JU4UyCg==o;&tnu)9t*uFlL`UhGt-jQs+gZia4FLNm+Ap{l>^UK#48 zhCmrgPir5#K|OCTpIr*wEyN~x7=9Uwht!D`X^d`ml7)5c|8RAmb8S|vxI=faKX!Q6#=9KOuFTCY z@k*b%*lf3?+V)QN;vV?<5oF6Ue9l zj=9=$aYQ(z|>^+1aKFe1f{Lofb*^ewb@Iv8Zq9BxTeafgsRS!iR=tlT7_5bVr@dIek;u;}ScrDUd>z`d1Dk7ZS6DmT&qk_D zX01oFOLy^^4p`In3_3X_+dj`#*;%DYMgH0w(f;q}rIJSb<|=mFxwB2s@b0vUf&7TL2Y5i5#^nQRw<< zkD-aFJ!I#VVc4Bcc=x>j#~C=?tQzNfF6-hPwE|d2VgsGQI(s=1ji62#h$iic_H!PM{etbvw>Y&X?NMeg8+`-2WjO`tXXMb&sSlqEE;xf- zs>GToGwr_?rdZhzKg^Y|A6OlB=sI}c`J_&XxRX_~%bJ*!TT@Q8FH$wW$C?pw@6H}P zik!9A?DyaTwsIX`a4t@6vRn2`oS{=d@8|r7bM%8k+riV#Ic`Ai%GYvpRU~i4^j400 zGar|vyip$C%ntU&!EK)j7nFt{D)MeIHSMvEMLIj#$Etu?P`Mp^=RouJU$a7BDcbcN z>}==i*rmrgCnA}hndw9oJ4!nnGK0>r>!kBV#HgJEHC02;*rl)~D{(he_y95a`5bz) zOE_MFasw6EjrDOJ+uwBsHsX5p;)h5-d(?aToVwi2Xxoka&vM?eoJgh=uUxVA?WL67 zrKackemUYXbo3Kw>c=^rK>ALC9tUAlwBvkgV^36O{me0_Vc5 zfigVIKk0M4n)(>evm^G6)Ki>*Ej1i@aSwE*wb2K8)f+9Lu4t3`j7^ZSb+EnzdiE;x zRqOoc*6Ag7(!+7`Ld3%NHGitUV4?T1txgT%jw-y6v9b>&wFz*SC_ zx{Len9NNo0`AkEOb2-FDpO1_wkm{R?P>7SGYGW-l$3C%Nq#YLQCV4*Zu$NsaxVAi> zybS47lE2cA-oAJx<9m@9@7f)3>ufAK+KKiWOxKTe}C^)z2y6&K%J;cM5=$ zi`GIbUqC(f#{2*Y`#!I&LWkOKZ~+oWE&Bx2<}^mJA5HfG@8$UZ0sNd$HW?)%BN+{Qlt`h{PckDr zgd!t_GDBKQ8Y)VJBve#nB(toDD6*1S6rog{bN=tobNqW==kz__@AG}0=f3aj`ds6_ zM(T;D7t;pTH`ZGP+DHYqbkq#hedlRX_4h-lmYQ$L*H~hlU!uzu{{Oh3@l*y*<+G=a zaU$JhGP|cY3`idDG;(H^_eT}4(%0pBM|WC9HyF@?-O(PxcA{rp>+e_|7x_CqCDP?A z^^q=i_SH1Xct?T+FPoPy{LI2bLEkB^KE?b@_v!s+Y>H17c#c$!d&|haG(%;ccyn~T zwYA)~K(`&O_AacYt&D#ozTuyY=e=T-i>+Qdzoa`rdZs3xWpnrv+i@4Ox3l?6|Jn3X zS>XuAXWpu~a(dOKw{7wvmkBYXQYMJS^lRgcp*O-okXXCI`alX`%&S>fV9X&t(mekZd*XQvLrm|Y1 zR8xCe(=}f6$z)uatkt)1 zZ=x{LE9hwymwJ|8JAVm^_}Pra`u+@ce&noo@WaEXaS+}e?B{WmJPLnw$J6lzjzHlz zZ%pI@y{>^^+L++lgmyWOLe-!&E-Gy^*Kd)|c&!J?;FwZrDPcWaP zUtoORXQT1NW1s9flJ|8oIdqz_?Srz?;URrQjwn0^>C9T$Df(+`8%dm1o@h2lnAfiG z=*+_Fb7JwkK5x$nZ1VkBM)g@w@q)HsK^AZ2LYxF2Aq7l~p5xAaA zi8oPBY9>GDE+0UvbpQAYXDmf0={m9{98Ukm<^Ea^i8iuln94`V<7td1(uFNGb35aX z7RGvl5uWP3RdO9R3qc(OyWvS= zfm~{iEzFeO$=LAK3dpxLWFY zq_^sFM|8-oV0G$T9_2XgKkY0%5#tkYeRFj>D8A?|3`YxV|*GJ-L`m|^efr`UoEq` z(dtr_bdGsV#gu68AGt#`@ASqC2gZip&Uz*XqprIq_c!sen|P*lc3S4=IdWt$gdbz& zMzYU`S%c?YH&t)b#r$n6k<9h@Tv8V@os54(y$jv-Tk{_|HXS{FM^2^x@mKy&4&h4Y zEVeqo8v85m@|f?=_1$HTb)skY#8LY=Qq?;(9qM?hP~*nXYn8SAw}^3UZe|;sopd&C zUr^~T#rhuUcck~(a6Vn5;sZ(d;(?^Z)wnQyEc!t8>;R>+arzne!>J<*i}(?k{~+1( z6hB#V2GTk0K6XUDpZc2dA!aW$ee0ufrEY9GSEkQiwBGb&NagBi3$gj)KdNqJ))-kl z@mrvSP~+x4OVxmQl((}2>7ADjM(HBk*a-Hr7O@th@ux5FZ&oi>esuj*r~eJ6FEx*q zy+(uQe-~7qc}joT=qmdb_QUq>xYn#K#3%93r)&IdSUJUNrcdM~t2n{y|F7wu9l;0v z6<^vk>zp1J`PO^ZFO(WY>i{a^ph7tmbv*KQ-J_*EpKo4$j%Zu{&Pa z&L`>Iyai5;H@`lPi_V;mJE6+d-%suA^p8omuI>DtGt;d&_Gv>ang1()_AID4zPrR` z#EuI}|7-PPdB^@<=5?x1r}}erxz#YB%m}h$kPaJp%Fsw^-ba?EV@J3)J>26F3>u_E za$|Si$CK^gj7^O=V-B7CUP#jH1*Na71S}z0X+5 zRFAl?@XC!r59!wM|GTg8#%1N6u##D~;m#at&F_ZXBuGZ{&hp32|2!$)X3{f>j$+0jov_Dk?FyM^fukRA8f@Uwh3wY=jSd)r^> zfb}$SQ?$_7up#H~~jDick$PJQ7Y#YR0NYUDC`aQ~RY zk>=@C@~|$cxdw&2V1(zf_5PF_(MinvT5;85)e*W(-0r#J=uVc?epuQ5YT8vRTlVj# z|IQWl`^3M~|9x9l?`EO}Pg2|N9#MfWizWX;bl6IHOWTPbJ4uA#46(ku8sj}E^%wlv z!fXvBGhedazuSe~-!q*qhVw3Q{WDaH{78iU!lDA)Yhq!Z5%n@fTfFlMaDMu>KOT9 zCyQ=BPweB(q5@wM1+-S?M8hJ|>ugrk1%*9zFOFJ3V(deU8pNCZS4nLV%IAq*7%0bM zvU&nr)b?{6D64XtDjQZ=DF$_c+G)=i-`FAsa)7wBOGP;} zw5Pm)AAEqd-Je|f1NA)362FseeYAbBM18C-vethTG5U+xrPQrk?)OjrUgr2&6vI-P z->HlEF)B-Sge}k&csyR%b7|Lyo5u=z>|AF*Tzv0w z)crQJTms)>(N-Zjc83S?s>VJX0ZC>QyBD9prdhnc@dI2yZ`;T7#2X*)Po#GGk<}#` zs<5p-HnYQNA&E^$JX9j{TC&M&8SMu$Lc5Bn-L-rxvDVeZU+*9qyM?&yPVzxg*M2Ar zcoc0uXFk3Y*HcACe{H*+M;CEsms`0+Q4O?yPr>m8be5g)%_VjQpRlvCQp|N-c@r&* zXob{;>?-4;Cz?!D%{93EV!21Biabp&YzzF=M0~@cq8auREw+!^MAb{zz}q=uum_-v zrp8xNvV@eFW!8q{q1zzX#r!|V@+@RWHv6%4c^(cC3(yuXpT#qJp?$fliinpkUUg-E z<%yq!nG48|)Y@tQSx>Ywx1qT?MTLv{Vk|m(#=FJJJ}8duJ{4g4iPO9d|EJ>cWk!DRX%%-jc5ZulY_%N(}`v> z*{jKcjhEywM>9W-3$Mu@IP2dc&*BsDkPAeq{#9O;f2#=(OFMjXzV+;Z!S8Qn5&E z=UwHUWx=FYa&vi<`@z{g(ONBe3%jYF+*TIA1L$gP`40B5vhRMVy~Hv+_?~Fc)Z_cg zcsH}7*vcrc(kys)xWIajqjhZPlpzts;TpdwY zb98mM*sddBM_q{gH`zU%RdkElIUTiTPokXuF$tCICmZw;^k1WVu}WJ*)KBSNcD)L9 zy;ZBbOHJN8z3wl^?V+;iGIf3yRlK{gU7;$(*rIpBo1T3Eg!_`z{G)th=-yUL$29tJ z6Vm<#*=q-&m0={}QoRytLf<3ghg~c?e}o#8FRSMIc9pke!aVKo{xYY!%M7`xO7AKI zMAtv;7%x}m7B%aSRwZJ!agLM0&{h;%Ic|HD9&rjRC?h8)T8GokY5bw7=3J%7z%Dn} ze?sM7An>P<_&qVVsaN-c;|+NCEB@XEE28OYs%*ZS=%XCF%CE@LK$QF*-mU4Z%73Xkx7hI>w4TNr+8-@8LucR7Tkaym z4i+D{xg5JSo-vhAe-b@7$Fn^yW8_|WhZ9l6B2QmclwmE%y@guTe;Y@l z{t!wfSF#P>x*xXw&ZD&-?dcqr?)A9v5qJMmWXx8g{~Dl-qs65j;(2QuNp;5_aHn}u z=19nyz5euqjege^lFVk6*EYtRd8}vAX+MX+-x>XL?jP^*B|b|n%kw-# ze;)4F?4PF#eEPM&Nd=1CR={eBYv&46Qn!T*V z$(%+PZSI*4z=eB5gdkz|vlB~mmg8J;H79x26CvM~uwVoP|HVwTqHm6*V}0N$zM}=K zF4;hi%-;C@e_}bKuZ^RZO_K5O7%U$S$!~;qS37Q%QnQA59MgLz|gMWF0 zLT{&{$(srfR9`ZuqbEKVy2c;Wi0p1te4gn1UVKj{8Q+d@cbO~13p?EvA7g=KZZ{UoWu4ZZO~HL5M48{C&vL z`%zHx?-ucYmCH!q8wakIedrRD*-s`~e^n~Fi#EQnIIb6wJOVX8CU4{^ zTKZ`E`Gw*?>&o@~4addyoayN%^Yh)}c@9RiOVPmy`soFzHPLN{;=3dL-?)gW+!qZ5 zbyMy9EhzdDtXc?}Qmed?d20=i&cuUf`+j!N21C2o%;5HT;zFaHL_h!7oxdtj>d%r= z8qZeZRU3*@ZA}MCgz7QkQ}_2yVyzE?smJ2W6C9~ada!qEi`4#`c0S824~EjGqxJ^4 zU`x7QImwv}pjUWt#+tjztcmm${{IN(Ys~Itbf7C>LZX?YCEN~U9ATb^zZ8f%L~YOy2M;FtHwqe(dEVOe<(!ho@=5=E1K9NOO{zw0_0b~l+} zUFk^Yu=>s+7tU3ks<+Q4`0nS0{!kCKr^`YrUr(UP&*dpe=ZGqF{r$~TB2-U?@yF5U zQad+AW|<8y!(08)Ti0kKGky{Y#!40VjC7i9h4U6D zI5(cQbs1D{OVb;~CSG502<*RwmeCP1RiJ}`Y>GsgpKs=bv(1`bVcmzg z&H|QEvX~Av@&oz1{_?bs(H^eEU6B*vu~erW#K-rHnOXvw>Y1PDEpx2%mZW|Y*)12) z*l%H@-;B4;r5zr?y4-=TvLg*Kb@u1#P2B|O#-kxOk z*74;IBFk#a2YpLM+7P`r?)Cp9>-RofO3n7^JSmg>yy%P%3f}saR-2wQ-@>mq@!QLe z*+tINLK;DJINTYne;|J1V3azL&XIlxznim~w5o=lwrOE69qq{u!a@7fWcG5@#YsET zW409sUc>7;{@+DLWtr!mZx7%eD|ecC-ijwBU5m!DTrVaE_JROwXoJbidZM7xamJA9 z#g%=dhNIw7#x+=0=tw!3!&!~@(_m&8(}#tgTb1rsA1a>#;qIX^zJo8eMu}%awZV|` znIf|8B{Me@$GrtHmf*SdB9s5dcfa`SYdp4swoskbcd$|I;niBSF};Xhx&zWCU#kUw z<`&{Cz98LRrsF;e)qDT9`jz!nZ-sS_Ta`}>FXa2A%A=_CD%xzTLgP5t@0KL@d7ktJ z^gYD-4R(yhUDFCLR(1xDG*1`f^jJ*;$+MeLP^Ay?YX6U<-z?&1*a@{9WcGKJt@o2r zC64-ib6rtV7s8#*^L03?`2@9GL^?EuJ>B8uBA;(2JLPLWvKBOo$@t~Mf`e}NG!J=_ z>`q-xzvzJTL(w-GD0Y597zB8%8F(2H>3k>YR}g5w5QN~hFQ7Kty3Kcewx}Z zedUc#kT3m4=?8M9zu`^#qVRytWP{yi#LZCMdfMV!WaOhXll}!(9EVr8$E)+{BX?Sh z)9A$wX&f7p?+eh}{ZOwR%W%D{`zgG6eam_lRl$eqi8NJ}u~a(VK*glpRTn!_&7lj~ zjs4Ky^Riz)EnmzgD5bINh5kCgi^r_}rf~2)^gi9wm#{)kBR8Lx$^M6~O}ncM)=&+> zRGvIYEwQF*2)5OwskIFJBY4H?slB&xm38dMrTlxz2Oq&cK8vi{fll~=aos|K)VAX= zyO{H~bdeod#jA02Wa#7n)q6RcecM*9Y4Y-0tI>S2pW}G*n)}_FkFOQHKLzSvr8>+Q zytI%OQ`gL#1HlFvMXDpM;y0>~cK(MRJD|vG(c&1MmDxDsGaj#ZAw#t7S4pb{ER=s_ zWygX!91k4^wRW=}RjtTRxa(bd!5C7nD?DsW!`#@4e8hj8?k9Jew=Qh#)RIr-%w$^B z5zo6l9c)uS|H#BlFN&2sd#fE4bi@c~aNqO81;gJFVgg61BCMl-!i2HpGn0AMBQiCXFDi7&z;X#5XQuWawKeaj9l>!4D|B-Mg`(MzI%+6foRfWC)q z@d|z82e!p;tc%T9o~>y?6WD`0!^|O`;OCN^aPV2|oiS?u{GwXLK}D^jTlpA zeZb4~%4nm~{~`RrM-<$#4_?_;m9sDSgdZR+Q&aw<lTP9I9?jzeRb&Ve@fh_n-Lt zB|5`ky9%iUKg#PTtkiSp<4xM`9IvuRk$u=iP$b@WAy3Y7c=U}m{+Rus1 zWOn*zjfRzH(|;P!o7SVAH_XpaRDV8cQ2)QmEw7Q%BT4X^dD<^jef?s*d8wn5xp`^j2&}<`Gi!XNMZQI9Bvi#Q5 zV7{j_X7BPJ`z49HsNCmFEM9eIY-n$96PUa)?Ke@9sppk=l<72@CsFC0_@J}rZVN{{ zkR07{Mk3mVlDs|X!O6<(gnDm+_c`+nlJ8(%hy&>Rsb$~AC%5^|2&*vLwM$5o6ZoXN z@g?7hPH!)yN>^Tv8=*z=@q73zSr|7Kdt^g#aUzdL`$x8b2It*9s}4gSiii9i2m=WOoVN0N%k zFYIUz60LTLS?Wn&9ZpAhqoBXkG+#z*Om26g)swd|2lXZ%{YPuL0Xk1?a2xoPe6SA2 zkjSS*u5`o)>C|wy`59;yZ(s{w0?Cerwg>r1TvaRBn_BeAy?=l%{2-6Ygubflj{S?|dd zs@z-7Zu0^Ds)wc%BU-cA*ItFHKQfDnj7r_RDXj1(9gjL5UYOlkq4E#Cr1}HUvl`8&vy)3OBeA|pg|{8e=)feFGXc+a%#|q{<4ofvv|I# z?)Ea<=S9aeJZQu4PI7&&r=umBXsod$ayt>%_t>BPCNu zApN+rA0EU@yl^QyG8q%e6G`2(UyNrxzT6rj>;^X)v33%Pp6<^7BNeko>Gr!V^w`QS zQgXdg2{6&?+d!CqeLs;c$vOE(48-@vtHtj2k(qnme2%0wCuY1o1ZfMg+R_-C6WR>1eyJlchqU^X|KxMC{;OwA4n$%H)4?#YqnDx6n^66Y=({TqRkHR5 z(Ef+{otUI#s*i>jPoTJ|=vvoIo?K{FUw#^-|T6$w)CGHUg+NaX>p?+V_9%h zVaYRS`w5)#5IKBLVT&fyy%(J7fkV1j%?@U%G3u;geiDVfEuP)Ok(v%Wn5pgPZi!Ax z-NeLq?rZ+Gr}b{^sIU%8tyW@-5;rp5`VOZDB(^AhhqIrTXrI)HOZClUE&OUe(n)(E zt9hPTde#|}P{H%QKgnE=LBWZ0n2v(dmn*RmpF1~QQ5JdirT^3Ue4+0?@5)c1r-3Y! zUi6a-q4xKW=))br2kKH zZbvpiS694URLkvbi%Z!*$r0*?(=Nerm!XDa4D=*15+&UOGNvy__WNT|_rag{8UJ|W zNo-7F=bpif@h|rGtkI#;%VJm|_0og)2XvQc_3CE6juqI8SK?SJ)6P#inV*FpQ$0B` zxRp`5$!hHazlK=%8{u6SYkD7qOy~4_QPIePc7k?e9QUKA+sUS6f9L2#J`HgG7&tl| z;zd9H7XEz==YHhfSe|$nGSX}sWBJ1vS$FZ(H#9i)%g|ndKn*}aDhbm`# z^$1EE2y>q(@Hw&FH=(vyW!0%`)I@fHdlRT(-knI85S*Ua}FTk59d7^c^%aIE4 ziFfOZ0#4(H*o!5Q9$1&5g0mpQ0qE}<>wOKcU^0Bqh0#I2p{V0|6#WiOeWJgHpq2F1 zp61hu?)x>|`x(u@Q&{H7cvwTDPMq(?5UY-nHNvOqdy*aTk6q~(__w`L{N(9oK>C`b z(jG?o6P`)$`mgZmhpzS--uW6|J%KW3`Bv&@RCp(m>Cd9ip`^`=J{sB=>?e4m0J69?bQ8JD8!?bx_qc;@5Wt7^$K zsPvMU`!n(8L84faiJWc$n~H--CAp2w>hCb|Q_`oFc*4(&;Av~09NH%#OAp_lY9$sJ z!$(HDBah%#CC@>l9@Z-HaqmN#GvUdHWXr$4IhGwUqL8>}K);jV;ultbD%y>%`;yhH zTJob=9^|a4XdzL5pQ4EOJzMtm|Mgt2_|{{t|Cw(-;|YRmT}i(It~=5<2SUU|Ox;^x z{k8713ta7v-Vd^8x&>6d+!NgZOE*?;vxR59od$3r+>O8MW+NQq+x@NdUlse4CM%8g zVJoWWtA z?KD@9L_HoB_hGZ7l6{HmJq?4`6?5Li2)o*S9%z=nsyGLNZ&-2%#CWh`FZX}J%q}fI z0;Tl8Cw=s%-GuGu2THimAD7|6c@pQlXY=kqPK^LpgYxYHV^z1bX-$%IfO7h`T zl>fLjUR=?KZu}^^Ouj)&=$eS=){g7x=?@#tiE5PmTJcKBUiw=dUGfm5+|+D*?9*0I zWHVg1iH<$1Dh{KIUkE3vm3-j2KEe-Ypo0}Kx1+I*LAOUifXS%v9$1ySKik8fbzZIa z?FH6mLlWj=lBgZNOYN&?Nr(odX#9l}U};mIUkJ&*g>3UZ?fHcjzJt+k=2`lpl(XIM z0n}InEsREao0mLdR$t=}?@Y2blZP_HtRyp~n$`XqPDaL$hti1!PF8R;yuLw64>nah z&(r`#b!HFzfJKY}$g6QwM%7O%nVbQK)tTdmAwI!;CQ zclC6)``v{Fw3MCrxG`>PK3?TDUGJRDQOCo0VZ+k5SS8sjyaA04H{N!TDis6{rUhT= z{cb2enR%%a)Y7NT&2b|#^K@vp2C9BxtjAcVMrQRzXp%nF|H7=@;b!`i-;72|3shf0 zRy_h$o*)}%kcrQem=g+ZZ>%|M%ZGFldA6%(n}X}tia|KX6&apT=t0u%Di(HiTG_`H z&2htaCAW&C{HVMI>ORhQhS^(fMn3%j*={g*-O*h$JiLm=wKWP}=vxDJ+Tx@QwJ^9u==+JMz&PH zZ_x!}K`WG3;lj&>6lQ5e&_Y8Q{73H;|RsV~Ulg+;y>=Ccy(Em`tVOI43V{7mK->u4KKL4wvUgF)*MF;1(_Z;Z-FhAyr@M)8hcX3&L^En2Ue{D?#N)I8&4u+o}(Hio6+d{f)&EIH<9S`b4ulu2tav0SFExgGu+6dw- zaPM*E_f_=Pl%+TxW}S>mYnDuexINJEy+)9%+bv2)+GR*>&<~9KT_~0;oX>Gr3)i{V zoqvMD51{STgzatgThbazpwZ>7^lruBaOF_XwIy4!o_R{ncX>rO`uW4wa)m2TqAA{G zZ@8JOe($*kdy>satYpAVMf3Zj$@i`BM>NulAY)7M92=C@EtyTiB@_K4d^Vz@gxgEKgF-KrYz~d?qQ|^oF4~AGxs*S#S;<`U za0~16Ix;u1BRvyeMy>C`?moQlCzh^6iN9AI>gk`uYt`v`2e{5lG_f6__d&SfIGWA? z`brzC`!}9C2NHZ{jK3Jq5PHPRC9O;U5}|stXv|N`N#oLW=&x$UWqgx+TB|nfm9x!X znZ1uj=5!f)OBVLqByaN3euBgGNQQAFsUR~nccV(UI=xl=Y?q-mu6mj;zQo^Cq2ZCL z+TKeJ%`;d1jp_r>FxM*n1P?ESTK|w{hmtGP&Ea%2b+B5+1p>;wYBa&(LPLr+U788$A72$;PGaO1jYv&NK%{ zn4487`dE5Z4fyshIr0pwzJz=khc}Zuu>-yLZD{;DY#idg`_WD}G1}A(oP~qtpt!%F z%BjBJiQoT+^7c5V5vd=`;uUkWzq{{2>)VWOzawrgvyZtqJ3KWGKCowyuI^3H-JkAp zC0_5$U)Y$>@c@*#%(|Udv4r3Et@2xodq3f?OYBEAV0+9*83QY>C_m5@ZuJ}ovR`|f zp*uv^K3QHOvg6#+&(Qc$q(v*Jyq5m4q-1;A-Ek#v;mLUw$MS}3RJz(s9?p`eiGGsL zxsQmobQW!1IvTFNU2fIDm7Vuv#f#23Li~3J zPg9*dIRUyiz&WRgmRbN0O6-44^hBGBrTf4$4}&Q8TCYDVx|oq^WXBK`GRW-j2>Y9% z-R^XNwk0n?@>6Iwo8!4_UGo_;JpuloL86a_sC{TJbJ(x@8s8E0svdN~!|6-Wf_s%r zwTkoYm_0%VI|YS)MnfD)(_e{V!_gc1#ycpXJ$`LP(!5AI)Wtb2RX*U|4`R_Q7l+<1|``-utZ2B#XLuUm|zO34GzaVn1Akv+K|BtM#5Z_Imr z4-Rvrzc1iefm2?n|P?26WO#C|k`Oo{@aUWS5?UWN5u^#`^(E1B-Z3E z5^g&*e`!fAwaYIm{e?|c(`wBl$Nnj~RSw5Zr4veStaz{d+=`JUJw$*!3B6Od?;qIM z!@SmY=j>Q~3gPZTW!qV&mN2d{WdDU6{?%H247sjmkBy|63?tnyHNxw7kPfA-U27&c zvy#`6%`@nWS37?px}1%p562r-OVY*gb1|!>^pp+NxEoCG?qaRGiFa!Xjkl%S{O&sS zQPfIU_$Qh1D4F>~VG+IL-mMB6?Tph?y<;KF8cljn<9$eNlvG_<43`pb^RZ_;oBUYA za;-rM{${n>S+BRz`*d@e8cRRBPZONClKec&xNb0qU$SF@?p>|T^-y9s%xvtP>+sYA zMm-xRer}C#H#hN0?Oka2Q?1WJR?J!$-jGiI1C6{7N*RG>e?wP2UE>01bEqen$HsUF zE*y`Vo-&8K^0}83n%y=fy+x}uq~Bg>{hL2Zxw#URwQrz2Gax8}h~je?8N&bQ8;Z2U_hV07(B(xAfg_^J`B`$|;N zlZGDZ`K#hoPutUb7kI+0J;kDu#HD=i?=myG8MNqy>gv&&jz`BAo7Jjjr6rB!MN;BG zIQS$AJdJi_OFo2((fX35F$FFh41;^KW_r?MFM;;cto)BK^Kwt}Jo&NQj3sjNC>**q z?_~vBA;@ySXMB>5xXS&;yJG|2p2lV$?bBLx-bK!PTIA3-#<)?*lk|n1=vq%2t#EZW*^nAAh5Nkd<$hQ~E9@F=`L5G_}8-^6!!f+6SA3_7wKtB{Bvn2A#%?#znw zN!oW=L??Q-H$Cg>imv`ThxM^FDy$9j5Aei4S>szh@80nJN@L#9XlBxp9z(Ak;KJV4 zeJ;zc2h5#o9eYE(i|7-nMX{8Z{y=w6Pw0`jG*zY^GONizx(>%~OhWYK3E9Q-?dko& zD6F*PXUCg{))vSw`!27I~nhjtcxWy#hdZSbhaAOpok!=5b#L za6R4TK2P2VUYja8CKAD7_v|*$$VyM-rR`cfN)wm(r)!lI@3@=`QFsRZYj^ zgNLDRe^yd=ay3sj5VrqXelc(KRjB2D=Wh)ouJ`F`w7LpfUx3&4v076g=@MKx)9Saj z4?YaFUx^Nvy5kun!tp3!8QU(FTo0Pq*X1X9=3eM~o##3hrgn#wEg{BW-`l<5$}wd4 zv1ajmKUKgzJkq_AX*Nx!F**?SF=NWBt_y3%<-xS5RG(+j1JrX80_IF$B*$J)hY{YfZM=!Md9i(an z*Hbm6zd1b*^}mkNUxWR3@E@!(@88&EdI)c%=H@iETBFi3=N^xGpYT_W(tqGcXIkRb zY|3=IdK1ERM7;-k=GNrJFjnLw{FPc62cz<3;?yp;DwCn=S-iS0lMk(|+izq+bGB=C zx~}#romxs=VWQ`G9#y6G*UE~kJ@u>5;76;zykd8n)VtE1^VJD^OcB-H_dB*UW(L)O4d(DG&>!aZ9%8F z+1gxdC5xuNFt`M_!Fo&-SB>P)$F!^jcO0WTiJzL zOPAfn_#?r7Cp}Lf`_dKnL!1Vl zSszEkg$Jzub13jepP%a86I|OsqKAQo9%ro+)j^1f9oui$3FY0~^rnV^%`9Sv@P9we>O(mw}e6M=olI+SKzDKCyg#OCf1>eAL!n#@o;MGpW#{4o4B4kCsV(pr%8>& zHtxH(=eo4ex=u3ByU_bCa&*AmiG8>QPF!lHuc0qTZ#$mWoQf9vny<@U>jM8D?dGrib9VN3s;F#A&h6}*mDO^- zEYNZzpRMxhRa}<6xa@T9Wlq+jlK0Vf4fj65ysXD3FXN}p%t|Ue*Tmu9`pzW0@F{C> zOLMgd$GuQ!A9Y~i->&cuTO<2-FPhWrTc(oea@UR5Jn{BRA!Xu#-t_Z2eu($)ufiKW z8o$i&=?|zkQ9`MEGSM-`6<1r6_fht6f2YUUdglzrIX5`-TkEsN72YS2M>u1eE2j3` z4`gC0g?&dh*QU>=MrR^IYkT#jb26XJ3oRpE#haM@RF2uwJE@_NPSe@*+SXbgjasU* zhm&2ft=Zbp>%~6()hs41Bh`$u$2`-RQY|DqzUcvy+CZPUPU?St=aY}UlikiQjXTxR zQk(02bhg6EWj8c26WQ5LJ*Rhlo*0u?%-h?(9go_}B<7pmPu|x3#x~Pc5+#`kwCts( zcGsKE3!Z+0^Y5Tb&UC#hM*N9SAAuT^%v`#9m6Cwt%;8k$HbT)&@bPEnda@Ns7JDju z&3E=V&-5)l!jP=Z9y4dgFn+;I@(T<~hC-vR;@v0qK zKEZo!aBUmB&=Aem@>x@8(h0Xlr`i*Cw8JB*H+QtV)vyZxy3>xn-v(!G3uWh{&)R7I zWY1e2et%)^s-xA^X4`|dRce1VyX47WNgai$=5(SFe~-p~FuGJE7;B~Ci5^ALUvBs2 zK{Pzq%1trW`~6HocMn11+kD=IUfzb>ITNyugtSA8=&s66t;tAx7}5{(d%BegJ*TVk z7sytRO{F3HK+fH6I16M}hU>)c3wMA2kJ^_M)?` zCe5;kU&oxB4=0YKH>8)%8FYp>MLP{NtJz~uF6I!}cA0rP#9EvUHEy7xwKu;PkjZyB z()r^K8uDmX<+ZRc)kJP|Tmo6!TA!<7c1N$0hnLuzzR;!<$~YJvbYm~QK~GO4Z?Y6d z!}R;zy*tm^zE);WPte;PPO=8SlGl5>-sSFmq-U)IsW!FV&5fb8QC4FMWW3Q{T3YAC zU)6=9TUxQd&{Az{nXJYJw9##0?jNvsH&3-ckMxITaZ$0;d4z9PbFcIQ*%HDfN1-Zx zC3`%ddUq%HKGL&o?5h8wh~3T7A+E6-s`?)H#_Mo~8R+0X$vjAe&0)pptMjp>4o&u5 zcQUfwamHFJ_7^QARb*1#VIQjyw5a9|$CIT8qsF!Fvz=#8pMciR+0plQ#0%*mQKz8f zoqYRXV_E?he?r-bH!CeH_*BbD1mIFXU!d1F@%$n@zuH}s|CkuCMKC2)^@;DMa$qXs zF7~=Ayh`M7YW1x%@{i%}3n+XIeQX!AvJlOUhxRKVdo3E?3_Nfxq+H4_?9kS=h=iL|3x=5{#@i)TI6W3Ry_iTLV+Kbq2X&T*YF?7Trf zO(lg3S+6&^(~~%-4_oC@wtaebOz`^-?+kLE)Xhp=yzGj-2JuoW=`*8DOzn5pHk}O; zv-q?7uBO3dANOD~H&u#O!}(|kM-<4j&eQ%&iPd@bh4>CeCeLwz>UQ4Rr6jaJeKIfekiBDyX=HV>*B~% z&`+0w9Q9%0PFCZ4tN5ZB`;zXk4;ne0)^i@ddx&S^SGyXEXhdB-c^yv`eEt^2r3Te_ z`2LNtycR(e|jU_&pNIlhq9dv z$`*D6PLi)YO0U3$`m=r^E9a}y^3oke@i)M#i}@*AUAgnOQs8y?B&VVv6|k2 zZQFbHL+Dxq%+S6iFN;{*wBi%pu~wI#jLTzpOrl56w?lKFnmTvc4cd=yyoPrM$U5q( zhuj>|;XBj3ljZWOnl;r>dQV9H2W=vBxX>Dx@k(AR{`4dET3`5?h}>)VrAlPu9WLLd z77Oh+dxRVFkhG8obrnzYZFW_9$TU30IlFrQ03Nx0M97zvF5@Si;CU~Cuc?zXlMn7r zD|?aEILG)-vL-vxZ>FP>r>x2+sAVdi?8V~er}Uivuzff4YI8r8IS1`o(EFL`?{x)w zSw6^IbMT=UgoSL84aCVD%;xBgN6)uEoIYx!(c=P`6WMbDO1+EZxR2yWZGq07;}m>& z99~Ifu|06)$z;Q|I3!sthobBMq4?~SMqA2WOL81`$0>V3;O%K=t5AGoU#jUv?#_T) zsm>O^<9;YRU7K#E|6XS`Z*}kc*&x|HNtMIo52c&OedJj;D}Jea_i)yo&Q4d7bYZ#B zd|gh){m;{-&%vK?-~&i_Zy~|2hh1l~%IfpHwS-fb*yGqkj^pQcOw(0vN7h$!pVwxY zEtf;EI~qCDnKi|2EOxAtFR-8ejx$++EuD8TORXpVeb#zBh=zw5({!U-K{nNdC99$M zug12I8A)B~aBeLK(i*i)Lo-j2r;m}Z6AD{tnmvr!DE|)UHaGhhv)|K&Z4#PjS!e}+ z)ARQsui`bU&OTa7*H1iTLvpe?G>nD%HSF6I&YkEg$6{wre>+kE z`)?BUL@WO-@8ZrfRafEZyU||c*1x^0f0;gZ)JA47}%SlZ9K zUTRrZ_3iiF>p95$nKe#EPAYisVXX$R(B9+;d>3j}Q9a}axk#xU@q`Ln@9B=avC3Mz zsi#$1&>6}&3)rr<+G}>4ps%8_|TP_}An5Np%3LRwy zGu}qt*@W!g6a}a1lNe}C(6 z1=-OLVm3o7JK%zraPwUJb|8tHEQp;^Od}}z7b%dsovDu$>n9n*_wfG>Vk?Y-f;Xd) zLt%fp%()HyUztI)A&jlU=UC5Yhl;(~Ru!h-RV>?1?7-2ECU9kc-qj9hF>&(E{BPo3e!40=v#OFl{NKkWbSQ1wQ*CwM-=YJ6*4>D-ejr`Q5Z=pw28^_Lk* zMa@*v&o|QjqzX(;x4u_=FBv821@tAI@h#&@mQ7-7zjBS(v7h<&)@G#{*%-gW0R?79 zo2X@Tymd5*TfGsvr%W+Zhve`Wo?4!M)flAY`y;cEOrt7viQ!IN4E>0Xhngtq9Z zvJz*!IQ`*iy23nOaPS~Vn98~j;Gm&Azyr)hWmnrfNvbOf8J_ye>1fpsVkQbW^;dU7 z_d8pW!@ZN5y6K*hZjX)p-pc6HEhOC$)}nwFo@_1p*w$IwTBEIi=J+NkA?PUS(ocQ|CJeX&n4XsHb5o2c7cg*bW~jL-sFcZI1IcLEnk9NtOR( zL_I-bru%7s{O~Y4;03rHOS?BKq6eRR`bu7H{hH&dbg((u3Z7t3wYAsHyw?;r9YrhM z50=;SyBRz?iPhc=$EBy>9{BShT$+wusQ}m16|N{aey}TdBP%+xWx7Gwe(0w+k88Bh zcvoJ-Js;8IlM@wenBu)k&(4>|UJ6-KFC<+fV)3}FsRf*_5z*a}&sP_PrH=O^Sn>gMS!PvN(KC`0m41k`an4LD_`IKV z!kT0y(_b%r92T3i)KZQm6A#{Rkmv*7$bNjj5#1?%t>I{)Cuw^vJ@g`I*%sGc$5SArV~Gm<-XD4jXg<aBi|ZUqx-n?R>@R zr~A*e;-3Hidz!n?be%_CF_|8zb=%ML^?_E`p`X<4PiL%j&Fh5@JA1ZJ*_9~0HBQg2 z;?^YiKX4%Rf4_1>hhL93;*Cxn;g8H$>YtrSqpoiMZI$Y0i*+V`nHKVR(cAe&cI20& zX&pS=&br)SjnmsRU48qT^Ij++9YasBMs?&|ETNe_qx#6O^1Ioecc_PRCoAm%TG1P7 zjjStArK(gay95p0f|vWbUO(4LEy(o5K977z&6?J5;(yNT;{E&4>NGU^8F^X@Ms_vg zsWg^_cFI=K?Nu)kw2o`-r9$(;elbrpJyk0g;&U5zmvdeR*({SdDvqtcrseOK=^4+D+lcC(TC zP{Td%SU$=J`C3LA*}eWwRnbTNpRRL3(sU?!oelSn=U8GzwkJ{Av#L^EE4Xk!dU->p z+ahE9w6OL+X1(U;eX$Jl{J+3wU)g!AtYiFznOG~=WEZ+$Gd6d7mg`0A?hYz7#J=5x z-MW^A`#YQbJ8}CTxq7-TW(W8qS4!r}yRQ9_$hqaBTK}aVCZ6UK6q-uNu^-;CEA%>= zeG^^376?z|=@hCzA9lZd^#Vqi|aGhN4x*;;3N#BzJ5# zE3@7jya#0_@TSDljK}{3>-Qk~pX*LjN$oDKRg?cXS!rX;c}Iw_7e7Z;`);X#wmU82 z7;>nWd0sBEvxjdb+TbVtmJeLxIh-`IpozrTtiubltj77i_dPnlP0fI_)Ni^(Ey$Zy z&Y4mEHM@H+$Z{>p98VrD!bOR=PCjq)r}rewQ;Fv*I$|VZ@GtBBtTX>|UTxP# zf6k+$A0ZyCzZlTTr7!5XJ)6g8f*J@nsElx+>bwi#!kuJF^0B@$6GPD3$#AYdgskjF zeHaOQ2Ku|zXG7_}mHj5ivSc4Xaf4}0y-;NQ;SKo}e#UK6)U6sK()B(SF{iPXUMqi9 z&6TM}JK66Uj_KY{jjM6$CftKtuTkrB@AA^}dOIi-tLe@Xq9h35HL(Sy%8o>%u~g6m#e)D%75HyW~us+9ij z8NS95KjEOz$~-*r7}=eC(t!o8{twk|!Nazebc|IzpXQPJ<`c|(>fQB*4yntVDq43~ zi^_T|oyo7%T}ut0i})exqtvA;cFs{{ri4z^m&84QQsEEK1Dmx$Me~bBg-DN7R$r+ziMZEJ8fAJ^K>~osXI58M| zvPeg&PPS)xnQ#8Y?%cF|4>sqC<)?eMBfE1PAJg`(G~QKe(wA<+CyT7fPLL#ZXc`sO zsnTP6PkC&0Aj#ii7~UbxBAL?1ZX)DZEvKrJ+Kew1b%lOnNiS6ke3hE6HQCdw$Y%bqE_v8-L$A!U21y3*9E%gg$dJy!Nc*$=9% zG&a_O=>9zwaJCeMd@iXn5>iYeS<)lo4w#<&>6>Y^H{-EHK&NU`^oiu2ZA+5$f|twK z%*Ug&`;2t4nzh?jsjJ?~p}e&%)E{c&IEL?bhbrZ2alcpkGQYw|J;;0UC-zkBWEAdy zRn^xIOXsW99gpu{rJGgRRYju~RZgyQZk0=_Tv4T)D(jb2Ia5WWrs^E+V&48SlZ$vG zX7EKkfPx38q;j(>-sE?0HJyg=U`$sR=EKs@RCM}YU8i{v<{5Xs1Fbi~J>TG(p15#l z`1uC(>}f_%f|f^`$8`9PpDlgeTNk?A-Eiy)`hWJ!UPkGY(D@Lux+@wF=GL%gtIC(~ zPtG=@4?vh(Ra)ul=N2`_9)&a?@?TVxZ|lm(k>Hoo-fuIU2Js{Q$zMtm&SWE3a zoN9&chVhS(oiEVa-XTVfF$NIKIWb9Q(M|4*2p{bTPpwE>PL& zxbidUEVF4mEj@KQH+@V$SZyEkV7|87X>zk*(fX1d@Wr9BM|S7;T1nEpR!Epc$E9OS z>Z-g(dVYbI=0K?l&??#O6TSbmGg6oI6lfn0_3QY(2aTse;s1Sy@4c7WK--spr$+HG zwY0i8E?33)wz9j+9xj`vV*bx%o2Vajit`>fZ=2JJuPUtMw@A@9pukjXJP<`+M3ZU) z12z#q`zf97Y4bLkbi3EA4^tEFNxIsXMP<-~t`HQu43vFQah$DE z*RiO5hbn7TUwRrHpKk^eEBFBvyxYA}bMyojd@3Nu19TW0=OorrY^Tv?aW?&A6;Ibz zeDeE}4Tn1#yT-xrsW$)D#yt7Idcv3JCU?`O&gB(pY~_;0yI0|BY~WS$;dY>XBt~Kd z%zXg{+zKuKhbFg`AGm~P@o}`=L)HG)u&5zi+Fj+}gH``J*4m`**Ol~ydr8(*R{tEm zms^Lee0y^{CL5!v>U5ISIj-t@%V`q})foE3YJF`F<7Yc7>k41yR_L!GK1{v0%OOvy zi;hR-iLhGA7TcJGzBS7Kl|?t%XYq&JhaV&J@1}j82OW2o+p^j!?m_}hhv7HS<2E%P zhoI2yO8+I_7V{+kL_ge6rOws(qBn2GNA7mGr`!NPAB+BGK)Joh>u#jpSS$VlnqDO% zs=2CBcdN$zDBa~Q`7irGlaVayYNAh{z{jca(@F-(Qgd+`?VuWO=U?h-?@N~&uSQ}` zsM3R+dJ=8^B^vD<6613bp{?u_^|iM(fJ``B?Wa2Sw$@s^R36IS`J?1-x|yb%TSFeU zTIOMUYuJuapdQI8eV zrm$k}@$_%gS@vbejWgDjW~UYz*AO+eP&@i)e$gHIRhOEHk&q*`u79#FW6j&exa9<+ zPW_HU*gdJFb{if4HQK?(sO%V{Ol{@IeD`Cz#UJ8m*OQSy8C`1szgXDvx3U~l8{!l@ z{1>>xjqLjejC&d?pKA^0)5bsLTVG|LYAcnQc7)`Ac+$!I3)i|sGqX`01^-Ig&xO;E zvMjDJ=0o9H>MtKd>$n(R-biYWMpLgjZ#f)IoZV@x*kO?9J=gz(cDfN1+Zc6JGvW%| zo$64a+KP!vKqbhiCSNj>Mt=JycoM(sQlETAM*}XP3vM(!kvr-?mKEBS(+!AjR#is}xcm*4BT9-&(_uUJQC>87&av8vSHZl55!;1#YJ z`ymxmZ*uf2(EL+#RJHIN#&^7cWii@Xb|QsOVH=!+YY#-x-_zl5gGl?8@9a2Gox)V* ze@<=1MUI8==4T^n;+yZXN|I?X(TcqX&A&zSWhGnMC1}A~yb&)>pw+ykD&8yhJtnFN zISQiZXPo2F;uynb=|}Up+OF=o`1U-B@@B!~{#Wun<**ouP z-sAV}UiXerh{@z-poS_3QwK(&si8VtZrX+Q5!bf zI^%kUg)@;1o6fG8=kMP|7;kQ`H1+RKr>!K`GEow1_%+k>xQT1F;Rig4-?RhYzy>ILYufrJ|;*AQtyPPbakJ6tNVek-XKCqzj(>-k>75?Ut zUrO(e$E}>-sjTq3mXo5}6u$Z9_&j^2cfyh<@yy#eC_FR|9(-XXei3u94nnVU{G-BX z35_K+c992N{2%MIo>l%wVUy3NQOqJQA14v}!SZX3BUP}DGhg-K6ZdU~qggj;5? z#1aD-uU8X~yg0|4~YWi;cyveh<#P4*_$PU09y4x~)W-DOva@t{;?9B$y{&b#_ zlV}muOS8M53Rmx2i6dwzua~Y+cl0Zj3p>Ebd4=WqJgu&b3`>3Sm&u}S#5>;&Te^|Z zA6oO{&{c0}c`Z6S3UW0@cb%-&WY#b-QV692?nxKg7GY;ImixK`OHXYLLc9q4q8~>p?S_s$gS`{c`?*I(7`xw<=Zb z)9v~coZ1jluI6)`jS3zqsuI7a>R&b5c}rtV)%#%ka5(-7x?O9>xxV>qUhJc%J9(r_ zb>5an-Z|AgTxa~L?-UPhIxOBnBHeG*CVP$ve7m=qqf|IJ46oEcGi&f{`r*Fnxki}N z8?EEj5GqvG-HN6AvafmJW>Z^gmblKKmN;B@py@8bqqhAHmz6_^}+V@aL&MJJ;HrS79Ox{wOTLiI#(jy0dZ z(xDQ&m3Zq0w1dWWIXd97>`C74rwiTZIPdRn)zj@TpSOkS$Kw4&{w2b!j@dXI(w__E zFQG+-KYCgHY1ZLizKug@oatC}82dQ&s*mC|J&sT4KyeHkvPb4ykHOY4l#*KIxm$MC z(hYcu^}o>!ox{J=fhB#p5nYQqPM~$IN6D}11hNPPx1*i>B+n?3`wh(a8<6-e{5_ps ze}vV2h_=+rGk*s)Ql0BKlJOy{T8s2duhm46NAfL#4_niby6_T>LLb+7qEx1N0F9pS zn;lVUJR`T7>l5+KdRYA|lpY3aC&JyI%D1pSZ9MN)o-@@$htP{sC*}}(-Dn*8zT;K= zkxZB|DE56wumitwQ}fbLzpk}BWa*9frT42tl4i8yefiEla`u(%wRC+v$c{tyLAN*3 zkF4+2be$Tg;TLt4Q^WHYzMOBN{OjbvGi3Ig<)7QL-_;XeZ~Uni^Z^ZJj#)~)?*eqa z2`XrSPm`yxp$Y+Sx@zj2-D38;;mXs^Ssm8Ze533`r#hDh_Y!zHfE=1cD|(T|`vzac zQbIJ@AD8;>BPcz!K$Bsf{m>>f;p=F^FVf8arVFJP&R)iRs4PUkX)I=Gn^{+ z&smpvhT|)qYo&fvqqUs8No>VxHSbsYS?5)`*pw1GJ?lkOtR)B5dpCb?;N1%6ulBu_ ztlV#L!93TV%nyAJ{op1R^PO~vG3>%ei(@=r$3%C1RixXGuCoQ3d1uj!d-%N#tz&b) zccO!*heAi(ak-z4^pi9Fq#|Nsw@1?-$Kc4mkh!O$H_c!QTKd@vM>14a+1!Mj$lhPN zg=Z%sRj1RD@CW>r&X>u^No37mtdvrpZ0`Kcinxt!&~#H0wx?O1Vn5906sy0iMTfcip@vCw~l{kb9JQ73ekh=OBiwXNaR@$k6`eyPo(N!8L{ z_#ysq?~VU^;>}U~dN`52x-HpAhd_j6uiZj_zZ(t=b_|7Q*=5cSb-G=?N0z)t!+6DW zrc-dbRwgGW{e+V-mMV;S=SJF4Pk49*z3~E9jn$RoOiy@(du<4H7NeWhc41B?FP|f| zmdQ4pM|159g*tkUWC$%Q*^I?prSvPB=oRKD6%rf4=0U#kDSH2$9sd~0OgH-*$+lT2 zcA4Wl((oDcbSwQR`;~ot_89CLgH|IzWGGd<)FGn#4%- zau+x-!0JzC>%UH`oey_DEmko(XUR9};aMKBCNGk~Z zQ5gpvPKew*so0xIukh398j15d0fn|8gVN3SFu$APn4`?gp|~d50##_NsoR^1y}y&z zKRZ&dwp`?1WgOCZR{T!X`3QOY1`o(LurKz_2K)qtg z$K^EhudPcmwo`xoZ9JBrSv2h_A{i(0?#|$Mm|Yy%o1cvSLO>B; zkA?S}@29WLKgOO+h56<< zI313qnqg0pJDpN4vzD!_>Vg0HZZ36RETGgYKA*q7B}(}po#Qe*(1%?#2=(9Yoam_8 ziSCVJ@1FQLI#QDVAf zrxJ7iPKMN5-hI(~lbn^>yi@4WuQ=~{&-I|0%8vQt&P@J9rJcIM6MpDOWKUH%b0GR` zPV-Au&y8ptS7t6V!dnA!P%hvxCR z=X%?#_y7Al6`qqvwgxI!=1sMN;%61!$E#s_s&+j@Yf7X@b|%OB`)>BeE%3h|bWWw) zvHtH1LleIhJM=E^yb6U@&=eA_@EycX<>Xh}z@CUp6pw7; z>~1pFyGWVAo-);c<0%PG-U;n*_E~SA_BA{A_(^}~ZjKwg+u!+P_&%S&$q$m4{k(IR ztE4~LIPcu=8@GGD^vp~Acsmj_HC=1b$&-zdn1FPExDuzFic^k&zI)Llc7m+&!>6|V zmi9q5mbuUEM`KwBRaejrKcQypW9^dMSL~4t;;k6y7(#;?>b=p9 z2k0-4K>umJ_W|@@O27SsPPB=;?95wuIIH$V{CWm{KEL=$z2`F^eY$-niliH^P2bgY zoE=Vs8E1{AlLaS z!oQVu>Wh{KTE7RZ%rr884pdI;$Ez&XS^j^A|LSwThJ|G7>yUV)Rg3rc%HoKwa0Yry zJb8F7QHIIYjU}20qy=zbs^b|5@v`G}R={j1kh%-WI(h;|J?rxs&UhMHJY4L1q&{&U zYu&xDQ`38=y(3XWsf2za3{4l5rhZzIwHL$2TOi|5-<{xUFXHsY?!De~Y>s|*BeQmK zB&Tvmf2SJz?l>UtCbwxz$2Q*I#d~{;`q+tVs7BFElyho+rd#~R#W`C;&uEQXII6qG zfw1UgT-F{}rJL(n#ZL$Ho67Zxg1F5LC!Q;7nO>05KT;t+aec|0-p?JAJ^cr{GoLh1 z4%RG^C{ar3Cy^Z7nNT%ZzNvgU!{5owo$B|*0-Y0=bcgZZL5>VGZzH@LtWK0dDu3U> zCc4|)+~-Iw@N|;tNxr0RRrbHrOa9dYuV1k`@0q#ZNr~NHPWqKKGD|x_ibUQXX9S6! z8&x1vV&pF}qVtTjYeAEP3ZCyxC+mcNPo;OXr*mG3n(u*bk2oH{^NF#GCVB?TyCYpQ zeKM~!bLo*>9j~u8=hfWvK)UMr&P^TCi+z5U^E(xD+ON>QlO2DanLNEqlvG02?Ztk z`(el9C^fN@A6uWVaqds(D%q1&`3mZpp=4^eEp)7Oe>}reUT8i#`{`(mCl+3sL;kbX z;-Ohhqxjezo^}0Xo89dv*(zC=#FwSU_ds~@aG~wJWMy9Qli!s)9{FpQ=bMgOlIeP{ z@7zRth_9`^5ufO2M~7(3<8qoYUSJ-sG8?^%tELk|Dl)!^2VXN+=|q|_t;D(EmW`l( zxMABuJ4(Om@Jfyy3cRX|UJr-LC(7g9fRB@I5N{f)(;EBoB^FMl+9+!;kv^DXaRdl}Ueq zG1hdDwY<&h+=Sb@!m#+j4&Ys_O=j&%b~WHti?*MR0q3)OQzs&Ikq7$jeWdy*N4Pe% zv{Umvv6$VhXS{NWuRab69*vfd^1EfBJ08OlIf2EH)j!iUFDbl1{R++W5fl|(pG(K8 zlt8s`+~GLrRGfAG|1otQa68ri|G&;95}_d(g=|@oNJ)}}GBYyD%1WqE84+4GMMla_ zOC?#M$j(UF^NY+`W%keFF}4}4Gq9cCxy+Q>DdJ1ybczG#_AXpG71?JFP$ zJ=opYbGw(fhg<5h;`xx#X0L~Ey&Zu{B6|u#d1Ctf$R9iEx97X8pK8aq>iw+Ax$4JA ztqD@bD3ZM zTFq{B0*;(JpiuJU*XdPPVAo3xMeQ9^Fc8%a)?|UGc%{e#D{xCCi zG_rjFYt(^vJitolXCKbNEgRsH8R(i9pz!A0UsdedQgA^&kW_wt7U1{NM1}4_t2f4j z>CB%#@WHEGl~#utTpzM((_)?W3a?l@*nxL8g##*Jg)7-Jr=4M*~Aca2_`(1jlMtxWjYddigAR?IdAm%2UE};JL$c=`` z$||v>yc0@sdWt=cOJT2OMh=)?`XlspHpZ3uY;Hz&>7CGjnUn9W2wio9GNxcH=?$3{ z+gDngO4GSmqswE9@(W&b{?scmHBH2>S`1#_LLQg#C#y-`gu1l5J^{s_fS9w#`BUfF z_eF5+%k1_LK0k$bzK4|V$9)v%ZofrS%z@{Yu}bI3iYtobEX6B!3@HfSs*fxlk8kEE z^dub~!D9H7?;8b8k3=G96>BH=M#|>Lmtbzdi*U8^wJxBo&g@McD4-zrS_Z7O?EF>* zZte}I&PM*MWRKRz8g>`!o*ntwn03|Sna(}F6Who3zgWz@{s^yRgfFfL&O^@|dCs1A z?{Y_ak>2OtUPNb`IoXnPT1azM%@C+p#m!zZ2*Nq8F(xJIBgXMm<>^z7i?uZ(eb zH7Ly4JEG+t=%*1-#HVoWMy#@ZJoduHRt;>#9$by5VF8xhWN1ZFxjEE>!AIcc&;F{UXJ(ZgYF4d8V5xz;`{a@FA}V8-k>N^WaDVJ5!J|ry%_}7 z4|wj?`0AV;HwFrN2KjGYfC!)tKOaE<-3LCfw?jp|jduL0`|n|&4mELlYL-)N_2R0gzzwx&@{`?B82o!8=?8Y2(1`5ugsk)D}q+~@tQP92`B z!P=q!|d|G#;2EVP+)$ zP@X%+Rqp}G4nZ%}f(o8vudhYFE=Rwm=SdzR4&aQa-{~v-JXzDJAYbyPWJJ#NaN=uM zk;AkFU&cZ7;2%iEO~|VH$mMtWuB_4j@D;5hv*iGMc_aFy4Ep63;@sDAm!-JNQFzEI z!hwgVNT^58j^1>T=tJiBYgCx;4{lDjOHN2GNv`2Bft=Wzl0TBu{T5l3uM_zjL4Np? zL|hZWLaw(oySs<=a%S5h_W39FXFd39B8kz018O>v@ zk(m(t@fbPleh#Z;mSb;(2}?LN-29KH7*RQx6um{o86kT!kc_5obgtM~`rWCfg%IGHP33GVqB z*^&h*nibwkV+8yET#01We$-!k4o$y>>$l(WTvps^b!MO#$?wmdi;C<|XAERc!^CccisNryrUdPX% z7kiy;WY?{x{ei=HM*7$WpE}j`Ad=QDhkHPCJ9y4o(zIsV11CBI)~eBqNDUG3)yU`k z=#mQTfO4!3a?HwPBcJv#Y{lx@+phzt*vGSAUb|nJ+2Q1o9DIjeldAISC^W|e^u|3r z^KFb6XK=ND&?~7J6#Elv_Apv>J(*^oqc1aZ&mCE>!QhDcaOX8xH<{tn#_0By*ymS+ zrt))jDR^pCY#+VP`X5A6-h$+*4E+T3ll%xOdkG2R6#9kiklpBhMcWuNaw=s3BzO%d zwj&6B7-(i5bi4$;YMrLE+&sR=-q8MMXx+Ua_r;+2N1;sZh~m71nLF_MEb2q%l8bdM z9N&}mX~w&LN;Icl={VIR^XNSD71y*5dKe7tWd=bWMrJi2cjYW=QjvVUUC6t_X!3s& z9m%{u!m)r{fh@r%*saDus&S1kg9<0Jw)YX$9RYS;&%A0YZAw!GWKGOx)IJEqTNsd*t$lnncd_>8mTRWYBzIqxYV-dAI7{DePd0=skfS^$;p_H2YnnFfUlC{_7s`0RjDkCsMOh++D>#lk|Zy3<^d>sIQZ`jS?W)4)`iFqeLAC{8YddqNk~6|*Rg|r8_5~V zfaLa*+weJv>MQa@ehYIT$!dV5TEQz;c3QDD18jDlo@hZ~fS>Qsg)xNBn`@5KE z_PNAWSXqTQ3IqkQxr&lCSRQ@R3LP?v?D)^AFIzzs&ilynEgm+GHU<_;q|| zU%vk~tcQ#2*>3pD+8SeEdUBT`H|^AI_u#zjTWz%XKz40Dx@s5J+hJCHH(1Jg&_igY zQ{?LX47%NieiGA}h5a?F@pYU>_67LwbMTp6A3o!L-hjVaBh5-f`%WkhK=D7p)mylR z1)v;b>}H8tQD}w#3Q*M{=sg4PE*9H5b|tWT=Mz{SMzWmDW2cEK=oo#}`9O*R^k`o8 zH{90}?rc>oQMR)e+mS5xN_2+w2A*|(>RP1E=bU*QGPEQ6Q5_kkF3p8jxeiT}nMk|Q zncX0Z?|JMdgUI}l{IMV80Y1?V%5uW&OssdiL8NWX?>WO-c-<}q`UPfjU(U?5V!bCA zusf3U32<6-q~|^0HZ^z|j*79gtj=?luo!dUbGb-N$GU-Y#EC9}Y%(HCav)K1#t5eX zbW|1D(*a%?iqxOQKHBNY4j%dlthcth_z1q!?5t0Iq}mCzbSKW|B)TeS?$c3qXtxDc zYPv~_?? zj8Y(u7Gw;yBsc4pz!@UbdG`P)_+2RDdnjcAQublwmmTX)KxxIHvqw0;lXaclISy@j zf!w%ak#7-na4% z&x0t}kQv*bD!1RMM0*qO#2|XsHG}W7fFPGKA>u>m_Xx7m`7WD~K~<=`+7fmn+hlp7 z68ton`?x-^lTbfscTb`^vM?KUMD3E*lIKB7S%Yz)n?1;B>tLMLJ0Hq@20WfQ+J_Z2 zi+rOG$zb|5%!4nWH}6@6L^=ziHE#bWznw!$WCbNW$m$Kjw*8PZuj87+#I0mnO`?V= zXR;QxctetJB&R3ePkx?Up8O`cHn}YMPV&iQ(c~sFwsHg?p~=$osTOno9@un$k?Yin zN}=<}uw$uA*oi&KZ`y@*ct!LlQg#(pMU% zpJX-afJ4k*Zh<~As$CUsGsEuY7$fcAt_Sk&tD+6$Qr8J@LVo^6jqcyn-dq#jNN=I+ z;nm?)Sg)m^tG?8??EtqGVwGBfibujXi{X`BQ0OtJ;RIOZfBa@wdV8pr;7k>_;5KDRpy@1xI5FtPaj^N zmLmy|qT6%w**oyi+7Y4xM>W3l8Te-c9HjqiD0|TaJ*o|wn|omiTk&I&geZz_bgt;ch>#x_JTY{}~A$)}*& z7g;AKyz4_q&oBR(tF%gf8PA+1BeWz}k_S8QNA7MlGIu`b-^9KC4yB(*!rPnlH-58Y z*C7zKaiX>SZ??xlU!3Q{2ZvFuW#TEihdUl&ndibMq}+#laFt10|kyiCpJXW>}L(W;vL1fzG?98 z7_RjS`sHqbudDIQujFz54H~P&xw|6gTj1fn#9STct3Sei?cqG{qBVZSR_n_B=m+b; zD`w?2L+*BC*Pr08g2Y`nvj?NlAH(>>dQj(c&|_(|ep~WBm*V%D49#CaFSUi%nu7$_ za5cFSJ))I(iB7|hcY-@wv95ifWOL}&K}mx++cU^w_4_uSJB@zdgcR?BhCYS$&==da zam=L?*wHO9DmOoID-?E^J-vjjlL@QB-lK=u#XZp8Ic$yMNcWyl>oPDxm?%JQb0hNm zCk0!BjMQPihV(j-{5$z)@`vP9>Wi}_zokNWU~HXErt;?lEYV)%`v$>!z9T)eegJDT zJGPBp1fTv1Jy)g9Zz_nbA)U?Yv3t$zL@rwD-?mE_VbF8J;LC5CeCP378vHnkB_Zt6soc*i{uCS+4ihJA*eTo%EgC^Uv zpSQw0e}Gr5_i^q*JrIQX`gWvo((&`~+j}uDe9zi_2W{_wbAnjjKg0gmac4QwD=N+iAKlaI(*jDTgrp_K6!dv+%#|kj+9`ucfcRG2{ zBdAXMkSvw&Kv1jD0IyR|@>tj=d;+~RfGX!<9HYr+S-|V((3X|)Dwr?P7n?&nHZ3cD zLc;7sN_bDNz^fgxDDQ!TbAgD=S+riRAfA{kR2i=)f95&zuxp}`nsA=Jct}T+IWvOH z-+{dH496>E+1Sai8pvrO()n+E-52q?>C5|?9dnvuRisW&B>PZS-5l1@?Aj_as;z{) z1|P{OIA&>#bH4?f7mWL<-p!6JMHA#;e#soxX)#jH4#4)+D$J@MkCCU{oO2`N8^Fus zkw;&}I!0}?0o3f=rxAF)U+3{M^5z+?qd92YOsVnk_i|A6Y`EeTc4P=r&&ud6aP@3- zLj}0+Z^^(zzdIfZwwBzm+>9NV$G{0OArHoA@0fa6Ahs#=ko^9`>yKYw@M-;qxNc6RdqhsQh_Q zM^0wWJi@MC1&1Aq-b?ffN+#b*P6HW@4;E32|1jvZI`=y(F*LX<`Dt=X^6g~#rDGF6SEb!t-TQ0i7Hv8UiK{|a02OL*WjFxWh( z{$m~=^4mO~n;$>B2v7aDps>Hg>!9AsWLcI%2mcN(nh#h5!3-1_neay>$w^J)-_#FY<2~ z)YuT2UKhP>EWZuX#+-CJ=hfw0)?eO^w8~13yj_@`NuL?{^CuLP?vrE`Xeukwl33jZ zYCA55<&p6L9_ZQVxaMH~d!lJz&oimNQk7WUvtdQ7wg-{kIa&1z$m*}q@zr@}ZMC;g1gWj*WxWIg>(y8%OCN=WC~Wn-6zrUwXg#3!gn?q57<@6 zi=uEwcCPC?bk95BxRFR)^Q0!>+aJMsyK)Qw9UR2IvzM4PfNk)P&Vw62B4@h^{FDiq zP@Y`3)!a`PjuGgH1fH2T=+`G${SqKYGmih^jQK#*_9n;)H!5$x!%8~~;-~{^nZflh z;%9Hp^E>EgEa!g~={XhDCo=d3eK(NRDGIkHu~ExmQM|-De8@_UVWsP^N7=AwPec9N z;FS-sLdL;0%h{E(e3Mff^iJBtau*WfOZFmd!D}~VMn6{u4>f>BnjoVd#j7*`8c$aM z6oGaNg9EeT4@xDjB!*a!D3EnkcjC>iLXAvIsC^>()y@z>GKsx-8q07e$02ayiQpuU zBOFKRU2*|SuV}JtvSRX1ewLzhO#Wm}yz{@%F=akgiydR%$}LcM$i8lX)}Dn@^Rvc( zAkVC$I0|A~z%D({Zq$OuOJa}YAdmhy_1#~@m8!kyx7rKd9t&sB#j+k9_76Ltt?JYH zqbHhbE-SPVi}V2Ye+IsxEyzQsUCZg-oi(=7>@rGP7w82 z_5Ew&AbRg@v(P&)cPKB`DBJEyPGOr^qT=QBLJ8oXwX=?Z>#8kIP$46mF2UXIl; z8`{jHima7*tUX%#CH#()(PHm|8SK`u18i~uJb4|Ksy(H4qXC>KI4IsddtVP@U&djv z+M8xIQvEAF`8Ipk3yEpQV^d`A{r}2byKg%U<|nQuGdemwv!f=vQyH0&o9q6AeK^R~ zo?=ff;Rm`5|DNPC)*qNBstqL~D8_GNbND3W^tvdrF6?V($J4}-vT^RT=&@osx* znuYWk5_TTzu?#f!HF6-GM>GhT^BfdE20iEG7<-f45Zh-7A{j^dyb*z&F_q|P$%wYd zz?EK&#Z`>!b}C3y=&UC9Sd@Fp2Qs^zXYB=U<#Jo>&8EDk1y-gN%yWnveT6l-kQJN4 z+6{nl`E z)ha=Ecf`3h_8k11yFSO`V(bZ&GVLd0{X!EsP~WyWsE>1}(xIMF=QfOn%jXl{`3fmI z4}CKM^ltsaL^R;L{QW7ibs=`*7rZ(LtTq8o9~evO0sQYw7k|D4{o47pBQm)$RDU0G z@;25_Ptpz0m_4trVHX1S(P-frcE?UBMpF)RXyxls)_1N|YsKPvc2~^wG0~yBJM*{A@9uCxxlasr<0*<=Gy;(W- z8~^K<`WfCh!1sR7nfG%I&Q!5qvAGRm&Yp+XXy7diRp_iUW??GtfQL(jXrqxUAx79CZwNAid9Kq{7IYT|TI6ZHv zFnevJ{dZPQ8Sg!-SIzx0bIv-@|9Xa7tuMFQPn|FrYwQf2YoXk0p&RFd*@4^c|F?0J z^Gly5r0W(WO=0xTmOBo(G&Th}g#W*zQ}^`QJ@t>Ovp@?iYRcD{2b$F5kD9tJDeA=ggH#;Uvu z=hWL5!5S3njfJXiwC%*iVW_}y8=SD|0T zC&yX2m8^zUDo%X-lvVwL<4c}h7w`V}-2Haea061vSeo3S9^1~^tl?eD*^RZlX1(Pu zc78{^gVN^<;) zx@Sf$R=FN`{V=Pl+^7bRhy-ut&aA4pQpmXI-N=TzF>-Fgx-|ts`-yvb{_a?7-v!T$ zhK-V%TW7??8luwt?T$5xHL9Jh%Av31Hm5bFE5G&Z?&MCKSGfh+*uh`B`MC}Xv=g^c z+jPc=JtfSXwbHZ$Hf9g}p#5TLY5$V$_(MI?IW(Qnpy|$K_u;v*LaHw4yb;e?4I+lN zpLYZ7nc8USs-X08Sn3r(+;?HkSI3uG4{N6xmQ`oI(SA2Q`0gHPpV2M0NC zQ|@zqS~cjR1T>;_F2H@+zoY`s6y!eLS#!w$Kw62?($Z)TyDBc-%Hs!UT`43^G&XM) zoLOBT!Yd2l6E*RCc3&^^0wm2w-g_49AgBF}G}+HLhz^`pW?vXP#VFA>actu?d&W4S zLYycpF6J^$Oo->S9g#ORzgIgNXN zADv>C9VLZPHNQzLqE@hj{f9`}30T_`c=t?RSK};*CH2R=GhM4-ykQf3vz)(YL!W+o zy5@LEtUv4;u;E`R?FTWykCSaGQ9?RN!O}m zeg+aht@C0R!cVUrMdA+O(nhh<{vmh`^S3aJ;==O*xhf~A<^t=c1YCw1-oelpVTmw z#}w%84Lp4I5ws@DUcfJ6WmpSo7qXZ5zjy3&>yEVRgp_TIr|=1+X=gmbeXvmm@%|Ti zhgpH<*$n}+j)v0ShUTojSL0dxWiP@R*x;V?U5ADb8P;K$kGCD# z{SMmN0dLE_+OQkB8LdMmEYOhUD*TJ=t-t2DG#1p3I1E_d&($xXpw=6UGNbmrn8(2La>*Q0yY z^`&FFwyHusUI^+_|CHjJ3PFu_eb5>+2R;kZECmiraa=-Q1$?jcc_pu!8}CdP^E>P-o$)hA(F~`!2A^}v zn-pc9fi!j;-I1QE^DFPs%i+1SLagplTB)7PB(O$w8=pDGooTt8?{qspp5vsxR123kO&EkWFEdFY*L3*XrF-rRoUD$e(*f^>9} zka|`BL{;e6T1BJCde-$~*}YAktO`&5N8!?^zM#tR=>4(Ob@odwB(C)W|9!XfOsu@r zSCy{WFhiswhX~a9szxL9l1S|(`K=tED9>U4F6Fycq`l6{ayDOeDvC3_t%=kMPmdBERF*GS^ccRr;bj%?1Nl$!RU1Pl76C7>+g8l7Z;V~fA zG*(%(!)w+YY~DCNoOSa!*t<2+hSvO_M*H?D>=%F5`WI*N*k#XHnf-?9@%hJj?ir5f zIPVa2+z71GN$9;<=q2%#7)^{dmtzL{>V0sPeG;_9S8;dRrP?6QN^!5WedQdz0p>fp zl5)EO(`u7`0i&l1>H@&uB$G4COn|N}H$!M_Ud%Q>h)& z{y06m&J~l2)mBycs|M8RH&o|0@rZQ}QmF{ZT4VKv)3xlOA+Jfzwc{%>>r9lC?tAnI z=XFwry#m!k)@d4B>CWGs&`wquci}H<1N0HL<#XD_|J|AQB?i(%Z(WaFl^#J3JQ3?O z`#cQ5+IGg+2(+e^o!S(gIb$8Js3Pm-iIGD z{UF{iC;B>P#!dm_*;gmc7|SqkOk9vYcJn=_*r&f@IeQi7N@INIuZZ%LO5!km+yOk6 zo*VTOeB?Yk<#d`umGmchRtahrWr}y|#n6+iH~c&t0=QV!UI2n)KZ6zW@4EtnxKCI_*hm8DksufgLcMH#U&(x1-HezRAg8 zACR5>31^wjU(v^8_H)CfXGHe@st9&#fw2YN@CZ_t)nSAfs-XS#9nWozWs-j5?|Ek1zn>D{ zYgu}4=0j>Pdewfr{w95RA0zejpNPY!bNF*E@6xBN*H53a_G$X_cG8-TtQ4tRonuA3 z_dD|6dwiQ$oU#28=d!*UhjxrP0^Da^%oQ` z$LPz{Ln4mVrWSAHfM?z1yij(L7!RcF@Ul=t@tB9r+0_GXPo}gtTkn;YS#2b%GO1zA z2lkt{CrukD_3>B+ngebGGVRf@8q=s#)mUcU$zS3M5rZ^mWGWrIwu)I?`KdI^R&qt#?hdqQthUu`C$EK4V7Q#2TWGTX|IGoBsPQyKYqEbz|hkcvb(I z+9i!n#8ByP5g+Ma^ZxBw=Q%w@OGc_{@(?E(L33_>K~^z04<`oL(ZnN-<&_?p!0~!& z^i;VQ;$9_~ee1=mKcfAV#_pZInq9F@Jb>KViG(%|YF@EkPQ9DXQ8Xja4ri;NY-!j| zr&6|*yNz$s3vJ|PM@-wR(8*RWNTca4Zqn&&9y6g-Ey#D^94*KxaFfw7d(yx9Z;ZsL zj9RW%d6|Xq3V34-)H)pg936AzBt9?CtMBa$r|mf#K9~!YiU{l@D6(0@wSLFliD%3` zRhr0OUY)XApSZTI9A$U6^yEFI_<>k!iKxX2>M{|Rdc)|3nA*-8nPWtFeQbqknYnY$ zN3IUV+NoXNMk}ba4KlSWa@za{=Lze_ei_+2EIvlYmZe>j?Kn0b`8^S@-87`D65Lr) zi|`oQxoRVseojr>i_h>NIk!j2$~qYLLa@5VDQiEF$-IVln=g@`!uL7RXFJ0$Ain2e zXYdcPXJ>MTcaYYTIp<{JfK&KA-K*^lu4*tAuKgXHCF=ZZ5rZ=uYe1PI=OWOsHNDca zc*!`mGThF^`bNY8(xXrL?k&jkWvuo*c2Ez7^@!F9>V4=2Dr^B}v=dfC z{J0HcpRO}i>*CS1LxNNF9^`m{!>*L~#T75NQ$tvm*lS60qe}Bz1s)ZN%a-N&QXJ_S zK_z+ZcB&li#xrbBnY!d#ID66FW_C8~8vBA@fc9PlX}*rEe;YcpZ<2np1<;JqlTAo$ zyXu{Tzpeyr=)uW@CQC=Xg`uTiQ(!XGwi|TH!82vvcogzd-D}# zsxe$KsL%S&8vN9QQWxoJG{A3u6nSe85dCxw;=hfohzvZpc(W}(?ULltj%(}86?W$8 z?3(0cQG2@CA*2_0(XQgXW3Nbh?s`8s!rY+eL78R>={M=dXP@9s|1tS)XO6-zTw( zd{-~t?d-21d{%j8FRYjO%j#JF8Wu}7CEQq~oA~$LSX$2FO4HFuy<}^UXvXbMLU;OR z?Bro?haSj+aG@4UaUNx39ikR-W{?>e#)i~@mHDaesvc9u!{|=;P0Qd}*58cTejL_S ziwf;@W#r$^Ze3#xXO|>tr+Q4uck%s3l=PtA5Mx_$tvM&|g!o&VReh88(;NRWGWHF; z@9epBr=UqlbYrUNt~XEOnY25y7NZj2VR+n*C{u=~^#th1}^eBD0K ze7`sr@8s%n$bLIwDuZW$)aN0c&2w|o^CI%BoC5YG(tHWOeaYc0YdbhEBZ`#P2kp0VfXF69d-Bor5sC*g^`ym?FH}~Up_ID%??YI}&@%~(oU7_T@r`T=f zO=}R9ogK7%>vA`>kPV_LyIe?HMpDE!=}D5-QRPJXyB4DOj94}vS~Gf4vOyvCS~EXK zAHLl=oeO2QMY{W#QDkXFU8^LhasCvP!Vzr@y`}o`L-$wEE5LkElIJ9E#7X1qT)X!j7Y!Ca5 zy#R&TUrZ{qZ+BmQKL4+uyc-m!w$MZ2_t=k3ZD!9w`=#h5w8u(K{u2K;g_~L1tprlpeI@1 zk;hlii@Aj9Y!Gwe>`FNi%g^3jQ}`)*Q8T3DC(j}CpN=)clgJl4ei)Z-2F7?K&hE6Y zQ;isZ7@IaSU6!0Nrx%(zW(HZA7`@zvG%Ft;*7e?vRJ)s_3jaIF!tbb!e0&5s);jj1 zJ%P3{Zf>VXJ1vfg?b!(+n5k%#>EPne;``EWGm2{7p1COcJG2$D!H)%@0x8N!ne#~= zjJaOCV9z_fQ+m0Km+A4pZ1zFFD9vi!uWkm)# z72ce!>$$J%_^I6~SEXf8J~+UK6_7?z3cvwo%PW)87L}dz_1vW3(j@+*v<%aGW7kL} zSUT6z`zXO*1>rEiNz5xAG4f)jfV%Kp>|e6~!dWz8+Vhl-g_w7lh3mDWhF5IXUlF)a zOSKq#Q5LSQfR5EREE=Cd?oH=e=%uztj=5&~mW}VE&v%}ca6K-^cAx(Kzxi7~vQc&; zIlgK%$1Z2Cu#)#z*3(G(A-Lgxv9vPgvNx7s2Y5!W=`q$mZ3q3#PAHp|$$pEuK<>yH z-gAt19^@O0${WQ$%l_#>(;J@td4VfQ=LQ*t(*NU~dnk+CiF}|6yYXvD7|ptxRWi1! zUhyuyJN;$9v!1{5{ikBe_%Wu9|DhFj#!`F-(qAvkx3T=Uue=%{tpm(IvC{Pej*q~D zv-sTzyCL41k!yq(iJ9Vh!|Tl+sW(B$=#*t z&}Z~~*n{^!&$3pcoYWloWj>Q=STC!&)^-_vIrg{?jPv{kV=)dyUk~Dc>$ddv8L2dv z&x}2Dp#~yX&Cyhko7>ktmWk#Ydx+FKAT5oKcH)fPIcFNJn=h5_RHa<6f#ghgv(jf# z8rsuq;@(K*x3DLA9`y98u`D_2Wqa12# zbDhi>(>B+aWE5^UD{Qu>Hg-D4)#+nmTW7Q36D6hr?oMFS{KUp~s;=(>g6}ZQmD1a%ys}nz7w(N1sQzg2%ZUr_vie>c>^S zge^1$ zCq^y;i_ZhKPl5|y2G!{6Zp|4QK?~_j-2Y-dRr$LHkD4(Bnun-g@xLm4WxG~XIv2@` zaU=M-;Io@z8F(|Vd3QyjNHL#xR+T$?09w;F|F1u@)wWV!8k;qPsyrU!jAIF8+XU&XGo%FD@X&Ufg^Z@u{2PIQg2#_qvBs|X6Rm+2EwfECsgIqaEbeMbXm z#Z3E$Ku-39ss$1%52cmF;;V>tXE)i##0on=&)u-JUx@Qow5**s(UxzmMEy;~G_UPc z5Pw4T%`B?MCdJ+Ft*Klsf_;{9k@e(z|E`5%B zvLTfCErbRC$f-G|;D6XRYwtAfo;$KFfNv;#c$1mAOP2Hv|DMK_^dY?CF(xNh z;geZ|-{F&$aL#me)eGpJme8cKt2i<^8yM;=63gBa_B(lv-Ep#feRlS4q(**vhFlX@ zKwiUc5)rQ|4=B)xSiIR9ZO!vt0q_IuQP(6 z=j{z_w)gm!6*1nhZo!q$!g`uPmCig7dy9KYA{Enq+H@9^sQdaDixfcH6yvz{-%mJ| zCmT3Osj26}tbOAQdK}H>6i4bQ_y!4T4(B`&r?J8nJhKdGI-8vu&2^68&gSvlcD~~` z9((wdo`)rT{yWw{>};OYaS-TnUjLn)zb@VtuSEY|ZC0-jo}KsEl?`yhSNMzO#J#`< z^1L0HnnLqs(I!q~yo&2C$X^ve8|LDq=PufbwRvp6nO*QGT;d#uQoQpz(6@ChUW2i1 z{a@KQe|db0b>mOz7q&v~ey+vIU{}#mYY+E4gPnN_>Z?d6*ej`IJx9OG!{J^!>o~J` zKaz;=|!31s-sbh7$0yaMTb2b9~9oqvaKb~bJ{_Tnxi z&SOwdkJ!g%wQ6_%dYr4N&DE7>Hw(h)_ASf`P3f6R@0a$GySK1CAzz;zv?LsJ-Lpwj;aBt?l>mo?`*I-%v9*fAb{ z`U;J4i7M!-Twj0UEGv;kf06555_#L0y5b?h1m+TdLa%}4^zitKE>(+=xC`i^_aQw^ zrlJ|f^Nu&rE7SOEYCQGyZGMiYOTu90`87iO+)OWpUyyK%;G^#B*xl&!oY;qEG3(v1 z%0q;`CANgj>M^=(wAT#ekDx#&&>8En7nKoibv z)=$&J?JODS=iqv0{wB#%&;0L9tROf~&H6$52JD90ov*S7p5FmYIwy2CvST2!y8(#0 zWGsQtvPxT7tIxTPSJ;PccugKcLsUlN-^$7sMIlH2zBJJ zX7ve>NvHTPv!~3)eF41lI;(HbuwIlwU(nP7Tp`cl11dE;A)2K{E?ud~UXbh{WszD_iz+ zl>yg#D;ldgEBqXoU>x}&_NpEY4RwGct!}m7w!3i${CNlRs~~dtJo?5;0{y0X4z#Y7 zHu@UOgESxZGS8iYrnMk<^Dd>}jog9x-`aD=oa|O^&e90bj(&B$>PwM^`p1`nt>&_$ zLqS(<(X-|c--V5!ZD`M)Lg0bFkP6@7CwLEuJd$j-?yYCGP} zy6Ta?7Af~PtEW}If*qZR)a-%fRSyqhH69}H3Rr7SkI9VGy%^hiVVDGu-H0_;l2`4) zYPD-4kV`8lxj%Yp8sGILNFzOQAOrSFx^Hbc&Yg~dTW8)V#tHqPP%Hk8DO+D?wBb4K z!b~*n-bUEHMo7AFAKuGz+)X>4)B9-tMn!Z_A@0N(LPz0d>mWXX*WTb>da*Apuw#uA zKf-;rj$_A-xId@M+jZkfu$DF7gW_o0%j~9ot*zQy2L(w#XOYg=Lyc9?AZ?%tJN8%^ zKRLDs=Ri9PV#=|yW_xT69w6er7gVV%TL5JnH@7x^5Z7)d)pK#)Q%AIC9S~blw5;Bs z@=#iPzTNm*clP#9^rO|XRuCD(yODb|bJ+blhJLmCwYjI+k>h57it}!Q%k5?N66bpZ z?oOj^=TlVxlVoR&BC5izth|jgSAfH`8n&`xOW~>uQAv1XK63kNDvc7s|G2joSbr&P_ET)IeEbOiE=+3voX;@pk(es6&{HNGGcVc3^k9NMY2FtnC&$3_rkvGFZ zqwC>^yvU0|tn+@bN)-&mztjXB(*U0HOE@|`Fx#P$^V;DJ5q;IzW{Tu2@B9K?QXh8 zHKrfr^K^oE2aIq$%nl}Khx}a3D&}XUCV+Yq*ji2KH#q`J@l&+@X0G>Ga3=VT?jjd? z{Kj9qxWlh`bxtsusk*~sUH>w7{u2Gpo~AE%V=S**s1Q5B_sxZ?9)s`mfRzt$H*?tu zE$FuJ>%-(Z+>MSb2A4a}^A7mACfs4JLpN64TpMdXoJTSaE%q7vxE>qxC+N*tm=(cw zU6D0Ypqp*<&CLYmlmNNZq2p6WEZ%460^FJ3AEskdX}aavk0t`=|HgZd!zG*1G@qe` zhQQwqkqrf7Ot=qC@hSN2^;jBJ!khFP*3~@vne+)C51WQ{S;y+(U124<@01J+hxzHP zdjpdT>}6611|54qG3 zX)1pXgnNcyGme38?E|=ptNf8`Jpo?%5&kxd=6h&lBid1G@;fX@JwVPB*#gJU#4djp ziB>xQDdE|tg+ISg6HYJg< zJ<+&Fp?5n9+3mJ4XnQ|Wb`ARQ@3^B_YvhyDrko;Zexx3@hxC>7GlT~{Ui}f*j;N3w-<;twP9b`uF z>>@aLeYh4L{vft^M`PEH4kxnOpYiNY^jQWdsy>u6kE_naYBcBCrm=4SB+Af%ZZf`& zi$QKW;1o;dOJ+&_fhS}GJ#^*;)4{S6`S}68hQGl7v4ZF9+*cD%!U3ep3clkAewC6; zV<;B<1)6C@joBC|ISZ)#ICjG}H0~U(ryJZ>k3N2l!}eTtFaGYp?=|QPT|4ZI)LDfU zaV^Na6!d=+9?hSik4@O+Yj|u!FaH(Z1j>9F923Al&tWUA04beMTn~jmivQyS{4`f3 zOD7*nwxw%ow`3P2PP63Q$%4rY$^wYa<>=qYQRjDO z2rls2kG$`Fq>^0$t+%TMr>HrsjIi2MB=iF^VKx%kj^ww2UJ`KYNqFsBx{=MJtIfc$ z6_T%DcxCtxy<5+5TuNo*?>p$A*OK05{pg%GlHHgJ?aYL-z6h7lw`m==-!Uw@%zR@- zZ)QQzy&izK* z-$686Z|>v@I%X{cS39k2C`h0oXUdEHc>)^R3>AOPbu8i@7SJu}Sa>DUu?5(DIySl$ z1s{XS$D)rKfPjjEh%(RMrMKirSan+>km1?`IK`g0wv(5v^bLlv=z%y}yaM$H)6Gix7v zH6M<7gKmc1=o9r&_#o1=HotY|nQ^SZO8DU@_%AD-`v;K^W7vlcpzL&A#I@j)n>eGH z2xj^jSt$(`smH26hgIm5}K6krvI^j%zm6&c;oV9L#yp?^6u?tqQrp~51#kF6eOZv4O zSEI$wBKN=LzUIe1s=4G$z89mtx6l9s*aIhn)f_bb z)87@IG3Tuh=;AdvXcAh{h^qaooX2=0y;(~V|;INn9q zzW4v-t}cb|Kjp9*b1J*}D!bYnbYc!<6Lf?bDOTDv<);~p>DrkJP^#WKYs!o(=Y~Fl zxQbnG+8HE`RdRX=5^&T_T#HkJTClraIINd9H?CKV>j#1!UgWG@!CU&dtUfg_#%fd} zgJwz@^V6nj0orr=;)Bq)Hl?+l*8geC8pARQugCBLH0uP`?BF*uG)% zS9@r9XZG@(#ClKVHRl)(=B}M2Zx;ij(&k_~pR@s2Q;uu1`-+(jR=}OWhBE5740?P& zM)TvKyP@oTUueM24OWKrff|kLS(`Bznw$fjI%mZGualuW^SD1m=B|Z4cCj1j-1Ob} z0L-Q`r{E8A8;tZh#i6n>ej)_0br?>^V zWqwB{D&A5B&K*P|04T(LNr#VwtpnJsr+o^<%#~LGS8q<&IM46zjGZ z>0l=`BXzS_Up;(g%bVw54*|37jmx!1inc_HJw|k(Jr?w%NTa6UQm4|j;VwIKICp9Y zd*$rm^;j4`L%$i}6?4Z5un$g&HR9>dX56Q_yLQ{M8(bysUr*$pP|NS^rM*yg;0s@k z-f{}C^F`-E7xv;C5qr;E&jCnvCxu$a{yZz)hZR=R_vg9s*#7hIHd!}r=g9qd!qeTD z%!tjx?iXOMOF<*{nsJ(=lRtYw@9BjF<&=4~{i*ZTvjt z(ZttA7w`nFp{wyc5YSX`^!T`6>tyWX`QWHkG1lG;syYM`If3u!BtPv*njKm!0wrp{ znfqEAi#R?bCwL9A#O}NaFiRTK zA3li~4apx}P2^)w`bmAVUf??Pl}NSDi8V1(0nF26xyoZ*>E z?7lJN<$Svx$amqd&=^ z9T@0uJX*!EU+P0)<}!4_!k@rh8%?qDa52}v44FHX-+pB-$}LdwLSCJQ#`_k^w%>6NWJh8Yc(4wJe&2iOT+)z z1Nls^tNnu)@C{c%<2~T!N7?rc>_=Dh*e0m8Ha$qc+oIUWoqs zBKGB!WCiX)Ze76VP>hvm#y96=BEkYR%Hg=z=#{*71sdPJk3I2_bV62q0PT(C9Zp$u zB5oGmbCf%63=e&Yw93ObEXFr73%bn$vbc$^-iwhwWuWwDp!DDQ>v<@mHMIK~sChLM zJQ#|5ohv&Z*^B+^#1L%xmG~!agl<|RMOyyrm+lHRh_hb;LtF;m|3=L7V0bMas&?qJ z$(+*~RBd~^rc4D(pW{15vI9rZlyiA?EOdV*t5GQN9eTSHUhi}dmlyfgyy)3FNN?k@ zS1?a(H`3FtciZ5TJ;WU!Lk8RXZy5aB841+@Zl1~7Y=e7#iCSR4H3OftWTm>YllMb6 zZMolU*kcd!xvFsWk*ENO(wNlO1tD}&-Qw?ylfVUor)sQ4P_r6Qi(HP|#?^10ulvGC6puDD3z3*^nK zc=+e=%sMpEWhmu)B-Uf-ak(v5VlKF2Gc&nbLu>YV%gg<1Gf2(E?7k&nND6BZ%itHITOMYXs#yZujus`nzr+i{J~B$~sy#$rd#4Z{|R^e418rpM18P(OL+Mz_`CtyV+k5!0x0S<^6zf6z;SjWXX0HbXMNNN z`*j=KR3Fa&0-h|$+I_(O1&O1etvqny8}Q+MXw{#i`?%gF=vw0tH{;*m#&g%BqnuJ- zHt|1J#fr=WaKsSK{uns;N#0}b#Svt}1SoDi_$@1Wm)nus`GE~L!x6tlk3fCv(V!>7 zYmkuLka=1+1EZbcYj{=aL*GNt!*^gYF2*lDFKo@X4voGFbK%|nG3>`~bp{{p#S77k zXhB){Y)bSO(e~|Ob#!^*=s3}|a`+_dx?Y1bnn~cy#xY1Meb{T5fl`6VdZW05tGSas ze12I}2#q_I6+8lNcm>+D?rjv(sa|3kGWfGfsZX>>{!F<;cr2ZmgKxX`0 zzq5<`v82DG7koy%c3s)+c~~2-M0e0JJ6BL6(GFa*GuP`OneL` zy9s(;0ACejHLMAkho*m<^%)B7t`93C3#TxP@FY9lhsb6n=;SUiXJ0gVLzZR+aDEI$P^c~TO{2-av@C%#)ulxf|^ns3Ra{bQMz6y!+JoocN zbSi8JckgFq4xzJ0@U0)fQw7j5r^#=*0_oNZkHSspp`BdMJKSqIwAL_Wd#S`q^vFac z`6Xty&gVT&e>}>4)aIL$?8`Q^#I3B=9`@oZ=;r(AQKU%u;4qr?F+4h5q8f?n_^^|~ z&+t`;s4(8*QDijUoH!D`89o(F#G|@`^|%XZbr`Ag0aSMhZn^+{wE`DRhN`!LM|&gN zRzU&Bps!L$G=a_-@X$-Q> z2zSx_fynyiXe9`C96sDe;QB%EJ+hp0UmLsx|MWqs55VFsm$-?jSPFU?%tXk7(SgKG z$&_;`5(T6AMCD(LQi-dRnUc8!ssQMjUz6ROh_5w~tQ%aH_=!Be`=j-VTzL1l1|t)V zqpig02SuF|BZJ$L-vys0hCu-(I4A(2glfpRq$L@V<_T)+N4VRzRg7SK>OR;vEX<<&fwa^bfvCOeO0n zH~Tmf8QT`hYm{gfJ%EIKA{vjx*$Uzr1}DyAs^qw+JTnGb2b-dzVMnH=Jrq3;@~_VB z?T#J}N2l_I_!E&x*9K(WM300sQf0!<+~M-zXRO;A(Yn;@sprF65^IB3x#LMu&(x=v zJEfSa7W|m}EcsMoS*q3L&6nqf>l5e5RUMtk934;fXLd=g=nbZ`oP?_iBrb6!T~pn| zBazcSvjzDRo5I&qty0g1_awFi`IBc8=fb6_%c&p2DbZ_*vBAoKuK(dfsWqu~(GQ9K zM5k6Df6kFR5rvPy$px4=IX5v6Jz?jd7eHx$BsK<9f-e$ZM*En?^m|w}(Kk3tgr#Wk zWmGKO!Ck))Od}?mk=V<`teyoMUkT^@f$qEsS=OBBK|Qos zDr$p?Z-grMc8|HvFdZU$g^4vgZ{~jb*3%+$@ z;!fx-Z(<}E@e-K-aWGG@U=&iT3i`7?oN-k!2ia2`DKHNWxe^ZBiZ(oed}#$Aw*<9( z%au8gYYfu%A2iL+TwMW>V{Ul!FSO~yaNhaoRrJ~+vVhMeW=30x{;i0L2PK%5Qzn=f zy&Ap{j)?XqJ|({Qbg%?Gl@rZ<2_AY2S>7Klo0V*rPM?(k+Flu`A%MOi_jKSZa1iH+8Ju>Io=}=~APx`#R$@v7`TP zwAwwK?{ruKP5U?Vl|CfKupdm)pVdDXRf;jr9P)dA3r8V=2lBWKE=okX!|TH&{)vi- zE!d0^IS#X+y}Y2223Yes6U{l-3N+~UFe8-l5Rt-<5>!nPZT%xWA6-i9Vrs}yG$Qn{1O|ZSo?2Ka0O|FRklj!-I+OS(sFqw7v`l;n&(BYt2$v>WCx1#Z^*j2RtcZr; z8__jE)#TI3>Orq4bGR>cI=l@U{E!UAD}yT&$GFdX!e^tqgJ+UYBnt*_MlHhise<8# z=$d5V3{{g=62ro?so~*VW-wJGuc2Bn7EZi1+Cvm%K-491FZqv`uH`YzG1;F$%g~_3o&Wsg*YPf6F6fLx}ps;^mgJI*pD=J z?$%UL!IyZPieTmZj1F1|)!A!qL0qps7$gl+fzF@9XFMW~;@DonZBbn;n5j_t zP~=et(8L;SmF*zu!bmB!0obE%;w@xv6q((y9_k;&cQhjhA}@ZSj)_Xq^ssbPllh`m zgXLh|Vc_;R(f;MJKe7_#o()3i2)eR+V=?&i8nD}Yob#L5D|a!<5*#E7S`*%T5(}a) z>ERvlHEjd?zrdB2L<6)5n5xB|T?n&+M}A`Un+J)+Ct-;&5mDzB6il{C9s(V7jNT-A zdnjtobguKvFrJN7`*E}#zfH}=7tHaR6s*Bk?t`3K6_WWK6wmNs@{z==skxU+gi{iY zlP@QK!|#jTp32MYtwo6y$sNfO!PU{Psl%xu=;S@@>c_#)3H-!=1HlwZWRE_<1H35efS)95aGZ!vOIE!U5~>)oc@A={GD!Fs zR5S+ZvWQs1JkC@ck3{~&r_n+X1(maj48ir#-c5M6_7l@R71avLzz^3Z@`cx=nx!&E z-zGkQJBQ*foRum;#C}8c1kva`tX zDEwtOigPEbA>rDC1#bYmeG;8bgh2!HT&@fzN3FK;`LiY7B6x%Y#^t40Sxruqf# zlPkd%m+yAx?ON#W~_np(HQ2|-I(0P_mqIU zo`YguN_-xaPre-t0k0kk2Xkdlp{>8iGu?^&(mGJX$l#4+j%3dSb9#}{ZShPTO0)=G zMg~?*TfO3x@$NJ(W8Hy*i1U}1BFpN3{6_eY7cbPi41T9|}?DPrw z6|I7Hpo}VbM3+P(v45^ctGx!F-pi^t59VPjZN}c}$yxU#dh_m!NZz;cOx(sDKgT&s zl67};kcv7n7xhv&GO?aXUwwl+v68wIy=e<_?1=RFI5-@Y3%>yikB_D&1~d2T)u1=L zRXxl|4rGSJt4x)?F_;#8&WyDTc#YRV*@cicr-(?D!@jiR!wuNhd$E8gBdy1x-%lc; zhvKXM0~@RfRJ;<8$gb!GB=hY^k~gqf&WGP)r~LsXw*t$KzzA2MJi{+X6wv>)NI z`$5Xh&~z{0ZwcYzU-45u2a2JSDpb4^2#GT#U!yWu)Ne;V`VQ0!ZS9 zXseIV9N&k}a^E|nSJ1Xcu$bP$SJZ|~)0I&UGH(tbFF!-dl;9kL!O0&H>3c2;!tJS* zA^lqtzXolRQ-c}N>#1#*|4BWbs7%&PBG`xxk}(>E{qQ`PWlgXYy>~F22wo@x-QJCF zqlxduLIy#jBQAozH?fPypxHvu z;54lLIcUj85q>O$x5Vo%M7QJ9 zNntykjt)cn4+XUnN6E2Tj%~FDf5=8?Xdvs6#ODy=0lpFc`A#HgSFrd=tmtv<`8UYA zo}g1_ZDqtqaxd?(M#4GGCHQn5@NY*j#&J+aBW$4~=oUI6vFzvTgU$Qm z>DY@#x*6}>Ozh$}@aKLGJ++F45hEE7+PE1%%wQr=WwAX!Lo)2dV~_=Dc1z+}G7z5% zYlT-vM8|{s1A3E2XpBdTMOgF%cvOBxeM96LrJuQv*^xqf^0k8R{fg zgU;rXp?V^`6Pu_%l(vIh!M~#>;jC2uFh5tYFL@~0J(z$Ewmg+Jd^mbPn2@1whJ(R+ zuBkqf?=G$O0~n7p6FS-CbW| zaCh=ukna?H7JZ}P=$};}--5v^td=#{w`B5wl17qk)gdto>^Tf8s9|C_5~wlwZ5H-b z8Fa^W?Cw8c?d(BoWa!bb242Tc@G*x(2~Cynkb5Ipj40}F(cfW3Yc7422?znJNPxxKWZGV zN}W#?jV|Ef*#gbK87@p+1n=KVzS%AKHs~!AO~PAn2lW3nzKY-BySLH1ozMZ#Mqejh zCo7MM=tODq;ycYu)V2zm_`3xw8qh> zCl>abSkra2DZv4i&=vpi-echNI-r0iNYf?c<&DSJdkjmrT;e4-;|i)NR^f-*AIycq znzM3EL3Q(4ks?8e-{)|6J!e|V_ot$9Xrqq72KFlhulyfTX990y_5SU>4^lFfSs5af zxu}FpB_bJ$QWPR0WJrceGF1v?7D5P-sgV#uWEROhB_wlx8P4AS>spWA*YnxVInRE^ zweI12fA4#(1#^*nA$Bj7vaAad>j3XgJPGd1M@9HDDpXs?RwY)Y7Ea7gK18+cUyRxv z9($Y?|25Gt_9JUlmPZ!0!j!$h8z+-f!FB0rC)Y&HLR7Vw`%R2p@vg~G_ltzf}<^v97zAGnx(u8>ik{mKr_u|*G?*3} zOsv&`3}!t38GCxt=fgom4XG2X2pc?_)lv(>o=$;V`-Y1B=J7tDv-04DcIfw2Fn5#q zLs+=HAlrtpnmOZJh_P;o&myzf6JPi}%;mlDJ5vtFyTl5Bh|0jubOGm&V-)x#p5}Gp zg$Kc~?}ZA)kCD{{^x-Zd!u#=k^U<;bJoy^pgztHheTg^W6Y|Gu!Y`DJC;7W#qB!Fe ze@Pxio>rMBPQ(%yQkN%~fg|=NKI6{VA~=y^@EL>P!{c%v-x@iunmG>raHWTp`ru@@PC z{RHt=T{3npi5BXkT}$EMUWH+~g*f(Aw0tOiUmm8c0lmMSEB`~(^#LgMCi117h^1G6 zjnYzGz6INN6S!asZ~Pi)sRKOA0rcQS_?-Q)4aZ{nVH*bE5q2XrqhTgD!8dQ~^)*Fs*W)Hn|K#+zk!AIbJjN1}L>R@pW&`c1G9L_}1^ZdNyK! zt#Amd;V@bgHJ|0_|3{5=8%8}a(vv*JUYN6Ci9$p}Z-D3fV8^q=F+7ZJUQJXd7XJ}z z))IfeoF{u2i&X-|e-PB`D6s0FgC$7VRG#f;?AF5|ocbWaO|w zrAzYk?}5}SV@*FrQ>M{7>0#x5MRU@_#g(HMj+4Kdg&myD)k^a=Q}Og~((`}NTh)m7 zZh`xo5ymbohdDpPbEiX}H(+H3gV>nkf@r@t7W<)C19antII}}z(H|vKwGbw}Xv&)S z-Ehk{Q&m0|-}GzjE_}sZvBpIIza_dLRjK%tLog*DgU_nbO7-Cu%E!lG&vRp){>F0F z2W7rbW^^)0tQw!XwE87_Vm4=OgN;3zsFJ*wXlV*D`%An-eynm#D^Kp`YbrukfI^4B zHoiulb~RD?jqrPm@V#TOJHyewq48SrhH$d25`$pNK1arKu)1(3; zF3N$C?k9rFOh%@5tO+B6rh}5QqnF#zxpc_-9r%ywoL!gPV0Sc=(Tc=1cccu1PtT70 zj{>LGg*UlGrO(G8!Higl!i*m76hBU!bO5A%JNH_{sD)qY^P#l;zF2!aZf5+=dwAyM zy!X%W^Yw`=_rY_Npqj(k6Gmb^tB{qmGGY*a|4j6^9{ulyy+S;!)0YhU$e21rSYlhv8)TR z30;tjA3@YT(CW0*!YsmvjY9W_GhQwumSiMcNVV7~FjO|KzYP6yrLZTcT#3P-%q3c$ zOvb_7aSv?qEy%ok#9FJnnRhH?9uEZvjz;kzKB8?dzrX!HG)HYj=NBhBp-(@M!>LEa{xj@jD)j?>Kn&Z+G8Kq#q($F_!+J5% zoNU}%@q6KfyMUFaByxcJuD}XRrw@$HAA|90!qM`owL=SKcl z#H#Z|&x69d;;YG|C-=j5UqfDw;Yn)HW1aCzPt(IyxZ43D!W#J82Z{f_1^v8-&v^ws zse#lUg9})W$2o$(?u(2K!e=iFH95Ut0!AS%X_2~~c-)^ryuI;%&d4&C-poTz_!+M5 z+#0Lt&5rc(IDGjbq{j-#7}ozRT6ZT5Q9f9@I@tLq@v2R^=0z-Zrw~uPO2x?}bS4Jh zk_j0aLd`{8G`?kWC2?sS`}GV=)BU{H`$%GC-fJ+rzX5BL;OM1j>IZ0JTe#Is;D(-P z=vnFvE)j`r3_h$U$YC44^zTF-;*blWs^A&?%Qh^+AoAr?;S6)aJUAvJ1F`vgS z*V@xt6Tu9H@ltuf0bjvie@~t(7mP$^yzc6NN*s+_om^aTbo*)elT!HqmSmSkux}Hx z`7>C#7o5heWK_$6=~zYC=J0ZhyN?5PW8Z%Lf+8*zIUDr@RsKW4|*v3hr5;?o#%_#UqIIGS96&d`^nH`8MSnj>F%uxx{1O4q={Ho#|=LLblJ zm7SHv*(P?us2!(;FCbatU?7UpE1S`>N%Y9GV3q=4ylS-hO?bmbNKZrT^Kh~Yxv{m2 ziDBo1LYk9{pGz;g=GjTA9h&l#&tlnzBDJ}R1gvQ5LC=purhmtp4&)wxV5g2@A*Ug= zuGG?iI)zhsj{kwsaUs)L9IZWy=l_|W>IJtone1oA;J0syO{0c+PNE%8R~YSa z9K|na!62S~J=F&V(27e$FR#!$1G(P2jM^;0UE5>1KA@*J!1re5IckFR#^QITShV4XYD?sKV~ zKT7q%FfvbbX_qNj@!iDYOYjdlY47LZvr1!ep2hP$$x+j|`ywi?no`-a7rAj?K}N@Y zj2*0xlrF?hO(9PHi?)BAws#iiG{}A%awymEJFwd1<4SR-%2@A@$=ftVC+;F|GMnh< zRB~ecb!tBr!D|d)g!V{c(=)N&@y6h#8)B~#mFGjAPoT}S;i!%iOAH_bGYq?P8`5xw z=PH8ylm^-4A#R*X|1`qtybnrz2y`Cwp%_+Llew*>`s z#NTCsGuVbDNubNe(J6cmEt(g3-NRL@2S%|2XJx_i)JD$##iq|i6Auwf7Ky(Evr!Mb zejHu29&J4g`FeVMGkBvCzryuJ$Gv_6p* zubND5iakjc*?q+8+3?}($p_VopWyl4L_Q}Y2c^04{b07i*uhW8C+tlWLQXSs&yMgq z%jo-6)IZmQ*ZYZRIcKa4)fHpl-QNbap2c!(BWH9YV~U&Lbw?wCx#+i&aArRwp5gA! z6ni&y5IsN`X~AR}@mP82#XG$oA(<4y0mX6m4}Ae!4EQ7$?3e zfOQ*9RIvy<@-3BfA5j(AEqR4{t*gmnM24N>)V5%6-oo$PjfUNeg}RU2=LHZ!7A#dm zY(P4G{|PPF2ycD>4EPJku0E1eDqcOlgJ|{}Eb43ct50Kdz*aaEcl*9=yqAqX<2OCQ&`_ukc@6%h&aJV2khD1$px^k%$5Nkv=W;&Klw8msXU3B zu`vbWt6*ZEiv5`QGxcQZ)WmnN9OLkz7l@9(NvuIW7sLF{#Hu|Get(lF;tzUZ3*5)E zAesUAi9uZd0&`LQiQJYYX59~3U&yS1FQVaZ;DvgkZI@}!v|!~;%xQ5XQ62l84~sVy zDftyf?`!a3dScnJ=yf01K-b)SL~D-s$xd`piEPd>BC!0_Il457yp@v^hWASlGGFFbAFR9+Tl_w!#8G!qZL$)x3p`c!wkI!OPu2UrgrdPN09w z(8wzE^vA)^_9HTBMFh8t>VxXo$?U{CJCglD=dIzZCdAsJ8N(9KBioB<|C{1Hz{_pv z=S^@)+d^y2hZ|dk{Tob8%MWmI&obM?&GC}tj_cE|i^)wECr*Dn-WCgc2|lPc{`o`l zQa4kH*o~-hGdA%Y64918cqTfKD{cjDN1~jU$&0jMPJkEUpTI|s=gh|F&uHS_Ng$MF zL^%(^RXFE(e*E}7@sEf)ju3-X3LNP?o_HDd`WiNPE4|PfPh38>5Gg&zbLR%nG~=%l z^k_|R%L3#(d;Azo!%#3+dDw}!h{=`{(O05MBn#Ds#lR$!c*aNL-(elzB70L9e^v_L zwHn!&gvFi^pu59QhbE| zw4!3KINbiE*jTur&*4q8;;;Kt)zJr=zZe;4LygH8*vRI{XCXXg25@Xic#ks4%85*H z%&as6`~7~r3OvVL>h`{dqq&d#*oUCBZeWttoLhm4kk?{AQ6*yKV;W-EQ!oV!lS^Wo z<0VpNVXvkk4HpuOB_#9sB{c#i;@xS{nt0ku^!o)Oc{3Qrk)M$u((y0_^}#Qxpzou^ z;!nrQl9yb9Mczb><1l<^J*;joxYyN*5y_n}SjRv)zhXJkp}U!Aw+*qIQyQmaj~_~8 zN&V|uyF@K))a_IR%!`#s?qhzL9}_LO(i+BQZG@Y89Lv5CB-V@`IFCJO#7YQG3umBf~Sb&%e}NZwJ{==S7w z-ofrwMRVl~$u@n_g7W5NpBH zJWTYMLX^=D*;`KAIH%=sWOf1=%~9t$IQj~a?I>{RH?Ttg5;blhqf(kP9>Xf;iMNb( zxji-n-e!$f#Ph;qIp%6SBP zx|R0U&XtDaC_vO&k$gc4QB7{_;1DcCIU=kKJb4#v)iv1D50EwLJ&>0d@CRqW46S+U zX4tIbpx2(r(0FiTb9~%nY{m+Dp$4&A5{|qr(l8hV-5U%r7j7=bQ?}u#oiLPX$!TVy z?yfj>7}c2N|0{Zqx8`x?9WzEWlegy z5w@l#{`LYq(dQtNHt^M5IifYyGCAU(!ghX*{g>k|2P?UcXMGV|-I!WJW<4S%8G)=N zkpt&Uxq@^rpbhI0O|0O0t9i#IWLy?w*LTB#wvImw9_f{wnCJl}7y^=wG4oR9_zCKf zo`rWBN+o(3I4x#xrvfJzx-Dz|4d}cUEnvmnAaK~9*xOk=e+#0B16ZT+c;mBpr<)H=1R*2mH0#L(5 zG-(*NdJnebb@2UiJZhR)18jy2_&T_X`{=C~$hZHN`e$k~Q4QvIKl1h~nDP;D=PQYP zJjeUgF^t52^upIJBU1hpIXQsG`-iI+gsHs^PVj3gk{XjCbUf!idSD&;dOIB79~}Dz z{&fY<`zdns3z7PGw7DLvaAB^xi}pN;T5dg9tRMK|6wh!CZM}`$bQLlQ z)p)9d*qU~5+zsK$U*Y{9g~h6X51I!W_zvc_3{?^z;scuzA>PL|XHo4i5pCa!h0I43 zdvp9EJ^D75^kuOA*hEuus9ixxCy5P~!J8dPP(cQw$x8&gA096StJw%Gbtfd^2M`@J@fD!>!QOBVd^q7%!KJ_-%cn z7CqILJX%FE&kbWQB)3rG^c;6DNetY9UTep5J0HMr$o@nm=tqusmEk4oG}m~ZXs$jn zS`qXtCx|jLM~iSD$0W_;E>Firy`oE#kUedWW__6B)v#I@8jsUIhXan{qYj2pOn@x=MmFB8_* zPv=t`3%Q;%DxX)__eH(XS_o7Pcf9p$OtQf(1I0$dcH_wK5aYJQ^PdTRIJ^ zUJYCGC)m3!{KOfwXfK#<7d8sElKw2mvzH)uI4_<(Wq3S8tOI%0e-g3yqLe$*v`#sS zN9jSmNS$Q%`23VQX%80${eH2J}HoghZQW>u{9{zbU6`U2|3C2^uF(lD5nI!68NQAf= zn~2`#j5%e`!NaTrl?}qSO`w`$G)$(W-%@$g#Z-+j8zc<(-7EY6qt50^fcs`hPFnf$Qnr3U+Kq zCaf%PP?M{*!WZYj+l&G`?12X#PrDw)vy^8XM>*vyB4wF z0^+{;L`f+yZ2hotL&2b~H*jn0VR8l;;~ha-*Wl4hk>#mIJUEJ|ggJn**WVJm6en^k z1yfQIf1Zzc@)Eq+*2I})S=#a`G<7T1r#rSP1@_@=vLG|Fw~yz9LphenhHhS^Cb$!f z(`qc=6}Yw@#BXPVWc*6(o0UAnZP-8Oq8&u!Jpq5RoT#NI6&yEky*IGM?HR-H0Ao{j zz@RcVfH4Bw6U>1~uI+8AYer*pyC7lrVp+li411pf527NR~64En2REv0F zeCb#!fQ}`;qXy`HSm8lf!~s~}DT!af6HmZzx8_dW(7R*sgI&NQhd`tK;v4Z`-KqY( zFHr@~Ff)0L)9@a55@j4G>)(NRERHp6h^DLt=aqyd%nyo43%Yp@*(ypsBsK zDg0AKvWkrGLhoIjWg~Xr0HaDy(|1R(#J{FqmTuD547S z_GFOsH{hoIyxVAOWC|FoCYEC&oIocm>pAZ9G~+`Cf#F??ttz(V3wnJZyq&Ax9KuhZ z0)@WHHAkXJuOl}#u$=Rg%Rn06!;2lGrN&Y9H<+mZe^h#Src8VwmPA; zUG)FW_@gN~Ql5z~ByL-uIF*_opK^cv&6KohhNj#ZpP1~ExRlyGaWJ_ko+C}=G1esPpmVePczaWIL32g{q+o)DHeYyKPF= zrV@P-2x}^%s+PlG-$><><5a&+G@(Lk5ThfOgOkQ0jp>lVE66jWcks*46K%#po8RLr zs(`A?gAUgaNjw7P!>M9-{{4bfr+=83fK6~d z^_3j;EVBO`R%#6%v?6j4eA77TF{zF`MB`t*!l+6Qaa4<_LOq_iKH za4Rw5LdMY);Mm4gWRxbFza1pj5q+wM<$npLC0!hOPdtHVaJAEU)a>-3s^*_WQSkYP zNcZRDx?3fOgP)jTEY=uAwG)1_B%I%^M5|L^@xP8&jkkbb{2S}_9C^Z;j89vH4R{&8 z<3U*K>R`m8V60A9jTz`Fu^rslFz%WO>wTQc$TjdR`SFgE(13RI{bSgW+VQdA%h!mH z8o+yL>1rW~&+wM3sUz%;*SMB!7%#+3vp1lB_ktD%CY}aEt&c5X7R&K4X!WrW(-Mxb z8U)^1M3qQ-Sl<{q)P~^gtiZrh9ih6e9_;@Upoy9B^*qlCDwM}j9sMFT!{eAm{uknje%Sk6iFELliP#RT@o*%k zA2$5}$ZR+^Y5`LI8hro1u#|H^V`YeKp8-9;gf8C7H>uc);<2V=6&etS?xfuw!M=8; z=6)cEXg>VUSQz;}#GjdC6^Wk*CtjeUA_G3LH5&ae%;!>K-^ZynYD)!G12kYhzrBsr ze@6Yo?BoPA>mqr@wdlYnFt{&wuz z+o1W@)J1hAnyQDj-%5M$AdAo)zttF~Wh;n02X>_svYrmM>n)!D1ER-IK)p-xsV$Mt z({R!GiJ1z}XHCh(FnWsi7z>(MiT$68{@h1(!V0j+Qc(GG#9+{o^L5pSTWFlKlsQ_Jk>EQe>I{cSN&-Mb2tO`b`-dw3^=7PRMKq0R0Oy!G+g(kwbze}6uL~rXdzO5%7HZ3jp7CQD0=WSuk z%1CU`DbQbfWoYQVp;PL-Cv=IkzY=@ntMbN3iu?TA@ztZbmBJ%@xbT zQXIpp)}%st8?*CvO4P@@%mK5QuiS~1$(x)?=I|4wH4}JbIvAx_;y~)&)b|p9B^So0 zQu%l%eEl<2`DPHe?9q@ElcPZ%)TvK;N4XOPmHL?SVJ?m*>wy1XY*sYtr+b zsh>7>7)?ZZ8+z6X%vTK!*h5US7$mX{8C*`?UoDXQ-B@$yJlO-^;v6)W@q(*~+1jEd z&E-dUyR-DCbL2k_!dyY7>Sa890eFB*#4zK)L?t-(2-&y`wEcEig7UOvek^rMeEU7| za!z^kx(qQ$5lSgj^ zXVD6DK05hkVkYPgNr%J87ZaEE;_ltJUn`z&9emx>wEjK(R)_q?LHM>D;HJgs&%s0@ zF%85Kqn%zS2I~kasfqnKme@hn$P{?dJIUw%MaA01L>Z#&Rml-xbFc^5z!5dU&C@_28Su^6TQ~{lv8jy| zr+|P5;2}oit^dVC)gkAS1FM&TD&=>;lh4pLxzGvcjQX0&ujyoP?*O5Hg>~9bewvx8 zsb*V4Z1g$4{z0DT7jW=%^jub|Z7zXBz>U-ajv+Fs&v{j2w_qu5M*~v$?kJhjAJIhd zjg@I1-~qRB#f4auxv-X3K?LW~6<4-+0zJEx_dHCTcLENkK6Sn$iL#s0fBA?(CUW1c zc)+DxV=$QQNvz1L*np?ORyoN0?Zy(XW`7TOmJ#S@W#U3=FyM*%!M?l3#!2$ib-8{I zyi8@7s2gCTTY_htmFE#OwLEOsN3`TDu*Ps?xhNyM@_`)-<5P3O>^_c$Z^Q1~h*k|J zUbiYZ9^XgY@i=W&foHj!R{nrK`HuU%LS?|%L}R$Kjf^YUi{FT|uLOMlkMIN==)0<* zm8*E{V%(k4R-ovvTx$zh{$4D3Tcr9^BImrw-&JajI%1LD09Do{0zJ!!lMC=lX|Z~l zdDdB6{cU)^8;NQA;a3;HVf;jX?*;7Hhs1d=()NGBk){Kooj_N%Bmd54bO7e9B2WA~ z{NdNgYZK}*U&Kl+CGsv#j`mM%U_m0t{bcAiqOV`kQ-^53TJ+IItl)a0-U7rvGwHE8 ziD%H(yRbzoc#G-8u`hzeUW;Xf4XID=tP9NO5TgDqyjvr*H-T#`{0PoT;9>4DO;Yh(IxVyI{9j85%=fhhyF9RlmR1B+Z4UwVqMj;+Y4 z9mS(m0kx0E7kx{s)TaLm!0x*GT3)2_FXa3f9LaV#`=@yStY}Fb>7#}Wr2Hw@X@SSg zO65Z#T97$R=!L)GD(}EEWWpnUjGVdh;qQFk7n$gRhr0=>%z&SGoGW|?d$^zW{S95| zO=~96#bZeMCFJ#Avf$;YI@yf0oJF&zVp~@eGd4t{H}hV3$atOOxf|js?}xFOiH^KW zd$cDG`-UvpT1MtJq~CfIS=}Ey&1~!qu@F0XlTlPdF@hLRF_5fkA+%sNY}`WHdJXt@ zIE=tgRDcZ!j^4z9a*7j&`if^Yz6G-Ui#0 zh7r5Vc*B!K0-qzJKfyK6hl?A#^gtRv z$Lik*=6E(4HL>T2VAA2I>r!o65R0%4 z{w5l%nQ|b$jW@oE)yhwF)jj@TN~x5_#JbLQ zdJ#J|8w={3DLv!6z+0E`E`_o7^_e@oH=q0HsiU-hL*B})_cBn~Ic!Y{o~JF|^*ij` zX?k=xoK4kW=ca(m*2Cw$5w8(nM`Sk+?^T}`ZiwY=8ZQFQ-^`m#fO%VjMJ&!e-i~hq z`!0b|+J}^O2W{Pj7e0vn`i&a;#)+GW1?O;=9XwylDY=hPzAX0C|8;Adwgs=_uG2T|OO zpV&?|rzh9!ha@K9s4{@Sii0Iu(t9mo*vYdoGtiyzE85*n%&p%HNxqA`Mb-H4jI+AJ zT(egaQ?PeSu?6e#XdCf+ec%Xpk_BH0N7y&M0fw_a=Z*!tJLyy*)0sp{#RwGwE5lglWCgcw4TqlB3Gr_cH#Jj<7lH2dWSg0py zhf#25EAc#+h~1q7?HCqnKGAX>Di4gCs?rBpu_YhCMJ^)q@ff~l4op)!e8E`y;U#?E zRo><^xY?1s^_y7y*6<$P;jia1_e}@l+WoZ7Yw$;lsZH#HJuei$2_~f;5lTnmhAYUJ zYkSwiV^oL#{soj+o|tDg;~ENpCJxfRg^=$_%*OscY(f@vYC8O=BS(Hsv_M;1feVaz z_OS00Dl_Wio2%pRa}#-ugyEjazG_@I2lt^e1~0M<-#rGoZ;Z!n$^FWL+kZgH7vnjS z`0~M6%w{l`ZK=p`7LH`%PL97FEH#<%~V4KH)a?ca#{Q{2u9f^FGEaWEI zu`fscz@1isg(uUJInach@nf+^dG8s#-RHDqV`822^kEgSxofM^Q4F)9@i((9Duxy!Uv{$Izyld>+8RmPH$!QNKI7{Wmyd3;wAJ z@0UQ<8u3hPz%QNgQMthe$Ec-g2f~?!9*hSMod<0;B|5DQ`gi5eb+qFgGGO1XN5acg^g7_incrtXMY|f!?-xG z&MN%sIJ~KO)zkQryU@z)Na;&N#c8lo%c&&kfovB5Z&d?tSKw*Za$J4hp$skK$ovs_ z>AAG7)E=zKIk@!+c+2XrIbU*aFKob2q^~Ef zHI#e5hZfz7_4$r>o&tOEI6mwhq{DHHt!d+zL3d@bp?i3X3ZR~0*#7*Wy~(`CJYu#} z#AD;pt*Lm=V|dgJy#E<`uM>Mlfjx_Jj|;T^B5-hJw7v=blR_qIBX?X*^jwq(s2P2D z6K5a8H#_4i90AW!4{Np;eICSJ?%_$Ch3+vhO=h&_cCL~OZLN%~zKNIbi!CcbJaiYx zwjcK$P8-%j=AI@hZpvLpVD(qwKUbsWpAh$S#Cy~xdf0`0I5X#yAm35w(@5TL9F-?G z6Se;aE0dR=sK}MtAW7MX^U{Gh8o*i>q)i?m>g+?N@E+p9+E|Icw8xFeha)8R@)X%Y zFK+~-RGO!Ho_luVK6#0QKR~N?fabc;*Uu3(d<7D`7d%E40MeZkTQU)U`Y7`7GOg^I z@uK$qSl*A|k-DMDGibZDNI_Tdp7X+2B|hpx?+!w{8=~Ls@c>q*yVC2|@FA^;Im*Cq zxjN*V#LPc(KAaFDT z@>^Gqew}Cijo55|uq@9Lc`kt;pz?;EO3%B#iEO=%jdoShO=!Swe!6Yv85Ut5R-#3& ze{hPc97BF@#aiv>xbL~n5&TRc+R?g$uW1RZ^<72Y888oHOFrYS_tSGPa<_DNsBh?j ztwb!%kZiqU5iG&>Adf}yf8FSlfyhx4bS{nrCh-Yfk=@xy$8+?{6{NNf=ejPOBk)!e znRdW`XXGkJu!8U6x6*>t1|kuz4Vx8D`!ZJSCuHhXG;SX)GYUIVihZZa0WCs*ZpO9_ zVcQ1+T@!M@9ch(Sy!$%rUJ4TG`rW0lJKfPstKYJ4)dpCa$B4xK;ORHfLd$8r(s;LW z$o*yH!F99dqmOse#+kUoYvejdfGS);b32h&X3*06^!dwZ`nOy&L1yp>_U{o8OIOXqBtx_2XvN-K=v%hj(?0T z>B76MAv1q7x|fk&nuXkrMz(L{?_4~`75e*Yj&(iE-Ea;$Y57B(JrfMLm|CCXFabAV zi4P+SvuP9ONIpf6Z3OdVK=*Rd(wUKg{J|^y%>J$P#cBNZHEi#V*rngGYEyzIPjdD? z?!AQ;`vQ;u88UPT`{()$hrk5$c~>=WGH0yjDi^uOH$1;9LU%?Q<7+=rZ%prbhc# zGn6AH;I(%Wh3w(T8Q_;MkkxaH5y}I;Tn>VJJ#YqFs5vjfsGMC`^&a@UHbgGp;diqU zfowy*2g6A8#v1O#2ByP9f6e_~Lz_Ax&0X>L?_gQ`a*ngJ7~Fw9v=Q610{L=e_IY~L6^fmwdo68z1MgiLkM#$=1g}oCsq~HE z=-qt(Dbm;qc^(k7#x<0?Vw1ssU4ssrcUi*IJpD|_)N zJL#D>xypz9oQLf>i7YvL@Cmj{^x^M3%Nb&OYPadhU0iK^@ZIx3#ih`xTaoZ}$k0dh z`buomJ^0=XutIB*|9O10292=Z?LjapAn@O~qwC?M;fnWgr%mYLFUVIm^feFfnucRs zOL-64{Q$nM7H=-|}aL!g*=NdM81Ml`5M>;$Ae%etxSOZyZ#Q%lh zQ+Ba81uZF$j9lZ$73llVq0Q>z>r3-a`hq=ta|~^|ADyetk*+X%6%NLgBdVZBcOY9? z!Sg%m(ad0+I#@)lQC=|Peq<#rXEsDTOVeAIxccvC^Cd7#e(Y0{=ReM0&U|^4=l2Pi zjR1?04Zf=wXQcAY1^O#3QgMYI&dL6aJl6r9;zqvD&R^-kP_E14$d((?YuC}N%CoxO zWemB=&U3!N_ArPrEtuO`2#%AzDaF&4=ebJZf1I1x^|G(g^S6*M+lf4_5!aU-1FaH>0<29%$_3Pjub}2t)lTaSo<2B*{5kLM2HNjD_jd&SjXbCF|98;JjO@8gFa85(pOMJbb(#+I_P2wk z3v>5WuD+VK+e|+>YiXu{0vVZr)-6V+T$?k&^X=tHmLiAFKAMqp@1^%Lf#H|1ZNdI# z!CpQ{d!z;Dy5h=eS}BFra9vf`h<4rCOvpUh9>wCL0NFJVJE&4y1dz|K4 zMbV)0w8RaZdx8FR1@H&y(=5D;tI%KI84A;?kK`Pa{!<=$VT=)!tye?%+7<2h(%EQ@rsFw2W(hHv}C%$uk!WZ*iU{ zE01OD4B9Lf!zKTb1CaS3J+2j67)`&eFG~=T2$aZsLhb@icXKlN@OL5spnk z9x5Vl_w&3Lk*u}!!wEDs7t)uPtE3=<33@Io-xuP2%COzTRqo=-xw&61_B{;xbtTvm z-04z~Bzeu1sd@Y(a|`bNmr3)(!OX$$$cXrhR>K*FVZd+r~f|$C0wE z=vGavXhquXAC7S?o&x;+JhrJJQkjY8KZ*Vq!$vp7N>>RsbT>Bi2JG?s#P;tKCl#aR zb08`8@c-`hxscl7Rdg0&G)j%Txp~( zCwrND3v^kUdpyOnS@Us}_W6x=$j4P5LxXc6DMxw34Cu;pV3(G(h8&2iGwE-i0$I7* zw&P-*Z#XB%H3reRc9kn3J5r<&@7WH#(>3UNCV1d~@kQmaB2RMHs=Qxb`r$NBn2vLr z!2`TPo7Lw1Tx;ik?%0yn8UvbdM?d65dey7D=mlqvX+#^|N&6gDS;vMBF%n4Whn z>x0N)My#{Fx0$!wfX1w1+d#itd!(M}gFj*$2ijeTEnEh!{uG=4KHGaRH+_i-dVrQX zfQMXrs2R(kEcp-_nHoeV?}9SMaGayCA18KvnwW7Cn)5X>{T^cq`f|<}NcMgtdpB?J z6VK>s@-he6vB*{F*&B$G)}f8(V35iqiLxK3u^KBm?=Pf1g+3CE{K+xDpvmWv?xNVW zV#q~Cz7g~5D|28GuJP?o5yBeIT9^_ufLw z=^M8pS^M#iKFjUl$;3bxL-d`QeWkhU?HuncfB&$#3b?aWoyY2k8BSoM4k4>vH!V+a znco~ke1zk(;L%(?Fe`6yn!TbgwW=7O%)Hwb>`xvvqXF9Z6k1ga&AAT=sDW-gO}p2^ zuZSD&Wlv-DwKYBGN+_-hb}#MgN+B!it2TF+A4+U?l^C94KH&eSKo<5PsN6Ri&P%LuIxrSsQE&+ zN3j2UG;w{v(4&Y@hO)UHy(`I$B$9a<)}{km;kuKfh&B76Kd-{}zD86$lH-=(iGIf7 z&*HE5IBFK&axHqYggeaV`x)$6!1v49<4BPe=)f+X!d2!@2M?FTPAFThfaa>GuKx2P zcC|b9tQl|Wj2%PaEj}Xy{s!FGOSHx)_=&}AUlMR*x9)p<7&T~ zIKmZu>hcthmT-mmHuSHvhE<}^U%+N|<%ynTk872dV*f*-UkW4DS&$PEs;kdr<#(~K zK3q?@6ic{|me@eAd`7#yOJp~W9LVR`A8WCD!tB0?RdNl%w%9RO@#{<+`2@D>A*@{& zj{gLE=IkWhLXWs6$k6Ni24f}LWBXc?J?)7_{S+o;0SI7f=*6-0%3^HrQTpK*?(X>c z4)o|Sj#vwd(RR(IKS%JL5!Xd*(lPp#N}6!BZ+P;5upB$NiWXI#W&;u@E3uw)h9EZs zc@kOA-RS6Qq-hF&f5tN`1vPBp-dnlzx4iFoEbT1h;+L?w&dYdY%vH>W@U)A99Da(A z_z>wD!cSMdoXY#S!eM_bbXPn=KmMA`c>~BbwdS2W@;*IzhC!Uum+w2$LW4L*1hg32 zK8x!N&X1NSm0`CW-I*g$4K7usr$j5yp&JgSLvuGtnyIHRG)mz7yZ>z}C1T<}~_lC4Ijg>+luwHiN%c^X*YA zsmTA^(CVKc7jyZ2F*>mvDfk+1`xzSGiZs6mY;q7=wU9pgifdgaQYeU@{Ff`NEXW8k)g6OMg>oMN296je+ z%y;vq74SI^Vz*0T>5JfZ)%)0En`nz&!}9^I zl@)*P`pZ7!&BP~pumdNM{{=|k_dNSayv*Oc%lAm{SlaA!T0tDR9?Pli?SW4A#xjiN z`*BFWYuvX-Q@bPSBWWeq9esXyh_le-ZZ|21Xms zQ~!hyy@(7r8tr%R-U*~a9Fc|1wFDg%b{3qIiMDY?%#!?H1Z!V_&potXEf9lMTUFU= z<15=>@s&gEe_nYwTJ;;16q&_baPzD(& z8PLzoV3>^b=H2{V5J^f42ENSuo#FqhZ2#l8v%K@)^zTu$LpDHm=m_?59eukQ3;P@G z2|nZ*iwWDK~D&o5}fR<7_%_-h?!yZ0w-^YUO> z-Lr|mmZDS9DyAE`+h#QHdvt0R7Eqnp$2E6wjg=g^lItC%zg+Y8e7K|YT*P^+G`!dU z_}%pj<4Ep}d_;5!FjPj~yAZ7*`pCq7*9gBew2`cc2+8$QA3_U_m+nF@^n+d_3tDj# z2<$AVYZp%;vnINhQ98~(y^pQr+QoZ=MsEx67_G6rm!tlseO#wet~6TVIEsva;0>o@ zKfVv1)plFY?_Y$-Rn(ozX8gT}dmg5hBOWXVmLNNuRR;O#&%#*o%1D8BTRbPCs~W6h zlOQwIf?ceROudBfceP;o?ABP^w#aNBV#O&sdw^>+ydj^sO}e9^#E^p<}KCc^kczmv=2nFJ(uXFVGtQf@ZUV zR8m0RM}r<8pf|MEzavq~lbNkAvBTeEtzG4O4wiZxc54jwVKScFb&+TBnSo889x$K$ z&L;YEEyp{SaXpg0k88RPfD*ldp9kqt`94>v-Vypd+VdBC4}l)k4bh_OQUA%&&UCw% zpUTTo`gkYD97K2ID~`ZG?B<$k*FmJ|FZPJAT-Vr5t#OTZvrpgSYre*Ze8U?pLRVb3 za|&-WBH)?vyv-Ee>|+qb+t@`{rXEC8>P&Ff6?MT{cI9UuEMjlIwI-q!XzfYR+Ox!( zt@t#@jy7X!&R^|7Xs*5d8fR&fyKHx|uWgS+_OHQY;J z#ftOO)zPb5x4;#_GZpdw592|f0wuJ@3P+yLxf9wU<*#9%J0SHf0u%5&_Ovyh=2+D_ zXiYWzZvB8So<$-XAcc>kKh5AptlF%P9J=PM9I^MTghbwj6>)u9SwAg@`GuR1Mc>1B z@Ne^CzVS&uN`ig=J5sa-so6(gU*O$S@jCKfDc3DhL9UjUmPn6OGZ2mc#c{5+elpnC zi^P1Hg3r#yQ5iT(obEc@@~JmpzvDl&sB^|<@@mbpcBCVZ7W4vxEzyHJi<=^65 z#p|RHl{=EpNYZ>ol1MB)_rAn^|Kiw0h$KtU69u@BE7@Oz6)^YdO3`KMojceHV^M41 zqm1;cvAiw$Bw>($8h2O| z1tx*|X7i0YH6PqC1@tft3%r11mLtsz_}0H&(S0rYxCI-q3XddPxRSqj(4&Wub3c2~ z>UnsB{K0D9P9NvveM^O{1n*jmb`oQhWGlnZV!XF#BQG*$ z4mU^GoMkT)y_%V;-Nsq>(yk97yN`huo?sIZw?N)s4i-L=_GgjuHtbRQpFx(L^{xfB z|5c*Z_Mj6rz#0CZWADq?<-K}9gO70Ji}(n2ph-Y9ErTv~;oO(GYGba|h%+1To$HD} zLhqGDJI%h8rGI3&?dw9<`&*=$Bj|~_X1(=Q`b!;%A!&Nsh>2H5qmTI=rYtNO;}|uv^lNqSgs9xw=>w}z5Km_-j?f=A9Ie`-5j@rqjvGzS)@;9C@Xz(6VENO z7c=;#H}iKqU@aL(r6Fyw5$QSVDpGQVb7LHxi5``C^oW1ivQ~PFh41uX+k-zk%KM6b zz2q$m=-z z!|$`wbJjfP<+<{)6$}!s1*?o@($kbfz8?&KS7#4v$DoI184GbwWxqV1qMVtVH@*!E zDZ}zWI8QrSiq8Y+N*%mRU94Rt&X2yYfE{#Gd-QN6`TuULTp9j0elr5mCMqq;n_NxA zzuHD;uD6o*Uan9t`v>;#1idPfKR|z)FR}k+w5<_SMznh}XVbBBv)HDAjI@fb<2sk` zWR{hz?}F9)5ouZ)A|GWidkOaob&#rcZ!l~ysre7^mW=h%Yw zm?crBe+}BF{GCMR_8_Ipu)RvNm}e0<$7oa3Hud@)txNh5tz5@@7@H`=oB2z<-4=9H zzGfTO-G@Y*)xS);oI{q+Bb`P)`ipBpzSR0dwAOLj$yw(Q^0%A*Lr%r~^EHlDGp}Bk z?2Pn+7E3#I1Co`4p2C>kueeybGLya@eSI{3gxu)%WSwfR_2*bpn*gwJE( zm&)OYhxl0;8Mzlps(^iegkz25#U>v4B$oF%Z1OXlTaT+4`%6 zA7%$Y8`W9uK<=P(wn9#h*29VHs|By_Q<@Jb%f3qCsY{_VIgnyKTK3=_GSQmm7qlPg zgRYw6isW5uVm)W+@CH7u6(MDLx(8_`8I60;m&k7#rx)S=V#b1OR)DC{MiFYJ*y#qW zRVvTzyO_Ze6yg!byUq<7vk=K&hJ61NJkNL6^=cuy^(|NY z4$n6Y|0aH!3PPC^&Y8(?v$*ym^u{`!Luma$bj%zl<2;dMJ<|}e6U zR_v7*e35%R&eK)}{XdEpS%=K5_*j46>JIv^2vSfe^nG^rxu+;nq#tsBA^s}IdsgRt z)f%NrP4atlF>-I(S@DWlpbY%x_$w{dep**n#C7SF0kg~N`MDX(BU7SPax;G@3$iiv z=Q6DBD(vtoytb<^xvk`z2#1(y^jdNSKZS2rbF9ZL!G6vOc6m04)G>u$h6qs1It6)9 zlBNXfJq}wbORaoNLe`k8EPU%K+RoH77JhC7-0_F7aYKj?ndO~0(YVe$rkTw5`OEDC zjvCE%CUBneI+>3(eMZh!k+_nEdnR(sr{O84^SgH*!M(=wQ%^D-KQNhXD(B5aM)e7E z`Dw(e*OBp1H@xDEaMUN9X)HSuO!pzr_yL=2_Xzg*JiZlm|6EzA{{p=c-9_0N{gXPf z1g+B-%?)}nmwSryf1o8JW`?mWXo$Rd0*s!HKE9Ej&W0T-fWG}c|4-ogK4tq1 z4sZ&af1AM>4|g(|Z6bTduvrEDA)gO8e=sb~+c1IMxT*|I7yfr{=Z-;#+69d>&*Z$S zZPAHVXj4->Mq~7^F@B;x&-^GFqMfXShFHTT7P&L%NnUJUR%~2)Y^^y^QRpSSrSX%S z@w#|I-*_*nL#{wOvvGXI0C z9p$}tgE(Z5*08CyYtduz7Hie<{KgHUvJ*U~2<-$<>s)T4l8Zd^f6s14{W8}#MzA)? zx-)H89;}#kIrf*HObaLfR~RdHN3dk#&-<`um4gMZ4t7u~8)IwR1dIFva?t|mXp4My zMLr$npry4c{&li117M@&0^jEI4jkYhKJT!n7e{tR;*24m#o|82H5-6l8t_v&^Sah@ zv}e;|`CzhnXbq&=sFkVwC+~@y(lnHx?iDAHqBFyta(k}7SCsd|9N`6QGYOEnYl$+13 zZ01?52TX93k{Zc;VLz0ZyWF5^{>jhS@DOt>9#wIo}E_Dooda^d44OxyQ*ttbm zL^qLwR@>UtPxuVQk`83+$7a3B`$Wvz_;Fa&X>6Zif#nwzS&4wj9>f;wsmt@f+|vUAu^M4T@zuTHOXISK_&kc;vnJO1h9&_)H@+@a@AvY+|Kl3kSGiwV$cyYhg$x`+0*)c| z2ZBG@gVu_y)MzdL4s56Pb1zyU^Wu6)5qt9=eljogBNAu5>k598y%#@4nWkkyBSZsM zc&HH*(1_6>jNt)Wh%g4D4Wb}1QB=(}fLx`sMD~UI?m=$R?53Zd;rAYaAMX>683=+J z$gu-B-)npbS{WMf<)xV7ow4JP~U}*5w7F8MT7b|-|zsN*61WHW?W^jS%Gvj zJ#hZ19zhtVn#dnNRsXuu#=7|V2KLE_{BuHSDt{T^?^~kdd!KtS2`!H&|b7_#~v(k8-Qc{un76iUj*p z#4qlb{~XTVq5K>f5VL=|?#jDJ_4~-V-??uXM;kfFcIzn?V6nfwE{}RoWzsq;@z@Uh zkjTuO&YwZkwNW?G9_B!-vMWv>7>mn2JcPx2IAGzXU;yL9-rxzxeZ32!{Rm_`ntG@a zd_G3*Tq~#_ax^Gp5C?J0d+dFWpMLiN+fa@jiM)+t`viPE2?-s~HAeEyP>vY_LXL1t zuMm;;;Er9`UIvATN<_xSo~;7@u!=-)@C+YEnKeRIMea(c5?cd{Eqih|k|r)uGGfGh z){Qu_!&uJ@?@xh0vj#+d%s4}@s82Nh8BOcjTgE8H<*r_)_q2BB3qHBB<=aBPXx)~;6D;C*`8jQg9(Os%iU{m4qsdJH z5ji$S7TBm%?$4~d97a^#s#SITjGWwW{2y7~-MsDYAho{-yKA=7ci+rreXQ5=ie6(Q zclnj8XtDQkRumI^ckQ%K?!A;MWj$gcMf={(`$X9jQJft74mK-pwfsA;Ki6I?<6)#v zZy~~uvWiA;qVsfYk)Ho&JFMFLueRUHfXD-i)U3y}uG4eU@G-7uR-#~ev;X++7+*A9i6|q#;En(a?RpED>brX zRjeUYgUq27LZ5C6*j{^R#>aEa_~gV2<>A}H9BoaC^?X%=CDqEB!_=-;ydK@%i$0cS z6Qwv-PP=ISsZfX*3h`HAek;J=@?;T`Fm^D@X(qKcILJJnmi%$FBgpf zU;unaZ)|z@z<0C?f{7Q4;O(V(1fnC&=%ZNV*{&d}dM9gxSdsunBPi6eH z!!mfw1MW0)VZP%#j?PzG>5Ozuj@%qZgx*ClR-=pFvtcFFYhx9?vf2>wp;3LWQf_WhhuQQl4brJkwp z>B2Lp-4V-TZ^*nDKl`rgVZ^vVRr;Am-omWETfE-SS%gaHREo4ZX|7l@?W%W zUmJNu*FJw8Q(G77J7);b5?LW5E@k2zntp`7keQM{kGx*whpgi{hQ6QWxG1tWG7>>* zMf5Gn@C;XY3ZEmY@GzTUe~FmHOy=1(w55!)QqwOLD|W!37) z$(;%Pr&UcGS|Q4l=)25_-pU=^qo;DrmiEj@%L+eProY2x#3oB7^KgzU>RGjAQQd_6 z_5nV!cxDpi*BpUxn$1}vtoHL5>!r7%59XmAZ>(=O<~I{(L}M$;jveR9KDqUR5t}G$ zBO9n+-;ex@kE1-lqc}wXzw`I+e5Z}_2(y^lED=hCJgma@eljF-Zt9^rwuWc14rxO` zIp%8Qea+ZxWnaWGietnrKEK)V2oZ zyB(rU#Y0M?|I#2`S&*dy*y-W{iAS+vb*!{(wQ<=KSnIm{UO)Wq&xpm=g3AoH3aHtY z6MKQ#2N2=CA9(0dAv&B0e?0|T{TUIW)_V%SiN>uH|0MjJf*l_lxa;@9@PmmC`(w-d zaIM#aHGc&jQ6^Dq-kSLIg+-A+_cKtSn-=3(Q;k*S`mJT!!P~CD&&|X8u{Il9R9(}T+QHYu=#9?Q zR(EEcLOaIWyd3_2g?j65q3*Ch9LW2`oTI=qpR$?bnS)m}OQUC%gZT_pGM*!bhgft7 zXAFQpk&%3xkH5>LM7bzA%VBIE@f7B*%xX;tc*o3!n}k0i4lU8Z~ubv z)>739 zdmV4@I4$?o;8P8cE3^3k@^cT*7@;w9m2P7FVr;S>a+G(WH~DxsISW0IwKIBIeSz$f z_TLPN2s@SE^#a;wE4yXWtxVMh8P!FRn6=M`gO`xK)7#3@>ObWc_2Q!T==zbjvC37C z@}I|0Z^c~JLyB-t;8D!U{1JN1F~j<&vpk7U7BTKoT;RR@O*`jr_N6SRSXE9&T{BZ_ z%;)o%M=*yHahB2ZT3e+gc!cqwvBqVNldG|cT^nmoU_V-}-!i{sUdMV6+d!+l9cwP4 zw-V+%ti@~)xcGb|k~}2jPT%8yd6p4@lM&%hLJLIlW5XUtaE=H(%_#nl(7uS>?Cn%^ z#hj+&s>Jwm@#cE1L7b27m?yQ;CSo~P;zO(`w<`G5hEp zfKJC>t*hSjVO(k8FIzc3I=+ zna8=O*(W1b<;=0wS_`d)xJ|3>$2xq`uKBpU;b(UGAlr2;mYH|b%F5>ZPt2QvYu1sXDjU_cKRjY7`Y!k?nXYMFIzA|R(e(W zDmQBne+XDCs&f#LiJi<{iJRo;e_*qEOjbUsAJg|*vnY0x!!kzNN1q<&iT}sb`Oi8G zEw`KRA64(z-hQkmlqW70tYJAUrB&ONu$(ops8QWjG+yS}fIei%txPdv*#S9@#_06K zviHSize60`kIx&y13QMNE9|+F-x>RFRk>r(U*>05{&IAW=Xc|5v#7nq*2UqMhh} z>qeqcH(IC&7ym*_D&5AOj>d6jAmh#5L2FJR1E*y^~vowS8@z|M1Fg`%8_V-XewG-nl}^@)xjox|oh3Hgw*U7zaFuF_??^Ig@>2^zj@i z#~w+sSVhU~iM&R2R@!bWt(pgW|8&5T#s%hTY7o~~2)@HS(|@@}M?G7~Zqy zy@37puyv`{{K$GQ<$B7wQJ*oHcQO9@1wGk?^*3%8Z}^O7=o8~#QARXgRvYN(0hwJn zUHMjXK~eU}nB2%*emAnh^1(*gvbe_Xw}sY-`c>Q|%9km#x=iN98V#%YZ@qqHM(Ht)ek%`Hkn-!fID-HS;vewl;GiEn^L?qnE_k@_^>*&BKom4B`mn z-K^%@VZ4tcEITlxTKllI;s3UL#PN==d=;5D$Lad6)_r{#u=WU8NJl|i0Wbqh;+QFG z$!3KAKM8ndOvqeVAvQ5Qhv;Q)=+$rOl@;{9nyRmL9N{h`B&x=U?7A}~IctnOhAek9 zdd4<4!(I}UtK{8>6k5AvCf)J9*7}Jp%q2dC{?r4lh*zR2*=NutD^wcs({aP@w@T&N zQ2k;hOow2xUk|#~Kk$wHKy@Ic%zu?JQNG1ELJSktLPt1T%p${Y9#ph*j_PZzF_agu!eAw>X8v|NmhN|+DXJ>6 zu1kw={X@js8f%EptX$4_-5biwSWQv}hQ?axa`d)(k3tZTY_)nBJMQ8U;IVB=9I& z74f-72o-s%2ar8SlZ#Gr1~09}lf^Z&7G=#uVo{b$HdVafxBpqtXrH4$^y*RN+*w*l zOztKocO0bSMZ|U1pBRf^!YJIeiubCcNkc!>NG+%c+;kx_~=h}MLgnUbHD%{7{`E=xqLZ0&DZl=39SdW$>3s@650{zo26<^p#c|YlW>d zIl+5frPb}PsIuh0ERT7fyOB<7nXIyMbbw5iRZOz}T4Cqldl(xmXW>W|NAEUZb8Lb# z_k4&NW%#W7Yr)4FLHD-ch-Z;LD+imhw;BICpMwlmo$C>)Oo#adE2x~Ypdx>nZPN1B zL^I?w{aNk0ei&am)}km+uBSD#Dfb}*W`@wrsZpl?>&NxqqHLvA{K8_fe3Th`K9X3o z$yUhAraS+bQmqF3XLFrP(5pmy&4fBaS?@0%wl>8PeZ|8k8XXipjfhuycE&elRV-l4 z8|6L4y=HdY(bhDN!w&$+)GhFpdfP*!J~M{^#H|BnzhgxF*!_WdBzDS!9h z_#1Ouj?4OQgjG4D(mK2H*wLt_PAskOjL?Gn%wszvRK%s3&vs@8E23qat^RlxyzO`d z$1J>pWptcyPkeme!0A~7JAf(_>ruoA@36^b_YDYIPFwabs-p7u*V)rMM2bDRN`wb` z1h3zg`!wf{Rz%eZ)>Vxv6|!WGnJviXPf=oFBv_urd08UwFP3yPTQ20q45m^MjqtMW z^#HA9JYB#UsBas5R!Zpis%txl6eb#?-y9P0_9ih_FltQUNhwQ5#p zK7HL@ux2uT%DB24t?2A8qOks>XdIL!EVYAuGS4S^?+AvYPSTpwR=+?Dy~vMyun{#VKf_ zHN9$`e1LViTX+vKp1Dr*B#soa;@Zk|c{i&zWsstgZ)P{6$`-w^e$=1FN!F%h$72^j z3beqEnvmNt;}JDUTO)g196X* zQ5&fySR-PcwUJyj4qO@4j$3mh`tq66pf#x+Va0~y{j7zO!(EMqG{X}`jYg?zjv4tK zw1^qDXna9bUv4{z_(afVlcL&G8FG(}IBhv&^O>^TCj%CAeoXO$?P}B+Wp8CRBlg>U z|JT&r$J|}kX8?c7woG9!$u==Tra%kR4K*-{WRg$;84d-th(HmgbOi=06gmo0aJ-Zj zObf`H@=~A-P!L4qMGPR>EDMVhVzk34I@63lbctG6!U8tE2Y!I-h0F?)jOY%Y=)1 zg$x?H4=4TU_?(c^>b$T%b&XcB^PF{TRPB!?>y<4#PR0%4z zeG~F^>yJ!{$`IT0!Q?zgBo4yi-TIx3s$Ibp?p6t?3lu?4Oz*U7j$F|~5f}nNm#W)b z&T58KqrELN7?&cJ_naFUB09uRM6d54d`*Tiu|jwg?2!5I9dI`|5LmFD`DV8mYYLZk zH}Y7ac$u6Lj2a^bzJp0sU0L&=+&+r@9&SS`Q#}+v>^p)V+>~f_-M}xdOI*`MhBIj& z8$Ht(^BDB)y2Ld(4CYX-a!F$DdAY#s+=FGDKQbEGwLXU{gJs;9zo36XKEnHjCL6w_ zCWJg=Cw-pQhgf~+wb=kW)i(x>>DoGJ9Ml0gGF{B&A0g*z1@lx4(0$a7l15U|OaBPx z14=>}BsPIlBNeT+U-b_oU680Mmz5pNAK4`4@6VGD%Yuy>W5$?*AhbVSCjxaeE|9KJ z&oA8$6h-H{EM5*TpQm+gHbN&Pccy)o&B~FhC2>n}qYl#_Pmxnk3hKl+WXzfIlMcE_ za@jkY7gZLel5cDcrLCbNmA%$E2~v%*SC@#SVwU(NwoSaDF(^_&7S&o13$Ysapz5L{ z#nq|8U1?M3x^Q>$qwnWA_y^SwKGR<@wttmR27B|bt6Fu57)FojYo_ot^W->ON_2T} zT`MB>zMP8#N4=uo>iszzl#|pJYH_Z5pBS}x{p<9^>fx6E9F}uN=b)EaUkGI2y?Nw- zaZV2(x$3cbCa*CFkzQ@y0K4bY$W6?7^>^1dE2Eig&UU@wQY1sv%T7IGl#1{?XsCA8 z38Fj%9jb_-H~Jy6W`G$A!7~qBtOxYPloOBSw>&4zc#ptetGA&Rhx5TNb^LI8)@vf( zyfPvW<`}jwpX?E?I#xA=11PUWLqSEM{-><1cGVow`_SC7&QYqv_a}O~=*7feIs=%N zzZ?~#3_I(Dn5`m19N;G4Wn1B8n5;-Qp;(5egy<*rac&az%B=wLxXq zUKi&I4lW)$N7WvgS)vl`+env-l*xqK7|qmld*s_u2wGuuI;&gN{<66CRn$#`j#xFT z1FHH0UDYx>m5Xc+Kcvr^(}CBkgZr5JR~-!L>ig*5_g*kgf4!A5zE1pkYhp|LpzvRM zP&@N=_EGUv@gr7<1b8m$DeDSMoECoSp~w7uDL>;2@IdztERPl+maQ_C4}U$!&CwRs zMerZztf_q3mC0qUIHn8-Dlgj-(^X9`X9V-~#|HC%_>+7iP79Ed12U>$6|@`1;o&1L zK<0G5pOktNG7Lqo&n1R&b#fZ$F75Y!~{nd_60(3o76$1WSSsMnl3 zo-NbR{d@9IsOWt-If#q6!=LAanGb5M9};3_>i` zmnCGo9?=scpb9tP1%y$w8usg;wWYwyVd*sytSH_Pyn{sIL!d@}l63SfaD1bcw z`-od&H2wJNBTl?ApAM4470OD9J%v-z!KgOyFcjZbDm4W@)tY4`Q?b_9mI}3wo93wQmht?p*Wy+cMUw_U*`veLFEz?nBEYpU}6yabzocEU!)-rV@jp@VCS@ z{%vZv(^A1LN$q!BD!|2~s#E)^`<9Ffa9P+$OyudgoRMcQ&+B-v@r+%W+jCM^>Pc(H z(<<H8^I0BFmys{`QTECE4-hT3J8UNh7^j^xjcg=fsLY zyMSgb9>>yAcPw>aQ#8O*ICd->$M>Y%emZ9Xx2yVa4iC!FJ2+SRvP1I-4-LJqlxU8l zBdH$2P4!svZ^A|4?zx)7Pt_cHKcOS?EgC7kK2)$gG2AP|M14SiU~PIn^PYM^K3Ck* zs-|a|ua{cjhGhBX6Fi*zAZH4`%4QdLWp0GM=(>cN*B?Sh)$OBdz*#~bt&MHKq*?xYvB3;*9>#O5#1imGI(T>0E7w6bZfei!Z zB%)fWTE~jUzY-o%eo8(K{WIce`gpDCCu_fo^>5M@LmlLfcCVq@kq6?)WE))6)J9k^ ziVSn6dx7v>p!t)5w)3%=HMdL`IVcX&JaeRBOj9iipQ%%W{7HWTURYljf2CptkX^ai zewj)8Wn991^&~YOK%U@BRSQGsxq7v`hXMn(PrapXX(zsZS`5D08na5t<)Xe(?fmY@ z_3DU$si(eIRg0mr1ili!!?bGrEZ?n1b#qoe%+DREI{DDI=bnOg@A&{8l~{5@_(8jpLAx&snz3PMO|A_Za&sUPOeS z(}mvP?TxER1SaY&gvb_9(8jan5XUmUP3w!D4}Frt=XvC zp_w9q|6O%PsNCpl^q$@tJcO=WFYxE`KjsFTNS%sJEZRc7iZ#-W#&Mn&+fFB{`nCwk1!G2SQf!b)nz<%bK! zBsV`MI9(O5blwz!RIfUTPY)|`dVcPTO2@(7L?^?kSyw-q*I|~trxg}YPupP!ER5-U zGcNT-?V0i9JnxdTY`x&*A_na|ev-QyXU5iUBfD*-OT|dF%OlRXr=io&Y0c4H+TO~S za^%#U*g;C=XLI(S%BYa3Ha4htaB!RuTH!yLQK4T3rllv4#_%UO?&@|3GR)Y|&;v?P z>pBH!b9U+^PQUHrm0wyvCXXQMTwaY;UF$r+Ae2w(`Y5hKEhzlD%DN99aCRa5^0aE! z`ApP#LeCP^##%ga`q+Zk65((J)q2+*hUynvW8cG~+U7=a59mg@Q`nx>Q&$h112Wm{ zUdDj8q#JReQgh_IQq`$DyT=Z9V3llFHf&VJp|gY+#XpZTvSp0u;!diKezV@A!PPHD zO;0a~VS97N3XQ)#8f4$jzFWu>Z#M1m60EHJM|5dT6GO$$a4Q^Wo%y#xMk>UM353-+phLSKwFH;`RknjL5XD zpPWPJGH8V8jGf0x&*_^whh0&j(biJPbaMuZU-gKtv!3m0i{M*c37y8P&=%E4X;K*B zE3L-GuyN_|Jfosrcsyl%DmekQpRR1$66{lZ@v7q!tE=nwKMjF-YsTp%wL;K9?m4PZ znSFa6dBg0M-{SYn?NcYqJX8g^GD-`Xg_(=(YA-q!Lc51VE&a&tW}q%m!`AOp{zARN zTSA^RxqOx%!UMPGSm#*rXsTiL_){6LG})^1x(Px`(D{7$o?hn!2lpyoh7jI360${@)Ox99kR%--WMPA z>!{i3Bq-`t^>4{Ju!`FE^j#Tw*4x%o5LXo@ZHfJ+kKJB<9-Vtev#tdEzYNE7M10Tt zROZX1NNJ7gw~O*_oQ+kk6jjuPUdK}nldR(k-q^mK&IgPQ4@02P z!fT0M)mV)?IfLy;;1Wz5CikY}5ZCY-6rQRd3UQ7}`iNywcDkTGJ}mJ~zE}68Y9m$s zGAG!Ty1tr&$$6DCvExmRBh%&JYwp4>RS9P5|L0Xy@$_v_M{{jbYG zauPUJKUYOu?-xGy)P9u1v_W>B_4lcO`)T_bp!`;Jsy_~BuzjonK9KTS-q2o6y*Y3I z$G~xcC(0>s3zUBs$Ef`!VhGp9jJ z1qqql2&`3;KZ(^7w{L}niWxz4cndP~$^}fi4{DHR3m8Yrdh2bSNsK_sfO-YP_i&t) zJFqFZ7hX-KenN5`Dj(fxXN+uzSK+FW=X9@=W;CBp&ePswURV?bx_Hh?Hh)%L2_ajW z_c}VW2isPs0~I7(rX7`djqXCBX2T2lRwDea`Sv>{&%x@}cL19XN2MN}{MG1E=pncW zL(Js1)%+P3R4P<%#gyz0040+BQwPiVWP1nYvM?9>QOE#Y)B~79bKJ2NV^qT`V+d2@ zj0no{86Tk!N@USl+Bi#PY#)Yt>4{5_Q%H-Roqh9e>R6v?e!eYb6l|q^48C`F9@{on za0oIji2r^6#saD`5rLY;?EgXLr5Z(FK>P8j)~Z~5GAj;kARRV$q>W=F>!_r6qH?OY zm5NkdY9}gnr>il{6NS5qTZoBU3a$DZs(j5HekqeS;ioQ=Zytz##@MWY)rj;Du@y98xQqIz@0Bf(-Lt@FyJ#V&pRlbt*tJV|`C_`|)Zp#PhQL93lM+3})6T3LdC8x)T+N4oV zN1`LAr?Z?(yEn1cRRB~+RkuQn8|9fANv~@=fPHS!NQLQA^%sP;*?^S{0-&oK({9G7 zspK9oqB^8FCh#5WTwSDSbN!vJZDMql;#I;mnooU*vbvdcLcs{-3RP^ide+C_9`6RD zUuQKo7&?Qw>~22%k?jgthqr46%Ca^Y+Ui7Z`|vCeLU?8_7$LXrLlLnElHNLN1E;t#; zxWt$4>LPBy4{1?8mQja)SeBToi-r!9_c6Zm`oUiEint}n;N3wB>8!q*%L8#1{7U-O z?i)YbDeC^*yKi_6el>oB55MZk6`WzDVD`0+L4CVkXqANMn$%^hQTEoR075n7$@z%uFeX@Sq zeesx#!&3)lsQ*jHF#RCJP`=`xoJAh8GWp1PQ4G>GugRQQAIyDyRD_p~u}z7NSWv2Q=#?gF0A1}mO4Yy!aIBy^ERnGRV+$%>_UE=SIHN*Mf3nw$E!?x_`^^ph5 zgg6w@`qKIGUZX;+w;E#OJ9p;q(Nkh4Ro%~wc>$Ri4E}s~8N8`lI#p6d_ zhDVUEnXP*6um^nXa0vAeuycmFYQ{oiPs=lDB9@F-=?8a~xcNh=%y+xr>h}9kBFw_9 z!sZ|~u-xp8iAAtMQS-&ILhwn}qhO7AXpC(6w4IGzjKOj~9glKpx?0|{epki^-)>jp z3$kLIo3VasIu!IK*y;JG?7RBW?CpGHc6oOFP_9R$KWI^|N9OSl=blcXW5;!IdL48) zEYEzfx9exaY_8AWl5ua!T;o7%zS0}2;xR+inksc%f*q);QL!FcJ>_~hP1$t)IH0uj zXjFnY&b%&>njNh2dh1b>1 zxo5Wq&s{qdTcW648C<5`UMd(l2!EeL6FDdCp&T4qPU~5XFC0rH+?WYl{)2oY=rKo+ zDhVkoXzXDRv?{VknRRzYs1KT>1)I}}=)$**I|KzF#7f$&e<9Q21e zvFNm(&3wZD;NhzK`dMb)1IY=j`1V?-s(UDrk!S73yvLJy*VpF$C^K7Et9_R#WmL<1 zWo*u6&3-s}z}Zne9Wi%U#>k?Ko|VZQ?$11bWp3B3HK&AUz9!7^J>il!Ci0w>II>TU z#Yk|-?{zg4xIa|yw`Dwy62A!R|gNngk@e>Jv1h2%M;_^yaM;d*`J~wx{8lA@+nx2 ze(VlDiTkgN-%fVr`sAb-9J!F{Rz1jX>PPv0a^Rwx&1dW%Re$HHe;6mvC+hZmcPO14 zK|X_%!LmG&NRQ{yiNS%#4ndpp8VtWUzAo3bQC zH3i5{1-Ehf1PiP^{aZ*exmkVrmUD^bUTd8999!- zJgCd*DeUH2ElPK~IU`wz-XD5dy?@2|bl|MY<*clox-6}ioJ{BrUEm`yk!H7?WAXfU zdcfh}|K%#`z=Jd6DBRwW&u7mstef5pJ?AP1h{J4F9lAlP*k6pOs#2!6hj&#w`D&hH z)cFTfX`LXeg$&q_R2){l=-Sjf_Cg+^EXKFnFPGvKI)WdDlgN|3OYwCTiqWGw(zi*o z`Es7YYk+#d$gV!t{H5*YG=Ouc{}&XoJ=~q)du87J;aF{6OYZQCQDZ$n&aNFt?4l%d zzyn&Lt2T!XQ-Srip2qiQBykI*|A0wz?9;!~9hZ$YNF7vK=F2~)$`j+!E(_-;8lIV$ zC_`A1=y-HurQG5pxqKp8+2e9uoL)&8^@`vj=j3v3a)?WkjbAqE+)Hyyal0mC++V+H z{I%Q0dc{);8&DQN_rugDTU`u)Br0%f1{J8?xA8eVNkj{-M(tG8H_l;$hpWCA+^~!T z?z&$h1C$k?L-VbpUF^{HO8foEr~+) zt&^1f9IEhab*Uz_ix0iGT)sO%ahoy|x{I-yARnzJSB=Ma(3t1kt5%>VfG=C`>?+@$ zUA<{_4W$p$W#rlLVLWHOh4sodbKyTCZkG*$X&Cd>%VFwe+8zH8)OPx`dY?KaiXGB~ zPn{}qnPxNceN~Wn!xO8OznlmP35V>iQrs)sZBaigd*#%fmF|O%QFZu#&L_O`WlG)? zzhPdrJ5vqOoXe-hOLa$*E%|(+AWgd+hOk6MAby$e%mq{qM}N-C!b-DC#)w*Z@61He zt)8FsyZX>6Evi5gnW|)N%?-DbgTVXckvu`1C67_UR!#g`z4@s-X=8BsX2G|&M|Q_hgrd@Sp~`pc^^dm`LO1G9a%7ytc1^sL*hfuA zbw#I7b%le#)Auv;9;|Zw$b4&>D~=KNDCP{S)3c6O`n+}A>%p%^aD8&_tCM?Qmy5hy zC+7{x$Mr;P81*U@;YE1|u55Dr?ni~+7ytRCz{Jf<$Ogo(j@HdW^nSl>M1RiwMl=+d z51RP@a>nu2oa<+EeCmw4F){7h#JFpcgI*Q1%WmsbaaX2-YW(5ZaeY>7Yc}Sc>*;N| z<=5`sreu+v#asJ4Hdb9d1?@`YT~mFhRUBi{efao1-JR!P=G98yN-VZlH6^G%1o?se zZTc7Nk>|PJ$aD2?Im6DovHRVeRruSMd@Fc#8QJc=P{(WM+xnzVcBY+YGa2Hh|HB%_ z2he^Lo0EIU7dZb>C7O3n=WmI+_Bd(Z7}Wx8!X0C!fPT2zDWlAc-b@-4eVM+!jL+VH zcGB21@)`X*_vCS1o6s4mHeEiC=6~K;*qZt>*LjRS3tC`5`mOo&`gY7vT|4&orLBTv zi+DJ8-2`|>BSn30HyvY?W@>pda(LaU)QuNstm*c>A{TfarwG1Ls|Vhui>GQqh_o(; z`qtY?6WgfL@0hGINQ4 zEXLS5>fUB5KuQhH-qkI1mnO(E1>Q_DWDyJdNDJMLhVH09uf9i)Q+sQ=19=^Qej}N! zS2r`6$vaSY=m|DLI4V_e&`?3w>mC40#4=4g|H;4Vz7JobY3vx)h2(;Xv`#<` z%_~l<|B(3y|Kq84NzjW6lWBY=xSrjhuqqdhJmm6GB~!|Z0NqLI^6kHYux}XI&rQjb zIQ85*F5-awEbZ|lI>@$E*m5nt;?HFCiofdggL%0- z6{-CjxDMVv6yG=JmKt0I&x4Q);r-!h>>Aa*qaF=^^Yxi;