From fcc49cffa031cbfa112c1dc50808dab6f28d6dbb Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 13 Sep 2026 17:27:41 +0200 Subject: [PATCH 0001/1002] Consolidate CultNet schema contracts into CultLib/contracts/cultnet REC-032 commit 1: move the canonical 33 TS + witness-artifact-bundle schema files (34 total) into runtime-neutral CultLib/contracts/cultnet, move the interop-note schema (and delete the zero-consumer discovery-* schemas per D3, tagged parked/cultnet-discovery-contracts) into contracts/cultnet/interop, and delete the 27 C# and 24 Rust duplicate copies after confirming byte-for-byte equivalence (only cultnet.snapshot-request differs: TS carries shardId/shardEpoch, a known drift already resolved in favor of the TS shape). Rewrite every $id from https://github.com/GameCult/cultnet-ts/contracts/ and .../cultnet-ts/integration/contracts/ to https://github.com/GameCult/CultLib/contracts/cultnet/(interop/); give the two shard-catalog schemas URL ids per D1, replacing the bare cultnet.shard_catalog_*.v0 identifiers; leave ghostlight.agent-state's Ghostlight-owned $id untouched per D5. Repoint every runtime's load path and id literal at the new location: C# csproj EmbeddedResource + LogicalName, Rust include_str! paths, TS contracts.ts imports + swarm-contracts manifest/tooling + package.json files/prepack, and the id/path literals in the C#, Rust, Python and Kotlin interop tests and peers. Python and Kotlin still build their own schema JSON in-process (D2); only their base constants, id literals, and (for Kotlin) contentHash literals were swapped. Every Kotlin contentHash was recomputed from the final canonical files using the runtime's own stable-stringify + SHA-256 function; all matched the planner's precomputed values except cultnet.schema-catalog-response, where the planner's proposed value did not match recomputation and the freshly computed value was used instead. REC-032, decisions D1/D2/D3/D5. Co-Authored-By: Claude Sonnet 5 --- .../cultmesh.session-accepted.schema.json | 2 +- .../cultmesh.session-open.schema.json | 2 +- ...cultmesh.verse-catalog-request.schema.json | 2 +- ...ultmesh.verse-catalog-response.schema.json | 2 +- .../cultnet}/cultnet-distributed-database.md | 0 .../cultnet.database-change-raw.schema.json | 2 +- .../cultnet.database-subscribe.schema.json | 2 +- .../cultnet.database-unsubscribe.schema.json | 2 +- .../cultnet.document-delete.schema.json | 2 +- ...net.document-mutation-contract.schema.json | 2 +- .../cultnet.document-put-raw.schema.json | 2 +- .../cultnet}/cultnet.document-put.schema.json | 2 +- .../cultnet.document-record.schema.json | 2 +- .../cultnet}/cultnet.error.schema.json | 2 +- .../cultnet}/cultnet.hello.schema.json | 2 +- .../cultnet.login-success.schema.json | 2 +- .../cultnet}/cultnet.login.schema.json | 2 +- .../cultnet.operation-request.schema.json | 2 +- .../cultnet.operation-response.schema.json | 2 +- .../cultnet.raw-document-record.schema.json | 2 +- .../cultnet}/cultnet.register.schema.json | 2 +- .../cultnet.sample-change-name.schema.json | 2 +- .../cultnet}/cultnet.sample-chat.schema.json | 2 +- ...cultnet.schema-catalog-request.schema.json | 2 +- ...ultnet.schema-catalog-response.schema.json | 2 +- .../cultnet.schema-descriptor.schema.json | 2 +- .../cultnet.shard-catalog-request.schema.json | 2 +- ...cultnet.shard-catalog-response.schema.json | 2 +- .../cultnet.snapshot-request.schema.json | 2 +- .../cultnet.snapshot-response-raw.schema.json | 2 +- .../cultnet.snapshot-response.schema.json | 2 +- .../cultnet.transport-profile.schema.json | 2 +- .../cultnet}/cultnet.verify.schema.json | 2 +- ...ultnet.witness-artifact-bundle.schema.json | 2 +- .../ghostlight.agent-state.schema.json | 0 .../interop}/cultnet.interop-note.schema.json | 2 +- .../kotlin/org/gamecult/cultmesh/CultMesh.kt | 42 +- packages/cultmesh-py/tests/test_cultmesh.py | 6 +- packages/cultmesh-ts/test/cultmesh.test.ts | 2 +- .../cultnet-py/src/cultnet_py/interop_peer.py | 10 +- .../src/cultnet_py/schema_catalog.py | 2 +- packages/cultnet-py/tests/test_cultnet.py | 6 +- ...net.document-mutation-contract.schema.json | 40 - .../cultnet.document-put-raw.schema.json | 19 - .../cultnet.document-put.schema.json | 19 - .../cultnet.document-record.schema.json | 26 - .../contracts/cultnet.error.schema.json | 15 - .../contracts/cultnet.hello.schema.json | 41 - .../contracts/cultnet.login.schema.json | 19 - .../cultnet.raw-document-record.schema.json | 32 - .../contracts/cultnet.register.schema.json | 21 - .../cultnet.sample-change-name.schema.json | 15 - .../contracts/cultnet.sample-chat.schema.json | 15 - ...ultnet.schema-catalog-response.schema.json | 22 - .../cultnet.schema-descriptor.schema.json | 39 - .../cultnet.shard-catalog-request.schema.json | 19 - .../cultnet.snapshot-request.schema.json | 23 - .../cultnet.snapshot-response.schema.json | 22 - .../contracts/cultnet.verify.schema.json | 17 - .../examples/cultnet_interop_peer.rs | 8 +- packages/cultnet-rs/src/schema_discovery.rs | 44 +- packages/cultnet-rs/tests/cultnet.rs | 4 +- .../cultnet.document-delete.schema.json | 19 - ...net.document-mutation-contract.schema.json | 40 - .../cultnet.document-put.schema.json | 19 - .../cultnet.document-record.schema.json | 26 - .../contracts/cultnet.hello.schema.json | 41 - .../cultnet.login-success.schema.json | 17 - .../cultnet.operation-request.schema.json | 19 - .../cultnet.raw-document-record.schema.json | 32 - .../contracts/cultnet.sample-chat.schema.json | 15 - ...cultnet.schema-catalog-request.schema.json | 31 - ...ultnet.schema-catalog-response.schema.json | 22 - .../cultnet.schema-descriptor.schema.json | 39 - ...cultnet.shard-catalog-response.schema.json | 47 - .../cultnet.snapshot-response-raw.schema.json | 22 - .../cultnet.snapshot-response.schema.json | 22 - .../cultnet.transport-profile.schema.json | 100 --- .../contracts/cultnet.verify.schema.json | 17 - .../ghostlight.agent-state.schema.json | 845 ------------------ .../cultnet.discovery-announce.schema.json | 35 - .../cultnet.discovery-probe.schema.json | 17 - packages/cultnet-ts/package.json | 4 +- packages/cultnet-ts/src/contracts.ts | 66 +- .../generated/swarm-contracts.generated.ts | 2 +- .../test/interop/cultnet-interop-shared.ts | 8 +- .../test/interop/cultnet-interop.test.ts | 6 +- .../tools/generate-swarm-contracts.mjs | 2 +- .../swarm-contracts.manifest.json | 2 +- .../cultnet.database-change-raw.schema.json | 24 - .../cultnet.database-subscribe.schema.json | 19 - .../cultnet.database-unsubscribe.schema.json | 13 - .../cultnet.document-delete.schema.json | 19 - .../cultnet.document-put-raw.schema.json | 19 - .../Contracts/cultnet.error.schema.json | 15 - .../cultnet.login-success.schema.json | 17 - .../Contracts/cultnet.login.schema.json | 19 - .../cultnet.operation-response.schema.json | 20 - .../Contracts/cultnet.register.schema.json | 21 - .../cultnet.sample-change-name.schema.json | 15 - ...cultnet.schema-catalog-request.schema.json | 31 - .../cultnet.snapshot-request.schema.json | 23 - .../cultnet.snapshot-response-raw.schema.json | 22 - .../cultnet.transport-profile.schema.json | 100 --- .../ghostlight.agent-state.schema.json | 845 ------------------ .../GameCult.Networking.csproj | 2 +- .../Program.cs | 8 +- 107 files changed, 145 insertions(+), 3198 deletions(-) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultmesh.session-accepted.schema.json (89%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultmesh.session-open.schema.json (88%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultmesh.verse-catalog-request.schema.json (82%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultmesh.verse-catalog-response.schema.json (96%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet-distributed-database.md (100%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultnet.database-change-raw.schema.json (89%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultnet.database-subscribe.schema.json (89%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultnet.database-unsubscribe.schema.json (80%) rename {packages/cultnet-rs/contracts => contracts/cultnet}/cultnet.document-delete.schema.json (83%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet.document-mutation-contract.schema.json (90%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultnet.document-put-raw.schema.json (81%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet.document-put.schema.json (82%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet.document-record.schema.json (87%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultnet.error.schema.json (78%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet.hello.schema.json (92%) rename {packages/cultnet-rs/contracts => contracts/cultnet}/cultnet.login-success.schema.json (80%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultnet.login.schema.json (83%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet.operation-request.schema.json (88%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultnet.operation-response.schema.json (89%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet.raw-document-record.schema.json (89%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultnet.register.schema.json (84%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultnet.sample-change-name.schema.json (77%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet.sample-chat.schema.json (77%) rename {packages/cultnet-rs/contracts => contracts/cultnet}/cultnet.schema-catalog-request.schema.json (87%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet.schema-catalog-response.schema.json (82%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet.schema-descriptor.schema.json (90%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultnet.shard-catalog-request.schema.json (82%) rename {packages/cultnet-rs/contracts => contracts/cultnet}/cultnet.shard-catalog-response.schema.json (93%) rename {packages/cultnet-ts/contracts => contracts/cultnet}/cultnet.snapshot-request.schema.json (86%) rename {packages/cultnet-rs/contracts => contracts/cultnet}/cultnet.snapshot-response-raw.schema.json (82%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet.snapshot-response.schema.json (83%) rename {packages/cultnet-rs/contracts => contracts/cultnet}/cultnet.transport-profile.schema.json (96%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet.verify.schema.json (81%) rename {src/GameCult.Networking/Contracts => contracts/cultnet}/cultnet.witness-artifact-bundle.schema.json (96%) rename {packages/cultnet-rs/contracts => contracts/cultnet}/ghostlight.agent-state.schema.json (100%) rename {packages/cultnet-ts/integration/contracts => contracts/cultnet/interop}/cultnet.interop-note.schema.json (86%) delete mode 100644 packages/cultnet-rs/contracts/cultnet.document-mutation-contract.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.document-put-raw.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.document-put.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.document-record.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.error.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.hello.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.login.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.raw-document-record.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.register.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.sample-change-name.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.sample-chat.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.schema-catalog-response.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.schema-descriptor.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.shard-catalog-request.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.snapshot-request.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.snapshot-response.schema.json delete mode 100644 packages/cultnet-rs/contracts/cultnet.verify.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.document-delete.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.document-mutation-contract.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.document-put.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.document-record.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.hello.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.login-success.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.operation-request.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.raw-document-record.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.sample-chat.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.schema-catalog-request.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.schema-catalog-response.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.schema-descriptor.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.shard-catalog-response.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.snapshot-response-raw.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.snapshot-response.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.transport-profile.schema.json delete mode 100644 packages/cultnet-ts/contracts/cultnet.verify.schema.json delete mode 100644 packages/cultnet-ts/contracts/ghostlight.agent-state.schema.json delete mode 100644 packages/cultnet-ts/integration/contracts/cultnet.discovery-announce.schema.json delete mode 100644 packages/cultnet-ts/integration/contracts/cultnet.discovery-probe.schema.json rename packages/cultnet-ts/{contracts => tools}/swarm-contracts.manifest.json (76%) delete mode 100644 src/GameCult.Networking/Contracts/cultnet.database-change-raw.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.database-subscribe.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.database-unsubscribe.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.document-delete.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.document-put-raw.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.error.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.login-success.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.login.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.operation-response.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.register.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.sample-change-name.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.schema-catalog-request.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.snapshot-request.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.snapshot-response-raw.schema.json delete mode 100644 src/GameCult.Networking/Contracts/cultnet.transport-profile.schema.json delete mode 100644 src/GameCult.Networking/Contracts/ghostlight.agent-state.schema.json diff --git a/packages/cultnet-ts/contracts/cultmesh.session-accepted.schema.json b/contracts/cultnet/cultmesh.session-accepted.schema.json similarity index 89% rename from packages/cultnet-ts/contracts/cultmesh.session-accepted.schema.json rename to contracts/cultnet/cultmesh.session-accepted.schema.json index aca1ff2b..8e5f64e4 100644 --- a/packages/cultnet-ts/contracts/cultmesh.session-accepted.schema.json +++ b/contracts/cultnet/cultmesh.session-accepted.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultmesh.session-accepted.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultmesh.session-accepted.schema.json", "title": "CultMesh Session Accepted", "type": "object", "required": ["schemaVersion", "messageId", "accepted", "verseId", "authorityRuntimeId", "protocolId", "routeGeneration", "clientNonce", "providerKeyId", "providerSignature"], diff --git a/packages/cultnet-ts/contracts/cultmesh.session-open.schema.json b/contracts/cultnet/cultmesh.session-open.schema.json similarity index 88% rename from packages/cultnet-ts/contracts/cultmesh.session-open.schema.json rename to contracts/cultnet/cultmesh.session-open.schema.json index 937f3e28..a24bc1c1 100644 --- a/packages/cultnet-ts/contracts/cultmesh.session-open.schema.json +++ b/contracts/cultnet/cultmesh.session-open.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultmesh.session-open.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultmesh.session-open.schema.json", "title": "CultMesh Session Open", "type": "object", "required": ["schemaVersion", "messageId", "sourceRuntimeId", "verseId", "authorityRuntimeId", "protocolId", "routeGeneration", "clientNonce"], diff --git a/packages/cultnet-ts/contracts/cultmesh.verse-catalog-request.schema.json b/contracts/cultnet/cultmesh.verse-catalog-request.schema.json similarity index 82% rename from packages/cultnet-ts/contracts/cultmesh.verse-catalog-request.schema.json rename to contracts/cultnet/cultmesh.verse-catalog-request.schema.json index e99b9dea..26763d1a 100644 --- a/packages/cultnet-ts/contracts/cultmesh.verse-catalog-request.schema.json +++ b/contracts/cultnet/cultmesh.verse-catalog-request.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultmesh.verse-catalog-request.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultmesh.verse-catalog-request.schema.json", "title": "CultMesh Verse Catalog Request", "type": "object", "required": ["schemaVersion", "messageId"], diff --git a/packages/cultnet-ts/contracts/cultmesh.verse-catalog-response.schema.json b/contracts/cultnet/cultmesh.verse-catalog-response.schema.json similarity index 96% rename from packages/cultnet-ts/contracts/cultmesh.verse-catalog-response.schema.json rename to contracts/cultnet/cultmesh.verse-catalog-response.schema.json index 464908ad..1583051e 100644 --- a/packages/cultnet-ts/contracts/cultmesh.verse-catalog-response.schema.json +++ b/contracts/cultnet/cultmesh.verse-catalog-response.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultmesh.verse-catalog-response.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultmesh.verse-catalog-response.schema.json", "title": "CultMesh Verse Catalog Response", "type": "object", "required": ["schemaVersion", "messageId", "verses"], diff --git a/src/GameCult.Networking/Contracts/cultnet-distributed-database.md b/contracts/cultnet/cultnet-distributed-database.md similarity index 100% rename from src/GameCult.Networking/Contracts/cultnet-distributed-database.md rename to contracts/cultnet/cultnet-distributed-database.md diff --git a/packages/cultnet-ts/contracts/cultnet.database-change-raw.schema.json b/contracts/cultnet/cultnet.database-change-raw.schema.json similarity index 89% rename from packages/cultnet-ts/contracts/cultnet.database-change-raw.schema.json rename to contracts/cultnet/cultnet.database-change-raw.schema.json index dd650fa0..2725a5af 100644 --- a/packages/cultnet-ts/contracts/cultnet.database-change-raw.schema.json +++ b/contracts/cultnet/cultnet.database-change-raw.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.database-change-raw.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.database-change-raw.schema.json", "title": "CultNet Raw Database Change Message", "type": "object", "required": ["schemaVersion", "messageId", "subscriptionId", "changeKind"], diff --git a/packages/cultnet-ts/contracts/cultnet.database-subscribe.schema.json b/contracts/cultnet/cultnet.database-subscribe.schema.json similarity index 89% rename from packages/cultnet-ts/contracts/cultnet.database-subscribe.schema.json rename to contracts/cultnet/cultnet.database-subscribe.schema.json index 08304199..5d9c2b5f 100644 --- a/packages/cultnet-ts/contracts/cultnet.database-subscribe.schema.json +++ b/contracts/cultnet/cultnet.database-subscribe.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.database-subscribe.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.database-subscribe.schema.json", "title": "CultNet Database Subscribe Message", "type": "object", "required": ["schemaVersion", "messageId", "subscriptionId", "includeSnapshot"], diff --git a/packages/cultnet-ts/contracts/cultnet.database-unsubscribe.schema.json b/contracts/cultnet/cultnet.database-unsubscribe.schema.json similarity index 80% rename from packages/cultnet-ts/contracts/cultnet.database-unsubscribe.schema.json rename to contracts/cultnet/cultnet.database-unsubscribe.schema.json index 7d4b0855..a5ea02d1 100644 --- a/packages/cultnet-ts/contracts/cultnet.database-unsubscribe.schema.json +++ b/contracts/cultnet/cultnet.database-unsubscribe.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.database-unsubscribe.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.database-unsubscribe.schema.json", "title": "CultNet Database Unsubscribe Message", "type": "object", "required": ["schemaVersion", "messageId", "subscriptionId"], diff --git a/packages/cultnet-rs/contracts/cultnet.document-delete.schema.json b/contracts/cultnet/cultnet.document-delete.schema.json similarity index 83% rename from packages/cultnet-rs/contracts/cultnet.document-delete.schema.json rename to contracts/cultnet/cultnet.document-delete.schema.json index 265bcaf2..3ba5b3fc 100644 --- a/packages/cultnet-rs/contracts/cultnet.document-delete.schema.json +++ b/contracts/cultnet/cultnet.document-delete.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-delete.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.document-delete.schema.json", "title": "CultNet Document Delete Message", "type": "object", "required": [ diff --git a/src/GameCult.Networking/Contracts/cultnet.document-mutation-contract.schema.json b/contracts/cultnet/cultnet.document-mutation-contract.schema.json similarity index 90% rename from src/GameCult.Networking/Contracts/cultnet.document-mutation-contract.schema.json rename to contracts/cultnet/cultnet.document-mutation-contract.schema.json index e444fef0..4f8c9b78 100644 --- a/src/GameCult.Networking/Contracts/cultnet.document-mutation-contract.schema.json +++ b/contracts/cultnet/cultnet.document-mutation-contract.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-mutation-contract.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.document-mutation-contract.schema.json", "title": "CultNet Document Mutation Contract", "type": "object", "required": [ diff --git a/packages/cultnet-ts/contracts/cultnet.document-put-raw.schema.json b/contracts/cultnet/cultnet.document-put-raw.schema.json similarity index 81% rename from packages/cultnet-ts/contracts/cultnet.document-put-raw.schema.json rename to contracts/cultnet/cultnet.document-put-raw.schema.json index 3c178d03..c2c98030 100644 --- a/packages/cultnet-ts/contracts/cultnet.document-put-raw.schema.json +++ b/contracts/cultnet/cultnet.document-put-raw.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-put-raw.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.document-put-raw.schema.json", "title": "CultNet Raw Document Put Message", "type": "object", "required": [ diff --git a/src/GameCult.Networking/Contracts/cultnet.document-put.schema.json b/contracts/cultnet/cultnet.document-put.schema.json similarity index 82% rename from src/GameCult.Networking/Contracts/cultnet.document-put.schema.json rename to contracts/cultnet/cultnet.document-put.schema.json index a04f5fca..2b92051a 100644 --- a/src/GameCult.Networking/Contracts/cultnet.document-put.schema.json +++ b/contracts/cultnet/cultnet.document-put.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-put.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.document-put.schema.json", "title": "CultNet Document Put Message", "type": "object", "required": [ diff --git a/src/GameCult.Networking/Contracts/cultnet.document-record.schema.json b/contracts/cultnet/cultnet.document-record.schema.json similarity index 87% rename from src/GameCult.Networking/Contracts/cultnet.document-record.schema.json rename to contracts/cultnet/cultnet.document-record.schema.json index 94301dc5..5512c789 100644 --- a/src/GameCult.Networking/Contracts/cultnet.document-record.schema.json +++ b/contracts/cultnet/cultnet.document-record.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-record.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.document-record.schema.json", "title": "CultNet Document Record", "type": "object", "required": [ diff --git a/packages/cultnet-ts/contracts/cultnet.error.schema.json b/contracts/cultnet/cultnet.error.schema.json similarity index 78% rename from packages/cultnet-ts/contracts/cultnet.error.schema.json rename to contracts/cultnet/cultnet.error.schema.json index af6da9cf..08dc1e45 100644 --- a/packages/cultnet-ts/contracts/cultnet.error.schema.json +++ b/contracts/cultnet/cultnet.error.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.error.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.error.schema.json", "title": "CultNet Error Message", "type": "object", "required": [ diff --git a/src/GameCult.Networking/Contracts/cultnet.hello.schema.json b/contracts/cultnet/cultnet.hello.schema.json similarity index 92% rename from src/GameCult.Networking/Contracts/cultnet.hello.schema.json rename to contracts/cultnet/cultnet.hello.schema.json index a557dc3f..36f9e8cf 100644 --- a/src/GameCult.Networking/Contracts/cultnet.hello.schema.json +++ b/contracts/cultnet/cultnet.hello.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.hello.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.hello.schema.json", "title": "CultNet Hello Message", "type": "object", "required": [ diff --git a/packages/cultnet-rs/contracts/cultnet.login-success.schema.json b/contracts/cultnet/cultnet.login-success.schema.json similarity index 80% rename from packages/cultnet-rs/contracts/cultnet.login-success.schema.json rename to contracts/cultnet/cultnet.login-success.schema.json index 3d8a4591..fbe41690 100644 --- a/packages/cultnet-rs/contracts/cultnet.login-success.schema.json +++ b/contracts/cultnet/cultnet.login-success.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.login-success.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.login-success.schema.json", "title": "CultNet Login Success Message", "type": "object", "required": [ diff --git a/packages/cultnet-ts/contracts/cultnet.login.schema.json b/contracts/cultnet/cultnet.login.schema.json similarity index 83% rename from packages/cultnet-ts/contracts/cultnet.login.schema.json rename to contracts/cultnet/cultnet.login.schema.json index 62f49599..86154717 100644 --- a/packages/cultnet-ts/contracts/cultnet.login.schema.json +++ b/contracts/cultnet/cultnet.login.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.login.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.login.schema.json", "title": "CultNet Login Message", "type": "object", "required": [ diff --git a/src/GameCult.Networking/Contracts/cultnet.operation-request.schema.json b/contracts/cultnet/cultnet.operation-request.schema.json similarity index 88% rename from src/GameCult.Networking/Contracts/cultnet.operation-request.schema.json rename to contracts/cultnet/cultnet.operation-request.schema.json index 07cd9d8d..6008e339 100644 --- a/src/GameCult.Networking/Contracts/cultnet.operation-request.schema.json +++ b/contracts/cultnet/cultnet.operation-request.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.operation-request.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.operation-request.schema.json", "title": "CultNet Operation Request", "type": "object", "required": ["schemaVersion", "messageId", "serviceId", "operation", "payloadSchema", "payload"], diff --git a/packages/cultnet-ts/contracts/cultnet.operation-response.schema.json b/contracts/cultnet/cultnet.operation-response.schema.json similarity index 89% rename from packages/cultnet-ts/contracts/cultnet.operation-response.schema.json rename to contracts/cultnet/cultnet.operation-response.schema.json index c3be917d..21f2675c 100644 --- a/packages/cultnet-ts/contracts/cultnet.operation-response.schema.json +++ b/contracts/cultnet/cultnet.operation-response.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.operation-response.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.operation-response.schema.json", "title": "CultNet Operation Response", "type": "object", "required": ["schemaVersion", "messageId", "serviceId", "operation", "status", "payloadSchema", "payload"], diff --git a/src/GameCult.Networking/Contracts/cultnet.raw-document-record.schema.json b/contracts/cultnet/cultnet.raw-document-record.schema.json similarity index 89% rename from src/GameCult.Networking/Contracts/cultnet.raw-document-record.schema.json rename to contracts/cultnet/cultnet.raw-document-record.schema.json index 3348a5fa..2892a717 100644 --- a/src/GameCult.Networking/Contracts/cultnet.raw-document-record.schema.json +++ b/contracts/cultnet/cultnet.raw-document-record.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.raw-document-record.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.raw-document-record.schema.json", "title": "CultNet Raw Document Record", "type": "object", "required": [ diff --git a/packages/cultnet-ts/contracts/cultnet.register.schema.json b/contracts/cultnet/cultnet.register.schema.json similarity index 84% rename from packages/cultnet-ts/contracts/cultnet.register.schema.json rename to contracts/cultnet/cultnet.register.schema.json index 77286f3e..c5f5ce42 100644 --- a/packages/cultnet-ts/contracts/cultnet.register.schema.json +++ b/contracts/cultnet/cultnet.register.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.register.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.register.schema.json", "title": "CultNet Register Message", "type": "object", "required": [ diff --git a/packages/cultnet-ts/contracts/cultnet.sample-change-name.schema.json b/contracts/cultnet/cultnet.sample-change-name.schema.json similarity index 77% rename from packages/cultnet-ts/contracts/cultnet.sample-change-name.schema.json rename to contracts/cultnet/cultnet.sample-change-name.schema.json index fc3fe057..2408a449 100644 --- a/packages/cultnet-ts/contracts/cultnet.sample-change-name.schema.json +++ b/contracts/cultnet/cultnet.sample-change-name.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.sample-change-name.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.sample-change-name.schema.json", "title": "CultNet Sample Change Name Message", "type": "object", "required": [ diff --git a/src/GameCult.Networking/Contracts/cultnet.sample-chat.schema.json b/contracts/cultnet/cultnet.sample-chat.schema.json similarity index 77% rename from src/GameCult.Networking/Contracts/cultnet.sample-chat.schema.json rename to contracts/cultnet/cultnet.sample-chat.schema.json index 8426fb57..e9bf544c 100644 --- a/src/GameCult.Networking/Contracts/cultnet.sample-chat.schema.json +++ b/contracts/cultnet/cultnet.sample-chat.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.sample-chat.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.sample-chat.schema.json", "title": "CultNet Sample Chat Message", "type": "object", "required": [ diff --git a/packages/cultnet-rs/contracts/cultnet.schema-catalog-request.schema.json b/contracts/cultnet/cultnet.schema-catalog-request.schema.json similarity index 87% rename from packages/cultnet-rs/contracts/cultnet.schema-catalog-request.schema.json rename to contracts/cultnet/cultnet.schema-catalog-request.schema.json index 611733d2..5459129b 100644 --- a/packages/cultnet-rs/contracts/cultnet.schema-catalog-request.schema.json +++ b/contracts/cultnet/cultnet.schema-catalog-request.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.schema-catalog-request.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.schema-catalog-request.schema.json", "title": "CultNet Schema Catalog Request Message", "type": "object", "required": [ diff --git a/src/GameCult.Networking/Contracts/cultnet.schema-catalog-response.schema.json b/contracts/cultnet/cultnet.schema-catalog-response.schema.json similarity index 82% rename from src/GameCult.Networking/Contracts/cultnet.schema-catalog-response.schema.json rename to contracts/cultnet/cultnet.schema-catalog-response.schema.json index fa371e48..dbda847e 100644 --- a/src/GameCult.Networking/Contracts/cultnet.schema-catalog-response.schema.json +++ b/contracts/cultnet/cultnet.schema-catalog-response.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.schema-catalog-response.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.schema-catalog-response.schema.json", "title": "CultNet Schema Catalog Response Message", "type": "object", "required": [ diff --git a/src/GameCult.Networking/Contracts/cultnet.schema-descriptor.schema.json b/contracts/cultnet/cultnet.schema-descriptor.schema.json similarity index 90% rename from src/GameCult.Networking/Contracts/cultnet.schema-descriptor.schema.json rename to contracts/cultnet/cultnet.schema-descriptor.schema.json index 23796857..77b6648c 100644 --- a/src/GameCult.Networking/Contracts/cultnet.schema-descriptor.schema.json +++ b/contracts/cultnet/cultnet.schema-descriptor.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.schema-descriptor.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.schema-descriptor.schema.json", "title": "CultNet Schema Descriptor", "type": "object", "required": [ diff --git a/packages/cultnet-ts/contracts/cultnet.shard-catalog-request.schema.json b/contracts/cultnet/cultnet.shard-catalog-request.schema.json similarity index 82% rename from packages/cultnet-ts/contracts/cultnet.shard-catalog-request.schema.json rename to contracts/cultnet/cultnet.shard-catalog-request.schema.json index c91ee09b..7e443e60 100644 --- a/packages/cultnet-ts/contracts/cultnet.shard-catalog-request.schema.json +++ b/contracts/cultnet/cultnet.shard-catalog-request.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "cultnet.shard_catalog_request.v0", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.shard-catalog-request.schema.json", "type": "object", "required": ["schemaVersion", "messageId"], "additionalProperties": false, diff --git a/packages/cultnet-rs/contracts/cultnet.shard-catalog-response.schema.json b/contracts/cultnet/cultnet.shard-catalog-response.schema.json similarity index 93% rename from packages/cultnet-rs/contracts/cultnet.shard-catalog-response.schema.json rename to contracts/cultnet/cultnet.shard-catalog-response.schema.json index b2661786..f0b846ac 100644 --- a/packages/cultnet-rs/contracts/cultnet.shard-catalog-response.schema.json +++ b/contracts/cultnet/cultnet.shard-catalog-response.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "cultnet.shard_catalog_response.v0", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.shard-catalog-response.schema.json", "type": "object", "required": ["schemaVersion", "messageId", "shards"], "additionalProperties": false, diff --git a/packages/cultnet-ts/contracts/cultnet.snapshot-request.schema.json b/contracts/cultnet/cultnet.snapshot-request.schema.json similarity index 86% rename from packages/cultnet-ts/contracts/cultnet.snapshot-request.schema.json rename to contracts/cultnet/cultnet.snapshot-request.schema.json index 76666e3c..9571669c 100644 --- a/packages/cultnet-ts/contracts/cultnet.snapshot-request.schema.json +++ b/contracts/cultnet/cultnet.snapshot-request.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.snapshot-request.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.snapshot-request.schema.json", "title": "CultNet Snapshot Request Message", "type": "object", "required": [ diff --git a/packages/cultnet-rs/contracts/cultnet.snapshot-response-raw.schema.json b/contracts/cultnet/cultnet.snapshot-response-raw.schema.json similarity index 82% rename from packages/cultnet-rs/contracts/cultnet.snapshot-response-raw.schema.json rename to contracts/cultnet/cultnet.snapshot-response-raw.schema.json index a84bc50d..538f48de 100644 --- a/packages/cultnet-rs/contracts/cultnet.snapshot-response-raw.schema.json +++ b/contracts/cultnet/cultnet.snapshot-response-raw.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.snapshot-response-raw.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.snapshot-response-raw.schema.json", "title": "CultNet Raw Snapshot Response Message", "type": "object", "required": [ diff --git a/src/GameCult.Networking/Contracts/cultnet.snapshot-response.schema.json b/contracts/cultnet/cultnet.snapshot-response.schema.json similarity index 83% rename from src/GameCult.Networking/Contracts/cultnet.snapshot-response.schema.json rename to contracts/cultnet/cultnet.snapshot-response.schema.json index 940822ce..87daf147 100644 --- a/src/GameCult.Networking/Contracts/cultnet.snapshot-response.schema.json +++ b/contracts/cultnet/cultnet.snapshot-response.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.snapshot-response.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.snapshot-response.schema.json", "title": "CultNet Snapshot Response Message", "type": "object", "required": [ diff --git a/packages/cultnet-rs/contracts/cultnet.transport-profile.schema.json b/contracts/cultnet/cultnet.transport-profile.schema.json similarity index 96% rename from packages/cultnet-rs/contracts/cultnet.transport-profile.schema.json rename to contracts/cultnet/cultnet.transport-profile.schema.json index 90261c79..dff458f1 100644 --- a/packages/cultnet-rs/contracts/cultnet.transport-profile.schema.json +++ b/contracts/cultnet/cultnet.transport-profile.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.transport-profile.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.transport-profile.schema.json", "title": "CultNet Transport Profile", "type": "object", "required": [ diff --git a/src/GameCult.Networking/Contracts/cultnet.verify.schema.json b/contracts/cultnet/cultnet.verify.schema.json similarity index 81% rename from src/GameCult.Networking/Contracts/cultnet.verify.schema.json rename to contracts/cultnet/cultnet.verify.schema.json index 1f992aa8..301ae338 100644 --- a/src/GameCult.Networking/Contracts/cultnet.verify.schema.json +++ b/contracts/cultnet/cultnet.verify.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.verify.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.verify.schema.json", "title": "CultNet Verify Message", "type": "object", "required": [ diff --git a/src/GameCult.Networking/Contracts/cultnet.witness-artifact-bundle.schema.json b/contracts/cultnet/cultnet.witness-artifact-bundle.schema.json similarity index 96% rename from src/GameCult.Networking/Contracts/cultnet.witness-artifact-bundle.schema.json rename to contracts/cultnet/cultnet.witness-artifact-bundle.schema.json index a9cfbcef..6dd6971d 100644 --- a/src/GameCult.Networking/Contracts/cultnet.witness-artifact-bundle.schema.json +++ b/contracts/cultnet/cultnet.witness-artifact-bundle.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.witness-artifact-bundle.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.witness-artifact-bundle.schema.json", "title": "CultNet Witness Artifact Bundle", "type": "object", "required": [ diff --git a/packages/cultnet-rs/contracts/ghostlight.agent-state.schema.json b/contracts/cultnet/ghostlight.agent-state.schema.json similarity index 100% rename from packages/cultnet-rs/contracts/ghostlight.agent-state.schema.json rename to contracts/cultnet/ghostlight.agent-state.schema.json diff --git a/packages/cultnet-ts/integration/contracts/cultnet.interop-note.schema.json b/contracts/cultnet/interop/cultnet.interop-note.schema.json similarity index 86% rename from packages/cultnet-ts/integration/contracts/cultnet.interop-note.schema.json rename to contracts/cultnet/interop/cultnet.interop-note.schema.json index 8f5d7058..631eec72 100644 --- a/packages/cultnet-ts/integration/contracts/cultnet.interop-note.schema.json +++ b/contracts/cultnet/interop/cultnet.interop-note.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-note.schema.json", + "$id": "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-note.schema.json", "title": "CultNet Interop Note", "type": "object", "required": [ diff --git a/packages/cultmesh-kotlin/src/main/kotlin/org/gamecult/cultmesh/CultMesh.kt b/packages/cultmesh-kotlin/src/main/kotlin/org/gamecult/cultmesh/CultMesh.kt index 104bd1b9..2117c2d8 100644 --- a/packages/cultmesh-kotlin/src/main/kotlin/org/gamecult/cultmesh/CultMesh.kt +++ b/packages/cultmesh-kotlin/src/main/kotlin/org/gamecult/cultmesh/CultMesh.kt @@ -1359,7 +1359,7 @@ fun defineCultNetSchemaDescriptor( schemaJson = schemaJson, ) -private const val cultNetSchemaBase = "https://github.com/GameCult/cultnet-ts/contracts" +private const val cultNetSchemaBase = "https://github.com/GameCult/CultLib/contracts/cultnet" private data class CultNetBuiltInSchemaSpec( val schemaVersion: String, @@ -1377,58 +1377,58 @@ private val cultNetBuiltInSchemaSpecs = listOf( title = "CultNet Hello Message", schemaId = "$cultNetSchemaBase/cultnet.hello.schema.json", requiredFields = listOf("schemaVersion", "runtimeId", "runtimeKind"), - contentHash = "1d2114bf0c92a2dd5e07dd735778ceeb939402c6424550d6d281d9db423f56b3", + contentHash = "f660ef803f293e2882650b3981c6eed835bd8e595c9b880d6c6271e0dcbd79e4", ), CultNetBuiltInSchemaSpec( schemaVersion = "cultnet.document_delete.v0", title = "CultNet Document Delete Message", schemaId = "$cultNetSchemaBase/cultnet.document-delete.schema.json", requiredFields = listOf("schemaVersion", "messageId", "schemaId", "recordKey"), - contentHash = "037f7cf1b30756904e0bfada6bcff486269378997afbe3c4b6fc5c573fc8a4df", + contentHash = "ed7dc202e4f1ebe0d88c5d60c81c53005b44a2557698d3d3c5d2126c01b40f08", ), CultNetBuiltInSchemaSpec( schemaVersion = "cultnet.document_put_raw.v0", title = "CultNet Raw Document Put Message", schemaId = "$cultNetSchemaBase/cultnet.document-put-raw.schema.json", - contentHash = "b61e7e6cce8508653fbeccc4d956ef211c853a174d67c7e1903ce294e15985a2", + contentHash = "34b61b14b49cfc887728673f08aa0f33df7ccd401e79c77d3bc324c72e547177", ), CultNetBuiltInSchemaSpec( schemaVersion = "cultnet.snapshot_request.v0", title = "CultNet Snapshot Request Message", schemaId = "$cultNetSchemaBase/cultnet.snapshot-request.schema.json", - contentHash = "9f6546f51a1aab85978554e6908d7a59e96b3329feff7b35022be210495dd721", + contentHash = "05267d9b5eb450d4aa8979179f74ba3aec2f3a82fead7ba4a16ab5462c7750fa", ), CultNetBuiltInSchemaSpec( schemaVersion = "cultnet.snapshot_response_raw.v0", title = "CultNet Raw Snapshot Response Message", schemaId = "$cultNetSchemaBase/cultnet.snapshot-response-raw.schema.json", - contentHash = "0dbca3338a3ae5d4011aed2c973c75b9b47b6b9dfc0874459ac56da01fef4582", + contentHash = "fdefbdf5d6b0844dd0eabe2c7430d054295d78e41289f96b227dc39f4aab78b9", ), CultNetBuiltInSchemaSpec( schemaVersion = "cultnet.schema_catalog_request.v0", title = "CultNet Schema Catalog Request Message", schemaId = "$cultNetSchemaBase/cultnet.schema-catalog-request.schema.json", wireContracts = listOf("cultnet.schema.v0", "gamecult.networking.v0"), - contentHash = "bdd49b44428daf24b514c521e53027ec944aecfebb39ca0d10967661c303e096", + contentHash = "ed6d63e29de2d492bb831f030b26ff49ba6883cd2be791ec4936c385f765c76a", ), CultNetBuiltInSchemaSpec( schemaVersion = "cultnet.schema_catalog_response.v0", title = "CultNet Schema Catalog Response Message", schemaId = "$cultNetSchemaBase/cultnet.schema-catalog-response.schema.json", wireContracts = listOf("cultnet.schema.v0", "gamecult.networking.v0"), - contentHash = "b158de53d1ca614eacf2e05767122fb4b9e06504c037ad76c649cffdf71dd648", + contentHash = "10b4835d33181fe4b93a33e39b63886c5514899e93682de786e298f7e4a213e9", ), CultNetBuiltInSchemaSpec( schemaVersion = "cultnet.shard_catalog_request.v0", title = "CultNet Shard Catalog Request Message", - schemaId = "cultnet.shard_catalog_request.v0", - contentHash = "0abd131a1db12f6731010333b86e104d550160bd58f539b18413a2b61198fa38", + schemaId = "$cultNetSchemaBase/cultnet.shard-catalog-request.schema.json", + contentHash = "b4edecd8a24f68ebccf0aca9b429d234618ff7e8858a10123d0b328aeae7eb3f", ), CultNetBuiltInSchemaSpec( schemaVersion = "cultnet.shard_catalog_response.v0", title = "CultNet Shard Catalog Response Message", - schemaId = "cultnet.shard_catalog_response.v0", - contentHash = "93a0e90ac81bc6ab21b68925ad25e381edfac8773232333679d3275141cff37b", + schemaId = "$cultNetSchemaBase/cultnet.shard-catalog-response.schema.json", + contentHash = "d86a94c57d7820483912b8b5cef6214ac951d34cb2641d2d21dcb1f1bc0263c0", ), CultNetBuiltInSchemaSpec( schemaVersion = "cultnet.shard_log_request.v0", @@ -1468,7 +1468,7 @@ private val cultNetBuiltInSchemaSpecs = listOf( schemaId = "$cultNetSchemaBase/cultnet.transport-profile.schema.json", kind = "shared_contract", requiredFields = listOf("schemaVersion", "runtimeId", "transports"), - contentHash = "84473264f543ca3443267999e43d72b7993b61b7b2ac53c642c9cbe8b6de0217", + contentHash = "63dfd484e1fd332c167caadf52cb5b4fe12d5ffea4415206c3ef111c196507aa", ), ) @@ -3717,16 +3717,16 @@ private fun cultNetReconnectControllerSchedulesAttemptsAndReset() { private const val interopDocumentType = "cultnet.interop-note" private const val interopSchemaVersion = "cultnet.interop_note.v0" private const val interopMutationIntentType = "cultnet.interop-note-mutation-intent" -private const val interopMutationIntentSchemaId = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-note-mutation-intent.schema.json" +private const val interopMutationIntentSchemaId = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-note-mutation-intent.schema.json" private const val interopMutationIntentSchemaVersion = "cultnet.interop_note_mutation_intent.v0" private const val interopMutationReceiptType = "cultnet.interop-note-mutation-receipt" -private const val interopMutationReceiptSchemaId = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-note-mutation-receipt.schema.json" +private const val interopMutationReceiptSchemaId = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-note-mutation-receipt.schema.json" private const val interopMutationReceiptSchemaVersion = "cultnet.interop_note_mutation_receipt.v0" private const val interopFireCommandType = "cultnet.interop-fire-weapon-command" -private const val interopFireCommandSchemaId = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-fire-weapon-command.schema.json" +private const val interopFireCommandSchemaId = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-fire-weapon-command.schema.json" private const val interopFireCommandSchemaVersion = "cultnet.interop_fire_weapon_command.v0" private const val interopFireReceiptType = "cultnet.interop-fire-weapon-receipt" -private const val interopFireReceiptSchemaId = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-fire-weapon-receipt.schema.json" +private const val interopFireReceiptSchemaId = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-fire-weapon-receipt.schema.json" private const val interopFireReceiptSchemaVersion = "cultnet.interop_fire_weapon_receipt.v0" private const val rudpInteropConnectionId = 0x43554c54L private const val rudpInteropMaxFragmentBytes = 1024 @@ -4627,11 +4627,11 @@ private fun cultNetBuiltInSchemaCatalogAdvertisesWireContracts() { check(schemaCatalogRequest["wireContracts"] == listOf("cultnet.schema.v0", "gamecult.networking.v0")) check(!schemaCatalogRequest.containsKey("schemaJson")) val shardCatalogRequest = schemas.single { it["schemaVersion"] == "cultnet.shard_catalog_request.v0" } - check(shardCatalogRequest["schemaId"] == "cultnet.shard_catalog_request.v0") + check(shardCatalogRequest["schemaId"] == "$cultNetSchemaBase/cultnet.shard-catalog-request.schema.json") check(shardCatalogRequest["wireContracts"] == listOf("cultnet.schema.v0")) - check(shardCatalogRequest["contentHash"] == "0abd131a1db12f6731010333b86e104d550160bd58f539b18413a2b61198fa38") + check(shardCatalogRequest["contentHash"] == "b4edecd8a24f68ebccf0aca9b429d234618ff7e8858a10123d0b328aeae7eb3f") val shardCatalogResponse = schemas.single { it["schemaVersion"] == "cultnet.shard_catalog_response.v0" } - check(shardCatalogResponse["schemaId"] == "cultnet.shard_catalog_response.v0") + check(shardCatalogResponse["schemaId"] == "$cultNetSchemaBase/cultnet.shard-catalog-response.schema.json") check(shardCatalogResponse["wireContracts"] == listOf("cultnet.schema.v0")) val inlineCatalog = cultNetBuiltInSchemaCatalog(includeSchemaJson = true) @@ -4644,7 +4644,7 @@ private fun cultNetBuiltInSchemaCatalogAdvertisesWireContracts() { ) val transportProfile = mapList(transportResponse.body["schemas"]).single() check(transportProfile["kind"] == "shared_contract") - check(transportProfile["contentHash"] == "84473264f543ca3443267999e43d72b7993b61b7b2ac53c642c9cbe8b6de0217") + check(transportProfile["contentHash"] == "63dfd484e1fd332c167caadf52cb5b4fe12d5ffea4415206c3ef111c196507aa") check(!transportProfile.containsKey("schemaJson")) val filteredTransportCatalog = CultMesh.createBuiltInSchemaCatalog( diff --git a/packages/cultmesh-py/tests/test_cultmesh.py b/packages/cultmesh-py/tests/test_cultmesh.py index b6a21bb8..8cb2801f 100644 --- a/packages/cultmesh-py/tests/test_cultmesh.py +++ b/packages/cultmesh-py/tests/test_cultmesh.py @@ -1759,11 +1759,11 @@ class CultMeshTests(unittest.TestCase): ) self.assertEqual( builtins.list()[0].schema_id, - "https://github.com/GameCult/cultnet-ts/contracts/cultnet.transport-profile.schema.json", + "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.transport-profile.schema.json", ) self.assertIsNone(builtins.list()[0].schema_json) peer_exchange_schema_id = ( - "https://github.com/GameCult/cultnet-ts/contracts/cultmesh.peer-exchange-request.schema.json" + "https://github.com/GameCult/CultLib/contracts/cultnet/cultmesh.peer-exchange-request.schema.json" ) filtered_builtin = CultMesh.create_builtin_schema_catalog( include_schema_json=True, @@ -4033,7 +4033,7 @@ class CultMeshTests(unittest.TestCase): self.assertIn("cultmesh.peer_exchange_response.v0", wire_descriptors) self.assertIn("cultnet.error.v0", {descriptor.schema_version for descriptor in synced_wire_descriptors}) self.assertIn("cultnet.document_put_raw.v0", {descriptor.schema_version for descriptor in synced_wire_descriptors}) - self.assertIsNotNone(synced_schema_catalog.get("https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-put-raw.schema.json")) + self.assertIsNotNone(synced_schema_catalog.get("https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.document-put-raw.schema.json")) self.assertEqual(snapshot_response["documents"][0]["recordKey"], "note:1") self.assertEqual(typed_snapshot_response.documents[0].record_key, "note:1") self.assertEqual(typed_snapshot_response.documents[0].schema_id, "mesh.server_note.v1") diff --git a/packages/cultmesh-ts/test/cultmesh.test.ts b/packages/cultmesh-ts/test/cultmesh.test.ts index 16d51e1e..77bd635c 100644 --- a/packages/cultmesh-ts/test/cultmesh.test.ts +++ b/packages/cultmesh-ts/test/cultmesh.test.ts @@ -2509,7 +2509,7 @@ test("CultMesh TS branded facade exposes schema and shard catalogs", () => { ); assert.equal( builtIns.get( - "https://github.com/GameCult/cultnet-ts/contracts/cultnet.transport-profile.schema.json", + "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.transport-profile.schema.json", )?.schemaVersion, "cultnet.transport_profile.v0", ); diff --git a/packages/cultnet-py/src/cultnet_py/interop_peer.py b/packages/cultnet-py/src/cultnet_py/interop_peer.py index ca3c692d..2eaaf0ac 100644 --- a/packages/cultnet-py/src/cultnet_py/interop_peer.py +++ b/packages/cultnet-py/src/cultnet_py/interop_peer.py @@ -55,19 +55,19 @@ from .transport import ( INTEROP_DOCUMENT_TYPE = "cultnet.interop-note" INTEROP_SCHEMA_VERSION = "cultnet.interop_note.v0" INTEROP_MUTATION_INTENT_DOCUMENT_TYPE = "cultnet.interop-note-mutation-intent" -INTEROP_MUTATION_INTENT_SCHEMA_ID = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-note-mutation-intent.schema.json" +INTEROP_MUTATION_INTENT_SCHEMA_ID = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-note-mutation-intent.schema.json" INTEROP_MUTATION_INTENT_SCHEMA_VERSION = "cultnet.interop_note_mutation_intent.v0" INTEROP_MUTATION_RECEIPT_DOCUMENT_TYPE = "cultnet.interop-note-mutation-receipt" -INTEROP_MUTATION_RECEIPT_SCHEMA_ID = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-note-mutation-receipt.schema.json" +INTEROP_MUTATION_RECEIPT_SCHEMA_ID = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-note-mutation-receipt.schema.json" INTEROP_MUTATION_RECEIPT_SCHEMA_VERSION = "cultnet.interop_note_mutation_receipt.v0" INTEROP_FIRE_COMMAND_DOCUMENT_TYPE = "cultnet.interop-fire-weapon-command" -INTEROP_FIRE_COMMAND_SCHEMA_ID = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-fire-weapon-command.schema.json" +INTEROP_FIRE_COMMAND_SCHEMA_ID = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-fire-weapon-command.schema.json" INTEROP_FIRE_COMMAND_SCHEMA_VERSION = "cultnet.interop_fire_weapon_command.v0" INTEROP_FIRE_RECEIPT_DOCUMENT_TYPE = "cultnet.interop-fire-weapon-receipt" -INTEROP_FIRE_RECEIPT_SCHEMA_ID = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-fire-weapon-receipt.schema.json" +INTEROP_FIRE_RECEIPT_SCHEMA_ID = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-fire-weapon-receipt.schema.json" INTEROP_FIRE_RECEIPT_SCHEMA_VERSION = "cultnet.interop_fire_weapon_receipt.v0" WITNESS_ARTIFACT_BUNDLE_DOCUMENT_TYPE = "cultnet.witness_artifact_bundle" -WITNESS_ARTIFACT_BUNDLE_SCHEMA_ID = "https://github.com/GameCult/cultnet-ts/contracts/cultnet.witness-artifact-bundle.schema.json" +WITNESS_ARTIFACT_BUNDLE_SCHEMA_ID = "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.witness-artifact-bundle.schema.json" WITNESS_ARTIFACT_BUNDLE_SCHEMA_VERSION = "cultnet.witness_artifact_bundle.v0" SIMULATION_FACT_SCHEMA_ID = simulation_fact_document.catalog_entry().schema_id DISCOVERY_PROBE_SCHEMA_VERSION = "cultnet.discovery_probe.v0" diff --git a/packages/cultnet-py/src/cultnet_py/schema_catalog.py b/packages/cultnet-py/src/cultnet_py/schema_catalog.py index 1471ef4e..6d71b3cd 100644 --- a/packages/cultnet-py/src/cultnet_py/schema_catalog.py +++ b/packages/cultnet-py/src/cultnet_py/schema_catalog.py @@ -6,7 +6,7 @@ from dataclasses import dataclass, field from typing import Any INTEROP_WIRE_CONTRACT = "cultnet.schema.v0" -CULTNET_SCHEMA_BASE = "https://github.com/GameCult/cultnet-ts/contracts" +CULTNET_SCHEMA_BASE = "https://github.com/GameCult/CultLib/contracts/cultnet" VERSE_CATALOG_REQUEST = "cultmesh.verse_catalog_request.v0" PEER_EXCHANGE_REQUEST = "cultmesh.peer_exchange_request.v0" TRANSPORT_PROFILE_SCHEMA_VERSION = "cultnet.transport_profile.v0" diff --git a/packages/cultnet-py/tests/test_cultnet.py b/packages/cultnet-py/tests/test_cultnet.py index 171a34b9..4c57f42b 100644 --- a/packages/cultnet-py/tests/test_cultnet.py +++ b/packages/cultnet-py/tests/test_cultnet.py @@ -1677,7 +1677,7 @@ class CultNetTests(unittest.TestCase): self.assertIn("operations", mutation_contract["properties"]) self.assertEqual( hello_schema["properties"]["transportProfiles"]["items"]["$ref"], - "https://github.com/GameCult/cultnet-ts/contracts/cultnet.transport-profile.schema.json", + "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.transport-profile.schema.json", ) consensus_schema = json.loads(by_version["cultnet.simulation_consensus_candidate.v0"]["schemaJson"]) @@ -1686,7 +1686,7 @@ class CultNetTests(unittest.TestCase): def test_cultnet_schema_catalog_applies_filters_and_responses(self) -> None: catalog = wire_message_schema_catalog(include_schema_json=True) - descriptor = catalog.get("https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-put-raw.schema.json") + descriptor = catalog.get("https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.document-put-raw.schema.json") self.assertIsNotNone(descriptor) assert descriptor is not None self.assertEqual(descriptor.kind, "wire_message") @@ -1902,7 +1902,7 @@ class CultNetTests(unittest.TestCase): runtime_kind="python", display_name="Python Interop Test", agent_id="python-interop-test-agent", - schema_path=str(Path("packages/cultnet-ts/integration/contracts/cultnet.interop-note.schema.json")), + schema_path=str(Path("contracts/cultnet/interop/cultnet.interop-note.schema.json")), ) binding = state.bindings["note"] logged_value = { diff --git a/packages/cultnet-rs/contracts/cultnet.document-mutation-contract.schema.json b/packages/cultnet-rs/contracts/cultnet.document-mutation-contract.schema.json deleted file mode 100644 index e444fef0..00000000 --- a/packages/cultnet-rs/contracts/cultnet.document-mutation-contract.schema.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-mutation-contract.schema.json", - "title": "CultNet Document Mutation Contract", - "type": "object", - "required": [ - "documentType", - "operations", - "authority" - ], - "additionalProperties": false, - "properties": { - "documentType": { "type": "string", "minLength": 1 }, - "payloadSchemaVersion": { "type": "string", "minLength": 1 }, - "operations": { - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "enum": ["snapshot", "documentPut", "documentDelete", "intentSubmit", "receiptWatch"] - } - }, - "authority": { - "type": "string", - "enum": ["readOnly", "localUser", "coordinator", "runtime", "denied"] - }, - "intentDocumentTypes": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "receiptDocumentTypes": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "notes": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.document-put-raw.schema.json b/packages/cultnet-rs/contracts/cultnet.document-put-raw.schema.json deleted file mode 100644 index 3c178d03..00000000 --- a/packages/cultnet-rs/contracts/cultnet.document-put-raw.schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-put-raw.schema.json", - "title": "CultNet Raw Document Put Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "document" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.document_put_raw.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "document": { - "$ref": "./cultnet.raw-document-record.schema.json" - } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.document-put.schema.json b/packages/cultnet-rs/contracts/cultnet.document-put.schema.json deleted file mode 100644 index a04f5fca..00000000 --- a/packages/cultnet-rs/contracts/cultnet.document-put.schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-put.schema.json", - "title": "CultNet Document Put Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "document" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.document_put.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "document": { - "$ref": "./cultnet.document-record.schema.json" - } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.document-record.schema.json b/packages/cultnet-rs/contracts/cultnet.document-record.schema.json deleted file mode 100644 index 94301dc5..00000000 --- a/packages/cultnet-rs/contracts/cultnet.document-record.schema.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-record.schema.json", - "title": "CultNet Document Record", - "type": "object", - "required": [ - "schemaId", - "recordKey", - "storedAt", - "payload" - ], - "additionalProperties": false, - "properties": { - "schemaId": { "type": "string", "minLength": 1 }, - "recordKey": { "type": "string", "minLength": 1 }, - "storedAt": { "type": "string", "minLength": 1 }, - "payload": {}, - "sourceRuntimeId": { "type": "string", "minLength": 1 }, - "sourceAgentId": { "type": "string", "minLength": 1 }, - "sourceRole": { "type": "string", "minLength": 1 }, - "tags": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.error.schema.json b/packages/cultnet-rs/contracts/cultnet.error.schema.json deleted file mode 100644 index af6da9cf..00000000 --- a/packages/cultnet-rs/contracts/cultnet.error.schema.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.error.schema.json", - "title": "CultNet Error Message", - "type": "object", - "required": [ - "schemaVersion", - "error" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.error.v0" }, - "error": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.hello.schema.json b/packages/cultnet-rs/contracts/cultnet.hello.schema.json deleted file mode 100644 index a557dc3f..00000000 --- a/packages/cultnet-rs/contracts/cultnet.hello.schema.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.hello.schema.json", - "title": "CultNet Hello Message", - "type": "object", - "required": [ - "schemaVersion", - "runtimeId", - "runtimeKind" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.hello.v0" }, - "runtimeId": { "type": "string", "minLength": 1 }, - "runtimeKind": { "type": "string", "minLength": 1 }, - "agentId": { "type": "string", "minLength": 1 }, - "role": { "type": "string", "minLength": 1 }, - "displayName": { "type": "string", "minLength": 1 }, - "supportedDocumentTypes": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "supportedMutationContracts": { - "type": "array", - "items": { - "$ref": "./cultnet.document-mutation-contract.schema.json" - } - }, - "supportedMessageVersions": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "transportProfiles": { - "type": "array", - "items": { - "$ref": "./cultnet.transport-profile.schema.json" - } - }, - "supportsSchemaCatalog": { "type": "boolean" } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.login.schema.json b/packages/cultnet-rs/contracts/cultnet.login.schema.json deleted file mode 100644 index 62f49599..00000000 --- a/packages/cultnet-rs/contracts/cultnet.login.schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.login.schema.json", - "title": "CultNet Login Message", - "type": "object", - "required": [ - "schemaVersion", - "nonce", - "auth", - "password" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.login.v0" }, - "nonce": { "type": "string", "minLength": 1 }, - "auth": { "type": "string", "minLength": 1 }, - "password": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.raw-document-record.schema.json b/packages/cultnet-rs/contracts/cultnet.raw-document-record.schema.json deleted file mode 100644 index 3348a5fa..00000000 --- a/packages/cultnet-rs/contracts/cultnet.raw-document-record.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.raw-document-record.schema.json", - "title": "CultNet Raw Document Record", - "type": "object", - "required": [ - "schemaId", - "recordKey", - "storedAt", - "payloadEncoding", - "payload" - ], - "additionalProperties": false, - "properties": { - "schemaId": { "type": "string", "minLength": 1 }, - "recordKey": { "type": "string", "minLength": 1 }, - "storedAt": { "type": "string", "minLength": 1 }, - "payloadEncoding": { "const": "messagepack" }, - "payload": { - "type": "string", - "contentEncoding": "base64", - "x-cult-runtime-type": "bytes" - }, - "sourceRuntimeId": { "type": "string", "minLength": 1 }, - "sourceAgentId": { "type": "string", "minLength": 1 }, - "sourceRole": { "type": "string", "minLength": 1 }, - "tags": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.register.schema.json b/packages/cultnet-rs/contracts/cultnet.register.schema.json deleted file mode 100644 index 77286f3e..00000000 --- a/packages/cultnet-rs/contracts/cultnet.register.schema.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.register.schema.json", - "title": "CultNet Register Message", - "type": "object", - "required": [ - "schemaVersion", - "nonce", - "email", - "password", - "name" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.register.v0" }, - "nonce": { "type": "string", "minLength": 1 }, - "email": { "type": "string", "minLength": 1 }, - "password": { "type": "string", "minLength": 1 }, - "name": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.sample-change-name.schema.json b/packages/cultnet-rs/contracts/cultnet.sample-change-name.schema.json deleted file mode 100644 index fc3fe057..00000000 --- a/packages/cultnet-rs/contracts/cultnet.sample-change-name.schema.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.sample-change-name.schema.json", - "title": "CultNet Sample Change Name Message", - "type": "object", - "required": [ - "schemaVersion", - "name" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.sample.change_name.v0" }, - "name": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.sample-chat.schema.json b/packages/cultnet-rs/contracts/cultnet.sample-chat.schema.json deleted file mode 100644 index 8426fb57..00000000 --- a/packages/cultnet-rs/contracts/cultnet.sample-chat.schema.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.sample-chat.schema.json", - "title": "CultNet Sample Chat Message", - "type": "object", - "required": [ - "schemaVersion", - "text" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.sample.chat.v0" }, - "text": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.schema-catalog-response.schema.json b/packages/cultnet-rs/contracts/cultnet.schema-catalog-response.schema.json deleted file mode 100644 index fa371e48..00000000 --- a/packages/cultnet-rs/contracts/cultnet.schema-catalog-response.schema.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.schema-catalog-response.schema.json", - "title": "CultNet Schema Catalog Response Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "schemas" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.schema_catalog_response.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "schemas": { - "type": "array", - "items": { - "$ref": "./cultnet.schema-descriptor.schema.json" - } - } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.schema-descriptor.schema.json b/packages/cultnet-rs/contracts/cultnet.schema-descriptor.schema.json deleted file mode 100644 index 23796857..00000000 --- a/packages/cultnet-rs/contracts/cultnet.schema-descriptor.schema.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.schema-descriptor.schema.json", - "title": "CultNet Schema Descriptor", - "type": "object", - "required": [ - "schemaId", - "kind", - "wireContracts", - "contentHash" - ], - "additionalProperties": false, - "properties": { - "schemaId": { "type": "string", "minLength": 1 }, - "kind": { - "type": "string", - "enum": [ - "wire_message", - "document_payload", - "shared_contract" - ] - }, - "schemaVersion": { "type": "string", "minLength": 1 }, - "documentType": { "type": "string", "minLength": 1 }, - "title": { "type": "string", "minLength": 1 }, - "wireContracts": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "cultnet.schema.v0", - "gamecult.networking.v0" - ] - } - }, - "contentHash": { "type": "string", "minLength": 1 }, - "schemaJson": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.shard-catalog-request.schema.json b/packages/cultnet-rs/contracts/cultnet.shard-catalog-request.schema.json deleted file mode 100644 index c91ee09b..00000000 --- a/packages/cultnet-rs/contracts/cultnet.shard-catalog-request.schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "cultnet.shard_catalog_request.v0", - "type": "object", - "required": ["schemaVersion", "messageId"], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.shard_catalog_request.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "schemaIds": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "recordKeys": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.snapshot-request.schema.json b/packages/cultnet-rs/contracts/cultnet.snapshot-request.schema.json deleted file mode 100644 index 712d7059..00000000 --- a/packages/cultnet-rs/contracts/cultnet.snapshot-request.schema.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.snapshot-request.schema.json", - "title": "CultNet Snapshot Request Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.snapshot_request.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "schemaIds": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "recordKeys": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.snapshot-response.schema.json b/packages/cultnet-rs/contracts/cultnet.snapshot-response.schema.json deleted file mode 100644 index 940822ce..00000000 --- a/packages/cultnet-rs/contracts/cultnet.snapshot-response.schema.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.snapshot-response.schema.json", - "title": "CultNet Snapshot Response Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "documents" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.snapshot_response.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "documents": { - "type": "array", - "items": { - "$ref": "./cultnet.document-record.schema.json" - } - } - } -} diff --git a/packages/cultnet-rs/contracts/cultnet.verify.schema.json b/packages/cultnet-rs/contracts/cultnet.verify.schema.json deleted file mode 100644 index 1f992aa8..00000000 --- a/packages/cultnet-rs/contracts/cultnet.verify.schema.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.verify.schema.json", - "title": "CultNet Verify Message", - "type": "object", - "required": [ - "schemaVersion", - "nonce", - "session" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.verify.v0" }, - "nonce": { "type": "string", "minLength": 1 }, - "session": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-rs/examples/cultnet_interop_peer.rs b/packages/cultnet-rs/examples/cultnet_interop_peer.rs index 562756b8..ad8d6fb9 100644 --- a/packages/cultnet-rs/examples/cultnet_interop_peer.rs +++ b/packages/cultnet-rs/examples/cultnet_interop_peer.rs @@ -55,16 +55,16 @@ use std::time::Instant; const INTEROP_DOCUMENT_TYPE: &str = "cultnet.interop-note"; const INTEROP_SCHEMA_VERSION: &str = "cultnet.interop_note.v0"; const MUTATION_INTENT_TYPE: &str = "cultnet.interop-note-mutation-intent"; -const MUTATION_INTENT_SCHEMA_ID: &str = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-note-mutation-intent.schema.json"; +const MUTATION_INTENT_SCHEMA_ID: &str = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-note-mutation-intent.schema.json"; const MUTATION_INTENT_SCHEMA_VERSION: &str = "cultnet.interop_note_mutation_intent.v0"; const MUTATION_RECEIPT_TYPE: &str = "cultnet.interop-note-mutation-receipt"; -const MUTATION_RECEIPT_SCHEMA_ID: &str = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-note-mutation-receipt.schema.json"; +const MUTATION_RECEIPT_SCHEMA_ID: &str = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-note-mutation-receipt.schema.json"; const MUTATION_RECEIPT_SCHEMA_VERSION: &str = "cultnet.interop_note_mutation_receipt.v0"; const FIRE_COMMAND_TYPE: &str = "cultnet.interop-fire-weapon-command"; -const FIRE_COMMAND_SCHEMA_ID: &str = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-fire-weapon-command.schema.json"; +const FIRE_COMMAND_SCHEMA_ID: &str = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-fire-weapon-command.schema.json"; const FIRE_COMMAND_SCHEMA_VERSION: &str = "cultnet.interop_fire_weapon_command.v0"; const FIRE_RECEIPT_TYPE: &str = "cultnet.interop-fire-weapon-receipt"; -const FIRE_RECEIPT_SCHEMA_ID: &str = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-fire-weapon-receipt.schema.json"; +const FIRE_RECEIPT_SCHEMA_ID: &str = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-fire-weapon-receipt.schema.json"; const FIRE_RECEIPT_SCHEMA_VERSION: &str = "cultnet.interop_fire_weapon_receipt.v0"; const DISCOVERY_ANNOUNCE_SCHEMA_VERSION: &str = "cultnet.discovery_announce.v0"; const RUDP_INTEROP_CONNECTION_ID: u32 = 0x43554C54; diff --git a/packages/cultnet-rs/src/schema_discovery.rs b/packages/cultnet-rs/src/schema_discovery.rs index 272323ba..a32bc7cb 100644 --- a/packages/cultnet-rs/src/schema_discovery.rs +++ b/packages/cultnet-rs/src/schema_discovery.rs @@ -194,28 +194,28 @@ pub fn builtin_schema_registry() -> Result { for registration in [ schema_registration( - include_str!("../contracts/cultnet.hello.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.hello.schema.json"), CultNetSchemaKind::WireMessage, vec![CultNetWireContract::CultNetSchemaV0], Some("cultnet.hello.v0"), None, )?, schema_registration( - include_str!("../contracts/cultnet.document-mutation-contract.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.document-mutation-contract.schema.json"), CultNetSchemaKind::SharedContract, vec![CultNetWireContract::CultNetSchemaV0], None, None, )?, schema_registration( - include_str!("../contracts/cultnet.transport-profile.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.transport-profile.schema.json"), CultNetSchemaKind::SharedContract, vec![CultNetWireContract::CultNetSchemaV0], Some("cultnet.transport_profile.v0"), None, )?, schema_registration( - include_str!("../contracts/cultnet.login.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.login.schema.json"), CultNetSchemaKind::WireMessage, vec![ CultNetWireContract::CultNetSchemaV0, @@ -225,7 +225,7 @@ pub fn builtin_schema_registry() -> Result { None, )?, schema_registration( - include_str!("../contracts/cultnet.register.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.register.schema.json"), CultNetSchemaKind::WireMessage, vec![ CultNetWireContract::CultNetSchemaV0, @@ -235,7 +235,7 @@ pub fn builtin_schema_registry() -> Result { None, )?, schema_registration( - include_str!("../contracts/cultnet.verify.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.verify.schema.json"), CultNetSchemaKind::WireMessage, vec![ CultNetWireContract::CultNetSchemaV0, @@ -245,7 +245,7 @@ pub fn builtin_schema_registry() -> Result { None, )?, schema_registration( - include_str!("../contracts/cultnet.login-success.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.login-success.schema.json"), CultNetSchemaKind::WireMessage, vec![ CultNetWireContract::CultNetSchemaV0, @@ -255,7 +255,7 @@ pub fn builtin_schema_registry() -> Result { None, )?, schema_registration( - include_str!("../contracts/cultnet.error.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.error.schema.json"), CultNetSchemaKind::WireMessage, vec![ CultNetWireContract::CultNetSchemaV0, @@ -265,7 +265,7 @@ pub fn builtin_schema_registry() -> Result { None, )?, schema_registration( - include_str!("../contracts/cultnet.sample-change-name.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.sample-change-name.schema.json"), CultNetSchemaKind::WireMessage, vec![ CultNetWireContract::CultNetSchemaV0, @@ -275,7 +275,7 @@ pub fn builtin_schema_registry() -> Result { None, )?, schema_registration( - include_str!("../contracts/cultnet.sample-chat.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.sample-chat.schema.json"), CultNetSchemaKind::WireMessage, vec![ CultNetWireContract::CultNetSchemaV0, @@ -285,56 +285,56 @@ pub fn builtin_schema_registry() -> Result { None, )?, schema_registration( - include_str!("../contracts/cultnet.document-put.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.document-put.schema.json"), CultNetSchemaKind::WireMessage, vec![CultNetWireContract::CultNetSchemaV0], Some("cultnet.document_put.v0"), None, )?, schema_registration( - include_str!("../contracts/cultnet.document-delete.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.document-delete.schema.json"), CultNetSchemaKind::WireMessage, vec![CultNetWireContract::CultNetSchemaV0], Some("cultnet.document_delete.v0"), None, )?, schema_registration( - include_str!("../contracts/cultnet.raw-document-record.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.raw-document-record.schema.json"), CultNetSchemaKind::SharedContract, vec![CultNetWireContract::CultNetSchemaV0], None, None, )?, schema_registration( - include_str!("../contracts/cultnet.document-put-raw.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.document-put-raw.schema.json"), CultNetSchemaKind::WireMessage, vec![CultNetWireContract::CultNetSchemaV0], Some("cultnet.document_put_raw.v0"), None, )?, schema_registration( - include_str!("../contracts/cultnet.snapshot-request.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.snapshot-request.schema.json"), CultNetSchemaKind::WireMessage, vec![CultNetWireContract::CultNetSchemaV0], Some("cultnet.snapshot_request.v0"), None, )?, schema_registration( - include_str!("../contracts/cultnet.snapshot-response.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.snapshot-response.schema.json"), CultNetSchemaKind::WireMessage, vec![CultNetWireContract::CultNetSchemaV0], Some("cultnet.snapshot_response.v0"), None, )?, schema_registration( - include_str!("../contracts/cultnet.snapshot-response-raw.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.snapshot-response-raw.schema.json"), CultNetSchemaKind::WireMessage, vec![CultNetWireContract::CultNetSchemaV0], Some("cultnet.snapshot_response_raw.v0"), None, )?, schema_registration( - include_str!("../contracts/cultnet.schema-catalog-request.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.schema-catalog-request.schema.json"), CultNetSchemaKind::WireMessage, vec![ CultNetWireContract::CultNetSchemaV0, @@ -344,7 +344,7 @@ pub fn builtin_schema_registry() -> Result { None, )?, schema_registration( - include_str!("../contracts/cultnet.schema-catalog-response.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.schema-catalog-response.schema.json"), CultNetSchemaKind::WireMessage, vec![ CultNetWireContract::CultNetSchemaV0, @@ -354,21 +354,21 @@ pub fn builtin_schema_registry() -> Result { None, )?, schema_registration( - include_str!("../contracts/cultnet.shard-catalog-request.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.shard-catalog-request.schema.json"), CultNetSchemaKind::WireMessage, vec![CultNetWireContract::CultNetSchemaV0], Some("cultnet.shard_catalog_request.v0"), None, )?, schema_registration( - include_str!("../contracts/cultnet.shard-catalog-response.schema.json"), + include_str!("../../../contracts/cultnet/cultnet.shard-catalog-response.schema.json"), CultNetSchemaKind::WireMessage, vec![CultNetWireContract::CultNetSchemaV0], Some("cultnet.shard_catalog_response.v0"), None, )?, schema_registration( - include_str!("../contracts/ghostlight.agent-state.schema.json"), + include_str!("../../../contracts/cultnet/ghostlight.agent-state.schema.json"), CultNetSchemaKind::DocumentPayload, vec![CultNetWireContract::CultNetSchemaV0], Some("ghostlight.agent_state.v0"), diff --git a/packages/cultnet-rs/tests/cultnet.rs b/packages/cultnet-rs/tests/cultnet.rs index b3adc7f4..678fb71d 100644 --- a/packages/cultnet-rs/tests/cultnet.rs +++ b/packages/cultnet-rs/tests/cultnet.rs @@ -1759,7 +1759,7 @@ fn cultmesh_facade_exposes_schema_registry_and_shard_catalog_owners() -> Result< }); assert!(shared_contracts.iter().any(|schema| { schema.schema_id - == "https://github.com/GameCult/cultnet-ts/contracts/cultnet.transport-profile.schema.json" + == "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.transport-profile.schema.json" && schema.schema_version.as_deref() == Some("cultnet.transport_profile.v0") })); @@ -2285,7 +2285,7 @@ fn builtin_schema_registry_advertises_canonical_ghostlight_schema_without_inline assert_eq!(transport_profile.kind, CultNetSchemaKind::SharedContract); assert_eq!( transport_profile.schema_id, - "https://github.com/GameCult/cultnet-ts/contracts/cultnet.transport-profile.schema.json" + "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.transport-profile.schema.json" ); assert_eq!( transport_profile.wire_contracts, diff --git a/packages/cultnet-ts/contracts/cultnet.document-delete.schema.json b/packages/cultnet-ts/contracts/cultnet.document-delete.schema.json deleted file mode 100644 index 265bcaf2..00000000 --- a/packages/cultnet-ts/contracts/cultnet.document-delete.schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-delete.schema.json", - "title": "CultNet Document Delete Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "schemaId", - "recordKey" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.document_delete.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "schemaId": { "type": "string", "minLength": 1 }, - "recordKey": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.document-mutation-contract.schema.json b/packages/cultnet-ts/contracts/cultnet.document-mutation-contract.schema.json deleted file mode 100644 index e444fef0..00000000 --- a/packages/cultnet-ts/contracts/cultnet.document-mutation-contract.schema.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-mutation-contract.schema.json", - "title": "CultNet Document Mutation Contract", - "type": "object", - "required": [ - "documentType", - "operations", - "authority" - ], - "additionalProperties": false, - "properties": { - "documentType": { "type": "string", "minLength": 1 }, - "payloadSchemaVersion": { "type": "string", "minLength": 1 }, - "operations": { - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "enum": ["snapshot", "documentPut", "documentDelete", "intentSubmit", "receiptWatch"] - } - }, - "authority": { - "type": "string", - "enum": ["readOnly", "localUser", "coordinator", "runtime", "denied"] - }, - "intentDocumentTypes": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "receiptDocumentTypes": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "notes": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.document-put.schema.json b/packages/cultnet-ts/contracts/cultnet.document-put.schema.json deleted file mode 100644 index a04f5fca..00000000 --- a/packages/cultnet-ts/contracts/cultnet.document-put.schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-put.schema.json", - "title": "CultNet Document Put Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "document" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.document_put.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "document": { - "$ref": "./cultnet.document-record.schema.json" - } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.document-record.schema.json b/packages/cultnet-ts/contracts/cultnet.document-record.schema.json deleted file mode 100644 index 94301dc5..00000000 --- a/packages/cultnet-ts/contracts/cultnet.document-record.schema.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-record.schema.json", - "title": "CultNet Document Record", - "type": "object", - "required": [ - "schemaId", - "recordKey", - "storedAt", - "payload" - ], - "additionalProperties": false, - "properties": { - "schemaId": { "type": "string", "minLength": 1 }, - "recordKey": { "type": "string", "minLength": 1 }, - "storedAt": { "type": "string", "minLength": 1 }, - "payload": {}, - "sourceRuntimeId": { "type": "string", "minLength": 1 }, - "sourceAgentId": { "type": "string", "minLength": 1 }, - "sourceRole": { "type": "string", "minLength": 1 }, - "tags": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.hello.schema.json b/packages/cultnet-ts/contracts/cultnet.hello.schema.json deleted file mode 100644 index a557dc3f..00000000 --- a/packages/cultnet-ts/contracts/cultnet.hello.schema.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.hello.schema.json", - "title": "CultNet Hello Message", - "type": "object", - "required": [ - "schemaVersion", - "runtimeId", - "runtimeKind" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.hello.v0" }, - "runtimeId": { "type": "string", "minLength": 1 }, - "runtimeKind": { "type": "string", "minLength": 1 }, - "agentId": { "type": "string", "minLength": 1 }, - "role": { "type": "string", "minLength": 1 }, - "displayName": { "type": "string", "minLength": 1 }, - "supportedDocumentTypes": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "supportedMutationContracts": { - "type": "array", - "items": { - "$ref": "./cultnet.document-mutation-contract.schema.json" - } - }, - "supportedMessageVersions": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "transportProfiles": { - "type": "array", - "items": { - "$ref": "./cultnet.transport-profile.schema.json" - } - }, - "supportsSchemaCatalog": { "type": "boolean" } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.login-success.schema.json b/packages/cultnet-ts/contracts/cultnet.login-success.schema.json deleted file mode 100644 index 3d8a4591..00000000 --- a/packages/cultnet-ts/contracts/cultnet.login-success.schema.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.login-success.schema.json", - "title": "CultNet Login Success Message", - "type": "object", - "required": [ - "schemaVersion", - "nonce", - "session" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.login_success.v0" }, - "nonce": { "type": "string", "minLength": 1 }, - "session": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.operation-request.schema.json b/packages/cultnet-ts/contracts/cultnet.operation-request.schema.json deleted file mode 100644 index 07cd9d8d..00000000 --- a/packages/cultnet-ts/contracts/cultnet.operation-request.schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.operation-request.schema.json", - "title": "CultNet Operation Request", - "type": "object", - "required": ["schemaVersion", "messageId", "serviceId", "operation", "payloadSchema", "payload"], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.operation_request.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "serviceId": { "type": "string", "minLength": 1 }, - "operation": { "type": "string", "minLength": 1 }, - "payloadSchema": { "type": "string", "minLength": 1 }, - "payloadEncoding": { "const": "messagepack-base64" }, - "payload": { "type": "string", "minLength": 1, "contentEncoding": "base64" }, - "sourceRuntimeId": { "type": "string", "minLength": 1 }, - "targetRuntimeId": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.raw-document-record.schema.json b/packages/cultnet-ts/contracts/cultnet.raw-document-record.schema.json deleted file mode 100644 index 3348a5fa..00000000 --- a/packages/cultnet-ts/contracts/cultnet.raw-document-record.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.raw-document-record.schema.json", - "title": "CultNet Raw Document Record", - "type": "object", - "required": [ - "schemaId", - "recordKey", - "storedAt", - "payloadEncoding", - "payload" - ], - "additionalProperties": false, - "properties": { - "schemaId": { "type": "string", "minLength": 1 }, - "recordKey": { "type": "string", "minLength": 1 }, - "storedAt": { "type": "string", "minLength": 1 }, - "payloadEncoding": { "const": "messagepack" }, - "payload": { - "type": "string", - "contentEncoding": "base64", - "x-cult-runtime-type": "bytes" - }, - "sourceRuntimeId": { "type": "string", "minLength": 1 }, - "sourceAgentId": { "type": "string", "minLength": 1 }, - "sourceRole": { "type": "string", "minLength": 1 }, - "tags": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.sample-chat.schema.json b/packages/cultnet-ts/contracts/cultnet.sample-chat.schema.json deleted file mode 100644 index 8426fb57..00000000 --- a/packages/cultnet-ts/contracts/cultnet.sample-chat.schema.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.sample-chat.schema.json", - "title": "CultNet Sample Chat Message", - "type": "object", - "required": [ - "schemaVersion", - "text" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.sample.chat.v0" }, - "text": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.schema-catalog-request.schema.json b/packages/cultnet-ts/contracts/cultnet.schema-catalog-request.schema.json deleted file mode 100644 index 611733d2..00000000 --- a/packages/cultnet-ts/contracts/cultnet.schema-catalog-request.schema.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.schema-catalog-request.schema.json", - "title": "CultNet Schema Catalog Request Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.schema_catalog_request.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "includeSchemaJson": { "type": "boolean" }, - "schemaIds": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "kinds": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "wire_message", - "document_payload", - "shared_contract" - ] - } - } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.schema-catalog-response.schema.json b/packages/cultnet-ts/contracts/cultnet.schema-catalog-response.schema.json deleted file mode 100644 index fa371e48..00000000 --- a/packages/cultnet-ts/contracts/cultnet.schema-catalog-response.schema.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.schema-catalog-response.schema.json", - "title": "CultNet Schema Catalog Response Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "schemas" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.schema_catalog_response.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "schemas": { - "type": "array", - "items": { - "$ref": "./cultnet.schema-descriptor.schema.json" - } - } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.schema-descriptor.schema.json b/packages/cultnet-ts/contracts/cultnet.schema-descriptor.schema.json deleted file mode 100644 index 23796857..00000000 --- a/packages/cultnet-ts/contracts/cultnet.schema-descriptor.schema.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.schema-descriptor.schema.json", - "title": "CultNet Schema Descriptor", - "type": "object", - "required": [ - "schemaId", - "kind", - "wireContracts", - "contentHash" - ], - "additionalProperties": false, - "properties": { - "schemaId": { "type": "string", "minLength": 1 }, - "kind": { - "type": "string", - "enum": [ - "wire_message", - "document_payload", - "shared_contract" - ] - }, - "schemaVersion": { "type": "string", "minLength": 1 }, - "documentType": { "type": "string", "minLength": 1 }, - "title": { "type": "string", "minLength": 1 }, - "wireContracts": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "cultnet.schema.v0", - "gamecult.networking.v0" - ] - } - }, - "contentHash": { "type": "string", "minLength": 1 }, - "schemaJson": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.shard-catalog-response.schema.json b/packages/cultnet-ts/contracts/cultnet.shard-catalog-response.schema.json deleted file mode 100644 index b2661786..00000000 --- a/packages/cultnet-ts/contracts/cultnet.shard-catalog-response.schema.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "cultnet.shard_catalog_response.v0", - "type": "object", - "required": ["schemaVersion", "messageId", "shards"], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.shard_catalog_response.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "shards": { - "type": "array", - "items": { "$ref": "#/$defs/shardDescriptor" } - } - }, - "$defs": { - "shardDescriptor": { - "type": "object", - "required": ["shardId", "ownerRuntimeId", "epoch"], - "additionalProperties": false, - "properties": { - "shardId": { "type": "string", "minLength": 1 }, - "ownerRuntimeId": { "type": "string", "minLength": 1 }, - "epoch": { "type": "integer", "minimum": 0 }, - "isPrimary": { "type": "boolean" }, - "schemaIds": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "keyPrefix": { "type": "string", "minLength": 1 }, - "primaryEndpoints": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "replicaEndpoints": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "readReplicaEndpoints": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "region": { "type": "string", "minLength": 1 }, - "authorityLeaseId": { "type": "string", "minLength": 1 } - } - } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.snapshot-response-raw.schema.json b/packages/cultnet-ts/contracts/cultnet.snapshot-response-raw.schema.json deleted file mode 100644 index a84bc50d..00000000 --- a/packages/cultnet-ts/contracts/cultnet.snapshot-response-raw.schema.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.snapshot-response-raw.schema.json", - "title": "CultNet Raw Snapshot Response Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "documents" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.snapshot_response_raw.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "documents": { - "type": "array", - "items": { - "$ref": "./cultnet.raw-document-record.schema.json" - } - } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.snapshot-response.schema.json b/packages/cultnet-ts/contracts/cultnet.snapshot-response.schema.json deleted file mode 100644 index 940822ce..00000000 --- a/packages/cultnet-ts/contracts/cultnet.snapshot-response.schema.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.snapshot-response.schema.json", - "title": "CultNet Snapshot Response Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "documents" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.snapshot_response.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "documents": { - "type": "array", - "items": { - "$ref": "./cultnet.document-record.schema.json" - } - } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.transport-profile.schema.json b/packages/cultnet-ts/contracts/cultnet.transport-profile.schema.json deleted file mode 100644 index 90261c79..00000000 --- a/packages/cultnet-ts/contracts/cultnet.transport-profile.schema.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.transport-profile.schema.json", - "title": "CultNet Transport Profile", - "type": "object", - "required": [ - "schemaVersion", - "runtimeId", - "transports" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.transport_profile.v0" }, - "runtimeId": { "type": "string", "minLength": 1 }, - "transports": { - "type": "array", - "items": { - "type": "object", - "required": [ - "transportId", - "protocol", - "channels" - ], - "additionalProperties": false, - "properties": { - "transportId": { "type": "string", "minLength": 1 }, - "protocol": { - "type": "string", - "enum": [ - "tcp_framed", - "litenetlib", - "websocket", - "rudp" - ] - }, - "host": { "type": "string", "minLength": 1 }, - "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, - "path": { "type": "string", "minLength": 1 }, - "discoveryGroup": { "type": "string", "minLength": 1 }, - "wireContracts": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "reconnectPolicy": { - "type": "object", - "required": [ - "schemaVersion", - "policyId", - "baseDelayMs", - "maxDelayMs", - "maxJitterMs" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.reconnect_policy.v0" }, - "policyId": { "type": "string", "minLength": 1 }, - "baseDelayMs": { "type": "integer", "minimum": 0 }, - "maxDelayMs": { "type": "integer", "minimum": 0 }, - "maxJitterMs": { "type": "integer", "minimum": 0 }, - "maxAttempts": { "type": "integer", "minimum": 1 } - } - }, - "channels": { - "type": "array", - "items": { - "type": "object", - "required": [ - "channelId", - "delivery", - "ordering" - ], - "additionalProperties": false, - "properties": { - "channelId": { "type": "string", "minLength": 1 }, - "delivery": { - "type": "string", - "enum": [ - "reliable", - "unreliable" - ] - }, - "ordering": { - "type": "string", - "enum": [ - "ordered", - "unordered", - "sequenced" - ] - }, - "maxPayloadBytes": { "type": "integer", "minimum": 1 }, - "maxFragmentBytes": { "type": "integer", "minimum": 1 }, - "maxPendingReliablePackets": { "type": "integer", "minimum": 1 } - } - } - } - } - } - } - } -} diff --git a/packages/cultnet-ts/contracts/cultnet.verify.schema.json b/packages/cultnet-ts/contracts/cultnet.verify.schema.json deleted file mode 100644 index 1f992aa8..00000000 --- a/packages/cultnet-ts/contracts/cultnet.verify.schema.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.verify.schema.json", - "title": "CultNet Verify Message", - "type": "object", - "required": [ - "schemaVersion", - "nonce", - "session" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.verify.v0" }, - "nonce": { "type": "string", "minLength": 1 }, - "session": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-ts/contracts/ghostlight.agent-state.schema.json b/packages/cultnet-ts/contracts/ghostlight.agent-state.schema.json deleted file mode 100644 index 6437cd01..00000000 --- a/packages/cultnet-ts/contracts/ghostlight.agent-state.schema.json +++ /dev/null @@ -1,845 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/Ghostlight/schemas/agent-state.schema.json", - "title": "Ghostlight Agent State Schema", - "description": "First canonical contract for Ghostlight agent, perception, relationship, event, scene, and dialogue-context state.", - "type": "object", - "required": [ - "schema_version", - "world", - "agents", - "relationships", - "events", - "scenes" - ], - "additionalProperties": false, - "properties": { - "schema_version": { - "const": "ghostlight.agent_state.v0" - }, - "world": { - "$ref": "#/$defs/world_state" - }, - "agents": { - "type": "array", - "items": { - "$ref": "#/$defs/agent" - } - }, - "relationships": { - "type": "array", - "items": { - "$ref": "#/$defs/relationship" - } - }, - "events": { - "type": "array", - "items": { - "$ref": "#/$defs/event" - } - }, - "scenes": { - "type": "array", - "items": { - "$ref": "#/$defs/scene" - } - } - }, - "$defs": { - "world_state": { - "type": "object", - "required": [ - "world_id", - "setting", - "time", - "canon_context" - ], - "additionalProperties": false, - "properties": { - "world_id": { - "type": "string" - }, - "setting": { - "type": "string" - }, - "time": { - "type": "object", - "required": [ - "label" - ], - "additionalProperties": true, - "properties": { - "label": { - "type": "string" - } - } - }, - "canon_context": { - "type": "array", - "items": { - "type": "string" - } - }, - "ambient_pressures": { - "type": "array", - "items": { - "$ref": "#/$defs/pressure" - } - } - } - }, - "agent": { - "type": "object", - "required": [ - "agent_id", - "identity", - "canonical_state", - "goals", - "memories", - "perceived_state_overlays" - ], - "additionalProperties": false, - "properties": { - "agent_id": { - "type": "string" - }, - "identity": { - "$ref": "#/$defs/identity" - }, - "canonical_state": { - "$ref": "#/$defs/canonical_state" - }, - "goals": { - "type": "array", - "items": { - "$ref": "#/$defs/goal" - } - }, - "memories": { - "$ref": "#/$defs/memory_bundle" - }, - "perceived_state_overlays": { - "type": "array", - "items": { - "$ref": "#/$defs/perceived_state_overlay" - } - } - } - }, - "identity": { - "type": "object", - "required": [ - "name", - "roles", - "origin", - "public_description" - ], - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "origin": { - "type": "string" - }, - "public_description": { - "type": "string" - }, - "private_notes": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "canonical_state": { - "type": "object", - "required": [ - "underlying_organization", - "stable_dispositions", - "behavioral_dimensions", - "presentation_strategy", - "voice_style", - "situational_state", - "values" - ], - "additionalProperties": false, - "properties": { - "underlying_organization": { - "$ref": "#/$defs/variable_map" - }, - "stable_dispositions": { - "$ref": "#/$defs/variable_map" - }, - "behavioral_dimensions": { - "$ref": "#/$defs/variable_map" - }, - "presentation_strategy": { - "$ref": "#/$defs/variable_map" - }, - "situational_state": { - "$ref": "#/$defs/variable_map" - }, - "values": { - "type": "array", - "items": { - "$ref": "#/$defs/value_commitment" - } - }, - "voice_style": { - "$ref": "#/$defs/variable_map" - } - } - }, - "variable_map": { - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/state_variable" - } - }, - "state_variable": { - "type": "object", - "required": [ - "mean", - "plasticity", - "current_activation" - ], - "additionalProperties": false, - "properties": { - "mean": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "plasticity": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "current_activation": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "evidence": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "value_commitment": { - "type": "object", - "required": [ - "value_id", - "label", - "priority", - "unforgivable_if_betrayed" - ], - "additionalProperties": false, - "properties": { - "value_id": { - "type": "string" - }, - "label": { - "type": "string" - }, - "priority": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "unforgivable_if_betrayed": { - "type": "boolean" - } - } - }, - "goal": { - "type": "object", - "required": [ - "goal_id", - "description", - "scope", - "priority", - "emotional_stake", - "status" - ], - "additionalProperties": false, - "properties": { - "goal_id": { - "type": "string" - }, - "description": { - "type": "string" - }, - "scope": { - "enum": [ - "immediate", - "scene", - "case", - "arc", - "life" - ] - }, - "priority": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "emotional_stake": { - "type": "string" - }, - "blockers": { - "type": "array", - "items": { - "type": "string" - } - }, - "status": { - "enum": [ - "active", - "blocked", - "dormant", - "resolved", - "abandoned" - ] - } - } - }, - "memory_bundle": { - "type": "object", - "required": [ - "episodic", - "semantic", - "relationship_summaries" - ], - "additionalProperties": false, - "properties": { - "episodic": { - "type": "array", - "items": { - "$ref": "#/$defs/memory" - } - }, - "semantic": { - "type": "array", - "items": { - "$ref": "#/$defs/memory" - } - }, - "relationship_summaries": { - "type": "array", - "items": { - "$ref": "#/$defs/memory" - } - } - } - }, - "memory": { - "type": "object", - "required": [ - "memory_id", - "summary", - "salience", - "confidence" - ], - "additionalProperties": false, - "properties": { - "memory_id": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "salience": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "confidence": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "linked_event_ids": { - "type": "array", - "items": { - "type": "string" - } - }, - "linked_relationship_id": { - "type": "string" - } - } - }, - "perceived_state_overlay": { - "type": "object", - "required": [ - "observer_agent_id", - "target_agent_id", - "perceived_dimensions", - "beliefs", - "distortions" - ], - "additionalProperties": false, - "properties": { - "observer_agent_id": { - "type": "string" - }, - "target_agent_id": { - "type": "string" - }, - "perceived_dimensions": { - "$ref": "#/$defs/inferred_variable_map" - }, - "beliefs": { - "type": "array", - "items": { - "$ref": "#/$defs/belief" - } - }, - "distortions": { - "type": "array", - "items": { - "enum": [ - "hostile_attribution", - "false_reassurance", - "overread_warmth", - "underread_threat", - "false_mask_detection", - "missed_mask_detection", - "status_injury", - "threat_amplification", - "institutional_suspicion_transfer", - "care_underread", - "mask_overfocus" - ] - } - } - } - }, - "belief": { - "type": "object", - "required": [ - "belief_id", - "claim", - "confidence" - ], - "additionalProperties": false, - "properties": { - "belief_id": { - "type": "string" - }, - "claim": { - "type": "string" - }, - "confidence": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "subject_id": { - "type": "string" - }, - "claim_type": { - "enum": [ - "fact", - "identity_inference", - "motive_inference", - "prediction", - "norm", - "value_read", - "relationship_read" - ] - }, - "evidence_event_ids": { - "type": "array", - "items": { - "type": "string" - } - }, - "visibility": { - "enum": [ - "private", - "shared", - "public", - "rumor" - ] - }, - "emotional_charge": { - "type": "number", - "minimum": 0, - "maximum": 1 - } - } - }, - "relationship": { - "type": "object", - "required": [ - "relationship_id", - "source_id", - "target_id", - "stance", - "summary" - ], - "additionalProperties": false, - "properties": { - "relationship_id": { - "type": "string" - }, - "source_id": { - "type": "string" - }, - "target_id": { - "type": "string" - }, - "stance": { - "$ref": "#/$defs/variable_map" - }, - "summary": { - "type": "string" - }, - "unresolved_incident_ids": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "event": { - "type": "object", - "required": [ - "event_id", - "kind", - "summary", - "participants", - "pressure_tags" - ], - "additionalProperties": false, - "properties": { - "event_id": { - "type": "string" - }, - "kind": { - "enum": [ - "dialogue", - "action", - "memory", - "relationship_shift", - "scene_outcome", - "author_note" - ] - }, - "summary": { - "type": "string" - }, - "participants": { - "type": "array", - "items": { - "type": "string" - } - }, - "pressure_tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "observed_exchange": { - "type": "array", - "items": { - "$ref": "#/$defs/event_exchange_turn" - } - }, - "private_interpretations": { - "type": "array", - "items": { - "$ref": "#/$defs/event_private_interpretation" - } - }, - "event_effects": { - "type": "array", - "items": { - "$ref": "#/$defs/event_effect" - } - } - } - }, - "scene": { - "type": "object", - "required": [ - "scene_id", - "location", - "participants", - "public_stakes", - "hidden_stakes", - "dialogue_context_packs" - ], - "additionalProperties": false, - "properties": { - "scene_id": { - "type": "string" - }, - "location": { - "type": "string" - }, - "participants": { - "type": "array", - "items": { - "type": "string" - } - }, - "public_stakes": { - "type": "array", - "items": { - "type": "string" - } - }, - "hidden_stakes": { - "type": "array", - "items": { - "type": "string" - } - }, - "dialogue_context_packs": { - "type": "array", - "items": { - "$ref": "#/$defs/dialogue_context_pack" - } - } - } - }, - "dialogue_context_pack": { - "type": "object", - "required": [ - "speaker_agent_id", - "listener_ids", - "speaker_local_truth", - "speaker_beliefs", - "active_memories", - "active_goals", - "presentation_constraints" - ], - "additionalProperties": false, - "properties": { - "speaker_agent_id": { - "type": "string" - }, - "listener_ids": { - "type": "array", - "items": { - "type": "string" - } - }, - "speaker_local_truth": { - "type": "array", - "items": { - "type": "string" - } - }, - "speaker_beliefs": { - "type": "array", - "items": { - "type": "string" - } - }, - "active_memories": { - "type": "array", - "items": { - "type": "string" - } - }, - "active_goals": { - "type": "array", - "items": { - "type": "string" - } - }, - "presentation_constraints": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pressure": { - "type": "object", - "required": [ - "pressure_id", - "label", - "intensity" - ], - "additionalProperties": false, - "properties": { - "pressure_id": { - "type": "string" - }, - "label": { - "type": "string" - }, - "intensity": { - "type": "number", - "minimum": 0, - "maximum": 1 - } - } - }, - "inferred_variable_map": { - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/inferred_state_variable" - } - }, - "inferred_state_variable": { - "type": "object", - "required": [ - "observed_activation", - "attributed_disposition", - "confidence" - ], - "additionalProperties": false, - "properties": { - "observed_activation": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "attributed_disposition": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "confidence": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "evidence": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "event_exchange_turn": { - "type": "object", - "required": [ - "speaker_id", - "utterance_summary", - "dialogue_function" - ], - "additionalProperties": false, - "properties": { - "speaker_id": { - "type": "string" - }, - "utterance_summary": { - "type": "string" - }, - "dialogue_function": { - "type": "string" - }, - "observable_cues": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "event_private_interpretation": { - "type": "object", - "required": [ - "agent_id", - "interpretation", - "confidence" - ], - "additionalProperties": false, - "properties": { - "agent_id": { - "type": "string" - }, - "interpretation": { - "type": "string" - }, - "attributed_motive": { - "type": "string" - }, - "appraisal_tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "confidence": { - "type": "number", - "minimum": 0, - "maximum": 1 - } - } - }, - "event_effect": { - "type": "object", - "required": [ - "agent_id", - "summary" - ], - "additionalProperties": false, - "properties": { - "agent_id": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "state_deltas": { - "type": "array", - "items": { - "$ref": "#/$defs/state_delta" - } - }, - "new_belief_ids": { - "type": "array", - "items": { - "type": "string" - } - }, - "memory_update_ids": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "state_delta": { - "type": "object", - "required": [ - "path", - "delta" - ], - "additionalProperties": false, - "properties": { - "path": { - "type": "string" - }, - "delta": { - "type": "number", - "minimum": -1, - "maximum": 1 - } - } - } - } -} diff --git a/packages/cultnet-ts/integration/contracts/cultnet.discovery-announce.schema.json b/packages/cultnet-ts/integration/contracts/cultnet.discovery-announce.schema.json deleted file mode 100644 index b6cb3abc..00000000 --- a/packages/cultnet-ts/integration/contracts/cultnet.discovery-announce.schema.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.discovery-announce.schema.json", - "title": "CultNet Discovery Announce", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "runtimeId", - "runtimeKind", - "displayName", - "tcpHost", - "tcpPort", - "wireContract", - "supportedDocumentTypes", - "supportsSchemaCatalog" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.discovery_announce.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "runtimeId": { "type": "string", "minLength": 1 }, - "runtimeKind": { "type": "string", "minLength": 1 }, - "displayName": { "type": "string", "minLength": 1 }, - "agentId": { "type": "string", "minLength": 1 }, - "tcpHost": { "type": "string", "minLength": 1 }, - "tcpPort": { "type": "integer", "minimum": 1, "maximum": 65535 }, - "wireContract": { "const": "cultnet.schema.v0" }, - "supportedDocumentTypes": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "supportsSchemaCatalog": { "type": "boolean" } - } -} diff --git a/packages/cultnet-ts/integration/contracts/cultnet.discovery-probe.schema.json b/packages/cultnet-ts/integration/contracts/cultnet.discovery-probe.schema.json deleted file mode 100644 index b4784bbc..00000000 --- a/packages/cultnet-ts/integration/contracts/cultnet.discovery-probe.schema.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.discovery-probe.schema.json", - "title": "CultNet Discovery Probe", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "requesterRuntimeId" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.discovery_probe.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "requesterRuntimeId": { "type": "string", "minLength": 1 } - } -} diff --git a/packages/cultnet-ts/package.json b/packages/cultnet-ts/package.json index f94f0bfa..82baeba0 100644 --- a/packages/cultnet-ts/package.json +++ b/packages/cultnet-ts/package.json @@ -17,13 +17,11 @@ } }, "files": [ - "dist", - "contracts" + "dist" ], "scripts": { "contracts:generate": "node tools/generate-swarm-contracts.mjs", "build": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json", - "prepack": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json", "typecheck": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json --pretty false", "test": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json && node ../../node_modules/typescript/bin/tsc -p tsconfig.test.json && node --test dist-test/test/*.test.js", "test:interop": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json && node ../../node_modules/typescript/bin/tsc -p tsconfig.test.json && node --test --test-force-exit dist-test/test/interop/*.test.js" diff --git a/packages/cultnet-ts/src/contracts.ts b/packages/cultnet-ts/src/contracts.ts index c71cdcc1..d44f391f 100644 --- a/packages/cultnet-ts/src/contracts.ts +++ b/packages/cultnet-ts/src/contracts.ts @@ -1,38 +1,38 @@ import Ajv2020, { type ValidateFunction } from "ajv/dist/2020"; -import documentRecordSchema from "../contracts/cultnet.document-record.schema.json"; -import helloSchema from "../contracts/cultnet.hello.schema.json"; -import loginSchema from "../contracts/cultnet.login.schema.json"; -import registerSchema from "../contracts/cultnet.register.schema.json"; -import verifySchema from "../contracts/cultnet.verify.schema.json"; -import loginSuccessSchema from "../contracts/cultnet.login-success.schema.json"; -import errorSchema from "../contracts/cultnet.error.schema.json"; -import sampleChangeNameSchema from "../contracts/cultnet.sample-change-name.schema.json"; -import sampleChatSchema from "../contracts/cultnet.sample-chat.schema.json"; -import documentPutSchema from "../contracts/cultnet.document-put.schema.json"; -import documentDeleteSchema from "../contracts/cultnet.document-delete.schema.json"; -import rawDocumentRecordSchema from "../contracts/cultnet.raw-document-record.schema.json"; -import documentPutRawSchema from "../contracts/cultnet.document-put-raw.schema.json"; -import documentMutationContractSchema from "../contracts/cultnet.document-mutation-contract.schema.json"; -import transportProfileSchema from "../contracts/cultnet.transport-profile.schema.json"; -import snapshotRequestSchema from "../contracts/cultnet.snapshot-request.schema.json"; -import snapshotResponseSchema from "../contracts/cultnet.snapshot-response.schema.json"; -import snapshotResponseRawSchema from "../contracts/cultnet.snapshot-response-raw.schema.json"; -import databaseSubscribeSchema from "../contracts/cultnet.database-subscribe.schema.json"; -import databaseUnsubscribeSchema from "../contracts/cultnet.database-unsubscribe.schema.json"; -import databaseChangeRawSchema from "../contracts/cultnet.database-change-raw.schema.json"; -import schemaDescriptorSchema from "../contracts/cultnet.schema-descriptor.schema.json"; -import schemaCatalogRequestSchema from "../contracts/cultnet.schema-catalog-request.schema.json"; -import schemaCatalogResponseSchema from "../contracts/cultnet.schema-catalog-response.schema.json"; -import shardCatalogRequestSchema from "../contracts/cultnet.shard-catalog-request.schema.json"; -import shardCatalogResponseSchema from "../contracts/cultnet.shard-catalog-response.schema.json"; -import operationRequestSchema from "../contracts/cultnet.operation-request.schema.json"; -import operationResponseSchema from "../contracts/cultnet.operation-response.schema.json"; -import verseCatalogRequestSchema from "../contracts/cultmesh.verse-catalog-request.schema.json"; -import verseCatalogResponseSchema from "../contracts/cultmesh.verse-catalog-response.schema.json"; -import sessionOpenSchema from "../contracts/cultmesh.session-open.schema.json"; -import sessionAcceptedSchema from "../contracts/cultmesh.session-accepted.schema.json"; -import ghostlightAgentStateSchema from "../contracts/ghostlight.agent-state.schema.json"; +import documentRecordSchema from "../../../contracts/cultnet/cultnet.document-record.schema.json"; +import helloSchema from "../../../contracts/cultnet/cultnet.hello.schema.json"; +import loginSchema from "../../../contracts/cultnet/cultnet.login.schema.json"; +import registerSchema from "../../../contracts/cultnet/cultnet.register.schema.json"; +import verifySchema from "../../../contracts/cultnet/cultnet.verify.schema.json"; +import loginSuccessSchema from "../../../contracts/cultnet/cultnet.login-success.schema.json"; +import errorSchema from "../../../contracts/cultnet/cultnet.error.schema.json"; +import sampleChangeNameSchema from "../../../contracts/cultnet/cultnet.sample-change-name.schema.json"; +import sampleChatSchema from "../../../contracts/cultnet/cultnet.sample-chat.schema.json"; +import documentPutSchema from "../../../contracts/cultnet/cultnet.document-put.schema.json"; +import documentDeleteSchema from "../../../contracts/cultnet/cultnet.document-delete.schema.json"; +import rawDocumentRecordSchema from "../../../contracts/cultnet/cultnet.raw-document-record.schema.json"; +import documentPutRawSchema from "../../../contracts/cultnet/cultnet.document-put-raw.schema.json"; +import documentMutationContractSchema from "../../../contracts/cultnet/cultnet.document-mutation-contract.schema.json"; +import transportProfileSchema from "../../../contracts/cultnet/cultnet.transport-profile.schema.json"; +import snapshotRequestSchema from "../../../contracts/cultnet/cultnet.snapshot-request.schema.json"; +import snapshotResponseSchema from "../../../contracts/cultnet/cultnet.snapshot-response.schema.json"; +import snapshotResponseRawSchema from "../../../contracts/cultnet/cultnet.snapshot-response-raw.schema.json"; +import databaseSubscribeSchema from "../../../contracts/cultnet/cultnet.database-subscribe.schema.json"; +import databaseUnsubscribeSchema from "../../../contracts/cultnet/cultnet.database-unsubscribe.schema.json"; +import databaseChangeRawSchema from "../../../contracts/cultnet/cultnet.database-change-raw.schema.json"; +import schemaDescriptorSchema from "../../../contracts/cultnet/cultnet.schema-descriptor.schema.json"; +import schemaCatalogRequestSchema from "../../../contracts/cultnet/cultnet.schema-catalog-request.schema.json"; +import schemaCatalogResponseSchema from "../../../contracts/cultnet/cultnet.schema-catalog-response.schema.json"; +import shardCatalogRequestSchema from "../../../contracts/cultnet/cultnet.shard-catalog-request.schema.json"; +import shardCatalogResponseSchema from "../../../contracts/cultnet/cultnet.shard-catalog-response.schema.json"; +import operationRequestSchema from "../../../contracts/cultnet/cultnet.operation-request.schema.json"; +import operationResponseSchema from "../../../contracts/cultnet/cultnet.operation-response.schema.json"; +import verseCatalogRequestSchema from "../../../contracts/cultnet/cultmesh.verse-catalog-request.schema.json"; +import verseCatalogResponseSchema from "../../../contracts/cultnet/cultmesh.verse-catalog-response.schema.json"; +import sessionOpenSchema from "../../../contracts/cultnet/cultmesh.session-open.schema.json"; +import sessionAcceptedSchema from "../../../contracts/cultnet/cultmesh.session-accepted.schema.json"; +import ghostlightAgentStateSchema from "../../../contracts/cultnet/ghostlight.agent-state.schema.json"; export type CultNetWireContract = "cultnet.schema.v0" | "gamecult.networking.v0"; diff --git a/packages/cultnet-ts/src/generated/swarm-contracts.generated.ts b/packages/cultnet-ts/src/generated/swarm-contracts.generated.ts index f6f673a3..84bb09b0 100644 --- a/packages/cultnet-ts/src/generated/swarm-contracts.generated.ts +++ b/packages/cultnet-ts/src/generated/swarm-contracts.generated.ts @@ -1,5 +1,5 @@ import { defineJsonSchemaContract } from "../json-schema-contract"; -import ghostlightAgentStateGeneratedContractSchema from "../../contracts/ghostlight.agent-state.schema.json"; +import ghostlightAgentStateGeneratedContractSchema from "../../../../contracts/cultnet/ghostlight.agent-state.schema.json"; // Generated by tools/generate-swarm-contracts.mjs. Do not hand-edit this file unless you enjoy losing arguments with a machine. diff --git a/packages/cultnet-ts/test/interop/cultnet-interop-shared.ts b/packages/cultnet-ts/test/interop/cultnet-interop-shared.ts index e810ecbd..a7ae54e1 100644 --- a/packages/cultnet-ts/test/interop/cultnet-interop-shared.ts +++ b/packages/cultnet-ts/test/interop/cultnet-interop-shared.ts @@ -7,16 +7,16 @@ import { z } from "zod"; export const INTEROP_DOCUMENT_TYPE = "cultnet.interop-note"; export const INTEROP_SCHEMA_VERSION = "cultnet.interop_note.v0"; export const INTEROP_MUTATION_INTENT_DOCUMENT_TYPE = "cultnet.interop-note-mutation-intent"; -export const INTEROP_MUTATION_INTENT_SCHEMA_ID = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-note-mutation-intent.schema.json"; +export const INTEROP_MUTATION_INTENT_SCHEMA_ID = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-note-mutation-intent.schema.json"; export const INTEROP_MUTATION_INTENT_SCHEMA_VERSION = "cultnet.interop_note_mutation_intent.v0"; export const INTEROP_MUTATION_RECEIPT_DOCUMENT_TYPE = "cultnet.interop-note-mutation-receipt"; -export const INTEROP_MUTATION_RECEIPT_SCHEMA_ID = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-note-mutation-receipt.schema.json"; +export const INTEROP_MUTATION_RECEIPT_SCHEMA_ID = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-note-mutation-receipt.schema.json"; export const INTEROP_MUTATION_RECEIPT_SCHEMA_VERSION = "cultnet.interop_note_mutation_receipt.v0"; export const INTEROP_FIRE_COMMAND_DOCUMENT_TYPE = "cultnet.interop-fire-weapon-command"; -export const INTEROP_FIRE_COMMAND_SCHEMA_ID = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-fire-weapon-command.schema.json"; +export const INTEROP_FIRE_COMMAND_SCHEMA_ID = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-fire-weapon-command.schema.json"; export const INTEROP_FIRE_COMMAND_SCHEMA_VERSION = "cultnet.interop_fire_weapon_command.v0"; export const INTEROP_FIRE_RECEIPT_DOCUMENT_TYPE = "cultnet.interop-fire-weapon-receipt"; -export const INTEROP_FIRE_RECEIPT_SCHEMA_ID = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-fire-weapon-receipt.schema.json"; +export const INTEROP_FIRE_RECEIPT_SCHEMA_ID = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-fire-weapon-receipt.schema.json"; export const INTEROP_FIRE_RECEIPT_SCHEMA_VERSION = "cultnet.interop_fire_weapon_receipt.v0"; export const INTEROP_WIRE_CONTRACT = "cultnet.schema.v0" as const; export const DISCOVERY_PROBE_SCHEMA_VERSION = "cultnet.discovery_probe.v0"; diff --git a/packages/cultnet-ts/test/interop/cultnet-interop.test.ts b/packages/cultnet-ts/test/interop/cultnet-interop.test.ts index 00fff83d..51bea1ff 100644 --- a/packages/cultnet-ts/test/interop/cultnet-interop.test.ts +++ b/packages/cultnet-ts/test/interop/cultnet-interop.test.ts @@ -39,9 +39,9 @@ const cultnetRsRoot = existsSync(resolve(cultLibRoot, "packages", "cultnet-rs")) : resolve(cultNetTsRoot, "..", "cultnet-rs"); const tsPeerScript = resolve(cultNetTsRoot, "dist-test", "test", "interop", "cultnet-interop-peer.js"); -const interopSchemaPath = resolve(cultNetTsRoot, "integration", "contracts", "cultnet.interop-note.schema.json"); -const interopNoteSchemaId = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-note.schema.json"; -const witnessArtifactBundleSchemaId = "https://github.com/GameCult/cultnet-ts/contracts/cultnet.witness-artifact-bundle.schema.json"; +const interopSchemaPath = resolve(cultNetTsRoot, "..", "..", "contracts", "cultnet", "interop", "cultnet.interop-note.schema.json"); +const interopNoteSchemaId = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-note.schema.json"; +const witnessArtifactBundleSchemaId = "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.witness-artifact-bundle.schema.json"; const simulationFactSchemaId = "gamecult.mesh.simulation_fact"; const csharpProjectPath = resolve( cultLibRoot, diff --git a/packages/cultnet-ts/tools/generate-swarm-contracts.mjs b/packages/cultnet-ts/tools/generate-swarm-contracts.mjs index f74aff98..53ad1e18 100644 --- a/packages/cultnet-ts/tools/generate-swarm-contracts.mjs +++ b/packages/cultnet-ts/tools/generate-swarm-contracts.mjs @@ -7,7 +7,7 @@ import { compile } from "json-schema-to-typescript"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const repoRoot = path.resolve(__dirname, ".."); -const manifestPath = path.join(repoRoot, "contracts", "swarm-contracts.manifest.json"); +const manifestPath = path.join(repoRoot, "tools", "swarm-contracts.manifest.json"); const outputPath = path.join(repoRoot, "src", "generated", "swarm-contracts.generated.ts"); /** diff --git a/packages/cultnet-ts/contracts/swarm-contracts.manifest.json b/packages/cultnet-ts/tools/swarm-contracts.manifest.json similarity index 76% rename from packages/cultnet-ts/contracts/swarm-contracts.manifest.json rename to packages/cultnet-ts/tools/swarm-contracts.manifest.json index 1c08e8fa..49b5073d 100644 --- a/packages/cultnet-ts/contracts/swarm-contracts.manifest.json +++ b/packages/cultnet-ts/tools/swarm-contracts.manifest.json @@ -1,7 +1,7 @@ { "contracts": [ { - "schemaPath": "./ghostlight.agent-state.schema.json", + "schemaPath": "../../../contracts/cultnet/ghostlight.agent-state.schema.json", "typeName": "GhostlightAgentStateShape", "contractExportName": "ghostlightAgentStateGeneratedContract", "validateExportName": "validateGhostlightAgentStateGenerated", diff --git a/src/GameCult.Networking/Contracts/cultnet.database-change-raw.schema.json b/src/GameCult.Networking/Contracts/cultnet.database-change-raw.schema.json deleted file mode 100644 index dd650fa0..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.database-change-raw.schema.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.database-change-raw.schema.json", - "title": "CultNet Raw Database Change Message", - "type": "object", - "required": ["schemaVersion", "messageId", "subscriptionId", "changeKind"], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.database_change_raw.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "subscriptionId": { "type": "string", "minLength": 1 }, - "changeKind": { "enum": ["added", "updated", "removed"] }, - "document": { "$ref": "./cultnet.raw-document-record.schema.json" }, - "recordKey": { "type": "string", "minLength": 1 }, - "schemaId": { "type": "string", "minLength": 1 } - }, - "allOf": [ - { - "if": { "properties": { "changeKind": { "const": "removed" } } }, - "then": { "required": ["recordKey", "schemaId"] }, - "else": { "required": ["document"] } - } - ] -} diff --git a/src/GameCult.Networking/Contracts/cultnet.database-subscribe.schema.json b/src/GameCult.Networking/Contracts/cultnet.database-subscribe.schema.json deleted file mode 100644 index 08304199..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.database-subscribe.schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.database-subscribe.schema.json", - "title": "CultNet Database Subscribe Message", - "type": "object", - "required": ["schemaVersion", "messageId", "subscriptionId", "includeSnapshot"], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.database_subscribe.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "subscriptionId": { "type": "string", "minLength": 1 }, - "schemaIds": { "type": "array", "items": { "type": "string", "minLength": 1 } }, - "recordKeys": { "type": "array", "items": { "type": "string", "minLength": 1 } }, - "includeSnapshot": { "type": "boolean" }, - "consumerRuntimeId": { "type": "string", "minLength": 1 }, - "bodyIds": { "type": "array", "items": { "type": "string", "minLength": 1 } }, - "supportedBodyTransports": { "type": "array", "items": { "type": "string", "minLength": 1 } } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.database-unsubscribe.schema.json b/src/GameCult.Networking/Contracts/cultnet.database-unsubscribe.schema.json deleted file mode 100644 index 7d4b0855..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.database-unsubscribe.schema.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.database-unsubscribe.schema.json", - "title": "CultNet Database Unsubscribe Message", - "type": "object", - "required": ["schemaVersion", "messageId", "subscriptionId"], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.database_unsubscribe.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "subscriptionId": { "type": "string", "minLength": 1 } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.document-delete.schema.json b/src/GameCult.Networking/Contracts/cultnet.document-delete.schema.json deleted file mode 100644 index 265bcaf2..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.document-delete.schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-delete.schema.json", - "title": "CultNet Document Delete Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "schemaId", - "recordKey" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.document_delete.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "schemaId": { "type": "string", "minLength": 1 }, - "recordKey": { "type": "string", "minLength": 1 } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.document-put-raw.schema.json b/src/GameCult.Networking/Contracts/cultnet.document-put-raw.schema.json deleted file mode 100644 index 3c178d03..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.document-put-raw.schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.document-put-raw.schema.json", - "title": "CultNet Raw Document Put Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "document" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.document_put_raw.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "document": { - "$ref": "./cultnet.raw-document-record.schema.json" - } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.error.schema.json b/src/GameCult.Networking/Contracts/cultnet.error.schema.json deleted file mode 100644 index af6da9cf..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.error.schema.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.error.schema.json", - "title": "CultNet Error Message", - "type": "object", - "required": [ - "schemaVersion", - "error" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.error.v0" }, - "error": { "type": "string", "minLength": 1 } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.login-success.schema.json b/src/GameCult.Networking/Contracts/cultnet.login-success.schema.json deleted file mode 100644 index 3d8a4591..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.login-success.schema.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.login-success.schema.json", - "title": "CultNet Login Success Message", - "type": "object", - "required": [ - "schemaVersion", - "nonce", - "session" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.login_success.v0" }, - "nonce": { "type": "string", "minLength": 1 }, - "session": { "type": "string", "minLength": 1 } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.login.schema.json b/src/GameCult.Networking/Contracts/cultnet.login.schema.json deleted file mode 100644 index 62f49599..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.login.schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.login.schema.json", - "title": "CultNet Login Message", - "type": "object", - "required": [ - "schemaVersion", - "nonce", - "auth", - "password" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.login.v0" }, - "nonce": { "type": "string", "minLength": 1 }, - "auth": { "type": "string", "minLength": 1 }, - "password": { "type": "string", "minLength": 1 } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.operation-response.schema.json b/src/GameCult.Networking/Contracts/cultnet.operation-response.schema.json deleted file mode 100644 index c3be917d..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.operation-response.schema.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.operation-response.schema.json", - "title": "CultNet Operation Response", - "type": "object", - "required": ["schemaVersion", "messageId", "serviceId", "operation", "status", "payloadSchema", "payload"], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.operation_response.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "serviceId": { "type": "string", "minLength": 1 }, - "operation": { "type": "string", "minLength": 1 }, - "status": { "type": "string", "minLength": 1 }, - "payloadSchema": { "type": "string", "minLength": 1 }, - "payloadEncoding": { "const": "messagepack-base64" }, - "payload": { "type": "string", "minLength": 1, "contentEncoding": "base64" }, - "diagnostics": { "type": "array", "items": { "type": "string" } }, - "sourceRuntimeId": { "type": "string", "minLength": 1 } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.register.schema.json b/src/GameCult.Networking/Contracts/cultnet.register.schema.json deleted file mode 100644 index 77286f3e..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.register.schema.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.register.schema.json", - "title": "CultNet Register Message", - "type": "object", - "required": [ - "schemaVersion", - "nonce", - "email", - "password", - "name" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.register.v0" }, - "nonce": { "type": "string", "minLength": 1 }, - "email": { "type": "string", "minLength": 1 }, - "password": { "type": "string", "minLength": 1 }, - "name": { "type": "string", "minLength": 1 } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.sample-change-name.schema.json b/src/GameCult.Networking/Contracts/cultnet.sample-change-name.schema.json deleted file mode 100644 index fc3fe057..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.sample-change-name.schema.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.sample-change-name.schema.json", - "title": "CultNet Sample Change Name Message", - "type": "object", - "required": [ - "schemaVersion", - "name" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.sample.change_name.v0" }, - "name": { "type": "string", "minLength": 1 } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.schema-catalog-request.schema.json b/src/GameCult.Networking/Contracts/cultnet.schema-catalog-request.schema.json deleted file mode 100644 index 611733d2..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.schema-catalog-request.schema.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.schema-catalog-request.schema.json", - "title": "CultNet Schema Catalog Request Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.schema_catalog_request.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "includeSchemaJson": { "type": "boolean" }, - "schemaIds": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "kinds": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "wire_message", - "document_payload", - "shared_contract" - ] - } - } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.snapshot-request.schema.json b/src/GameCult.Networking/Contracts/cultnet.snapshot-request.schema.json deleted file mode 100644 index 712d7059..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.snapshot-request.schema.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.snapshot-request.schema.json", - "title": "CultNet Snapshot Request Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.snapshot_request.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "schemaIds": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "recordKeys": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.snapshot-response-raw.schema.json b/src/GameCult.Networking/Contracts/cultnet.snapshot-response-raw.schema.json deleted file mode 100644 index a84bc50d..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.snapshot-response-raw.schema.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.snapshot-response-raw.schema.json", - "title": "CultNet Raw Snapshot Response Message", - "type": "object", - "required": [ - "schemaVersion", - "messageId", - "documents" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.snapshot_response_raw.v0" }, - "messageId": { "type": "string", "minLength": 1 }, - "documents": { - "type": "array", - "items": { - "$ref": "./cultnet.raw-document-record.schema.json" - } - } - } -} diff --git a/src/GameCult.Networking/Contracts/cultnet.transport-profile.schema.json b/src/GameCult.Networking/Contracts/cultnet.transport-profile.schema.json deleted file mode 100644 index 90261c79..00000000 --- a/src/GameCult.Networking/Contracts/cultnet.transport-profile.schema.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/cultnet-ts/contracts/cultnet.transport-profile.schema.json", - "title": "CultNet Transport Profile", - "type": "object", - "required": [ - "schemaVersion", - "runtimeId", - "transports" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.transport_profile.v0" }, - "runtimeId": { "type": "string", "minLength": 1 }, - "transports": { - "type": "array", - "items": { - "type": "object", - "required": [ - "transportId", - "protocol", - "channels" - ], - "additionalProperties": false, - "properties": { - "transportId": { "type": "string", "minLength": 1 }, - "protocol": { - "type": "string", - "enum": [ - "tcp_framed", - "litenetlib", - "websocket", - "rudp" - ] - }, - "host": { "type": "string", "minLength": 1 }, - "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, - "path": { "type": "string", "minLength": 1 }, - "discoveryGroup": { "type": "string", "minLength": 1 }, - "wireContracts": { - "type": "array", - "items": { "type": "string", "minLength": 1 } - }, - "reconnectPolicy": { - "type": "object", - "required": [ - "schemaVersion", - "policyId", - "baseDelayMs", - "maxDelayMs", - "maxJitterMs" - ], - "additionalProperties": false, - "properties": { - "schemaVersion": { "const": "cultnet.reconnect_policy.v0" }, - "policyId": { "type": "string", "minLength": 1 }, - "baseDelayMs": { "type": "integer", "minimum": 0 }, - "maxDelayMs": { "type": "integer", "minimum": 0 }, - "maxJitterMs": { "type": "integer", "minimum": 0 }, - "maxAttempts": { "type": "integer", "minimum": 1 } - } - }, - "channels": { - "type": "array", - "items": { - "type": "object", - "required": [ - "channelId", - "delivery", - "ordering" - ], - "additionalProperties": false, - "properties": { - "channelId": { "type": "string", "minLength": 1 }, - "delivery": { - "type": "string", - "enum": [ - "reliable", - "unreliable" - ] - }, - "ordering": { - "type": "string", - "enum": [ - "ordered", - "unordered", - "sequenced" - ] - }, - "maxPayloadBytes": { "type": "integer", "minimum": 1 }, - "maxFragmentBytes": { "type": "integer", "minimum": 1 }, - "maxPendingReliablePackets": { "type": "integer", "minimum": 1 } - } - } - } - } - } - } - } -} diff --git a/src/GameCult.Networking/Contracts/ghostlight.agent-state.schema.json b/src/GameCult.Networking/Contracts/ghostlight.agent-state.schema.json deleted file mode 100644 index 6437cd01..00000000 --- a/src/GameCult.Networking/Contracts/ghostlight.agent-state.schema.json +++ /dev/null @@ -1,845 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/GameCult/Ghostlight/schemas/agent-state.schema.json", - "title": "Ghostlight Agent State Schema", - "description": "First canonical contract for Ghostlight agent, perception, relationship, event, scene, and dialogue-context state.", - "type": "object", - "required": [ - "schema_version", - "world", - "agents", - "relationships", - "events", - "scenes" - ], - "additionalProperties": false, - "properties": { - "schema_version": { - "const": "ghostlight.agent_state.v0" - }, - "world": { - "$ref": "#/$defs/world_state" - }, - "agents": { - "type": "array", - "items": { - "$ref": "#/$defs/agent" - } - }, - "relationships": { - "type": "array", - "items": { - "$ref": "#/$defs/relationship" - } - }, - "events": { - "type": "array", - "items": { - "$ref": "#/$defs/event" - } - }, - "scenes": { - "type": "array", - "items": { - "$ref": "#/$defs/scene" - } - } - }, - "$defs": { - "world_state": { - "type": "object", - "required": [ - "world_id", - "setting", - "time", - "canon_context" - ], - "additionalProperties": false, - "properties": { - "world_id": { - "type": "string" - }, - "setting": { - "type": "string" - }, - "time": { - "type": "object", - "required": [ - "label" - ], - "additionalProperties": true, - "properties": { - "label": { - "type": "string" - } - } - }, - "canon_context": { - "type": "array", - "items": { - "type": "string" - } - }, - "ambient_pressures": { - "type": "array", - "items": { - "$ref": "#/$defs/pressure" - } - } - } - }, - "agent": { - "type": "object", - "required": [ - "agent_id", - "identity", - "canonical_state", - "goals", - "memories", - "perceived_state_overlays" - ], - "additionalProperties": false, - "properties": { - "agent_id": { - "type": "string" - }, - "identity": { - "$ref": "#/$defs/identity" - }, - "canonical_state": { - "$ref": "#/$defs/canonical_state" - }, - "goals": { - "type": "array", - "items": { - "$ref": "#/$defs/goal" - } - }, - "memories": { - "$ref": "#/$defs/memory_bundle" - }, - "perceived_state_overlays": { - "type": "array", - "items": { - "$ref": "#/$defs/perceived_state_overlay" - } - } - } - }, - "identity": { - "type": "object", - "required": [ - "name", - "roles", - "origin", - "public_description" - ], - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "origin": { - "type": "string" - }, - "public_description": { - "type": "string" - }, - "private_notes": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "canonical_state": { - "type": "object", - "required": [ - "underlying_organization", - "stable_dispositions", - "behavioral_dimensions", - "presentation_strategy", - "voice_style", - "situational_state", - "values" - ], - "additionalProperties": false, - "properties": { - "underlying_organization": { - "$ref": "#/$defs/variable_map" - }, - "stable_dispositions": { - "$ref": "#/$defs/variable_map" - }, - "behavioral_dimensions": { - "$ref": "#/$defs/variable_map" - }, - "presentation_strategy": { - "$ref": "#/$defs/variable_map" - }, - "situational_state": { - "$ref": "#/$defs/variable_map" - }, - "values": { - "type": "array", - "items": { - "$ref": "#/$defs/value_commitment" - } - }, - "voice_style": { - "$ref": "#/$defs/variable_map" - } - } - }, - "variable_map": { - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/state_variable" - } - }, - "state_variable": { - "type": "object", - "required": [ - "mean", - "plasticity", - "current_activation" - ], - "additionalProperties": false, - "properties": { - "mean": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "plasticity": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "current_activation": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "evidence": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "value_commitment": { - "type": "object", - "required": [ - "value_id", - "label", - "priority", - "unforgivable_if_betrayed" - ], - "additionalProperties": false, - "properties": { - "value_id": { - "type": "string" - }, - "label": { - "type": "string" - }, - "priority": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "unforgivable_if_betrayed": { - "type": "boolean" - } - } - }, - "goal": { - "type": "object", - "required": [ - "goal_id", - "description", - "scope", - "priority", - "emotional_stake", - "status" - ], - "additionalProperties": false, - "properties": { - "goal_id": { - "type": "string" - }, - "description": { - "type": "string" - }, - "scope": { - "enum": [ - "immediate", - "scene", - "case", - "arc", - "life" - ] - }, - "priority": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "emotional_stake": { - "type": "string" - }, - "blockers": { - "type": "array", - "items": { - "type": "string" - } - }, - "status": { - "enum": [ - "active", - "blocked", - "dormant", - "resolved", - "abandoned" - ] - } - } - }, - "memory_bundle": { - "type": "object", - "required": [ - "episodic", - "semantic", - "relationship_summaries" - ], - "additionalProperties": false, - "properties": { - "episodic": { - "type": "array", - "items": { - "$ref": "#/$defs/memory" - } - }, - "semantic": { - "type": "array", - "items": { - "$ref": "#/$defs/memory" - } - }, - "relationship_summaries": { - "type": "array", - "items": { - "$ref": "#/$defs/memory" - } - } - } - }, - "memory": { - "type": "object", - "required": [ - "memory_id", - "summary", - "salience", - "confidence" - ], - "additionalProperties": false, - "properties": { - "memory_id": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "salience": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "confidence": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "linked_event_ids": { - "type": "array", - "items": { - "type": "string" - } - }, - "linked_relationship_id": { - "type": "string" - } - } - }, - "perceived_state_overlay": { - "type": "object", - "required": [ - "observer_agent_id", - "target_agent_id", - "perceived_dimensions", - "beliefs", - "distortions" - ], - "additionalProperties": false, - "properties": { - "observer_agent_id": { - "type": "string" - }, - "target_agent_id": { - "type": "string" - }, - "perceived_dimensions": { - "$ref": "#/$defs/inferred_variable_map" - }, - "beliefs": { - "type": "array", - "items": { - "$ref": "#/$defs/belief" - } - }, - "distortions": { - "type": "array", - "items": { - "enum": [ - "hostile_attribution", - "false_reassurance", - "overread_warmth", - "underread_threat", - "false_mask_detection", - "missed_mask_detection", - "status_injury", - "threat_amplification", - "institutional_suspicion_transfer", - "care_underread", - "mask_overfocus" - ] - } - } - } - }, - "belief": { - "type": "object", - "required": [ - "belief_id", - "claim", - "confidence" - ], - "additionalProperties": false, - "properties": { - "belief_id": { - "type": "string" - }, - "claim": { - "type": "string" - }, - "confidence": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "subject_id": { - "type": "string" - }, - "claim_type": { - "enum": [ - "fact", - "identity_inference", - "motive_inference", - "prediction", - "norm", - "value_read", - "relationship_read" - ] - }, - "evidence_event_ids": { - "type": "array", - "items": { - "type": "string" - } - }, - "visibility": { - "enum": [ - "private", - "shared", - "public", - "rumor" - ] - }, - "emotional_charge": { - "type": "number", - "minimum": 0, - "maximum": 1 - } - } - }, - "relationship": { - "type": "object", - "required": [ - "relationship_id", - "source_id", - "target_id", - "stance", - "summary" - ], - "additionalProperties": false, - "properties": { - "relationship_id": { - "type": "string" - }, - "source_id": { - "type": "string" - }, - "target_id": { - "type": "string" - }, - "stance": { - "$ref": "#/$defs/variable_map" - }, - "summary": { - "type": "string" - }, - "unresolved_incident_ids": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "event": { - "type": "object", - "required": [ - "event_id", - "kind", - "summary", - "participants", - "pressure_tags" - ], - "additionalProperties": false, - "properties": { - "event_id": { - "type": "string" - }, - "kind": { - "enum": [ - "dialogue", - "action", - "memory", - "relationship_shift", - "scene_outcome", - "author_note" - ] - }, - "summary": { - "type": "string" - }, - "participants": { - "type": "array", - "items": { - "type": "string" - } - }, - "pressure_tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "observed_exchange": { - "type": "array", - "items": { - "$ref": "#/$defs/event_exchange_turn" - } - }, - "private_interpretations": { - "type": "array", - "items": { - "$ref": "#/$defs/event_private_interpretation" - } - }, - "event_effects": { - "type": "array", - "items": { - "$ref": "#/$defs/event_effect" - } - } - } - }, - "scene": { - "type": "object", - "required": [ - "scene_id", - "location", - "participants", - "public_stakes", - "hidden_stakes", - "dialogue_context_packs" - ], - "additionalProperties": false, - "properties": { - "scene_id": { - "type": "string" - }, - "location": { - "type": "string" - }, - "participants": { - "type": "array", - "items": { - "type": "string" - } - }, - "public_stakes": { - "type": "array", - "items": { - "type": "string" - } - }, - "hidden_stakes": { - "type": "array", - "items": { - "type": "string" - } - }, - "dialogue_context_packs": { - "type": "array", - "items": { - "$ref": "#/$defs/dialogue_context_pack" - } - } - } - }, - "dialogue_context_pack": { - "type": "object", - "required": [ - "speaker_agent_id", - "listener_ids", - "speaker_local_truth", - "speaker_beliefs", - "active_memories", - "active_goals", - "presentation_constraints" - ], - "additionalProperties": false, - "properties": { - "speaker_agent_id": { - "type": "string" - }, - "listener_ids": { - "type": "array", - "items": { - "type": "string" - } - }, - "speaker_local_truth": { - "type": "array", - "items": { - "type": "string" - } - }, - "speaker_beliefs": { - "type": "array", - "items": { - "type": "string" - } - }, - "active_memories": { - "type": "array", - "items": { - "type": "string" - } - }, - "active_goals": { - "type": "array", - "items": { - "type": "string" - } - }, - "presentation_constraints": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pressure": { - "type": "object", - "required": [ - "pressure_id", - "label", - "intensity" - ], - "additionalProperties": false, - "properties": { - "pressure_id": { - "type": "string" - }, - "label": { - "type": "string" - }, - "intensity": { - "type": "number", - "minimum": 0, - "maximum": 1 - } - } - }, - "inferred_variable_map": { - "type": "object", - "additionalProperties": { - "$ref": "#/$defs/inferred_state_variable" - } - }, - "inferred_state_variable": { - "type": "object", - "required": [ - "observed_activation", - "attributed_disposition", - "confidence" - ], - "additionalProperties": false, - "properties": { - "observed_activation": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "attributed_disposition": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "confidence": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "evidence": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "event_exchange_turn": { - "type": "object", - "required": [ - "speaker_id", - "utterance_summary", - "dialogue_function" - ], - "additionalProperties": false, - "properties": { - "speaker_id": { - "type": "string" - }, - "utterance_summary": { - "type": "string" - }, - "dialogue_function": { - "type": "string" - }, - "observable_cues": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "event_private_interpretation": { - "type": "object", - "required": [ - "agent_id", - "interpretation", - "confidence" - ], - "additionalProperties": false, - "properties": { - "agent_id": { - "type": "string" - }, - "interpretation": { - "type": "string" - }, - "attributed_motive": { - "type": "string" - }, - "appraisal_tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "confidence": { - "type": "number", - "minimum": 0, - "maximum": 1 - } - } - }, - "event_effect": { - "type": "object", - "required": [ - "agent_id", - "summary" - ], - "additionalProperties": false, - "properties": { - "agent_id": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "state_deltas": { - "type": "array", - "items": { - "$ref": "#/$defs/state_delta" - } - }, - "new_belief_ids": { - "type": "array", - "items": { - "type": "string" - } - }, - "memory_update_ids": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "state_delta": { - "type": "object", - "required": [ - "path", - "delta" - ], - "additionalProperties": false, - "properties": { - "path": { - "type": "string" - }, - "delta": { - "type": "number", - "minimum": -1, - "maximum": 1 - } - } - } - } -} diff --git a/src/GameCult.Networking/GameCult.Networking.csproj b/src/GameCult.Networking/GameCult.Networking.csproj index f275484f..7f9024eb 100644 --- a/src/GameCult.Networking/GameCult.Networking.csproj +++ b/src/GameCult.Networking/GameCult.Networking.csproj @@ -18,6 +18,6 @@ - + diff --git a/tests/GameCult.Networking.InteropPeer/Program.cs b/tests/GameCult.Networking.InteropPeer/Program.cs index 953ee097..2c0f51ce 100644 --- a/tests/GameCult.Networking.InteropPeer/Program.cs +++ b/tests/GameCult.Networking.InteropPeer/Program.cs @@ -1452,16 +1452,16 @@ static class InteropPeerShared public const string InteropDocumentType = "cultnet.interop-note"; public const string InteropSchemaVersion = "cultnet.interop_note.v0"; public const string MutationIntentDocumentType = "cultnet.interop-note-mutation-intent"; - public const string MutationIntentSchemaId = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-note-mutation-intent.schema.json"; + public const string MutationIntentSchemaId = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-note-mutation-intent.schema.json"; public const string MutationIntentSchemaVersion = "cultnet.interop_note_mutation_intent.v0"; public const string MutationReceiptDocumentType = "cultnet.interop-note-mutation-receipt"; - public const string MutationReceiptSchemaId = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-note-mutation-receipt.schema.json"; + public const string MutationReceiptSchemaId = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-note-mutation-receipt.schema.json"; public const string MutationReceiptSchemaVersion = "cultnet.interop_note_mutation_receipt.v0"; public const string FireCommandDocumentType = "cultnet.interop-fire-weapon-command"; - public const string FireCommandSchemaId = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-fire-weapon-command.schema.json"; + public const string FireCommandSchemaId = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-fire-weapon-command.schema.json"; public const string FireCommandSchemaVersion = "cultnet.interop_fire_weapon_command.v0"; public const string FireReceiptDocumentType = "cultnet.interop-fire-weapon-receipt"; - public const string FireReceiptSchemaId = "https://github.com/GameCult/cultnet-ts/integration/contracts/cultnet.interop-fire-weapon-receipt.schema.json"; + public const string FireReceiptSchemaId = "https://github.com/GameCult/CultLib/contracts/cultnet/interop/cultnet.interop-fire-weapon-receipt.schema.json"; public const string FireReceiptSchemaVersion = "cultnet.interop_fire_weapon_receipt.v0"; public const string DiscoveryProbeSchemaVersion = "cultnet.discovery_probe.v0"; public const string DiscoveryAnnounceSchemaVersion = "cultnet.discovery_announce.v0"; From fa00f3ffa21c172ea467fcd0e8f9342077b4e3c0 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 13 Sep 2026 17:43:55 +0200 Subject: [PATCH 0002/1002] Fix cultnet-ts test build for out-of-package contract location REC-032 commit 1 follow-up, found during required verification: moving the CultNet schemas out of packages/cultnet-ts/contracts into CultLib/contracts/cultnet broke npm test for cultnet-ts. tsconfig.test.json compiled with rootDir "." (to cover both src/ and test/ as siblings), and TypeScript's resolveJsonModule copy-into-output behavior only mirrors files that fall within the declared rootDir. The old contracts/ folder was a sibling of src/ (inside rootDir), so it got copied into dist-test/contracts and the "../contracts/x" import resolved. The new contracts/cultnet is two directories above the package, outside any possible rootDir short of the repo root, so nothing got copied and the "../../../contracts/cultnet/x" import 404'd at runtime under dist-test (the production "dist" build was unaffected, since dist/ and src/ sit at the same depth under the package). Fix: widen tsconfig.test.json's rootDir to the CultLib repo root so resolveJsonModule can find and copy contracts/cultnet into dist-test, update the "test"/"test:interop" npm scripts for the resulting deeper dist-test/packages/cultnet-ts/... output path, and correct the two __dirname-relative computations in test/interop/cultnet-interop.test.ts and test/runtime-presence-health.test.ts that assumed the old shallower depth. Also fixes packages/cultmesh-ts/test/cultmesh.test.ts, which still looked up the shard-catalog builtins by their old bare cultnet.shard_catalog_{request,response}.v0 schemaId; CultNetSchemaCatalog keys by $id, which D1 changed to the CultLib contracts URL, so the lookup returned undefined. REC-032, decision D1. Co-Authored-By: Claude Sonnet 5 --- packages/cultmesh-ts/test/cultmesh.test.ts | 8 ++++++-- packages/cultnet-ts/package.json | 4 ++-- packages/cultnet-ts/test/interop/cultnet-interop.test.ts | 2 +- packages/cultnet-ts/test/runtime-presence-health.test.ts | 2 +- packages/cultnet-ts/tsconfig.test.json | 2 +- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/cultmesh-ts/test/cultmesh.test.ts b/packages/cultmesh-ts/test/cultmesh.test.ts index 77bd635c..3954c697 100644 --- a/packages/cultmesh-ts/test/cultmesh.test.ts +++ b/packages/cultmesh-ts/test/cultmesh.test.ts @@ -2500,11 +2500,15 @@ test("CultMesh TS branded facade exposes schema and shard catalogs", () => { const builtIns = CultMesh.createBuiltInSchemaCatalog(); assert.equal( - builtIns.get("cultnet.shard_catalog_request.v0")?.schemaVersion, + builtIns.get( + "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.shard-catalog-request.schema.json", + )?.schemaVersion, "cultnet.shard_catalog_request.v0", ); assert.equal( - builtIns.get("cultnet.shard_catalog_response.v0")?.kind, + builtIns.get( + "https://github.com/GameCult/CultLib/contracts/cultnet/cultnet.shard-catalog-response.schema.json", + )?.kind, "wire_message", ); assert.equal( diff --git a/packages/cultnet-ts/package.json b/packages/cultnet-ts/package.json index 82baeba0..0b101282 100644 --- a/packages/cultnet-ts/package.json +++ b/packages/cultnet-ts/package.json @@ -23,8 +23,8 @@ "contracts:generate": "node tools/generate-swarm-contracts.mjs", "build": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json", "typecheck": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json --pretty false", - "test": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json && node ../../node_modules/typescript/bin/tsc -p tsconfig.test.json && node --test dist-test/test/*.test.js", - "test:interop": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json && node ../../node_modules/typescript/bin/tsc -p tsconfig.test.json && node --test --test-force-exit dist-test/test/interop/*.test.js" + "test": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json && node ../../node_modules/typescript/bin/tsc -p tsconfig.test.json && node --test dist-test/packages/cultnet-ts/test/*.test.js", + "test:interop": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json && node ../../node_modules/typescript/bin/tsc -p tsconfig.test.json && node --test --test-force-exit dist-test/packages/cultnet-ts/test/interop/*.test.js" }, "keywords": [ "messagepack", diff --git a/packages/cultnet-ts/test/interop/cultnet-interop.test.ts b/packages/cultnet-ts/test/interop/cultnet-interop.test.ts index 51bea1ff..07fb268b 100644 --- a/packages/cultnet-ts/test/interop/cultnet-interop.test.ts +++ b/packages/cultnet-ts/test/interop/cultnet-interop.test.ts @@ -21,7 +21,7 @@ const execFileAsync = promisify(execFile); const cargoCommand = process.env.CARGO ?? (process.platform === "win32" ? join(homedir(), ".cargo", "bin", "cargo.exe") : "cargo"); const dotnetCommand = process.env.DOTNET ?? (process.platform === "win32" ? join("C:", "Program Files", "dotnet", "dotnet.exe") : "dotnet"); const pythonCommand = process.env.PYTHON ?? resolvePythonCommand(); -const cultNetTsRoot = resolve(__dirname, "../../.."); +const cultNetTsRoot = resolve(__dirname, "../../../../.."); const cultLibRoot = findAncestor(cultNetTsRoot, "CultLib.sln") ?? resolve(cultNetTsRoot, "..", "CultLib"); const cultcachePyRoot = resolve(cultLibRoot, "packages", "cultcache-py"); const cultcachePySrc = ["cultcache-py", "cultnet-py", "cultmesh-py"] diff --git a/packages/cultnet-ts/test/runtime-presence-health.test.ts b/packages/cultnet-ts/test/runtime-presence-health.test.ts index fa21aeaa..2ceedde3 100644 --- a/packages/cultnet-ts/test/runtime-presence-health.test.ts +++ b/packages/cultnet-ts/test/runtime-presence-health.test.ts @@ -26,7 +26,7 @@ import { // are generated output and must have exactly one home. const VECTORS = JSON.parse( readFileSync( - join(__dirname, "..", "..", "test", "fixtures", "runtime-presence-vectors.json"), + join(__dirname, "..", "..", "..", "..", "test", "fixtures", "runtime-presence-vectors.json"), "utf8", ), ) as { proof: string; signed: string }; diff --git a/packages/cultnet-ts/tsconfig.test.json b/packages/cultnet-ts/tsconfig.test.json index a73b52c0..fc47617c 100644 --- a/packages/cultnet-ts/tsconfig.test.json +++ b/packages/cultnet-ts/tsconfig.test.json @@ -1,7 +1,7 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "rootDir": ".", + "rootDir": "../..", "outDir": "dist-test", "declaration": false, "declarationMap": false From 59aca27b673086e65b9c68a52193a357694626e0 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 13 Sep 2026 17:45:53 +0200 Subject: [PATCH 0003/1002] Add CI drift guard for the CultNet contracts consolidation REC-032 commit 2: fail cultnet-interop.yml before it installs Node dependencies if either negative check from commit 1 finds anything: a *.schema.json file living outside contracts/cultnet/, or a lingering reference to the retired https://github.com/GameCult/cultnet-ts/contracts (or .../integration/contracts) namespace anywhere but .voidbot/birth snapshots. The old-namespace grep uses git grep -I so the deferred Unity plugin DLL (D4, not rebuilt in this pass) doesn't trip a permanent false failure. Verified locally: staging a stray contracts/stray.schema.json and a stray-id.ts referencing the old namespace makes the guard's logic report failure for both; removing them makes it pass again against the real tree. REC-032. Co-Authored-By: Claude Sonnet 5 --- .github/workflows/cultnet-interop.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/.github/workflows/cultnet-interop.yml b/.github/workflows/cultnet-interop.yml index 6876a76a..4000cc1c 100644 --- a/.github/workflows/cultnet-interop.yml +++ b/.github/workflows/cultnet-interop.yml @@ -65,6 +65,29 @@ jobs: "KOTLIN_JAVA_HOME=$env:JAVA_HOME" | Out-File -FilePath $env:GITHUB_ENV -Append "$kotlinHome\bin" | Out-File -FilePath $env:GITHUB_PATH -Append + - name: Verify CultNet schema contracts stayed consolidated + shell: pwsh + run: | + $ErrorActionPreference = "Stop" + $stray = git ls-files '*.schema.json' | Where-Object { $_ -notmatch '^contracts/cultnet/' } + # -I skips binary files: unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.dll + # still embeds the retired namespace until it is rebuilt (REC-032 D4, deferred). + $oldNamespace = git grep -I -lE 'GameCult/cultnet-ts/(integration/)?contracts' -- ':!.voidbot' + if ($LASTEXITCODE -eq 2) { + throw "git grep failed" + } + if ($stray) { + Write-Host "Schema files found outside contracts/cultnet/:" + $stray | ForEach-Object { Write-Host " $_" } + } + if ($oldNamespace) { + Write-Host "Files still referencing the retired GameCult/cultnet-ts contracts namespace:" + $oldNamespace | ForEach-Object { Write-Host " $_" } + } + if ($stray -or $oldNamespace) { + throw "CultNet schema contracts drifted out of contracts/cultnet/ (REC-032). See CultLib/contracts/cultnet/ and rewrite any `$id back to https://github.com/GameCult/CultLib/contracts/cultnet/." + } + - name: Install Node dependencies run: npm install --no-package-lock From 7d3a3dc42c9c2f71e0afd73d1cf3853c178ff035 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 13 Sep 2026 17:52:15 +0200 Subject: [PATCH 0004/1002] Let the CultNet contract drift guard pass on a clean tree git grep exits 1 when it finds nothing, and the GitHub pwsh step wrapper ends the step with that $LASTEXITCODE, so the guard failed on exactly the clean tree it should accept. End the step with an explicit exit 0 after the checks; a real drift still throws first. REC-032. Co-Authored-By: Claude Opus 5 --- .github/workflows/cultnet-interop.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/cultnet-interop.yml b/.github/workflows/cultnet-interop.yml index 4000cc1c..5f8936bf 100644 --- a/.github/workflows/cultnet-interop.yml +++ b/.github/workflows/cultnet-interop.yml @@ -87,6 +87,9 @@ jobs: if ($stray -or $oldNamespace) { throw "CultNet schema contracts drifted out of contracts/cultnet/ (REC-032). See CultLib/contracts/cultnet/ and rewrite any `$id back to https://github.com/GameCult/CultLib/contracts/cultnet/." } + # git grep exits 1 when nothing matches, and the runner's pwsh wrapper + # ends the step with that $LASTEXITCODE; a clean tree must pass. + exit 0 - name: Install Node dependencies run: npm install --no-package-lock From 61549aa90bf1937a2bd4fc7d9d190d74d366f69e Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 13 Sep 2026 18:03:29 +0200 Subject: [PATCH 0005/1002] Make cultnet-ts a self-contained package again; revert fa00f3f's rootDir widen REC-032 Soul finding: dist/contracts.js required "../../../contracts/cultnet/...", escaping the cultnet-ts package tree entirely. That breaks every installed consumer: the two-runtime sample script (packs and installs cultnet-ts into a clean consumer), test-typescript-package-closure.mjs, and Heimdall's pnpm copy of cultnet-ts (honours `files`, would 404 on its next vendor/CultLib bump). Only Stonks (file: symlink into the live checkout) happened to still work. Fix: keep CultLib/contracts/cultnet as the only tracked source, but have tools/generate-swarm-contracts.mjs wipe and re-copy it into a package-local, gitignored packages/cultnet-ts/contracts/cultnet/ every time it runs (build, typecheck, test, test:interop, prepack, the two-runtime script, and Heimdral's `npm run build` all already invoke it). src/contracts.ts and the swarm-contracts manifest now import that package-local copy ("../contracts/cultnet/...") instead of reaching three directories up. package.json gets back `files: ["dist", "contracts"]` and `prepack` so a packed tarball carries its own schema copy. Also revert fa00f3f's tsconfig.test.json rootDir widen ("." -> "../..") and the matching test-script/dist-test path changes and __dirname-relative recomputation in cultnet-interop.test.ts and runtime-presence-health.test.ts: that widening was working around dist-test not receiving a copy of the (now out-of-package) contracts, but nothing in this repo actually needs the wider rootDir once the schemas are package-local again, and the widened paths never matched what CI's interop lanes and package.json's own dist-test paths expect -- packages/cultnet-ts/dist-test/test/interop/cultnet-interop.test.js, not .../dist-test/packages/cultnet-ts/test/interop/.... PR #3 CI run 34766892424 on 7d3a3dc failed the first interop lane on exactly this missing-file defect. cultnet-interop.test.ts's interopSchemaPath already resolved correctly once cultNetTsRoot was reverted (it was never touched by fa00f3f) and continues to point at the canonical CultLib/contracts/cultnet/interop copy, which is fine since it is only read by the spawned non-TS peer processes, not required() by this package. The cultmesh-ts shard-catalog $id lookup fix from fa00f3f (cultnet.shard_catalog_request.v0 -> the CultLib contracts URL id) is unrelated to the rootDir defect and is left as is. REC-032, Soul redirect on branch claude/rec-032-cultnet-contracts. Co-Authored-By: Claude Sonnet 5 --- packages/cultnet-ts/.gitignore | 3 + packages/cultnet-ts/package.json | 8 ++- packages/cultnet-ts/src/contracts.ts | 66 +++++++++---------- .../generated/swarm-contracts.generated.ts | 2 +- .../test/interop/cultnet-interop.test.ts | 2 +- .../test/runtime-presence-health.test.ts | 2 +- .../tools/generate-swarm-contracts.mjs | 22 +++++-- .../tools/swarm-contracts.manifest.json | 2 +- packages/cultnet-ts/tsconfig.test.json | 2 +- 9 files changed, 64 insertions(+), 45 deletions(-) diff --git a/packages/cultnet-ts/.gitignore b/packages/cultnet-ts/.gitignore index fd3ec924..fd7098ff 100644 --- a/packages/cultnet-ts/.gitignore +++ b/packages/cultnet-ts/.gitignore @@ -2,3 +2,6 @@ node_modules/ dist/ dist-test/ *.tgz +# Mirrored from CultLib/contracts/cultnet by tools/generate-swarm-contracts.mjs +# (REC-032). Not tracked: CultLib/contracts/cultnet is the only source. +contracts/ diff --git a/packages/cultnet-ts/package.json b/packages/cultnet-ts/package.json index 0b101282..f94f0bfa 100644 --- a/packages/cultnet-ts/package.json +++ b/packages/cultnet-ts/package.json @@ -17,14 +17,16 @@ } }, "files": [ - "dist" + "dist", + "contracts" ], "scripts": { "contracts:generate": "node tools/generate-swarm-contracts.mjs", "build": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json", + "prepack": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json", "typecheck": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json --pretty false", - "test": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json && node ../../node_modules/typescript/bin/tsc -p tsconfig.test.json && node --test dist-test/packages/cultnet-ts/test/*.test.js", - "test:interop": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json && node ../../node_modules/typescript/bin/tsc -p tsconfig.test.json && node --test --test-force-exit dist-test/packages/cultnet-ts/test/interop/*.test.js" + "test": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json && node ../../node_modules/typescript/bin/tsc -p tsconfig.test.json && node --test dist-test/test/*.test.js", + "test:interop": "node tools/generate-swarm-contracts.mjs && node ../../node_modules/typescript/bin/tsc -p tsconfig.json && node ../../node_modules/typescript/bin/tsc -p tsconfig.test.json && node --test --test-force-exit dist-test/test/interop/*.test.js" }, "keywords": [ "messagepack", diff --git a/packages/cultnet-ts/src/contracts.ts b/packages/cultnet-ts/src/contracts.ts index d44f391f..d90af381 100644 --- a/packages/cultnet-ts/src/contracts.ts +++ b/packages/cultnet-ts/src/contracts.ts @@ -1,38 +1,38 @@ import Ajv2020, { type ValidateFunction } from "ajv/dist/2020"; -import documentRecordSchema from "../../../contracts/cultnet/cultnet.document-record.schema.json"; -import helloSchema from "../../../contracts/cultnet/cultnet.hello.schema.json"; -import loginSchema from "../../../contracts/cultnet/cultnet.login.schema.json"; -import registerSchema from "../../../contracts/cultnet/cultnet.register.schema.json"; -import verifySchema from "../../../contracts/cultnet/cultnet.verify.schema.json"; -import loginSuccessSchema from "../../../contracts/cultnet/cultnet.login-success.schema.json"; -import errorSchema from "../../../contracts/cultnet/cultnet.error.schema.json"; -import sampleChangeNameSchema from "../../../contracts/cultnet/cultnet.sample-change-name.schema.json"; -import sampleChatSchema from "../../../contracts/cultnet/cultnet.sample-chat.schema.json"; -import documentPutSchema from "../../../contracts/cultnet/cultnet.document-put.schema.json"; -import documentDeleteSchema from "../../../contracts/cultnet/cultnet.document-delete.schema.json"; -import rawDocumentRecordSchema from "../../../contracts/cultnet/cultnet.raw-document-record.schema.json"; -import documentPutRawSchema from "../../../contracts/cultnet/cultnet.document-put-raw.schema.json"; -import documentMutationContractSchema from "../../../contracts/cultnet/cultnet.document-mutation-contract.schema.json"; -import transportProfileSchema from "../../../contracts/cultnet/cultnet.transport-profile.schema.json"; -import snapshotRequestSchema from "../../../contracts/cultnet/cultnet.snapshot-request.schema.json"; -import snapshotResponseSchema from "../../../contracts/cultnet/cultnet.snapshot-response.schema.json"; -import snapshotResponseRawSchema from "../../../contracts/cultnet/cultnet.snapshot-response-raw.schema.json"; -import databaseSubscribeSchema from "../../../contracts/cultnet/cultnet.database-subscribe.schema.json"; -import databaseUnsubscribeSchema from "../../../contracts/cultnet/cultnet.database-unsubscribe.schema.json"; -import databaseChangeRawSchema from "../../../contracts/cultnet/cultnet.database-change-raw.schema.json"; -import schemaDescriptorSchema from "../../../contracts/cultnet/cultnet.schema-descriptor.schema.json"; -import schemaCatalogRequestSchema from "../../../contracts/cultnet/cultnet.schema-catalog-request.schema.json"; -import schemaCatalogResponseSchema from "../../../contracts/cultnet/cultnet.schema-catalog-response.schema.json"; -import shardCatalogRequestSchema from "../../../contracts/cultnet/cultnet.shard-catalog-request.schema.json"; -import shardCatalogResponseSchema from "../../../contracts/cultnet/cultnet.shard-catalog-response.schema.json"; -import operationRequestSchema from "../../../contracts/cultnet/cultnet.operation-request.schema.json"; -import operationResponseSchema from "../../../contracts/cultnet/cultnet.operation-response.schema.json"; -import verseCatalogRequestSchema from "../../../contracts/cultnet/cultmesh.verse-catalog-request.schema.json"; -import verseCatalogResponseSchema from "../../../contracts/cultnet/cultmesh.verse-catalog-response.schema.json"; -import sessionOpenSchema from "../../../contracts/cultnet/cultmesh.session-open.schema.json"; -import sessionAcceptedSchema from "../../../contracts/cultnet/cultmesh.session-accepted.schema.json"; -import ghostlightAgentStateSchema from "../../../contracts/cultnet/ghostlight.agent-state.schema.json"; +import documentRecordSchema from "../contracts/cultnet/cultnet.document-record.schema.json"; +import helloSchema from "../contracts/cultnet/cultnet.hello.schema.json"; +import loginSchema from "../contracts/cultnet/cultnet.login.schema.json"; +import registerSchema from "../contracts/cultnet/cultnet.register.schema.json"; +import verifySchema from "../contracts/cultnet/cultnet.verify.schema.json"; +import loginSuccessSchema from "../contracts/cultnet/cultnet.login-success.schema.json"; +import errorSchema from "../contracts/cultnet/cultnet.error.schema.json"; +import sampleChangeNameSchema from "../contracts/cultnet/cultnet.sample-change-name.schema.json"; +import sampleChatSchema from "../contracts/cultnet/cultnet.sample-chat.schema.json"; +import documentPutSchema from "../contracts/cultnet/cultnet.document-put.schema.json"; +import documentDeleteSchema from "../contracts/cultnet/cultnet.document-delete.schema.json"; +import rawDocumentRecordSchema from "../contracts/cultnet/cultnet.raw-document-record.schema.json"; +import documentPutRawSchema from "../contracts/cultnet/cultnet.document-put-raw.schema.json"; +import documentMutationContractSchema from "../contracts/cultnet/cultnet.document-mutation-contract.schema.json"; +import transportProfileSchema from "../contracts/cultnet/cultnet.transport-profile.schema.json"; +import snapshotRequestSchema from "../contracts/cultnet/cultnet.snapshot-request.schema.json"; +import snapshotResponseSchema from "../contracts/cultnet/cultnet.snapshot-response.schema.json"; +import snapshotResponseRawSchema from "../contracts/cultnet/cultnet.snapshot-response-raw.schema.json"; +import databaseSubscribeSchema from "../contracts/cultnet/cultnet.database-subscribe.schema.json"; +import databaseUnsubscribeSchema from "../contracts/cultnet/cultnet.database-unsubscribe.schema.json"; +import databaseChangeRawSchema from "../contracts/cultnet/cultnet.database-change-raw.schema.json"; +import schemaDescriptorSchema from "../contracts/cultnet/cultnet.schema-descriptor.schema.json"; +import schemaCatalogRequestSchema from "../contracts/cultnet/cultnet.schema-catalog-request.schema.json"; +import schemaCatalogResponseSchema from "../contracts/cultnet/cultnet.schema-catalog-response.schema.json"; +import shardCatalogRequestSchema from "../contracts/cultnet/cultnet.shard-catalog-request.schema.json"; +import shardCatalogResponseSchema from "../contracts/cultnet/cultnet.shard-catalog-response.schema.json"; +import operationRequestSchema from "../contracts/cultnet/cultnet.operation-request.schema.json"; +import operationResponseSchema from "../contracts/cultnet/cultnet.operation-response.schema.json"; +import verseCatalogRequestSchema from "../contracts/cultnet/cultmesh.verse-catalog-request.schema.json"; +import verseCatalogResponseSchema from "../contracts/cultnet/cultmesh.verse-catalog-response.schema.json"; +import sessionOpenSchema from "../contracts/cultnet/cultmesh.session-open.schema.json"; +import sessionAcceptedSchema from "../contracts/cultnet/cultmesh.session-accepted.schema.json"; +import ghostlightAgentStateSchema from "../contracts/cultnet/ghostlight.agent-state.schema.json"; export type CultNetWireContract = "cultnet.schema.v0" | "gamecult.networking.v0"; diff --git a/packages/cultnet-ts/src/generated/swarm-contracts.generated.ts b/packages/cultnet-ts/src/generated/swarm-contracts.generated.ts index 84bb09b0..f2dffce2 100644 --- a/packages/cultnet-ts/src/generated/swarm-contracts.generated.ts +++ b/packages/cultnet-ts/src/generated/swarm-contracts.generated.ts @@ -1,5 +1,5 @@ import { defineJsonSchemaContract } from "../json-schema-contract"; -import ghostlightAgentStateGeneratedContractSchema from "../../../../contracts/cultnet/ghostlight.agent-state.schema.json"; +import ghostlightAgentStateGeneratedContractSchema from "../../contracts/cultnet/ghostlight.agent-state.schema.json"; // Generated by tools/generate-swarm-contracts.mjs. Do not hand-edit this file unless you enjoy losing arguments with a machine. diff --git a/packages/cultnet-ts/test/interop/cultnet-interop.test.ts b/packages/cultnet-ts/test/interop/cultnet-interop.test.ts index 07fb268b..51bea1ff 100644 --- a/packages/cultnet-ts/test/interop/cultnet-interop.test.ts +++ b/packages/cultnet-ts/test/interop/cultnet-interop.test.ts @@ -21,7 +21,7 @@ const execFileAsync = promisify(execFile); const cargoCommand = process.env.CARGO ?? (process.platform === "win32" ? join(homedir(), ".cargo", "bin", "cargo.exe") : "cargo"); const dotnetCommand = process.env.DOTNET ?? (process.platform === "win32" ? join("C:", "Program Files", "dotnet", "dotnet.exe") : "dotnet"); const pythonCommand = process.env.PYTHON ?? resolvePythonCommand(); -const cultNetTsRoot = resolve(__dirname, "../../../../.."); +const cultNetTsRoot = resolve(__dirname, "../../.."); const cultLibRoot = findAncestor(cultNetTsRoot, "CultLib.sln") ?? resolve(cultNetTsRoot, "..", "CultLib"); const cultcachePyRoot = resolve(cultLibRoot, "packages", "cultcache-py"); const cultcachePySrc = ["cultcache-py", "cultnet-py", "cultmesh-py"] diff --git a/packages/cultnet-ts/test/runtime-presence-health.test.ts b/packages/cultnet-ts/test/runtime-presence-health.test.ts index 2ceedde3..fa21aeaa 100644 --- a/packages/cultnet-ts/test/runtime-presence-health.test.ts +++ b/packages/cultnet-ts/test/runtime-presence-health.test.ts @@ -26,7 +26,7 @@ import { // are generated output and must have exactly one home. const VECTORS = JSON.parse( readFileSync( - join(__dirname, "..", "..", "..", "..", "test", "fixtures", "runtime-presence-vectors.json"), + join(__dirname, "..", "..", "test", "fixtures", "runtime-presence-vectors.json"), "utf8", ), ) as { proof: string; signed: string }; diff --git a/packages/cultnet-ts/tools/generate-swarm-contracts.mjs b/packages/cultnet-ts/tools/generate-swarm-contracts.mjs index 53ad1e18..dd27ad7c 100644 --- a/packages/cultnet-ts/tools/generate-swarm-contracts.mjs +++ b/packages/cultnet-ts/tools/generate-swarm-contracts.mjs @@ -1,4 +1,4 @@ -import { mkdir, readFile, writeFile } from "node:fs/promises"; +import { cp, mkdir, readFile, rm, writeFile } from "node:fs/promises"; import path from "node:path"; import { fileURLToPath } from "node:url"; @@ -6,9 +6,23 @@ import { compile } from "json-schema-to-typescript"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const repoRoot = path.resolve(__dirname, ".."); -const manifestPath = path.join(repoRoot, "tools", "swarm-contracts.manifest.json"); -const outputPath = path.join(repoRoot, "src", "generated", "swarm-contracts.generated.ts"); +const packageRoot = path.resolve(__dirname, ".."); +const cultLibRoot = path.resolve(packageRoot, "..", ".."); +const manifestPath = path.join(packageRoot, "tools", "swarm-contracts.manifest.json"); +const outputPath = path.join(packageRoot, "src", "generated", "swarm-contracts.generated.ts"); + +// CultLib/contracts/cultnet is the single source of CultNet schema contracts +// (REC-032). cultnet-ts is a standalone npm package (published or vendored by +// Heimdall independent of the CultLib checkout), so it cannot import schemas +// that live outside its own package tree. Mirror the canonical contracts into +// a package-local, gitignored copy every time this generator runs, so `dist` +// and `contracts` both ship self-contained. Wipe first: a stale local file +// left behind after a schema is deleted upstream must not survive as drift. +const sourceContractsDir = path.join(cultLibRoot, "contracts", "cultnet"); +const localContractsDir = path.join(packageRoot, "contracts", "cultnet"); +await rm(localContractsDir, { recursive: true, force: true }); +await mkdir(path.dirname(localContractsDir), { recursive: true }); +await cp(sourceContractsDir, localContractsDir, { recursive: true }); /** * @typedef {{ diff --git a/packages/cultnet-ts/tools/swarm-contracts.manifest.json b/packages/cultnet-ts/tools/swarm-contracts.manifest.json index 49b5073d..f5750740 100644 --- a/packages/cultnet-ts/tools/swarm-contracts.manifest.json +++ b/packages/cultnet-ts/tools/swarm-contracts.manifest.json @@ -1,7 +1,7 @@ { "contracts": [ { - "schemaPath": "../../../contracts/cultnet/ghostlight.agent-state.schema.json", + "schemaPath": "../contracts/cultnet/ghostlight.agent-state.schema.json", "typeName": "GhostlightAgentStateShape", "contractExportName": "ghostlightAgentStateGeneratedContract", "validateExportName": "validateGhostlightAgentStateGenerated", diff --git a/packages/cultnet-ts/tsconfig.test.json b/packages/cultnet-ts/tsconfig.test.json index fc47617c..a73b52c0 100644 --- a/packages/cultnet-ts/tsconfig.test.json +++ b/packages/cultnet-ts/tsconfig.test.json @@ -1,7 +1,7 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "rootDir": "../..", + "rootDir": ".", "outDir": "dist-test", "declaration": false, "declarationMap": false From ae194d5eb276f35194d2042451e228c640b3527b Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 14 Sep 2026 15:18:42 +0200 Subject: [PATCH 0006/1002] Release CultLib Unity 1.0.57 with deterministic plugin assemblies Bumps org.gamecult.cultlib to 1.0.57 and rebuilds its managed plugins from main, so the Unity package carries the store-routing CultCache (one home store per type, AddBackingStore(CacheBackingStore, Type[]), atomic commit) instead of the Sep 3 assemblies. Install docs point at the new tag. The build script now publishes without Source Link or the source revision, with CI path mapping and cleared Release intermediates. The previous DLLs named the commit and the worktree they were built in, so committed plugins could never match a fresh build of the commit that holds them. Co-Authored-By: Claude Opus 5 --- docs/nuget-packaging.md | 2 +- scripts/build-unity-package.ps1 | 18 +++++++++++++++--- unity/org.gamecult.cultlib/README.md | 4 ++-- .../Plugins/GameCult.Caching.MessagePack.dll | Bin 51200 -> 41472 bytes .../Plugins/GameCult.Caching.MessagePack.pdb | Bin 22020 -> 18920 bytes .../Runtime/Plugins/GameCult.Caching.dll | Bin 96256 -> 118784 bytes .../Runtime/Plugins/GameCult.Caching.pdb | Bin 32964 -> 37948 bytes .../Runtime/Plugins/GameCult.Logging.dll | Bin 6656 -> 6656 bytes .../Runtime/Plugins/GameCult.Logging.pdb | Bin 9520 -> 9256 bytes .../Plugins/GameCult.Mesh.Quic.Native.dll | Bin 15872 -> 15872 bytes .../Plugins/GameCult.Mesh.Quic.Native.pdb | Bin 12292 -> 11960 bytes .../Runtime/Plugins/GameCult.Mesh.dll | Bin 700416 -> 675840 bytes .../Runtime/Plugins/GameCult.Mesh.pdb | Bin 207028 -> 160904 bytes .../GameCult.Networking.WebSockets.dll | Bin 14848 -> 14848 bytes .../Runtime/Plugins/GameCult.Networking.dll | Bin 525312 -> 524288 bytes .../Runtime/Plugins/GameCult.Networking.pdb | Bin 250308 -> 247280 bytes .../x86_64/gamecult_mesh_quic_native.dll | Bin 40448 -> 40448 bytes unity/org.gamecult.cultlib/package.json | 2 +- 18 files changed, 19 insertions(+), 7 deletions(-) diff --git a/docs/nuget-packaging.md b/docs/nuget-packaging.md index afc94570..986f73df 100644 --- a/docs/nuget-packaging.md +++ b/docs/nuget-packaging.md @@ -19,5 +19,5 @@ closure through UPM rather than NuGet restore. Install the Unity package from the immutable release tag: ```text -https://github.com/GameCult/CultLib.git?path=/unity/org.gamecult.cultlib#cultlib-unity-v1.0.46 +https://github.com/GameCult/CultLib.git?path=/unity/org.gamecult.cultlib#cultlib-unity-v1.0.57 ``` diff --git a/scripts/build-unity-package.ps1 b/scripts/build-unity-package.ps1 index 804f78df..8e425066 100644 --- a/scripts/build-unity-package.ps1 +++ b/scripts/build-unity-package.ps1 @@ -38,7 +38,19 @@ if (Test-Path -LiteralPath $outputRoot) { } $unityPackageVersion = (Get-Content -LiteralPath (Join-Path $templateRoot "package.json") -Raw | ConvertFrom-Json).version -$publishArguments = @("publish", $projectPath, "-c", $Configuration, "-o", $publishRoot, "-p:CultLibPackageVersion=$unityPackageVersion") +# The tracked DLLs and pdbs are committed beside their source, so none may name a commit or a worktree: +# Source Link writes the commit SHA into the pdb, the informational version carries it too, and each DLL +# carries its pdb's content id. ContinuousIntegrationBuild maps the local source path to /_/. +# dotnet publish has no --no-incremental, so clear the configuration's intermediates instead: a stale obj +# directory must not decide what the byte check compares. +Get-ChildItem -LiteralPath (Join-Path $repoRoot "obj\src") -Directory -ErrorAction SilentlyContinue | + ForEach-Object { Join-Path $_.FullName $Configuration } | + Where-Object { Test-Path -LiteralPath $_ } | + ForEach-Object { Remove-Item -LiteralPath $_ -Recurse -Force } +$deterministicArguments = @("--disable-build-servers", "-p:UseSharedCompilation=false", + "-p:ContinuousIntegrationBuild=true", "-p:EnableSourceLink=false", + "-p:IncludeSourceRevisionInInformationalVersion=false", "-m:1") +$publishArguments = @("publish", $projectPath, "-c", $Configuration, "-o", $publishRoot, "-p:CultLibPackageVersion=$unityPackageVersion") + $deterministicArguments if ($NoRestore) { $publishArguments += "--no-restore" } if (-not [string]::IsNullOrWhiteSpace($NuGetConfig)) { $publishArguments += "-p:RestoreConfigFile=$([IO.Path]::GetFullPath($NuGetConfig))" @@ -47,7 +59,7 @@ if (-not [string]::IsNullOrWhiteSpace($NuGetConfig)) { if ($LASTEXITCODE -ne 0) { throw "CultLib publish failed with exit code $LASTEXITCODE" } -$webSocketPublishArguments = @("publish", $webSocketProjectPath, "-c", $Configuration, "-f", "netstandard2.1", "-o", $webSocketPublishRoot, "-p:CultLibPackageVersion=$unityPackageVersion") +$webSocketPublishArguments = @("publish", $webSocketProjectPath, "-c", $Configuration, "-f", "netstandard2.1", "-o", $webSocketPublishRoot, "-p:CultLibPackageVersion=$unityPackageVersion") + $deterministicArguments if ($NoRestore) { $webSocketPublishArguments += "--no-restore" } if (-not [string]::IsNullOrWhiteSpace($NuGetConfig)) { $webSocketPublishArguments += "-p:RestoreConfigFile=$([IO.Path]::GetFullPath($NuGetConfig))" @@ -56,7 +68,7 @@ if (-not [string]::IsNullOrWhiteSpace($NuGetConfig)) { if ($LASTEXITCODE -ne 0) { throw "CultLib WebSocket publish failed with exit code $LASTEXITCODE" } -$quicPublishArguments = @("publish", $quicProjectPath, "-c", $Configuration, "-o", $quicPublishRoot, "-p:CultLibPackageVersion=$unityPackageVersion") +$quicPublishArguments = @("publish", $quicProjectPath, "-c", $Configuration, "-o", $quicPublishRoot, "-p:CultLibPackageVersion=$unityPackageVersion") + $deterministicArguments if ($NoRestore) { $quicPublishArguments += "--no-restore" } if (-not [string]::IsNullOrWhiteSpace($NuGetConfig)) { $quicPublishArguments += "-p:RestoreConfigFile=$([IO.Path]::GetFullPath($NuGetConfig))" diff --git a/unity/org.gamecult.cultlib/README.md b/unity/org.gamecult.cultlib/README.md index 8aeaf53e..3c88d34b 100644 --- a/unity/org.gamecult.cultlib/README.md +++ b/unity/org.gamecult.cultlib/README.md @@ -9,10 +9,10 @@ runtime; the Microsoft license is included under `Third Party Notices`. Build it with `scripts/build-unity-package.ps1`. Do not edit generated plugin assemblies in the package output. -Install version `1.0.41` through Unity Package Manager with: +Install version `1.0.57` through Unity Package Manager with: ```text -https://github.com/GameCult/CultLib.git?path=/unity/org.gamecult.cultlib#cultlib-unity-v1.0.41 +https://github.com/GameCult/CultLib.git?path=/unity/org.gamecult.cultlib#cultlib-unity-v1.0.57 ``` CultMesh chooses mapped memory for reachable same-machine bodies and advertised diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.MessagePack.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.MessagePack.dll index 4cc546154fb0b42b9bfcd22d2bf44ff128fbe5fa..e4c51fc6bd2f45f6872da2bf321617dc22e4e3e0 100644 GIT binary patch literal 41472 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 literal 51200 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𝔦tS_DG5NtBLK8zNQQp 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 OH_2T8>gWGE4*V~+TWi4p literal 96256 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 )h1SMoMOzS;-w(1iIhvKLTQ*4 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 PtLw{qzh7N+clQ4PxOD*v literal 32964 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 delta 743 zcmXw%Pe>GT6vy9hcFGJ}_fJX(5&r}p%<;FoGvlmAZm0#JBo#L;`0Cl*YQUI=rR_TnmPCCd3Q9{j#3K=6S zf=J;bJ6J?SDcIwTO0Nl7c7FPTGI=8Y)|`K|K@_mS)fw0(15kh(X#kF+4nYX!Fy|7> zBNjY_I*EIH!Q%@aUqBv{Rz0%nkyRw)(iXHq3Dteit{3lmv5&aC-PHg-+_YT8BjTqR z&gWzMa$ql4y0hk=A6&Wl`1H~K?27aCM3ES}LIG3)-4TT#&t{AG{)mJ!bGZmC%S$A#Y-R~qY`#mM6cq|ssRiR%KC|9_?-RXl*@a$nG@qO1mR&FhW;6D1dZLSQdy41Ntc%UsQ@MQF zo-=b3(`F%WnHSk@?v^RTxl}5hO_^7ChO+`Uv)nG&ESqHcWK@Zm;zytDupk_OAPNQ&19~t^fx{$d uSmiPm3G=FTtk#ihxaPQz;yxz6HE7tTzVQvIZTbJdR{Ndcso$hbYyJWIv$DSc diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Logging.pdb b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Logging.pdb index 93e24784ab7fbb57088c4efcdca0fb76d1baf224..f0189156aaa9fb8b947625c53e2bb56c741309c9 100644 GIT binary patch delta 870 zcmdnswZdb9Nz4OA1_tFi28K0E3=Av`Kz49RQD$CxF_6iy0VWn2%&-N>P5{ZfhkCjI zX%S{1Rs`~$a`Kaae1WO!d_Vq-@!VtRb2U9ylKa>FrqvTCq-e7O84MVh7~+9+ z8jzj@q-OzXHbzDU5k@A4A3&OoiD|MTqp&XnP%ch^k)Z&H+kkkE0?+`U+O-Ny4CjIP zHV{7o;+H`D0W1fShXH1W?+VNe|A3fPk(q&Kay{c~ha8|v1_q#WfhM0&0J(<^%w}NV z0MeX5tj@s7aD`bND6Yje4XDzTaT}0SXJTe#VYtLRc@vY@WFBTkCdT;5AX?7+!8nRPhW!Qu_=lixAt@bLmU4ZE4y8}>IGZ@4x&ljTW0vQXo71?8u& z-s@WF2mW(gv3GHBaMQ*JyGF5SPxJr5YC*3~7q~XAHxec*Alr zDQnv)PC{HSr?ogSsm{*hU)sLWW*WOn??gA=x+VME=C3(%TkqaKM)5Fn&-;J&UF=!1 z%g*|hh3(4h9f#`I6s2hfxGep4c1y&uwfaZwJdd|#JyFxP zjjjwb5uAGV)z9fir(D>0R@LiJ&sT>&gNy$g+6*_nEoJ-pkN2IY;5LyUtXIwt0JG-r8a+mpS^u%U911Z usn;%D@^yKwsUgv>8LIk@osoI-2liPqObb#c_ozg%E=Xluuy68f6;}X!Ry<(< delta 1137 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 delta 1426 zcmZ{kX;4#F6vyw&#$t?8Nm&aRgn$Hs0YVa~7*O7Q&i|bA-v4}fckZd2 zuk&gm#jYd({7V6FBm#e1qKQpy+iG@rO@T8tK!6?)z+IT1!90W@U<@JPLS)8D z0DHth1UN%nAnp)fh!rvb`3>?%AT)vRJ%&1&iGcNxgODajE95lOKDR#zxB%-(2sOxV zPlp{&&_9!#A97K!wGX*YAk+uqjU>N$P9!FvfJPV{zbe{2g6_%=86^hC*g-okNLs31Z&}fxdAyKE5c;KZD9yp!CbaW6Sq^UuyBs`v? znntr1rd>fS(_Yg-Qw!cfd2IYougvPls&syN(D(H(`T3-7Jc=o zwqHs}EqhZ0f86nm!PSHFr#Bj z3$HR?MNi6PzxNNck?Ciq5tP0AbXb1vEPm{W2W>mac%s>*_>1i`H^u!q_(a0nN-q|1 znFissxj-7~_s#bL+SSiCtT+(dQ@*@Lw4yn%v4vc*g_(EAqB~6DG(FpMoEXVJ)7)R< zq8KHg8fZyL%vQf1Rxt0RbY{MA>%CN+&r`(Ied4o{ossKv_Tof_Vo7Jem||Nt{@qAw zyPJ`4&p4X9eo?mOYTGSFwKd5$t0_gqcg?!?sQnJhJlyJ(**~^+2oD?|k4>oSU%R5m zr)TTaW`=M%{yfLHBWiHb=mz7+#Dkspe>u>F+x(qlXIS1n+(>76g@(MK^Ws9qn>KpI zFSL|*3Je^UTHd)Zkw)F@7Rm4M7E9t1N%AhC(S3LKrE5w}akNF5_Ny<2S9!xAsJij~ zT%p`~bmW9f<6nseuGd2=HYdHR$M!0w{+!2=jMSHf0uMAJ1Nd!&?rAg20a zhEyZbt7Qe4jv**!BniagkH=Ch{{M3+7SCn~7zzwqqZ6>%T6BGwT!|?}`c- z9F#qqQBq<(>Xbzw>?h&~bx}@!NM{2WMnEckbZ75a^@5$fo%Hm2!|RVL!s1bh0$xsG zX)>J-mCHn^Xr&2tITf=gu?2Pi zu7_(CAGW+WZr%a>rU380%1qhWzGRE{JIbv#YYsk1^>i15i4ll mPv3AK$*ruZY# x8_S<`~4BjhN+#*?^e0S~Vdl#J>SSUk=*< diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.dll index a37e9873dc4a42e67f706ee310f277f2c03401b8..124537423c740810cfae333a05756187168d11fa 100644 GIT binary patch literal 675840 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 z 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

leuDbgWD*Vjxu3rGj~-sz%=^-mpK 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 L{rTVjI}ZFeJvpU! literal 700416 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

r~ zm*w5^0V|(<+VW7n(7do`xh%b}zMf+7nR3{1hRU;TjcpemAIF&f1ADQ~r!VVdHk~i@ z+3(D!au&(K?GZ8Mq5k{>>>l}NEj!uv>`6!ES{t6)>5@Z;pG{Bwec4EQ=XK;TpP887 z_QYqub3GrnqqQF-&zk%^wQINKbIp61Pdgrjdcg8Cz3ty&f9Uz%vwS`010*l^8=|N3 z+IVaKsJ^oOb36W6J4^Lq>Fu~f^J1pw`A1JVD8HWL7s-{~Pc40j@0q@5Ijp>4c{xAk zSAqRU(gRBuQFr3LJ?X(Bw-0c#+kfGBn=Vj4nRPPQV?#%6K!2V(+_ek)y{s=*AGp6; zYNEIJ@Vyx~3<&?7+t;z{vk|qcS$_-E9^X@ZRBgJFo;hmO3G|F9J&&Go^{0H2KcU`f zx8nef7qtErL;s=mFXm6<4&_7koXT&O6okDEpiy|3ELejNG%#s^Bzc($utU)GNEeiY{4 z_fdLJ?e6w_Y7D=K8e;r8_~YgoHSI@qXSGr}eSB5S=ELjtQ=TF|5%rMsGke2Zy$$^` zo6c8D?k2t{-v?G6##^}}>Q>V);J2E5*naUlKY=&UTW&6$jxwn0x|99c3PU+86kKqglJ*|J?yZ*)f)K`!7qxgt=*x9+j?FVky z(^m(-PWePsE51EK{dx43J@Z>L-^w_}`>L-Sud?4uPbYr9s-I2Ih>@54jGvr*Ym2Ay z{jS=kv+)s^K9KVM9yG+)+Lw^t;%z>}r=KamuUcF^+~41p=fGLE|6S?!yY_JX-}*Pu z!w$+nP){3wA*!B$y(K+deLFp4t{vj)H&yh`_2Mc0vVAB1gx~x-`(%GGyWN<6Mv0ZH z#jJ<e`$GGk1L#By=lhRh_dY-+VPjnIOwUjjs5hM z-QTkFSgOZ$*#(+Mus&40X3J~+Z1_D{`L-GR7pM=6-xxJ=kpJ|G@l#`JsT==zykWUm zPpzGes9G~0^^`4-@A8Q#)^j@__oSScyM3~3KJWe2%FFd(=?F)EurDs%O!)EC@0kC( z>SKNN^}i9%<+S}b;`(n`AHBtM`_Yre>4C5hG_KwWJ3#%WAM616DJeIOS$g&ZBWC}P z%E$G@@vQGX-$`$N-EH&v=3lnHZTrHWv%NRt>YDHD|FfS(`sc%LP=6vjo0%T##$Q?f zYz&opP%l}J zExo6DzV~bo=4a={5z%YLXY;Ri`_Vn|BoC!0eX#2*ff{ATtEhSx<)U#Sn?4WoR-(7- z(AYmXnBJpmJM+wOep1ZwiJSd&nonl)$$syx94ueCn^$M2qjhGgm$l(ZPD)39O?Eu< zwc{_&8@TqNdZKiU|NJy6U)VlPX8)h(Gnh}_LGhmI4bOJ0!kkBls9CO`ugjj1ohH2@ zdu7)#JeB*H&Bs15k2dx#Ecb@m4co7*U)8hTSkG*~^<4j3laBpI&d>UfJRU(`Cy|`+ zD~-Qk?FZT69h@Dv{oHr{X2kh1fg=By#yM`Me}}H8UFUSxzJ>L(-83tgjfei4b*Mls zHvVsDXY6~Jj{RgyA5lmBNPIA_7)8&h`n%~r;d)f2T@BaoxLlUMum0ik?X5l5*WRqJ zcHECBTfRW;{E z_1o4r+r@A`l!@o~fB#AQcQjtv`3%(+{e|n@yq~)oeq8v6_^fvtXUU%Y_&1_jzhBGy zZ+4%}&g*Hsde5vMW4u3!`1sE6h^Uv$dl=uF-@<%tyr&-i(DJeUiRZn9qd!mCeNrxe z_-@Y!M^uIBKiF3_<0H&J`reK%@<+IOS&??AsNzv3U*=b&>OJ@?%xKiW^D zC)-u-=XU=L`>E#qmS^^1h>qXwx`wS6YA@!)^<>{8W?zitvinm}*{{o{v+I)Kew(Gw zarEZGs2(^zyByXJ#yW^OHxe=Xfz)oVR#^FZ zqyPIP8_)X3^}+8f2jl5nXV3QF^4R$B{*%=!zE@$-qfx!^d4A^0@7eNkd~fy1^}_eJ zdg{}<>WTSg(`V=3HiF9OtLaZ#{p#)h!%lJP4}5OW!#7&&JLkjiTz~vrUp=y(+4Rg8 zevtEr*LN=?J70d^P`Oyn?0VsLX8q5WkMPva_8u0_*Sm9^Pnz{BPgUJS^~(JreDb)< zPnMVE$bPqSWvBO5A9LRZzxwc^&ByZdjlCgzcG zzud~_sUzGuwd{QhK4(Vfw|bsuweP*pOSxV7+%~7@^Shj$-s`EeruDT`t>h!uaxu2ezM$*U-RAC?J%D0INJ#>Uv_z!j`95b z&*~@4pYx^lNz!NPzoa*OPnP9j|6qOhX8X(_-uSHr^Yj(V&F?HXy_0?7{Cmceont)v ziJY!Cd91$mZWsRB_ivd$`;k56q;ZJiseXIA|NG0_$IZMyOZnP+r9X5{txEZ>ISC(icY_?`PXzjJ@(XV3bl`n2apeRa_kk|Cn@`_Yz<&y!}; z=Q%%~+KcFSGV8d3%Kw?l6?OBZ9ChwJ6wiO0Po}<__H^rmHXn}vzvur}eJmSEZRE-R z8o#r@N9WN=Z|!_NqCPSHN#MRm5;gnzmjU%;W|3^ zhwT2b?sw+1;m;TEv-XwtGs#}?zUD8r|JxgX-Z!IoY7ah_^AXlD$^Nk%+3$AW#CQ9* z5%tzQN*_2sIqLQmbKJgS%{qdMP2OoF$ zS;F%>+&}p_!mZ<%&9?Gp)~Bbk<9ka->#U@A1F%0${xF^Mr+E$4D~&g_k3;o%`%^X_ z=3~!c;9T}Qgb(i}*mYaB16E&&Z{;lF6DU5vMNi6??=f(@@_B{q^IG+8egEz6DL<_H zn|pnMyO*%$en!vqq|cV#-Y+3}u6OG@>&o{(O-Fjd>(#cMBkDk>zuf=19(lc>)wLtX zTl!GXn0|fF9nHG1uYQH|6;w{1_x8k7{V5Y4p3_`gJoTqpSRW)kU_L#|Mf}-b5x%GW zvVI=sujYIg*9Sj+cmE^Y$11=%T&}lYf=_1t5p({J`IEldcFE4)>M7B2dMg+9QJ*LI z0(FF2r{j9C_fJCp+2=^I`v>bg*SF;prf0saH&!14`L5mi+W(h|&+Here^I;iH|vD_ zeF~}*`V0G?^;>~O9jLN#<<>Pi?yUqJ<_TFej?t9vEn;7TZIiU5?^F7Kl-FcOD@uhMxUtZT`dbT^f z4^H<_v+IM(%kj3J@SO}(KY@{-=(FpK=`B9u>etc}KU?1L{w%$dz2p0@wtnn6Uc%e& zhGeE+Te-M=oWAEf(OdozxfgA}>tNfRwV33~#M}D-gy(y*Jil0F_Cqo5!T%;X%dsCu z`ndQjdg9#KZS>4hd);jHhT_RS-uDwdBkEc7ccP!`?D)yE2=A*2=Dt-#z31Y;GX6tU zJ!{T)dg=qS4}FHjMk^ zuRe4v<-g{B|4)Wbpw9Wmmg@zq?^3x=#CS;i{gj^4v0R^2(|bh4om|%6jH-)}AD#2D z^f5Ksm7CL9KRi5FL+Pj(|INvH(Y0jWIO7<``k1pXA2$DT{k za=wJmmGJo#d#;_&<%IHYV%7yB?mSYU?D?9gvgd1Z-1(ZAJ6{u*^EF(Kp6SevY ziMaCgevZb@Uoy`H(Y+LsyC+}1UviV#=cc-+KQ2#rZi3hSS;du+cbG`99j~k4)>ksS?atpxkcKe%W8ow!= z-*P%T{&Tvpeb_Iuen@zafYY%YeBPGtwOV~#lm2DQ|ERp2Zh)Eh`sz?Kp5WYrIUf|L zTFfJ|fCQUacnj(EdLNdV1&l3S2zvJMVMwzKZo9hzI@g zxuTFC)A4+T&)wK||8JiYvQm*;taty;llm?D5w^X;d&OK1dtMCRS#;|m*8j*pFBIwZ z`x5-!3El^#b$8M?%g3JcCcU!jF*)KFv%falt<(Oy-?2XFe#!^?!7hFFx>0ZE7kaBd zKF7-Y@=V9`fk~5We*fN+($F8D3klDk?CJbf=HJ^hJ3pplIr;qr^Zk`@K9cDdTPa8m z-iI6E>TO4N4(90p(tG1Uw*36$dgb@*{8QSs!v5ZQXolxm`G)|Mt_Kdk*FK zpXO)#ad@AY`JLzbTW`YY@y*;@fW~bx#&0n_l%=h>B$@6I*_wD>EaQ6tq z{e)~fdv9<}I%{{~2buGp;W`+dQ=@qn`vGj{xxM-RVfH)M3$M@dlhbqg{##F$XYJ*} zITSNbiT;nzXLC7uT(a+BePx%=`d#p&GW?5hKgIf8m=U=7B7di0?fB4dyeSMQj6TIg499p0uV-JriU&v)^8hYii=^!tbp){md2C;zQE zzWjO`$F1ubrsH)kKCj90u)jFtR^o&2xw>a|xmdsLlk-G-W%+CNozHQFbcI;gp>kRO zE5x&Z$@O%Tvs3(JIr%x?t#hz`@srz|=@`#X#%GU1EI-Fz>GmzMzjMj+Io^NbC)3;U zmcNI|zvmL(e_?vtZ+N_AI}v_IhT}h8PIVNXQ|fE=XVtBiM}9*18R1`u^E~b4 zASAqgL0>#KN7%}{%w9?z2zsu4~>I2B<8!bpTs z2&W;Oj!=W}8-&paXCR!3FvhD^XMsnpH&UJB)u?j;Uk>~PgsTv)Mz{vykI3&@geHXR zyh+|2!2JoK72!^VyAbY1n1nDH;U0v05!w*$LzsdxOhMWyD8mDIpNjAZ!lMX}AxuMf z9N`Is=?G6EJcaN)!YqW@2rnSKh%gsn9>RQtg$RE|ScLF4Wd9J)r3fD({2k$AgieG{ z5SAhQ6XA1&Uuwg(4cPc`ye!^8~u$D8dS5t8A5})$=?#8LEY^C8lge8_}d~hs9XH) z5gOF3{!R!D>NbBDga&oHzdJ&Mn&|I^(4g+{haxnnKlukBG^kepV1x#Br++9ygSyK< z9HBwo?H`TMpeFgpAvCDT{z(W8>K^}8ga&o5e;PuAYV$`UG^qRhvk)58{rMOYZ2FeAl)IbG*h6uF3 zKotTVCD4fijS^^#Kw||OZ=j99`5FUl4rro*wgxoWKqTK(fo2k$j^JMEu4W zh*FFd+%-|=?Bx(d5+n>{QV6cEpTd4U;R9Aqqhm}0vv9*Fw`QrR)MCeEB>t1X`m~O{R%th z=K-4Ibvo(ic!MD+N#EhMIb4TVEVwuzD$znI$0Bd9Pn3EVxG|>nQ3ZgW!S80xH8{Pq zr#cMu{Aad($9Uf(_DzF3B7$!}8R+9rNgI@^5H1y7%Y#aNV{ow(tjrbOMu4csE4(MV zlv-tCp92&`2)FSMh&9m8fHpVKIH<#R2D%Q=j(|qRNJ}i2smLP@TxslYSVPtL_gXMblryY(SQPD zRelR7X`t%>6&dJZK*a`n2hacmeF3P%K#?dzI{-=>+$e!=22^Hn9~#_IOO^TupmM=A z$G%68isUGat)yW?096_2LO|69qS~nT>AL|h8XSGeW08TLLZ$ozP>t}b_CMMbzaA1( zs#b7y!lh2Q)cMS%&Sx%llD1w_)JuwbNl`B;>Lo>^q-gZ#Pg3d+kf710J$2IJLH?=e zM~%QWd)u6@)E^0oZ3&HS2DHF?^(m{Tll}T*E!1f8xDT;SQjSKG+Y7+8^uTp)uhfUY zwF<6HWN8x#n!Tl`!CuEn7OLk>0JVvvgZv|*om(2*xRg?qZ=007&Hs86ThHw#?M|SZ zZlE%gf@<({d0;^zej9?x}wdN%~}EK`xB+7%rq&k0o@z}k-l{J z+-o~bub^Jm;j+a0m6BJa864p(-H2!=?K?&I&x>eQn!Iinbb=jCUs>mqxH{x6sc^|!u_*F~VYDrri*>ivx^Hbxpwwy`DtUZ*g` zbS1(iEwO3IBQ3F&{xrv>QerE^*vRV~D-u+S1Wi)%rpU^BmHHcGZZSBriA|<2`~X~2 z2w4y>FoRW-0Ztfyf{K98hzt0Ox&@8Y6_1W48anp-Sxr z+#;#*MN(Ibq^=gmQj^&~UHuYEPq|SZON5{8Wq$-e$O5`M04+8pC+oO4#(wtV*iy)H zw~0OXPfFcypf8|J4;$#V+Zmehl~Ruz+-LAvVS2%3H=G-K+TdRJk)bKMp2O`0pJ6t| z8jC(3P@$3Fb(3Nq`q4XpIz{H?k(KZ*Xx6qoLS6>V+7|nF;LJ#Xc3&+1%k_?Ry!ZuE+~Gg+{V;MKsQ(5H!dix~->fFtIbhd6I$HtM4`?dIY#2pxD<9 z#IZrZep3)I=OAFtLGU^Jd(x&seqXfA`$%h{PC)(RJhMp#>_;R6wv)+#NA_gE{jEso ziiEC6=!%4{SZ3SB5?dVbm@>rw7i`^bunxt+uhH~F0Sz!I$VLo`kA6U@!%Xa>=!0Vb zmGp=uuX!ABSijjBXPpVk*%af#Lx2{T8SZ0%thf0bpviu&^S&nggI{sIEH)E;knGbn zrhohmP}-F3a|3Z5q(%C4Kw}Th+0y}ipNzbvw3PQ6>08&BzO@=$#u$Ae)vkzmXz6@F zWBi|%DzyusX75mF$svHsq-^B^mB!zG5k4Z(#U6%k+zqHQ;MIkyfL9@!V>>b)Z}3(~85* zCdKD;Z_m*ABQb{sZcwBXlHLVqY-}Fp*!Kf^CN>}UpB@HO5&sSB#%zOo54d@N>Vp~R z@&5qS*Ub37Hqfy5(0^g!`g#{5H`6~NpF%e%x4z!h?^@}Hn4U-FC^hp-8cBwT%tIo5 zp;we*NMwJPc1R@l4&%ncr?#>4S19~8IMGeR2$t+ad2F&8D^GwL1GZ9)0b8k2ahe|; zg4m`W?XetoXf$vY@e5GO%MA3T_RK0oMSRC;N?m1eS3pmj0JWI38$rI-fPK-{fIZ9B zfIZ7LiETGMU^&vZ2khmx2Q=!gHaNP6`Y!{qJ!lhtZNhK5$ox#u`WvOT_!UOj;9&UP zRO8Jt>fMI`XUDBkfaaJKWJRaREO3nfIdtPL#8yODiyPD?^Wgm(-0{oM;{kO9?@dzb zdBf$Wkysgnwm%bl6Ls(saAV?!L;8;ajg1rTGeC=ijQ|xEQLC;5w55SY&9WL%8oM1D zu`O`pQEHgM?TOw)w%x8#kRB}aQ!aLy z|4)=7q&wB5;MQ+8qy1Rm8scLxR$NQ5!H{m)13=4r$nqpC!y_j49*oKF8;Hx+Y3RNN zZlbYpIZ%Yj@zs06S`ZYu3nlLZXllFy<)uC|H8SiV%#H~csdv!iNFP9(12-}9Zp>5t z473c;jwbC%NSg*^*JKU^)YU`2-{5?8HE`V`eYe#8GXI@#;142pTKp48^#GuWk^2vU zw*=@J|B=~t>@JOc>)I$V>$WsPl*UebS*cHnF8)zF)|LP*h>_j+0nqHYK#@%*+TJ}o z!v5Oq$krz?E_D(^JD$kUErOf&y2UMsoa_AY1;TGZmO?RL6JLAG-Y zppW8@J*(9D2FDtkj8clrfm>!uPVG?|n|G^HR|8iX8;DcDBxzBU^|UC;x^|+eQ_{}j zXdA5U6G$;Y>bW_#c!pB*fGg>NqgMSExU}HPqTIX7qZ7%C+ytXlR7R^Pk5<)D>Z?~E zHf09kS_o%VnG4H~rA$F`s{cSR!Ri?(D24rh;E})ty z*U&PbEW_KtjfqW!J@^n1R&ZfYI}Jqs?mtZ|t;`+{D?cVScd=4m0XN>%Db=56?Br_T zynx!0#-oJMcB;Qb;-9d^PZS;>%TRYS@m;>D%yeUQq zqeE2kzCj8jJJ_H` z1|>FzZaf62UUXx&KWr3q2)NP&)$W&o8saBS!X-t6yAE|gxFLy;KU8Y_z67OUJ4*p| z8V`yrdXeEr(DDfD!EC?Eah~m;d#f93gWalazZ?>Ljb1_RHY7OYX2y|+OglA!N190d zn$5cW709hgWNs0CZj}~n6R2J2_76^n1aBa1Yn1KtbcvlQP;>0D{+=q_3?p3+-2G^e zoq=l;jo3f9Q20H+*tULKl%a}XGg!8sQS+a$IkD1;W6%+$V}(jHyL4n2t!-Np{RVj$kn>y+BHW6EO0Hk-&trVhXM~k`e6Z?RhIZ?)KFIiB z{7h>>#s^>D#?Xta89EjF=YV)bVzaW)`o`h5u8V#u| zosX6=*3st`@ck1%kVS&b37==AQ-copaFk+lFc31o3`r~eonAy80ICz+D9K^(wIqkV z*ODCeUegkrme{n!mgO7`tFrkPSgFieYDQ zK``Yeco|!w9|@PHoXThIszy`J`+!KZn{uY0Jq?D%{cbMT65+LzcW_A|APdrIq^Rz^@M@8zR=FQ7t2~k!i)=~Ig5iY@35TPa(27` zV@d*jB3s3Fl73kJc?Zg&#(EJ9FsVJFQ@J=Fk`DXg1rK^Dg?Og}5A@lG}2Txy$77 z3S{n*Jh~*0t{nPOBys7=*=r#~UmeU4{Vt`Ar7r}K1YIIQR}OvE*2b~~T|Fe=9=}}5 z+bvRcOKo&Z?DQP=MS~cxX$3KE!63%<9K^U@f*9u;#JHZ5k~S%6lae+mX_GPfZA+mbAqpL9uWt7B16s$S=9D zA4Z56`{N}swmH*t*tbZ>*v6Kbd>=!KGRe10@-35+m&NFmGrIeLIS7p3c@&&46?A_ED9F5(5#oiZ2 zdGzZW<sh2t*who{ZQzg6l94m1vPbO9bjP z5J|AyK-4meVm$X-6yv$jk{HjFx}-#1Qlc&?QMc$ux9CQ<=tj5bMi6IvkTi2E%GY|E z2W^d>7iYaMinHz(#aVYdV?0w@DIU~9|D_u1nHLMc0Rk=a`(oDi88|ODGg9&y#w1ek z1iuB&j_gziC6Xc?=YClh=YCl(v6T{AC9%~abG67^Ei%_g+FF6?1R9^X9X96^%;p*r z7tDi{fcgewxAD|BfchuMzyDDnZyQ>-SY2*cF#0DVC`SyqqfC$L1E?lC^&P|lDm67^ zeC6m0=*FSI*_Dpt097QOL>}Zz*>xJ~Z%0LG)_VFJC`jB3 zPXV}ziElqd2HRrh8a#s2d^BetZ_2hYa1#^3QrptjW84Y2`hfUV5M=7~G=n3~1T`8Q z$=qZh>I;(%zey&R`Vncw)C8rN0^H>2$*Zse255-?)lBp-1HEvlQhznEpTIZ!6i|z_ zd5g4pi?n&8(UKjuLthmwX^rz7XL6Klw=vH4zD+dZ8UHePf;9fN#mVZ?jAen5`4I4% zCM~nj;K({Ij9!5GCADB_EZxsDdx6jRV^H^W&TV0|9tDX3YbILgRJT;OnFm*;ZeW+yIv7i(I8;KqQnUBAx-6b0Q! zMm{hBG{4%~@sFaLoy5@UJbaf3(H}*-zq70HA4T(4GSm)FpK|*s`o@V2T}ofGGq}^S z)@Pw-!I?__QIyvXKZ-5~XYyG;ihd2w7W#PwLzBVTruYjuTj+dnw$QQQOi+7V)(@m* z+T&~qXT~3amqD7dELs%v)Ev~o9HE;T=k{%v_H8$@#!g-mr!b%xyp9y$JXPJz; z%c5JN95qNg%Hvt;swmF_mx#765p7>0+TJO#of6wAvD3|(meJzGrN!7GLLSW#vKBuB zvg@L$L4+%ZXS4~RYs@%!E2?O@=>fDN(iI;Etvek0+!ep+Z0EhkKSFu;LW*ufN9&kf z@yf%L8Ub8j`ZS# zYb6tGEs}}OyRmDI*rEhWRg`Eu*Gg5Cc;ZQW2BRo36#mN#hOV?hskaPt-L7=0 zV()c~YPTBbO87_wm5T($-r--`6KdsB2jx;P<-)mK@+~*zc-Zi}3MHb`vz3Xd=w*Ke zt|~$67XJWLo#1tgawFCECI!`LWCvK=L=B|UfNDf@Y7#WtS)IV_IB^R`>>-F!(_up$Re@)_}5m^ zuD?d3L)3ekj4bV-Ye}$w)taE$*vG)NihQjJo;kE6*!yZpu=iE$WH8?(*)FI_4_DHYZM(iTdp(TlG3|O{KM*;c)v7JU1@|Kn-_IpgJ zZFVGRt7~n$El+%d8wE5^UY;0vx*a)}Cur?@u%RnQpP|v9OSlw!q!Ig@*v7Z9hXJTt z>ORPonQ$)Y#yN-$a=GrirS7|>?w2RdN4~TQQS4Q1iZw>0XcGCF5);smZZNn%z+P5Vz(J|CAr+U(z)EX%5tS|@%M=;J% zJy+&le=+vE4QFoO%3N;CF4MQD%`0>JpJp|pN@}vo)XOtSTP5{ZZDK#qhXs+?YKg7P zef%}dQ%r8$(v`V6j&o)1ThG|mugvW_1Yf`%jJ}`C^Qg+)H(ue|AV0Q0Vk>j$#6F#R zsm&!EX?BHwJ>~`nB6haSo=_Xe_b8L%d04&U0M&`4bs}k9F8yX8(bb8}vxA%G*pkg(k{^ST%H}z6sXAOv7*Q?##$QrIYs^~i~;07 z7x`ZtYR^*_`R8Jcvbg%g8Fwc1bOvN8@~;<&N0K5l{~!x8Mdyvt&%jgExTDL%HkL62yeC{Xh2>iY!j_94#+zUdUY-62ILI}j_k&OyjSa?alnN#|W~n6(k*riREim75y+99+t!hU}_+?yk@rDN$wK@6o%r zHaNO-QEH%#3+!EhDygf=yn8pb=l-h&S7RW$qf?W|{&P*efj}u`)q3*RugxS;h&} z45&?7t1a(QXA|3`725K?gcYD3-zII;W?GQuh;7myZF%n21Cys#Ly(z7Z?Jh^+z(a#|aE2PGpGpFTE)5T6$65m-M1d;6f`g zUi7;W7FsA?izjOt3uV`QVZc%?3|Oj#fx_x4$+9qD`4$E&-@<_9TNto>3j@w~VZiy? zvvkB|n$NorrLiSD*`5An=A8MSyV1&6-7WBK0nJX_a0pJ18Qf;j-J=1`%wzv~W*+;+ zGxOLlt~Y0tXa%h>ck2Z>eTNi_<9a@BC;&>DlOeMWL~FV8P3)P7ebYd<0{Xx}djq2L zYlXSA4!q3ZzC%mv-HG2H5W9(iwgJ>1kX@tQ!QhStZdX8sxmRGdb{|0XaXJ|{98iV- z*0xw>0yM|y3rrIr-e;ea_taB%zB(t5d(@n~=YS&*xk2rMlU-LK?K3$KtWxSaK+Umh zrywWvvQg^kS8V$}le4r9HyIGyH+K`@CIRX&xsgsT5+(E~T_9%y7esjPX+h-v8hgrOL4;Q-7evaP#x97oon&=)L1gah3~e`&q06AB zq$LX?Q`;Hhy{C>m-cRYsTRl>#P4|FxjMF(cvNTPyCo;`QMO;ebbPv1)bc1r~oK`6y zyU$Li(MsdHK8zJ{5O#@Pb%|beiC%R}4FyT=-3@WtNupD%vprtn3zEE|86??LNSYL6 zZHojd7HEKhXkJkwP&&yvo=&okr<1JXWfEH^v1Jlll;j#JPu_`kBVV~Z$>$;~d^*K& z$eys-$(!7{kt*R=CH$&{U$w+mOKi2o7E5k5l3R`BRx5eb370zIQYT!N5mmoFUjj$fa)tBmp%hU!8?hFMuj?Yv08j3{X>&*8rN5yqDUPSf= z!nrxN0{!S|q-_;kn}Mi*vHf!dPXFWUt=%FH3~X$>`9_{|h(jzGyI?^$;w zd2eh{l1JSoQh!UN{yL@pl1c7)MZ#sdaOn~*MM76BblpN1XwI!z=%z-WKF->WsnL_+ z>(O4()aaS_G4$3c96PLqA@4bccEnmKjV@E8^S7|);HO4Mz}5}hn{fLIbi!>o-w9k& zvt}nXYj#qzW;e&^G|*_!m74ML4}gj^&m3l()&1*%D;C^|xe2U=KMLFc{ovMiZZ$w3 zkJ%o5yLhKQq^*;*b&|GD&xJ*%uK?6(zKLF^S8QtMDRufAc=|La zsTa=m!nt1f)ocC=K)rCO*Yqs`n(fqUy0=YS8bzC$q!sFebK!3k?SqvQO}&eQE9=I31n}d-MKHuM!{7IRF&d3ukL~4Hm^zX7{4rd;|Hva z?T5aaVm+vp6g4UK0IE`4Lscf0+Nj1rR0k^q_K{WwgJ5^bYgrj|%(2iIS*se8o9bZP z4$m?4;Yz#LJ0|zIuNi7_5cm!D)F{ZeGB_e>_lZ{qm%9{oBI(Lt`6{I*7`i>3Z?-bH z=WUkd8OTCber513=Y$auo{*GqD}%Ef-O6BFNM$+S1gQw>8+*jXE|d98-x!~RS|;rkq&)+UZ`KTSdnev07}aRyy*hCSyle97mV4v-Dz$Wfl*-!~xMhHf zJzguV@M&itdH`0uJlYvZ0`mMY?Ug&=rj)_aZUIT(>3xk+Z2)kcUJk}GvMQbO<*MR* z9$|~~d4z2>ez7^N9^V8hc179&`RpMN$fuRS{eWx8ef~`=b3^XS*s(hjxKWXJF?X@w z5ux+m#{*X)X-iDnGk{Cy^Znnl{P~mYcUT7b=g!4lLBtL+>$?vDD$D=#AlyGU&>gVt zZvZMc{K&g5%ja9VmBOVmpTFKvY0{P+2){VL9BKChR3&LE^GkNNoGbJ12Sl7Jgd_Q5!)t`USsyWwg;{~pTDfoo=@Kvu`9ErFQ+3mop!yeK#?|;$s^Wt8pjWg$IiP^GZa@LoZi(l>4jg3@JkC_TIkY3 zmlnD*$+x^<;>KtXShMniC~VkP2NT41bIS|3rOONW3pAAl{H2;op{o?SN};PN;Qi3* z0^Sd;DPXJD8nB(LDd0WQAwGRMgT9S6#^0tAqXT5A6)ttcrCzwyOWM|eEoN)L7PB?r zZ~d)`-G3DJ)xfV&_%#W?7U9<=*1JVGcZn_T5?kCQwz$mrSHliLFN<)ACW@ypF_%|j zCg$FQ9zf^ACg#qBr)8lRkFz8D#N4xH;*K4-l*zoJEy5*gi*SkBB3zW%hy`K_pI9rB##2gqk!{hmps}F_`5>w1^>eAlfEm|UclcK zYA-kvW8=5|U@Z!G_prTS>|m@K45O8{(Q}o`2h?t)qLHrMNJU>PnkiDX7qr0w(|3y6 z3ur{7(X_qb1g!W`&zmFd)*K3QeNm}P%G+tmX8Cb>I}4U# zRgB8pDJAMG@Gx(tS#-D5K~Ts&Dp|-qsadV|R8b*Wl?#CDk~-*;I_Q!* zC@y5n)ghxxaUt9B;zG7aL*$!##f5B}iVOL>6%DFkirt^amqxpAcN6(`tl0K8>6c@66zDD}n zHPTbAF+ByY_Y2lm}&SjFKtdQ+#Ss~lqvO?;~^d+LQLLSe{3fUHy8Gh8e%M3sI z#?d0F4SP58ZIoz{)XO5VAd944%0+_mLSC&XFXS(~m79F&8;#{sj`BkOvRio}f7z{E z%2qCAD=!={$ZBzUA^W!Fg}mlbDSBWn!|21{;T6hQA(~wyn%&`ZE7XW)clg{M9X_{5 zhtKV?%zpx2?jmrm5I?&y$$8XD9(9sOop83_TcR~-yGNif63zA&o^HM73jZ^#S)Kq~ zy~x}s{F;Pclkl_mKJP+`7E^Navv-(y5eQqt}b*@e+ zN1No^F8P+^a9y>F1g$1t8l$F5-H(^K+IX3vjhB0xiyy7na%i{^&>cmyej4yi){-37my#UTmy#UTm)XIji8yaI9GPa?&lLS8RfQpoEiou;0*z`2;^(&mHwOW=d-0$i8WMz_>P(1-1KjYtsm zVLP7eL$;In6&Z+hsJIX7^MF1)8k7i^5=mPl<*1Qz)JQpo_)kG9x(kpNer3Y1T= zzlwPJ2%MZkD9d39DkVjgq^Ob5S?vyhu<+N=oDP1f%uMRT^}B2>iUp>|081S`tT@O+h@NQmD&s=M{OVa z4jP?HtCtk@lA^vx3O>V9+h-YkJvu)*TfPuBNTAw2KViHhevMKGjZ*SPDS4xmys;0L zys;0Lyiv;A*ym(-+Y@PB$s7A{c^mssdFlL6lStoWq(2sAYZB=jrM!(&-WEyGA}LyW zq~P*4N_iXqAFAFyFs}2i^F7CsY|F2SB)`UmIY@@8b=ihEyM%RNW+gB6C4q)G(0~JT zkPH|cO0WY2(lUeOQiBWa#%0OHxy&FL>Wf=ilt2S+nN!IZ6dWLpyEMgF<{-IX;y{fZ zAYBLU@8x+u&_C?oXTHCe=jA--ZD!7hv7H)-?;@TWi0>kv8i+@W*#W&L`90~u?7;WS zarlpf&az&fvUWdKk)xTldqccW4a8>!pP~on2K4S&y|Wgl&)3cl=v9k8i*jy2{}$*c zq{;%VEew2pXzc=RT(I0x*+(wW#s%8AXlfi@Os<05Tbvbb-RxaEP@ztdOZr2+k` zP7|VC9f-&KO9T2B&~z1F8hGH(ePv%7_>ElVK(rftuCYAuq^xoM_Ttrn2ft4~sg^1? z)q}~n;f}ra^$+nk!xfy?u{dZx`*oaU1pRcga1R;kk0tXV0 z)O)M%lFE0pWu9NLH0dj6zxCz4;@vgK8Fr8}>|i{@9$;%7U~4Tf8wc1%3j=X$9T<#H z?k)^OY9?c|epT?y8hz$R-&?x)AFAj!KQDb*82I(IN%E&geX@366q;n#o?3aWE}wFX zc7Sbkm^nDg96ZJx92nGXv~j;?=r%ek+i03?^ceFpJ@C(M**+3?ao}c{`?GeX@QtEP zGegtN&@?l2f*Cr&49zmO6U@*oGjw7w-Vw|WL^}5$GITbY((Wv?F+1=}VKz=M@)L~h zgpKWMWo#!I+hH4#J{53o;LUIH)ii4(`c0{Pk`bL`L?;>1DMoaP5uIWjr>tFF_ouAg zk5y#mR>gIHimg9wBl;(4?bKlZ8+ly<ZcP`n!1Jru9fb`Qm?wB1ATY` zW^X*q-gub3aX? z>9Zs6l8kcomkN1uQfSe($1M_9uKt2(zhqwhy&JvLEP3KJvu~ADrQl(kXZ?ij@X&=% z`?muR4?QFA>Ff7$PuXuO>UZCc66e1e_a{=>znSy}p~u)-M^{~|`&sDrzBO`8)Bc@g z)^6|niI4gd$S0Y#lg!#lW^I~TJHf1-WY(sscar&=rrtF5rm1&=j4LZXbzQ!<`GDL9 zka2>H6J%t4XF7i8e~PjBU!EBGE;%NmorONQN`L=UpX+@J?dVYaB=hJ{{B(1aztZvI zntwVgSHn{8#WlYzGp^frbcOyB$H!z}$oj7AljkACdyd&yU^Xr=8yA>^i?r)^<#&I# z?EB;{lY5oitK{Ao`h3g32YNT}#M~sKcT?O0dN;*&ziv~!@*RRcxayBTAy*SSWM4%a zG15EX3;bHeu1)b;{>qBK{3HKO&)u8imG3Ug(An6%DPC>v-W0FpcW;W<^1C%K0xJ3 zDi5uWR{)b#9$Fpi4Xuu6@uAi6EPj~zyTBebvMIika1`&JP0z_X)$c4mhUV`;{^Iw@ zH3PjmL9b5ItCRHQ6uGm|S?DR~+@^R0Uf2|mz!&gdgf2nLtKzp=@_xOx)nDaWHm|*p zWTfx=+@Pm7>1prgxatltf4!UI`a8h<9bopIodG-RablpUMn zI7T+dahzDK--^&<-LB1XmF(UeSIHjwa+1F6p)ccP+)c)QGWHX;7}}YJpx|pjXRmtqb&T znYmwP?w6VSSz9G~Z+emSa)~O}c)ntGbG&A_M7>MYyF|T9tiQWfUXm-6Z;^YvUIr(4SVK~}<@}Qhk#amnX#t+GsG5Wkbi=y7z%2Vvn08=Li=3H`3njm`0??i-uqCps7TrGXopE$0Om* z&GGnmb8|fY-P|0He>XSBtF+!NF}HV%w)?vDrFTngt#?c8)y>WEYVIamW}RhdPuFdU zPw1cOkG(p{=U`XuDV+T>|5xp)ZarF@Apd^UEH&&GP!#401ujx}*?ciVpXtkk>P zp03thtyotTp{hW(UYP$^fnytH<$aqt`9>ALQBp{vVLI zWVc-54G10Q?;D(4^V@$X&y0$;pRF~*${Dd$qVE^)PW6+1efoA}i_WCpGmY5#)8|rm zZHe1=_m=qE1iRDt+XQ>I#OtA5TjG}9wIy!pU0dRo9=AAM5#w9*`)m3n>(w>-7b^Zn z`ge7We!EEjD&5sJ@vjD4T@$~dc6Cks3l&$_#NPwG+v@4xxfoxoeb(;_>|XnH=Fi9P zS^N9*ejePjcI{s!$(w&ry`K`Ve)hh9OZ=;dyVl0@^Z{Er`mFCHba+cVBOcun&xnt0 ziD&0?Yva5;wk4jOr!7~HaOc*>**Ld0&c?a5aW)qDh4B+x;u+$EjYyBcCz;cN=YR^H z11fsB=j1t{g6Dt=o&zd)4yfpf&jFp-5|7@e7~3pkJImP4GNQ$vCuCpHD~iRQ_?^_n zp7;ysi#_od&=-6D{TI;Vr+v@Zr!wDrNbU{TFP~reH*!tNx{oI!L?c)nu^eRYyF0|dyB;Gw}{9@rZ1HTG|f_ZkPb#(RweTjRaPB(1GmcTMJA-;Z6#Q%pzK#XaTdy0}*y zT^IL?qwC^cahNJYRM}1LZgO{%yPMpjTjRd^*w(nOPH&C->K>|0Z;kuv9_sC(-X7}R zVE;Hly_3{CNtGMieGbusQ)JANF-yi-M!ADg9_H@zDRR$|yPw{lqso4Izn|Xkr}qo= ziCR^$t+)0QGvQcZqt-)LW*?G)Jy|D~2!1lkz_zXDgn!y2{9JKsTY@ zZSn48-L`mlGPEu3A0J%xyYlM||Mo8ZCWn4&W5*FzE-THWp*hSnf z;&u_Yi@0^$#{Gezx>}w)B3s^nSMVouOJy0rdFa<Q-)>sGLfO_AzX!FgFJ2jK`wzb(tlw|aXX}SH z#64hWL)-&~HpD$(XhYls`d96h_dNbU+BnSY9%XhPV|E{7CT}vz9UJ1k)wPxJTW~k& zz5j;&Q$HEsQP=r4D z?`>wQzW29ft5~n%^=Y>1s`N!aSB=<)pw}0)A zNNcL~uiYU%aC!&ycD(;4_gnhCwEnf!lN=pS zZI5Ta+3oS{cf!1SM{t%nzoypNJ;{36##Y$2DtEiS6;~|0!0^ zIabaBD`$a~bEP-_M&3!*!05DT%__PDlb#{=0-i*{?Jd$^)qb@-SWq+ z`25ko$~$O!-0kJt)Yx0hex-eq37+e8)3Aps zyQy+^Anp}cZ5+BLuWr}7)P0XBeMP_QYewHB^bYb$CN$Q;%h)0Xw+u|Aa)IdCLoEnJ7 zjZ*{hxbc+b>h~TlK)dYfRae-$p)b|_NVtnn1=rmckKRMK#iRF*+v3rC$8GUQz0H0F zML%m>Hx!SAyN6=`b`Ql~?H-D~+C3C|)w@OSCiM3Xd+ogk+p63xj@%Z1k!s|&_#L#7 z+y3Qy{M%F`w~fo0ec)&0J&N1(4o&a)cH3;+DcZfcYXTc#o2C1Mg8X4ionnafgX}jJRpMC!lG( zC!mvfPohoQ`CR`BT7P=i=i{$P|De2Ie13~u?~$=BeY1FNE36$_lwYrD%6Vb!x5}3O ztk9(WwoTXQi}Fsw-wEBiMt`sGRiRU~HcP!(w8#E^l#FfnZJ+($^1S$zuG8s*aTV*| zqtcbLAz7W?FTM@(o8-SNcD4MH)L)o=dwNOiiez6pe?s-U)6(>Jq+c+*KYdy3KyrVG ze`oqdd;LIoeIR|+UOyOK*V8Xq-emf3W`8j4o!0zA!GAdIx7QDa*FTzWu-6ZV*GJPq zdA&OM$#kpP$I>^L|J}jgNWaQnH^b}c^lR+(vGDqR=`MTyL3=%rd??r_g8xFWe{SO* zNG=EeE5W{Ic7yyj;q6jqL$YC!nKai{s_6@;i!QL6{UBTWH?7hK05bT4&9x}Tj zIovaE<9aCQj|ThhVB5i-4)#p29|`v3!9E@AGr@i`*do~TX4lA5CM%EWe0{D**Tq2c zV(`BdY#Hq3V6O!GO0d_0eKpwEf_**Mv^UICu(t-g$?OLC3%?ts{S8T__kh>|`5RLj zzd`=q?~J|P8D77!_oMcDG`!x``;5F^oxHX8k4?YJ^nv7U!PbJ^8|*#7J`n7K!REm} z6zs#nJ`(J)U_Th_hk|_~*e8QM6YNKV{dllX2m4&G&j^;HWAM69cJ{asn!9E;p zGuUHhHzXfe`2#Zk4f5Bro-+F@EC0~ut@edzRc^&3 zNL~#3D?z^&^jCx4zsl!tz1bD=x6!p<1Ia#ny+QtN&No_n_t@*z$valvYp?GOulKL= z^Ts<@={j01e@W*%#4qb=)puK59^xif)$R4c@cIW=9kkbn!t2AUe#r8EG~_*M`hfh( zzW48mV9x~m$zY!kwhZ=iuvdb8E!fwCO;>xpJA=I|*tZ3{FW7s6z1QsOWdCYkuX)f9 z274&jhl712*hhms7VPn0-yiIg!M1}v9qdPf{dllX2U`StKG?-zV7@%%k@M5yJTKBB)9bctl6RdC(Ul{|Ag5c{m+Y)^IyN#S)EJ=d#vBjm+uSqM8EI1 zAL#e%jFbI-{P|Md`3-*Cv z51EzzhS$f!>-Vkk5P zK3%^bUjI(BXV*U>b|Cpki2K<3-!T2D^)H$I#QK%T)&ETJpIbjFuQw!}^*?TQVg1u) z|9E}x&#Qi6{db!E^YtGydvX1Bv!7f4jlZD&OY475>_GBTsMlTp*Y>&$ub0>Vjm7=# z`hPKdb^R(ku77d;kl7pShi$!N8+;z_F)QcEV9#yv_0rj(>t#doFB{%2@oSQs8-Cbq zvhk?czNB~KyUniN_%mWnHTf9GCe~b608sf%7+}lIk-68HBA#VRI-k*2g;{7>ri}q(t^588m z$@mA7-0BP@{kQtOj|TgeU|$XPwP0TlHXZPO-V*H4fRAJAfRAIxfcJOA{A-e(1Ad+S z#t=6;;OE0#A^xo)e)oWn@9PJ=-+KnU-_-%1$G3;}?hbX{5%S*|^aDY!n?8^{X}TP5 zgMHhek25zb*CT@;vU#{-uU98u9Mtv)l564hjloaZI=LBMCqrR-4e2-slD;9Iht)$m z-U0c$_xgH8k`3uP97uNBYq_otHV^iZV2=g+!C)^3`&zKC2fKcg_xmlu)`HE0eI(f9 z!G18lV2ZPOneKgp22m4I0&jtHZu%+46N#71{ zr$5;B!QL9|wqV~9?Crt6E!YQweI(dNgFPPX`-A;puulj3Ot7y7o4&#O@rGctU~dn0 zU$74bn+JO^*fYU?B-oD!`)aVS1$*yTcsut8yX`Ce^=Pnf3HEKl)`Gn^*!zQhIM_#m zJr?ZoV4n=O9qe;vS0vAWrSE^A4f^ZBrWNnUt-)>zHV^h-u#X1&?qFXD_FAxgnb+wL z_MTw#U=Id+DA}$ck9&Gk|>V6caReJI$6gMD|f&0voOdpy_=2K%94p9uCzvm26UzDkdStCPZB zuTK`gN{>sjzP`$@|6U65uLk>Cu=|F6KJE#&HsY`M2755rYr(!6Y~N0g%Yxk*>|Mdu z%x*~Xo!YMr$-!U`1^ZC251U<`ynE*t>^xM){IAyftCL59ebnrRd$gY=5xZg3W_{IM`#selXZ4 zg8gK$qi^(j$AjHD>aRzGeOs`#VD|>QFW7s6y*JpW&8|omM}0d#7xd?YeKFXVLR=Z* zE(iTeu-AfpHN?GUaVwJkH+kJnZ_<9QNVbL7S$KU{czw`buTBn`U6VZYCS8B)lZVX? zB##9DF|+HF51GC?dE!la9+&q+Oqc8YU_Tk+i(t6g54SHsM)p2TSENpLBG@Nn&eo}j|ctz!9Ejg|1Ph;E!ca5Js9jG z!M+;oYr(!A?54M9{_13#*@5H@!Dhkk4R&9!_XK-yu=fXhIoMZ%ea-BKWb|u&e|d}9 zf#kuj_5LpYC%2b_edVqG`jOk+Zo0$mbN^XwCPjWVd82$^`D=uJA<=E7^!a2$zQzA0 zp=af9D#|Zl3avG-(qOVnJ`+*8Ex9w$aI!zpo0A6v-I1IQ^k0*w1C1r04)iU_ggmz`9U;#xpz{{@QCW2_Se$OlF5VKlY+l<_ zh?BQ0L%kI06Y?JP8)>~ks6t!@4GVeil{{Bz$_xlJNUPL^yh;uoB<=`t4ZKZgN+@hWi_;l820d=1ZM1~Kc7tYwJomK4Y3`hn zW^{-vpm`zBIB#*9v1p_jFF;-5N+EA|2~El8<+_pPCM#p*o-ZSh>l5wSDQ|Q^`yyV_tnzmLG@{BQ|u(iyqBiakyXQUZ*Ayp1+ABjmYCKBCi5hq%Htt)k>r=7l_0$#c&`FBoY?SI9F; zXi3O(l|1({bj3(>lT|S{g?fZMSIKkxpg|+etq6I$88j^9xk{e9Q|Q@5j}cYkYS5UF zXDE5beMZ_wowyvD5b_Kq&o~G*h-*SqLY|@I8OMa4O+F*NdfYT^ttAw;AX*!37VWf< z=XUTG(7cehrsS*E5wwPo=Qg1!A+Mt3RgOWA8*P-nw1hmj4b2F7u9D}ThUSbmN^VEU za|>u*$a9rE_XVSklF=3Nj1pQB@(d-JeL&z&P(Ue@967n{bybUF9L+N^QM}L|e!`l+_+%_~LYZq`Waokr^jdF6Q_udL)53qpSVcOI=P=Aiyj3CZ!I+Tej+&3kp)yn5|e2)TD& z$mdGQd$3@n_0FR$qIHG*uDnE3@_I|=)jlhEy~|K4-x~LK{ggbTN634izn1A48Qx*M zJMq@=j^R}b^9St{dfDFJtqXZ;6GGmal4l%*4hg+1f2lf68bY2iCFB`Oo^cF1F7&d! z``Z%oj2R)%Q1Xn^&>5kZlSibDj*w@}3wef;XDIoer*u8}tn7K`@h%FzoV-V>bcH;3 z>C4EgsOD8J3%Pbh=;h?+Bv(Gd3b{&i$tKxuJ!ndv(FgSly_|eNa(AMQn)ZZfV?y2+ zCC}Xp?Xx(2_q=X#y22)m`U82!LD8HJ3B8>Bx>TMbPRYGWKDJ|M$Aw-_eoHbQH_i46 zp|E9y!j>_w?h7+QUgb2}8KIZ$Q-DG!Y$Kttjfk5U^4#-ii$X6aPe~6-AQ?`Pv3G}7^ALSAK9$g3!Ml@a20qSb^vV=r2c zHX-Cyl)TEMk+yaattsSHri460$uo{Yr=dc~GZswKdgt+W@s`k%kXKgn%9kO1jMM9- zLVlO8YXOY9a2!(kO3iASGM!I5^JY!hMGn71ICp3mv$-R4_3A_igZhR1{$rRpC6C()jS8)`Ytb>{lss-PlnZ(P4x%;Dri8pNN@1>`HgPk=DS6y! zs32~hI3x$FylXu}q#$3G>H+X;=~RdVmRkyhS| zmZMDw`5Y*D#-xy+B@d!a5vSyFN`7r|3~h!uC6AjGdNz4f#&H_0FipQ7rsUgbUda2R zaCY(e?@Xu_+hw z+zBDiRr1_}&>^aVQC9_#*C0>D0#-Lk!ZfX?h zSVKZyPc^SME#zDE7~bPT{+?S)$otn8@_I9-Y5$bGo|4x)jdn)J&vb=p+UI$pu&#(x z&2txsJCAo!$lr(S3VC0ajI;+z-UB7CvTT~Rb{X##p_k?9O?f9!epS?~^cZOsC9k67 zRr=8Sh5Q^kEabULo}uI!BSL-@*ok*k$j_!#AxBrfJ5c zk!^kA8pJh)!ZtTeGp2|;2DOQsA#PSE9QlbWh?^&F!Q%96aGto5xFzD0d~C}`wms0& z9kHi9LSa7_@{B$xBW{?uop?uueAa5jjS;8h_4Y#hgghe`^0_*Qw~2NPt&KJ#1q?uSj&`BMrbhib%)5vSyF<3?IcmYDcgVc@ef}vl zCC@!>UcK*`!K>unGv?L1oq4=U?p;Dta;>MrD1}_hgu>RsJB)Y4NJmr?^0+Y}pGhUJ zqI5ke_1!YlG-E<2Y$Mb3-fs#`$#Z8+(|J~Mtq}6o=7qe9l6x17w2dY6YOa!dmyOih zlf~TOFC&kuiZ++rR?61GtK{CgdG8VL1YRZgP8w;uN1!RmY*+}O!9bvpe-uoUQkIV25<5hBR z4euCUCHIaSX&X6lO=wEUTT}9k<3`&1HgPk=DS2FhcOI{jdl!ZLD5~T~(HHQRLcS)K zguDkzo_j^ekEh8_-G6_klo=B8j2@vdLqeXRntz_sYnqO?U&!wRG9k|$7V=yr&mA?= z@hbWC{T+B~LgCs+$g7MAc@-tEvQNmb<#VBM?IYwF6GEP$|chX3=$03W;5jD}2 zyf0Ix>E1mp^lWmU)H^QZ<7g8%1D!Fi%^%vl&}Zy>^^4}U`4bBBN8A#$Eaa_S5%M*D zT`0`j*U0a1Ca>wN358jMdWC##^b7eK&+raIBSKzp)Z+B&;SRJKG$!P2?6Ww%j<^qR zj&}k&WO2G>ju6*`rieRkar&K($MLp=d~9vvW}q`dJ{xmF-urpH3qn5fMT@g}CT@wi zWwa|6rz5|P*7L?VUj6H-zWxS_VD*e1{pnWp>O5h1TPh4;95 z^}conZC1!fbjG~;J(PL83qoFH(Y*SdlO?=YOw*O9g1@XkQcz`G>m?JlEThkCv?dIyEV_CUMCH0{e6+Bk9d;hn%cDdaskLfjN_(`Yk7-m8w# zTyn>fd~XwN9_pI+hs0Z=EkVhD(%iOqQ=za`g}ibP)QdMm8-{Ao7?eX3P(x@gS(4V8 zXj9O%koVwmBb~LD&|I=>S*~7*n}OztE70cAUVuuxOVD+^>022u)GOqD88p(qWO#?6 z8Z-vw&;-Hs*aXJ6L=d!e*dfFYpn@Q5!XU%o2Ew#CC`{4ZWeC`Zvo9i3&eHNmY`+x_DdT* zUl-fx7Yg$t^q0v)vJ!{!j^Z6d+lMxRb_i_>Z3ddfJCC-2R-!FI%XpJJVoy`32kIB{ zV@U-qgNC6|;;KTvWt4oLYeGH;O0JDTbts1>ph+RmJ!GV_+Yky{pSUJ81x*WiZcE7T zx7v7TpblOo?_UAULyJQG?m`!>gqENyLVo3&?vC|(pk5*GRlks5*H!Rl&@eP26y^_Y z44QzN7N;{bg*F4tLkkwC`@)iu?r+OzJ$J@F_Y3)WhtbANvprPkFOyefJx}1Bf@Yvu zA@6+$Z5~>{y9jmhEu`p&B#>?Gy68B;HUrJ#?VuIV zJk*6sXbDRG3uA+NpbC^h!$N*NR7I;nV^9uFK$Ai~q6S(Mnu4Z@YopCT1vC$p&=Qn> zeH>d4ltIH#4H|>Sg~HZCn}8E{8NQR zAzvk3;!0=MrhqsP5N1H%vKvPf)YC|(n2P&X>XhFzF zR6v>B))GybQc*pRL3wdr1P2in^rt!|8%?kNA=Ft|2TSDs@k3AiR zMufcGF|=_ZuQ!18cU|wDKCE60SEaZJjznO7By+UCeXv0tq8iR6Z0-Azm zpm}Hs>Un$YK?V&&qe9-7D%zN7dJnq~?*!f{Xa<^xmY{TBY_|u>pkb&6jX^my0UZ+Z zcMY0oQ_ykq>ZfEaw6>6sP05d}GtjJ%Z=*9p{wZh&Zz1HlO5vysEeiRkXaGAKn>gRw&GnkUv$?5eny8;^v_RAMLp=!|)FH5EePD1dh!TC_O*Y_W^B1YI$& zexjJ%9edCN^$YomsGto)Rj3Xf7xEQ$M#y{L!MkXh_PL8zLRZYIJx%Y4ed!nSRa`;K zgnYb8K5L^Er=NXR(P~f~%Ap3-gxXLCDxfY@Ld!xv-sD?jUs5O&3Oz-uK{+&Oake7R z+RzMCK=V*36!vMfC1@FM`fag)Jx~S>Lp5j&+9%{~Ov)yyd#byg?gY0ltIJLsF07NiZ%v~r0WQ@mBQ8Z<5xX2asNjXK^O zI%Hm*-3D3{I&NOgZK1WHGv<9yJEGOw*&yiMr1d9|l) zv@@oyUoWc@ZPB!?qLpY@gu*z?yGy+3{ftA%z5PN*(yte9hIiC7-Ktfz8nn;6W0Fxv z%b^J&KfX)~g;5F}Nwr>sxTcW5!>8oO@o6E?IBwK0S13wH(sxK}E#lhHti|bh>x{)| z8->ub$wP8?yl9%P#4AR+WqQ9Ow$U%-+cHO+gqqL-vdHL2amjx11;d~qAd&gyMxJt zu`eS+u2s?MPy=d0(?Z^t7FrwXKn1iQD`!;XEg90H?Q8~D7m+Vw=Lv-K4WqEO;06{>kzkS zUcFOa7V?ZMUq=44XMe6^)BE#G$d7BIrs-YzJ|q2(W?jhlw_M1dgFIwj{R=4#yvI$` zJL@)D0hLhleR}+RS&o0HkXNpl_J%J=U(jko-rBg3k7J){dN!yF%_ZL^8HdoOiE9ga zt%R2GrV}wEgK9!PFG^l-pHMg-p-ozxo+S_AZQ^Y~ZS(3c2z1a2Xi>;p>!OuV zG8uc2LKP^3MudE>s%SN+4&~6KkY_Z|notXBL$gAj(LpPqE>sey8dQgJ zs3GL%MkSx2Ce(u3PzNfY1tDLtC0g zT7lMuN+|uo*wYNELE}O`r#V^^n#S8k>j=#y@BM;&(uGz+$szSFh&L7T8Lybu`!{lI zLaUlKCR$C%d!XbQ<3c_!b&LBciOcaep*Ga9xZjny0&PLaD=$J_i+fq(O5&0q(mq%I zR<4zWyxo2w&#jpE0r8HYjY2gc?{mZAep%w0LVjo6GVKM?+QiKYdF3-u$KnRANbiX& zp=BZORr{pQ3C$%lGPW+-GI3Xo`Xx7cSInqDb*KS#gyxc0bmgFRP5XwwlQk~n zBU17nBtNPdKQG=?C~QH~o)axYt3h@1Zhl$zL9~Wx?-H$v))w;Cl)Q2Qb%o}V-;<0I zEqyq~^$PhK&(KDNyj~40hni3uDxeZde=N39fikEH)u1|*Lz6<@mnK?EXfF9z8BrT; zmbe0~gwi9iFBw!53Zq1;LpgMaxQ5VNQoSm3kGBnVpaSYbC6pYEd##dhtrW_jno#H; zS{=&qDtVPdXbrR`bR2IBtqpac0$LRE9(2)4({xW!@^+I)BBf9UjSBe+tD)^f%h3** zroTMbLF+=vkH7SBEfI390#%_BN*>i!d|Xy>)o4+uZZz9U!67tF^RKcs{-VCZj zHK-2dPy=d0EvOB3paSYbC6qoE`%-~2s0!7fI+Q~Vs0DSP0_s8~v@GN^p1hmBKvif` z$m2RfbID)JR?XfMwGpT;sHn_E7Q}*FS3-*1eE>Q?v?Hg&I%` z>Ofs6`Po>x0#%_p)PP!02kJt}RIHamy+YpS3R(tLp&C?&a;O0{p%&DJI#2<1p%SW0 z$DUT98dQgJr~$R04%CH`W3h4tszPdO|bwN>It;GN=X>7PnF2N+^AQY^^Tj-+^oh zd6lM+_pgQ477E8nwB#3KZYmUd0M(!zYCOck5 zg-U2y$hUs-q1cxcsz4c3g=$b8%Ap3-6!JEdd|S4lHq?O%p|CHYb)gcklGjUqIZ_H$ zpbV-)H7FPI)|9+n6KX+ir~?&H7b>CTf5v(#RDm+63e})GltWFZ4HZxcCBLF)$tV9_ zj*dcM?=h__T835=^7X9baXHk4+E4+NQ2Ip7&7c}ohjOS1wS?x9H~oXWn}Svdd9Reb zSIeg9aXkIMoPU%X0T98g2Z?_8T`EvOB3paSYbC6xSXY$Jtwg?tTF&@!kh zJ{?y;0RR3 zJB~I9)&8H@ZXIesO(DN$Z=rRdE|mOQtWtrhP#tPOEvN%^g~B-nEontf$!BOp$mgJH zUR_~zp}FLUtjS!+;~J*@j%ZD^mTA{??V=S>*SvRpQLa4DlD1ZUk7%h-*lwo%k!TrO z4XQ&q)PR~$OUTEo&lw%^k)@g~0>Gg7DmWl#;up@vY{-_Y7Z zp)Y71sKBe_J?%otOw=k+A>{RxJfnn?*{G#ZCgkf`$unwbO0MOm={tc+t~H@HR6r$^ zo{kxrkoQl?t8|2X8!5Tgg_7ThT1Cj?sz$aZ@iw3q)FDpEE06qU9B)I&w?|7T^abid z%R>Hb$mGK@L&-DhPx_M8B~LEs0p>9LdgGG za|xxt6}4U=-$pedA7yTueuJ(FwT1jw1eLrm1yn-m+32kZdA$s+idI9bqvdE#s0|fR z38f#2t@Rq|D#_4lP+cgD4XuIJL~BC@R6^-TV`~{ygX%(|4YUSY6Rm~TMk}BaN`ITy zpc<4zO{fiZguE{WS{JPpdNz4N_U`m!v;ozi9BM)>A+Ov@I{EkmoK)zIo_ zIa&j)iB<^ttfjvnw?ZZqMk(ZTUqh>-z$S}Nojnb8H= z`Zcs1nl{p>t6M^INp@YfplO;>2!&ZQP3JT@mn3gae^}yDA#bB1lXkD}tEm@4Mr9z%tLCespXf?DtT8`F)T6o)N z9kc?ii&hHxtfkM!zGOl^8#SmdP=N`W&r68B~LE zs0p=&LS?86mBb}~8sk!-u$s^^v>KE{ZK!}sAzu;MpT&ALXk5rgo};y)0xF^OEE z80otUbs-;RF66y$ptaEoA@5a*mOdXdG9mZY&~m5=wV{qsco#w_%ro9DT8Sp%AubgP z^DN|5MoinNM|8a7LeD1Oq)$Nzg;C;dpf%B2Xl)@MQ3tIcZo$0YB9%+D-WN1OwM@wS zSA)jQYfr+VHBGbY10%f(FQD{dtdc=hAs-|)`gbwCjTqet3Xw#CFH$Q@^=i|LSA{+s9)AW zN634%fYwDTP1E(Vj5qmv{(MXN&%s0DSPF0?GFlneRT z8bV>@P#bSY$j94-N@$t5wS|;S}R)u^{>rjrj33Y_Le+60zr7y*Ly+YxAZ?qA#8rnG8B-F%PKqZv@ z@7P8TwV?tkp=F`4=lxaeeJT{zA6kZ1MXRATg?#?nXeE@&mhgHRR2A~Ms-e}O!8I3;B#U(3-@x(Avax&=xGt_7Aku;`FSWEXAHGd26Xq zSP^I$S{1DhHH3V;N?xTYo~S`)2>))w;qbBZC6>@I{Z)TdFv8!k`v^rWY6pjpN(-yZ;#@0e>Tb!PCJ7}e8b`y*n^5tI1Zsz(Ug3K#)bUJ$vR#o_fDEuXSab@$-UD;KD%wS4%CH8i_;lT z{yyfWLScr`GPF9He#hA38fZp&qkcK3H1M{dHgO%a0++qmPkpg$mvgA)osyTFv5gt>w_9#p$mEHHd5CEzE0IL8fUN%ckj-W!g&*gu?fm z&_>XzLOw$^yyJN5c$=o_)|$rK5}HeH%F&`D6!uUdANc}tC0g1Sy}d$Vl?crx-z?|Z z8s554*ay+tP*-R!`9;Yn(bAQ%az)5Tl%ZA8YG^ssz}te_cncx_u11NrY?|&Lz49;2 zu8@zs28|o(Sy$JLdz+BnCwfo2P_jB|sZdx$LcZ@;@Md^N%&XhHinoS$+(_3(9d83_ z64yd&qjk^X1R_^)~NTpg;Jr= znrWv+%h0N({k>>4v>cig@_n#jaeL%?t7Y`FLT%zYradQGfwo|zTeWN6Epk;<;$6m@ z%IA0fendrRF8O|m%Y?koRnyLhmZLRHyCGT=t!3I>a*fk5((9uVZz{jE>GkxNa-C{W zL&#T{{_d@NTWD>x4x0Xcs%MmV6ZvgP*D6pZ6vly8L#v}Tpcd4Dx=^wqwvh^XEk{o8VOF5;Iq+&)p zAtXsoF+yS@*YEqhUe~+p`P}PpuQlslYt7m-Lt3L^F`2GJ zYH_KR+Gfq0lv-LWgE>9TiB(FgI@)d3SiUc|Sv@U~)<3Dqi-?jp=Ld@BYsMKOoE0J1UY6+<&rIwOfT59FC zSzDfw)-0Ak?xj{KHFb>JKaDxPDv(;C)S^<0Nv%X`ajBKsX7wN;tx0K3Ni8k443>XF zC9PR3-)CvfNoytM^ieeRmxtn6oG2QcGaYyp}nwNoiHbxiyXDdn&a; zsTJF1opa)t(}Pl}C1tuYsiiPyZE0!ENG*#wOUX%1H*kAUC>Fz<=}NHtwn=M3YDuZ3 zq?X22Hx|CQNbC#EpS{8FYtC5phrA((zbl0Y_{Qi?#A?C~*v(4JJ5@}6{rNq)$z6Vmv zV$KurN@-OEvR*8|Ua1vg&Kyyx#q65h1F0p%l45ClI_o`;WzL?=h~>moq1&pld=I2n zD77e-zw49M60wA|TIQ@RB{j>OS{lpm7pY~XmXn%lTH>_*W#EnM?z{z%sJLlQcKHp8L4HZmXlhg z)Kp`49U9B`N@`KD60w9>5_9HANiB`#&wodX|>F0Ewfv#dDAjo zrI>DMZIOL!U``L>VhL=GYR^;rq|~xvs+GHrLM-2VY>k@E95KvUa>A~?Y%N8mON(X2 zbZd7hek}i_5?iBc@{GU4wsWwAZS%1d=Io7(UHgby1?G$o)yA6l1fJ6u*fta^!kpHq zU0XyghUNF9Si)}onAW7!Qg*H3-|R`LW$fA|)Ur~m6jN>8C2O$)u|lz^SWK)$EH0K1 zONyn%$}wl#vbI^*g-S8iPWpm5uU3K73Z)j6T1;vsQj1G1A+@B`Qke64Se73j(wY^k z6w~e9z7&c@F=yVG)Jmilms&zg?_{%bdNTvHU)j)&glQl-455`Q$}Z zT4Q$2I!l#EEpFGW?MO&1i8<>?Ni8k4jMTDH%So+LYU)(!Gv+MMk2$?6kk&$JjY=&h zwGyetrIwIdQfeuwrKOgUT2^W~sZ~l%b&;N8`MoQ(La9Zi7L!_u)Z$W0NG&O~l+@Bv z%V7EQuC(T)W|{MvS7P~Ib#><`#GG0b;~T!5J7ZESv1>VMNvWmmT9M)xg>9RNWu>)J zOm}ma?6=Jt3x!gPi6zC#WV#II^f@c7m13&9+p00A_l06bw%KO^nJy-+aj}H7Cb9gz zkJNHvm6)>*-NUs4Y>6{gr4|z_!JOVFFz3!KDXm$toZV_)7o?_oT60)6jpbi0sTE>Q zPfMg0m+2BxOG+&zwY1bSQp-v$C$&nc>0a*IqL|aG80PdUE|wHa$#iL{Wu%ssS|#Re zM`6@mUKGo(Luzrcq*z9#%StULH63%8S11+}E4Ix#HcBvOZE?)$OG0XCdphe?$cj~p z>CkTF$DI9KfH`v%N^6m{Mx`|-t;Nz>DwdGx%A}UUoc))^oW5kFmX%tCZPxzF zNo%FFs`K2X_%Y|N@P)Qn`zj_D7fWEy7Nx|pSpGE^Q|G(WY0POYkXlqMjyb(gilwAA zEwzl)a$=Rzss_v2FlTuMQY(~NRBAD)l}IfimJ%zsr?bbt)UtNX+Cvr6S|z3~kiK9} zUkWkj2#ZQT8mLG4Jv*eW2 z)P?RG8q4oLsTJ8Z`||=)i^+5)QcH=Yr8O&7DONbtT}Kpiu2BiGw6vCE&O70()N+`! zZR#S|G?wqP)C#2*m0ApQwmc!Vq)eB=oW7`Gu4&9!a#U(@sa1*5XQj1Bg1Y4uNU@4_`%{od_cCC|- zwaIij%-MgIIZLjTR(*-A16!kJGjB|4#kSc;tkhDNv%E^FRmpT}gte5NEJb5Z?+eA^ zVkvvNll}A*b6z7|B6En9V9wf-QcH_v#d0!TrPQiyvwE-NvShKCSX?ZD<<};)v{(kq z-(N|sQcPXywrVWDATloIWRQvwB)4wG`&OzG-PK z$DHlRN-ZbTRbkG3ryl3_)Q{!w2{C7Rh0T_u*^@+)K= zn6s~9VkOcVms%2Y=1oa!R$42?)Ogv?n6u;psTE?*Qew8*zl18&C1kp!)KXGQORXGp z_Em*g4s%9wmDJRgZcSrOU;J2pKV$j7r^s}LGF_29o%Nee#bOC8f4-OLQc_DxEhDuo z=DdH)Nv%?*Qxn|fX)M35q!tw`5sS-orM6kGZ$es=(wdT5My$eawa<<+oxaLlZz1ON zG$yrTyJn4rq}0l#mcg98k+o~qyTF{(Dlun^)I@i>0)bus(^8A?dd(wqci(<|m zib<_RY6-EVw5G)}nA7Jh=B&5iT6cMcSbqOWtwby?tqG|mvHYHtT3V*dNG&V1oYX2Y zXI?eQ?SaOe9u!EeP-;ckYwE)4+($@jsoiRSW(;$-Eos;6^C{-ck(OFUri)+at}Q8+ z7RzF8#%8u>8HZU9-lZy1|;m+J7asSzDA4%ZRC| z?ve|{5@H##3e4HwoYbnMrfzhX;>Vonio}Y=N@TiHsU@UVCbg8*%B5BzRwd@2CTkNb z7AqAi6H8&vey*@<_BBsx1vj~^C1NSDoLFMIJ6#6jy8zr76(rnRiC9W3CsvS@=`iPY zONeEpRo(1PS0EM@ONgb!GGaL~HN#y>R4j!#N0TaZ&5z|@H?b(@?5mVamlLa!>HIU@ zc?&RS$wg8t!JMT;XSuBju?*(4s@blUV9rt!Vkxn5%;{-`Sk7*>j`k|4`RBOP6^TVL zXKlq&D-|mfOJPnA%B7Z(T7}fA#MG_slKq&|zm(LXbKTbB+uYVtv66Xm9EfGaa$*Iy zyVFI*5@IQ_oS3>p<`63p%V5q{=ET&UZmmEpDprg+-zG1ST0$%(R*pIQAS1O3spX_r zB{g-IyIw!$%v&I}BB@2CRxGs=sg+7CA+<88rKDCawT#qqV(MVBC{ zEFqQ=tH7KdREhZ)yR`x=f98@}u~-S_YjzEdLsb zMX~%DQ);DR32DuURYVhOPv z=Ioc~QrAkv5@I)|@L@Xhe5i3~k&Kng=h~>o8 z3U|5!u@bR_SPomGUJvq);4ycO5;66-TPwoy=Tj`d@5Rb6=XEO=%Sda5)T+eP6Yf&{ zm@{vYSg}}%OjjzkGO?7jmP@TdEGMm1Qu9CQuB`xbwxdXDB~mMuTDe$-Se2N1%H2bL z%-N18mfu5SIhn3trQ2GJIdhaqtyF4dVkyiyV#}qL!<=;#JndQ$mS3LKQex%OS|OH` zR{tt%Uh5t`iaBd5wrke=nNqO?=B&3&YUN@XX|0f24s+fgRY}di+U;qPSg}~CSPsi? z#gnA5+U)QX;UdtbE9U2?HlsaTmJ-yyYp6vRf!dCa9c~ZxcfA$g6gZ=6#wI$s7jMT{=L*_72@BK{2SrlQvR*R zzoYoKI{#kAzcu)GH2>D*-!c4q1pkiZ-&*{8IsYEXzvKA#DE_^Ie~;$h@%&q#f3Gw( zjZ){s%`guhh9}?~=;l*uCKURWdNZKZqjc#My3-d%!jDiIX6Y~=*1#+9D}?FpK)4y! zz;MGS79)}-6)#FRORpKj7>ZN<9F}pk7P17tVtO%!dm2 z9$K_w9Kq{w06Mf*Y6MJ$kKktrv{9-%%z!!Y6ubnr+A38Cy25T4-%hD%unSCk_94uK zKnMQosc;n3g%e>kyahS<395HgY8Z@$8=(wtgJ0pAPV^g=!74DF*=NuTE`iJ8L)Zs@ zLikj^nhPhx1uzaK!)2k)vyhIgA;l%?w~oef$ne`On@6;KD-Tk;0O2xTK43)g<)_rJOo={2ke3GA=ryC z4JSZz=me+10B9fOdZ(L*98v2=yN$op2ur*KI0!wAI$L&EiRy65F5g^ z0&a$Rkb<>P^FoeYNW(ff0Ii2AH3?S2dl#`^hw<9L2Iz1x&vxN@D1$xFd^oQ)d7Y`m2HFjA?DUw z7*Fs!bRExY3jQnEhcFLz!<$zz9!lq@4_m`!O=Hz&4LvC0)^AqukZ-G z0l&g!H!&7r8>s0V4-kht;YDbaV1L2+@HjjRZ@}jeO0o`U2t8peBw#K)1mT;xH-G^! z3Z}sw@C3^>)kH+v?|k*GMbc~$EhL(QiG%CAD)kyYbv>}c-9PU7yX8FyYM zbJx|9N;_3sbyUZwUg}uYTQyJv)$!_lb%MG`6{umVP+g)LsgcYzN)@Rw%yqeHt|qG% zY-~$ardp|6RBJU$wN`dsurtm>JimbEoDtl zsi=Bhou*z;ebkHUbd^>8cxP~?dR3jJ-cV<&w^V=i0X_LxoufWigVeX`T=j!GPyI;G z4yX&%K{Z7EqK2y9=;dGZ@^5u9yJEO9dW7=p5*5^O71o!k>iRNOLyuOq^cYn~U#^bj zaBQHjP>uAJs)?SUTIy?6J3UEt)Yqxbda~-FuUCEb4eDGyRSniR@?o!O>S8@zmFNT? z^hokSf}7QNcKOx1OkJ;Ms)W8p&C;{f9DS>rt8Y{D_3dhbzKaJ(ck{U99+lSf)l$7c zE!X$*Hg};~sqa&3^dj|)zF)1=532S0A+=FItg|DxWh$p1 zRiEnR>NCAUeW@Q)-|5HI_xcI-i+)P|s#mJN^wTO}R;jRAt*RS-U&TD5YME!%(Po`G z);y=`nf0pBJghXjHovOR%x`>V?RWLH`GY(DKh<~Ukov*=r4E?C)jg(%#$LSk<4fM^vxtC`a0?7e3$F>zAN zbM;HU+w^ANJYC^?RB!P;rnmam>(_nn>g~R7^;^Cl^xM7~<{e*6v&(mcdDmCVyyrX8 zeBe9EeB?XYeC(@ja=z2dr@o8KXFjDCzrfY!JqEh^W)r`|XgE^eq>o0O< zwQE=Tv^rqhzJ1)8*mmJ1ZtG1$Tzj|yPdneYdf&c?_l&mPBsRW+AGxz@GwHLl}=PzUf?d}%8i`k?3&fnMz#fy)vB3oi!OAhtIMgOy;Cc3Yd^8CI@`6C-|@c5wtw!a z*Q;AwY1PY~W9|Li1KDQn@iYJJQoQN1DX!Y~bcx5gPqgjW{YqVI+wdp3UfFgOdwh&- z`x?3XU|fOD_qjvX-HzSTI$Bx}9HrHj_PmSlbGLkrY~|PTdUW}ncPsXEzp^(Rd%T*? z+u){JO|x6i@oP21wg=gNvu!)vtM%de z${zZG9v)8-fZQk$NcAOkT^XGHlXxILH)!p)&I1f2v^`Cq2KiB4rU#l<9 z@#n4glJngo!g`Hz_Szog7(&%0}@!_~l9@1;!V`+yU$^7`!cU~!?lpS^XAldU}5arMtf)8USx|8&X! z=@IL#W1t+T;}uUF?X6tStKgiUz4iXjBhfkTz3IH8B=HhY9PFidSF1;5ZyYaIl2;iO z&Iq`V@#a{`qpq#`Q>g~_QeNt-RDo>;ysvbov##Qf9XeX)$DnmRcSfkytACx&Yps;C z@{4k|JzQUAbI;%`#hTaIUax;%U#>XBQw+O*hwC%9&Z>>wYE9S4wrO(pvyRi4T`OXg zIY(?Gj>NO=+N8gEKV@4eqSb}AeG}Gdq-{@NSK3xh?giGIcWhiG zufoTz-8sB{--LPp^;NioV`HAZj=y-?;Iw*2m}kq`lTPc3n(mSh$*by}o4jkhb%*E7 zakySR!kxn1_Ii(B#ZxNVym`I#&X;=z-hky_RqHO&S+aVXYp6Z1cZc^KN49f4?({!?N1{rqt866-y7^V4rTVYhC2dV;@JX(|hj~ zv|jy}?dhz0v)64qxW&B}J>1%?bvR40*5R174riQOeRN zSB`o6>bIRdldsWJ;Co%taZNq=z?-_RMTwV{yx}Bi&=3Nc`)2rI_jC)pIDR)cNd7t8( zsl7X>S&UWRht`>??b{1si#4Y1?zZ^32t?>-Q;jhHZcGzOlb; zA8^HX?ojH{d&d@Vv^zHH0sfv~PxqfL`P4IbLTb-(%jZ0|x9xCeLhr2SoiV-lF5df@ z2{qiS+Tq^MRJ`UMvF{9Z&3ZrM9L3(9zV(UTQoAqSJ6G==m3Nony_@aE``QWi9M(1T z2HU(dmo+XEcJ1|d-Su9@mfvF6yix15dRsI~dg{F^-^Z2xHhbP7jkQ{6+u`Q$&M)5k zE$=;(w`6a5-a6LF8F0 z(dC>iR@ifRt={siU(tKUZvE#urph_&pO@Ez=dl@kdH+1eojk#K-JY%nXY{vi^PWev zEO+;T_paAFUwPZ%^`+uocTZl;S=1Rl-txS4{P#=t_La45yX~GHZf#@g>--&*^&V%7 zeb439tYfmup7$-zoz>pA&XeBp-0(zq>|0j|=S(<}_b$#-j^`+GEX*L{^y9(LF3^}y@Zf8Q7Hs5{(I;vM6MYxPD{Pr0K#+;nSYUmdR1 z+6P7UKKM|^%;BaRb&PHS`SHyrE6Rl_mswRFsS6&&lq z`-*%k?-CrFSmEB+y&&(2PvFSuXs>sEn!gd*_Rm}HjfK)2f93g?IlR&6ZSQ}xyz~Bp z<#~6J-f`ufdE)v9|U7lfNz6Rw8$n%UAc<@&tvi~(0eE6wR-FDYS&1gt*gP!_P#n?tG9Q(XF*TO`7|OU z;BbAmpAXqfepBA7{ipL<&jp<0{?7AUi`3C-w!OUf_PaH&&vgp4y6s=KW1GzDP3LX7 z*B7sUbLDE_ZMpYe?Ql=-c5~-;x4m9#d!6?^hr6pk+}-~_KL>e`dtm2T#=wOe#oBAy84yd=8gD$a#r^CZc{lEdS_PeorrhWce6ZMwEFUxy=3p% zt97UKv|Y2Fb2+b@cZ_>aY#zVRZ9Piv!o4}HYv?o1QusTaV{N(qI%Yl1bL{?iYZ1e7nyd_)D@LsoD zy?x&|!~L^e>+=MkviTP~+^hfpQuB_Sjq*S~k41$lq3u$~P&PlW$x@14H^dGC6? zcf#J^f4%p~hkH-_-~X-GyK}p_l~zC5TWzTBx6+V%`bVpH2T@x-R3Z7q39e5!3resOzs|6q5?hkM#% z{SC;OcfM(s7#$Fp}w|Yyl zt}f0~y2Cvu^p}T)(Dl5-?^>c1t>dW2Nhn#J_r=iX(^Y5NEI@2BQiDrYR_!P0- zXYbjj^%s+2cI|LaAiZs?DffxfrT72$=aXKa9sB3yy?uyJvoc58PTdEPt7 zPk!Z7yLPL02KLU+-Z}elXXU3kho$U!4|mP;&N<$`s>gehYWB0B$?_MNS Z4|^%r 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�QX^`9q!YL8MXV zhPvSAkw%>#>V^*{dHxpafe#^h*B|PI4<#9cp%{KKY1HsgZ~PLHrvafpcnQfhCDa$c zl;oNc>W7z-MvV%cgl50?C z2!1WeQ@hYmd@{*9l+ZAI3Tf00q2c&clDnzU2z(mJ)hZOnr<08C&`A7VlB-E*6n-Dc z)g&|;zn|o460-h_1rLzCuMdsGA0m0@5*m-ENZ!|nCg6{d+#`i1lFLHZkSjuy$j3sH z$)`e7$d#d~O!+j)86Y%`TpyZFZU`mGO`#cNHZ+rbDKv}R9GXK`gyxc4Li5O%LwAr{ zLwAv{gzh0<4J{yF3oRtKg%**ohZd7>h8`q$h8`y04W-GiLQBXWLrcj6p-0J|LMzCF zp~uNTLQj$^ypq)6Rip{8A${Ssq(8il420K{!SDt$65d2s3%^KK4`<05;mu^t@D}oj z@K&-`_*J&|NRsgz-bNl1euJzN-cHsH?;z`icartPyU63hyUF9j?~@I~ACf18_mGXk zpO7boE6Jwey=1fSXJm`;KC)$aKiM|?71=KQ4cR{Y9oZrL18eU{GVa0$$e!VYRC*jAUemf5Ur|jI8hTq>@0?APwu8B`1c`hBUg*a)gKL;!{bE@Nj*68p$;-+o3VK9QUqE~Ir1$$eM&Bz!K(wJ+Qlzk}r3 z7jBB*MRMO2J{iA<v)S>gWpOC)0|JdoTH9z?zzK977YJeb@T9zwnz z9!kCy9!Bm64=3Lak05u3)$qgd+^&;!Y`jPcygUAN*_{b)*VdO>fgh-Y=F|wH~ zh-@JXBU{OnBCnD~k!@t-$Qxvn$ab=6WCz(SvXeYHvWsjU*-f4jd7o?%`H*ZG*+aI9 zd_uO4RFZ8Yd&zc@&&c+XePoBoezIfaE3$Ls8}ii1cVw5y4`kQK0kTKrAlWnW3)w63 z8ySuKLB=A7$kQT!lf5H4#2FyMgDrJ>BtZ6!gvc`@5%Qc!b#i#5Cf}sFgygChsfCx2 zT=gPH;g^zJ^&++LQj&8*qz*YYQkT3uQlFdT}8F)#s6&s^39&u6`GJYV~`_ zF4Y&1U8^r-ncYZU)9Q=JtEw+1Csu!u++O`*vU-g)S);}h@|YS+$zy9gN?u%J1v#q5 z-4V--1}#u{>BjkV;}HP(^W)>uzYsrP=0IZt=g^0w`;dmL-b?Ev?iZ8rY*lU^b|f!KaF3k zSK}A!XYk?rS$w#D4!=Y{k6)rU;v@76_z0cBOY}>4iLSuo`ei(>U%@Zcui=;K*YT11 zO?;$&3oq4gJFVi33m+6o2(fVV2w9esU^r!e3U4`GQ@2=CDoX^kj z&CvJaGxUAE`%Dx&{8QZiPRr+u$kP4o~S0cv^SD)B05W5#1GkM0dxR=$`lz z9mUJ_X?VFV#+T~T@um675XxKg&u=HrI+JR>BsPu`U!lcehPnDKaD@F zSL3VnGx#d~EWTPlhp*Pp<7@Ore2snqe@18UXY@<>T3vy!)i2}E>R0e*^=tTx`uMu7 z$rI|fRT*7?XLKVxtBdfgZi2t0o8d3%=J;ma0^h7#;ahZ9e2eamZ`BvzTlIzbEBYe* z6@4+jLzm$@^eyB*-;KYc=i{H~_wY~j2Y60@gy;0fc%{zamHJcsQ(c9B zsz1l~>M!uU`b)e@e~nk^Z}HFd&-my1SA4%#^;(mrUR(Y~>&L&;LHsKn#=p|l@UL|Z z{A+y#{*68o|3)8;f2WVbzthL#-|G|b?{xwGgD$GqpKMZZAla6d`FO}Y zgojKDkC^3n#5{&qH>>gL<{A7Xb6x$`g(USw{>8=IT(#wLL`F*oB)Oc~zP z+=4eXv+-u;R=k4|>v%WwDc;Rg;oZ&Wcz5#!-ot!}_b^}MJ3Es~%!_PF$@iR>e{A|+>KihP``j1MxWVm9J& z^8y|>8T=|!fnQ}_#wVIr@QLO%oL@!5uQqSu*O<5PYs}mDwdNiCTJtVG*?fvmHdXlb z=5zdd^96o``5wQ){D@CAKjBl&&-gU+CqB*mh2O-DU2D=bXv^Q-{rGef#1kfrCrmXw zX=>m}a|Axa9E;B|_3$!t9A0LQ$7h)q_$<>3pKaRUvrRjEuIY}?H9hf;d}ON!^nw1s z2V?nM4!=7H{6r(4o8k8dVJ6Ij1@Iv7fkVa5R;jhH3AVr+unYFUXYdUighRj^H^q-v z@N0a0+6x*(9~c0GVK|J1>F@xQ!xOL`UWPYd7kmu+;Cncp8}d%j6HbQ_a2bq+D_{!D zhqZ92kKa&)N1&;nZ=l0im;p;+JA4Lzz|a7{eFWb@>ma}B3LD@c)C=()K^O*;VKr=r zeGmz=UC;q;hWlYXybT|Kj_});FcNNqM_?1|fzP0GHI@x`z%tkh??dD2)FBQx!D4s@ zUVxqOJseqs-zJ5QFcPM~<4{zS->ijc@G*P`vyNc-uoVu%QMLHB0_Y7BU@u&EB>jNx z@G*P?KSP6~_+~wP4Bd|A7tG*p*Z{ks3XZ9*R21%oXCZP7zfTKy!BRN44&PCS51`et z{LUsk3Y%a*99Ng$iiM#t1}4G{upL76*zfQH#Ow2Y8+Z!VK?b(M*YGEtcpSgk1>ZpZ z2E5*|5FUpt{04Q7XWznPmwhPH0)gywDfUfjC?a(;)?`;01WE zF~4=%gna^kK*y%c2Y13Ecp7#A=HXv z4laXhAOZKnDtH&T6;@qgEG&fO@I1T)7q?+PxC*Ag68IE;gg+tBmj1&9Fb5XHUI?}0 zx0T@?E%6@|Wa4}4S6|fH8hJ$c)7y1p$AP3*WZ*W9c#vVjr z9lQp6;4AnELfshS&=SstnUI3#;Z67(j_uCafmU!PjD#{s!DjdfsvyvVeFGQ5t*`RNA7+4Cg!q-qU z#_x2)S#TZ?fE474Qbs?9XunEuj zSPdCyGmvXB^n?*G8fL?Mco7c3$>%Wcpg&vrRp*s}AP#6!>U=4IW zm-`mz59h;1*ax-FqwjDA41$|r6Xf7`(C2eafVwaRZiSEFsKIO#TnkCK9k#*|7jW#r z^^k;H;S2a4P9DN>2g6|;Oo3(aAymOP(B?wM51a<~!7?~HEe`k z@Ckem)kg4ILqli+o#8^*0Uy8@@H6;JIETUu@Fwhr9PEc5ArfaFLt~f&55P)jbt%h) zC|nEE;1*Z|AHt`wAAW>CpzBDsuaxr!%!UoH1rES5qu9pFxOTvT(Oj>g0^Wr8;2Y>T zhI@246DC6f=0FOzKx8cU5pXiJgVFE`R6*c!UMpw-t>IKS4bFnWa0!foBs>gj;63;n zLgP55pb1=794>>`pbEZ$qAMAT&o=p5P*w3JYN=jGM^y0Um($@CxjP(AAvV;Up-A61WoTU&B2coC%}hI+zJ-VKeN2 zAK{2=dH(>f!>N-vZ^I}^z*F!#9C01z6F3o?!8&+(GWVhI9t@eneLif0kKi+CbOYx# z=mDogr>Wdm!#OYZ6HUs3w%$u5By4Y2!uCR{=KR{)Q2E-(5I zZJ(_F_w!Z!k2ar7csA?X-ctVW|IwFu|G$2>)a-9)4Q=!hsx7pG_Rs-3>LXPrU58(s zucJsfCKsW~m!MSiAoDYNH z0vG}p!ce#fhQY-!94>(oPy%td6h=ZRjDpKxG>n0<`dEG$|5!B+uFwtnh5Uxt*!%|qL2dhWM+ki8TfT4eoeDtE{K-?< zKlz@`A)d${Qq}k`15}3^d@H9W9AUJs1xLbBa5U70W1tQk3w5C$)Q97s0UQqv;RHAl z3ZM`g!AVdAjiCuN1%44-Ol)Qd*jy~Oi*`(PS6=nH8pe> z=nCDSJM@5_(90aJqY&epK&P1k-5ZLbk15orLti)p`oWoSmT9EVhW;=B2EsWo2+lP{ z`aIKEpKqGz!Ek|Ts;zGlU1*x=p>Pr3BpL=6!*I9+MnDO~;ZoB=kAzYf1((5S7z1PB zau^3!z<9V4Ch(1uX_>xm91sw_hg1^)SWUrf-0$a3kM@nFcqR zJN0yPw@&cwlO){y|1tI^aFQlfy=Z1t^)}NzQ$5UzBD;uV_he=*StUacx%QNFPxo|H zGY(!%vNE%~ldj4vGP8QRW>^FinTtF`*%t+6WKrR9=X!nkP%m7?o#iU>xIRDx#cfy| zgnQ*8@Bcq1;(YPt_hrrNU+1Y4=bVTyzF1G3I1%5}d$TXY?`27lg@51lh_`L_e_u}`f z$Q5UZ89BGh8EGc7@)^!dzVAxGN&%xhfS{h1d5 zW6Z~8-i6b-{P(oXwOF0;-`g{|w+H)v#|F_P-nk-9CHs6SDH$ zTvpSA4r#Q4(SA7l{(UOE}}jrL(n@57efe>2*Dv$Fbqd$&I@?2iol z6T|+@u#X$|NyGl!uumEGX~RBa*k2j;S;IbW*cS}@qG5k)*jEkvx?v9+_P-4Kwqf5f z?7N0#r+jOlHf)b!`wTl^*p-G|W7u_5|02D1CUf1?pTAZ|n(L;tU(RH1FzyYGOWLcT zQF9!+!Q^hT^uEWi#~Ail!ya$g6AgQ^VNWsasSblRYs!xnH@l}{Rb#XxM!RLok3P3d z`OzmoeuM!U_?X0T7``&P}Kd)%;77UPt~ zxYOSJtYLQ?uDAJkPiT!$yW(GVHQp_Zs#B!(L<-eK4;8}@) z?=kGXhW)Bxzh>C`4f{V0`%i{FXxM)??6(a2koBGqS>O7QmEZ3e_jjys{f_mm-!ZxW zYUzE%u-`N6qlW!~VSi-U9~<^X!~WK=FB|rC!@g_S_0xWQxzVu48TJIjo@ChfI}A3C zY2O=vVA}V_A2iwz8Z9^Nb&z?(mP~HR$<5&Wtk27>h8;8P8HSY&s~T1}>~_O`#9^>x z+H+szu$jyso7|rYhBK6zKb?N!*EmPcWIpC-u&hn%_%f6Egvouv&*@)w5vrD6Y% zVgJLh|JSh38TQwP{f%K?GVC7(WB&fpp8L;6`)8wl#b{q~H0+;D`;qk<(_Rnzrj^G3 zG^{-1>!|Lq8Ju|Z^|58xz_3e(T{i4q!~WW^zcK7fhW(vke{a}78}=2$zGm3J81@ar zzG>M1HtgRG+rNjo7Y%ujpCJzJ@gwV1!evd*It+Vl#(mXZ|K_hY>@|k{yu)CD-Rpb6 z>-Ku>`fVoni-x_!uwORpJ%;_N!?3%v*Vn@9_W7K?@PMZszv7)vm%sB0|J*yT@I7z! z3SZN!SNNJfYqYaQyXy*H8h1NvCiD0!wcW#BcBOCacRJckX7$SAZ)&eNd*w6U#8t;k z=IoWv$30{$zq?KD#|(RpVGYARb)_%UPaF0b!~V*!&l>i5!@gkH7Y+Mc!@g|TKN$8; zhJD*|u;-x9!9K$d72lhkPCV zhS7e*(QeFKd6mYvF>}aa(7Ueob-u^2Lxx>#*kQvSW!QCw4QG8S+lKwN!)7v_!@e{= zVA!7+_GgBD+^|m?_UDFu%3-i--{_zAyM}$(u#X$|Nx?ps{Rt?S58?DZ_9C-~XJBQ= z*>mi(2t1H|4DdtQTL2Gd%Ye_zt^@W24jgJeWr6n!e5t^f3p{s-X}UnX{toad)7w{J$48#^)M@7V z7J(Ik@0HZvC-A}ScOdy-_NJ?`voYNPyg2>yfcH;-4e-^|KQv4DG=U|+BiWY#HnR5v zzGeCk0pBrA{7Cl6hq1pl^+SLUPOk$V$TBAfvU{(=Ui~y{c6#Ps;Ga0m{Jdl8{lE{; z`~l$OXJ#J7Cq5PM9a9T{H_tHc5rGX!=e8Nfs?7WwxRsgj0^T{p_w9(x=FBIqWv>1b z@Idy&b=WnTc`@MT%-;ZhdFF4fhhM?W;TxETRlv#~=BKe|-%W(y2YBBeK5=^H-N0|2 z`6l3z?EXg+C*{?92sdY*3d+y#A#7wxd0@|5fgj0|GOc;e{wweUSw7`R_6NU*WwHeL zM|%iwo;mQnq(2$(p*^Pnzbf$Sdq}@>@B07`3A|%Gqe{8^kj#{Spdmjb_k`WFDR`#uA>Z{IfnAIu(n9N`ZDK7OVu@VS8Z?Rhca zr=|$++V|T6KLhw+_TK@o+?#tm-;3~;y>-A>@B1;p1KB3v{nHl#8`=8+r)LP?wC~M; zzqs%HfDi2Zh`^5lerk&HH_vFSr#yji=KzmnZwGu}-&vvb1iln-bLQs&8`(Dj9uU~b zehm2Z4B^N3{Ttwe*=wFi{0V@c-$%)h?`r`6;=U2!f$Y72mFbrQ9?t#@;QiBY1U!=c zUBHHLk7Pd&{6O}*0{1+L_?3X0Gev>V2Hdy*6#`!i`0D953;n%-N3se(D3m`H3gKh+ zvwgm6?^mBp_ygZhxC+?X|EGYR{j8&l`>%Qm;iCZ$XHNm%KmB8Xn=`)**vP&Y@a7r9 zr%V%me*e@Dpl$3Yek6Mqcq9AcfZrDSclK`p&mMS*z*hn8JMebE`=@_LD1R*QF9EMU zu>Yxy`&hsO0`J?SILFU-9N-B5M+d%sGrSTHFrR-V@bdz{An-Xd3p|+p;~#<--2q%{ zhcSonTL%sUUU$VM!0)+&>0EckZwck^0H1!v6ONMd5y1PWKPT|{x3F(=)cV~k2pic# zj&IFz_;FYA>3<>cF9qH_^UvTmvV{L8l$nE+*(>lJ2Yx+|k{9}81wMY}+n`*WepZ38 z&I5j6ity$c!uzMc33%TgzV%b42@hVy)SfJ?ictvf$ur^x<%%M@Idy% zfUlbQB;b{MzYKUt;4OQvDYEuCD&9Z+{lNeB;12^nbnp&=ZGl^W-;#X(*BhDV1KAgY z(#U>TpyC`ore}yx&k*0Y?+d^W9QvlfDQw(PXv7Ip^m`k13vlC%LV=%;J$qy z1)MwdSAe%2dipYRbr;~=p%&nS+4}%b9{M!k%`^W9*vJyTW%|Y+=3C?eAKLRHfIq*7 zlt%VWz_%QF?$a=O9O8KXz@aw-f8fx207tXLN3+BqJoIUSUj%%|)K>u?KXdR_w3fqc zb^qN#zWb*St%CkFnJXVZvjzOY?9T{%H{g-%*8m&Y?+U!?=`1V4&6#z;Mz#xh^9URbI65vC7rk}x5B7Jk_F~A$yCjs6(Lx}I33+07?S08wzP(C2= zQ$qh7;OF;$8}Qo#zq21(u$hOhx*l-ffhPdoKYdgvKMc5kie-5C>Tdu)eDw`wcr#p0 zN<(`6;p{6xsR-rb^uGdstH?ifnli5!yfb}w1-=S`-y-xk3*MJlt^Jhz1)*G=ekUY% zgnpmEpAz`f0^e|Tt%~)XNWNR(+XWt$oczAXT%10N)fMUj@VYDR75I9ee1 zue;)N!u>bE(?Ypv_Cx)oAR0^U6He*yl(EaAhmp8?EDo7{K!`X9l~{*v1J1nxV0J1CXe z7Xd!?@b3e@=OA^qMwSrQBRrGvdcY&uy8%xg=Gb`l@LPeOJ^ZVH56}LKzyl|k&PxUU ztiT5VUvv1eC)sPLjSOa~pS`k0Y4#iasTwpY1Tp>@J4yB`=@_gDE9)sG}`L(^A zJBE*X(i+B%N4){?Hy`ySfiq``-z0Du@a=n<^1j3G0sa(enZM*H9|xs1d;PNr-v-#0 z`fAO-ANZ+j8SCNM!*{W5JQ47LL)3!qpFR$}f9?ALcdq@Wz?mOqU9;RCo_!|phiA_L z-amc6;GYHj&1)ZhH{lZj|KQs5fSN7)M)pI1zj^I7KSp`Z2o2HA9-e(6C=buRQs8?8J|ytlfM1@O{SRpW z*F72V>wAs@?mPTj0{;Z?w(Gw4IndItdl}$?EV-@gJ_G!<`>03VcHL)z-*(-zew>;- z^{yk?ZQzaU%K*<`_e+4cUH4JIn`ek0$^HZ2$wS!&DNL;)X})EeU;a3fT@ly@yzRP8 zz=vmFFYuj!Up!2W>owP1^IWz`#h(oP=9xbvR^xhCO903V)RStoq8 z!1n?k$x^eLzJ8{~8l=8-`1%U)Zyls&b@=)dzz<*lD!|b!xr14yzXgY_gH@r~bTLk_t;9!<>;z;1v_i(noS#$vC!_Om5P2foOe+o`*;Yju|7n$3(z-_<} z&Hg>$7q0mV;0JGb@&@4?;D=`42Kf6o{4(I5-|)|Z|Ij8S`+y&s{T$%`y5XCE2X4Hr zNBqTr56}J);0JFw*Js=KDZq#JybFr{Hnl4whH_uSCR72o@W#8C*?@?^@KOR6Y!QB z-w$};#?K4PjM#?RVqbOR-N0XW`P>wVwsN;U=!&9-f`Ohp;B_*?>>E=@o!C z+{9M&l$%~B^e+g7quj%@2QCvnL*NO4cME)}z*h?VErA~u_(j0i9R4og4L50puqgz#(cTZ@B5^d)c19{S4x#fImF@GJ&rFe8WwD zC-55rr|#qUpyTsp;QJ20Q{cx1W?lfFYd6p4fOn=j%RD^$v%nvo{iMLdFC<bWM_>OFgx@QWcA?{sUKad5fv*(!27wydZu&AkkMzuC>{r{Z@3{##xA zo)3J0-wW`2A$~8y@5T821b!L3P-At}9Ccfz!JxUb((8`acD6dJ-FrJv&*w6?9$RiS z@(T^3XF9|F#-+}wdwQLAX}HsC9a}eEy)$ZE2smwU5asMvyE*Epup?FaychM3hwZ5@EykL|$NqTd$ zJGyhbKiJ-^G<)qXGdB!H3bpe5!a})RStylqh5TH7aiLr&FE8babA@_su2!$rs&nGV2xmqdKtMj$Wd>PM>^2#;%{IMcoVF}}CYt$b|*-7wNtI?=-hg%!X zoytaYI8-5~QxJY-qtonBT!ZI3qeivU8+Ok0?^zuUy6sMR2X7GxjHjp3nBJVG*PmPp zc#0G957pp!nhTn9q$$W+|72%4Y@Y8h7eaYfb3;nk2$lZk*7m4_+8uRzquZOq3&yhY z&_u_I!=9ASvsCZsobQjis5dl__Nm^+4wF&VcqSc{1u0RPg^kXr;~%cn@mP+^;*wb9 z{x({dwH7{38F%ytn|RB6Q4x4CsQ_h+r|76iabEM`%T|Nh!;~}V@XfZ{Ta}G2imBco zobGhAtt^Pdc-oGNw1sU&DWSFgvpR!er`j2|2Hh>+=va#5$!OY4r9gI+j06+XLap{& z+ndOwzPSoAg?T|&x7Yd9_0H}6QMupV(O$;7QvP_F>D2tPr7MVKOhW7mCpyicYyD|2 zrqRcmRDMoGk=a5)Q0Zc;z2?^NLVr~6Zj7|d9rtLQvSzdqjA z|B3FU&R7F5*?GY#+Uh&4{-FKLj&x{cj6cLt@eqlJL9^Ar)EQXQ($t#0ey`hVZb-Le zX$hHaMS6q0gpt_2B1+U=77NvSNuWkK7OBKSZc*Nrxf0B#BMqKx_PXafL-d;7 z`OaW#(CtYJRp#2DyLoD(4L0jRY2#&_PA%wD$8tCyz6MTHlu{ zv!;?`PqXOxB8!022F8Y0UhGu1H%6E?FO;@N7y8g? zc51y#-9f*{G1Ya0{JcdJM0<)T7S+y1=RA5hb1yu5JqaOKXc3(8`aM5J3&T&$;cz01 z`k=oV7KsqYUnG@S$S+wF5iDvV5?t$7nxp1M|9q`C8t8m2^u*9IXXyxHZzLgoqdG=W zopDrltjbb}`DLHIf?!S+IkUad8JaGj96vLw;P~6;mn|hhq#|te5t1)n-z`=zG`FOV zgnMdz*cn`k!un1pn_H|!O?&Kxl!%6d26%dVeWN?P&~YO&<8VB8T_CA1D?e3hkK#Fn zEKuDw+Dh*drU!euC<5jpQOr|VP{+ExSRD88P&Qs@NY}}@_vo}wH%CrwkG+6@?gX}b zk8$oQmMOkf581?}5L+@Qhq)3pqSD{kz|sWMb&S>TU)LrEUY_DRd-so^B^N$I% z6Udw%Z1*~~%Uj(+M-FuJ$hICXD8>}-Sru0c|^yz@*zYoWea%R6^8H+7Maxz#_M zwXzE3)YDxjIelSg$Z5RZ>~3ruQzrE`%3uiHbFkVy-)oK{uGb`n81;reJtev!2#qb| zp;5JC`EWX5LTtzkN^y2OZFE~5cu_KIgPl_A`P(QfS(mz3KE0t!Hdl0LSlgSTYJpH% z$6})IL;mUGjWbbpj&Mp=14!l!CIB=czJY41pq)koM&;hQ-5KoM)x?V2IKB`-a{bMx zBQJBNb8d`mgD;Ymq3C4ZdA@93D8cBXS4dYevkCUZx>?FL3zF+dG_rcidV!r%rk zS2^)fIxh??37}zXucwJci01}WEW}3RXqEofj@U@n`eXDla}45}IR^M$I@I~1(>icN zkqwl1Mxh`N77GzdNv4QsFs490vs9YPm*#V|N~w~oz|vA(DwgMRh2YKR8OfHfmz zXmEU*hjGI_N~I@QE+7+i5+4IL2hevJrBpyNsiJCBOBNX>KbRtzkujCPQTaB)Pq#z3 zH^6#6%%=vW6tS`f=Mh^lSKuzKcv2EdsBndOFD*#Q63u4}HpS#rLrbI9G8Rt2T)TJe zZA>>%kwo!W5?EQplAz%!YLX~l6-X>nn1iu0S4k)m|{uM?~C96W3cI=^BskVWuBNtTDYcN#dNPq%ub7hSAg2x=0qeWcv)Gq^os^5>6g$#w<;ziV3c@CTT}gnb*8P_H$=U^P;#+ zXDC@yk&Kw4K7ofawFzDlOHrR77EQFKBQasqw%Nu&n4rCYV?7A?L}diL6k9E*{&n4B zlBz-=lcp+w9lb%MDu5ilLK!+1VmDpzfx0Loddk?y9#SBWLyUErf{>X1VhVH4 z(u&%sMa|EXJE5;Blj#;jj1Pqc$E}>Hyb2k68d#h7;Ur3W!Dp0lDp)8Qs~{|nI6hXi z-B?)EXwToq+JkmzuVY*6{G5m|UuZX!o~U-Pyi_DMYot6iUt~femE@){EjI;;7`}@P zmNZI*_7vn~DIpmpvc#uzeDn_=W3lMZbYwvt)qB2Z(Ne0mu*@_kRIM^)q8c;0q&$TQ z)wg>srZ?7qFhy}}IMz<*v2O{FPvQ!374Oi&0vO_J&EZArOxSzGifOgKJrJ^AHo9z8 zE;M05hq$*3M{gQqRhn4C`@%C0tWlfI5%#Twja2T~-q@g`2y~^^qp`$?P7Po%=(OX+ z+VimrcM?!V&UMejs?ui8rCc3H)jBVRWv?0oZihibo|Mdbg5`6bU_`Gg!$D9GK8mNq zys<3>)$g^o2LotL<>q2Yi!xd0p4^ zVbTk7?X*u(FHdc;rw+lzkpDcGgn@CVV6{Wczo%{PLSsf>2svu!H{Cd3jaNKaR(mI4 zH$vD~rdAUOCz|)}P;S)O#K2_MnM`H%Nw;#Xw9$v1bcoB*CwuY~+;R$k(^pOr!v^F$ zXfzvnv!^p3oyPjL+uVqWjaiBO62fE(1xZUxO?W-A4w+9yASLg<(i_bcGHZSPd%QDJ zBsX85uT~26N}&udoW*=;xmaB&EaWQK4PB_hJcM7ZP@h}Ml@@aIi@9n(Us%l7mvhyH zxrOEBLZ-Y>%9nEGr9x@Bw6s{NFBV~bS}0cwxms~?zFsdEEAy4*{9>V;FD+J=mrL_Y z_&--IR~PG*VzrQ2&gYlQ;8YeC%Q@JtmKW=#LcUzhF*>CLhsQSRt?Mgm5d4~bbvnfl%0=e?8^TgtssLrHLK=>(EBFBb32v~ZH6_z|C6mqNm zq^ZcID6+|gt|bObPxM5$C?7W(xulAejBGOqBwiG1ffE)aGN^#MiAeziFdRn~&?qvu zHe0RE)(E>R8th!&!oY*g2J9GiTOCK`{$UhyNjP2`ss}gVTyWsm@tWQx?ge4Hew^P&r3J~B@&mA*iyEk)0Dd(90Nix;N%o$&_45vL3nmeI-Ku#3Y5!3T6! zbRnO63=6FebQg}mj^*FP`4q|E>{u7@&e-J8T&-`P!!Cs9h*C0ip>w*6?LT9dY#K2-Ee*|jsvN|4!8ML z@S@L)O*bIe2namI)&pvq5fo(qFqcl!1Qf`mnSj8K zG85Q(K$p^wrm&=?2Qs2VhcZyEu#yZZGzLL(d~Keeqk$ofL3=?O9TD=W3|OCqey-6d z!9{9kv%fv0N0Cs&*21;qB1B~+R4{c%3Y^|t^-iY^wpW8vNFoX~eXz5-J%H0%ClH@N zmMErCxz$1RkR%5+z1>;c#;Phv{PdttbqzxY6zc94Su4i}{p~HT1ESPIT@UJMAye&2 zq~>5J(isaGbWeH8>1LNgm<`-|BNFEW*qXWIi&LSjv3i_mb742-Y)&UjZhioD-89~z z9WNNLDe5LWYe%4+af#&`!cTX)1diIEF%2x@qq~gl4r6eS*odCkr~@|~e*IPk$*L;@7SI3eym%qan4sZIn!A9EszXs$YAiMtjOjBrT5z-%C2-ppb# zgpuw|EZLg(i^j!yT{PmaG}K%}vXMRnf)xybE(Z2KfbBj6I#G;tz|x06Fw%!W7Z(E_ zu(0_l#SMYrO{zSf0OLnPAOd~}@jXGEw%LinL?4mS4QM!^A=vWg8k}S>zkoZs&>h$~ zrP49g9HdC)Mj%wO5u`nGa|^CMnhUHM%tKfy?k&>?3?$(AsRKsDP8%@5jq9&yDH0>{ zqqp`2y4z6oj<_Ll_S$a9VCgn<{hQh1&_^ zE^wBGB?z)_z=jb$FSS*ugv?SRo8CW>NP7SD&shkblk#3%jEIPI*u}VTV)BAT0qF)R z2SUNZ9if=YK-oe663%tWN)|zJ=IUXw%#MU`YEu9`ZFC0Nw?m*MXgWJ7?Qn6ocDRUI zYI66&>LU+Q)OX`A%$5gsNsJjM`hDj(>&WRHff1a2)}Ar9n5mXEw&m()`?VvAj^nk-&PsJYURL zYh_4OmzS2RW!U&?i@TNJVrD*HFXT(rQemlBDlO$|)#Ci}d>+=z{QUA77Sj{3^ycrATcAi(k35w*rnI4z zJ7F~9m~gz((IHg86k!NsM}c-?Hd=%t%MStrr>~8xve6@gu?mR`z1fZ{VIVrQv+JT* z^;z=)Gp##-j5cZR+-Q}c_ztpL9p;Of<@wrDZfSWQ^m&?UMajCkn$i`4vS|}Cs zOUn!M)w$(Du>z6hVyTcTR4TdBTqT#w)sVp02@-Y*5MAa&AEY=30xa#Mxm;tXxOF1c z6F6*k+ARUBP#A&c#EyD##_5q;ntQx#NwHA`bpckPn5n}ha~>^sKEJ$FTd2*$x}Pt? z&|X`tF9Xgk<>BYKR9~o<7Anita;?5xsn+M_tMkQ5abalel&5jg;@RBY1ESQ^=a7h>+LJB8E4^cx7BG!XYWvXV6j`&E@Ss`BbteKE71Is4bHlCZOJ;)YaUt_`Ht0yGLIi$)R2 z27Q8qpRgpsP$<3HF{t_!7lRbjDj9<+M4_a|)NYWp!Lh9&;Oap4bKyKO)*K)aUz~b^ zwh#AQs~vDr5bg0M0N|z8^;&lXqYduzqAhD*yu&)uYPWIb4&vp#U z!a?^EOd>1P*m#ss#;SDdiThQM^#7E)|gaV!5=iP*^Nu$GDu! zm-6#~cE65aUg=(>$U&xh<^`%mwf^!PFQl(tL zELSW;B}6{z%h(#OVdJ@$&mq6dh51FymNncQfu^2Wgo>J9K!cvE7qOo_hXJdG;+wBS zb6CKl&99vW$-R;@ry zuI7r!W1*JI7t4iGp@cq#cgxkvm8Cj}AA&P5h_ikS}md#%rDn-)nW<4 z%k@HaacLPPUaid4m#f9X5<1`_yG;$ZUQ{#Cg=?s=Vm`M}ht6E6m*&eraDZbG-6dZt zK_Q2lyHuY?H-i$iuvDv7=jZFi61LNqbM;KUP%q9w3aar^ZXvgTel~}F`y~`A6^C4{ zuvjeT3%qb6S1ZjGmllz`QmIzLJLQ+>>zNX?e5mMr9;+9rm*xr!wPomFOLgehD4D_n zl!tmAIyTzVA_{hCA-`0IrdF)h>M|9SRx2wj=(ndbt2;xOD~_(5%G{Y*6W)&s#Fm0A z#?(g$rqCbFV3V+sLgpId?({f!r^mTFbBVhcjfR-8&U9dhZZ$JFGdjR9u7L)u*qJpo z=V;n$yLJ@GN{r$yLGDbSlXJ^Y7viu8%a04u;f6|%&exo5977zg96sP+(LKu>8TWf ztp$8MSxw}3&;_vDQmVI_w*sFt<+LRh<2zqJHjLZ1*QLa9$ZfT|xvhKiV|?sfW==NG zcU!(AMF#uf(c`FpJY3o@^uaz{6ZJzJ-p=YC6I7&14_y|l3S@g|u zwlU!`_g~32+kJRmI_A2I!C{1@ZW~*;?p~^lZD-JbPp_fT_vNUH?Pv`+lT)y&$+*7a z4{K&*NoQv_{V-JPjo=`OXP#@W)A0~qJep##iw=K5I>jnIc6CH1u%^k|MP`l6*j|$_ zCtnkqnlIw$w7nz~b3V`PvMBJp*h;|@{V*J7is3LAq~lzdA&gN&_ri|i^BrI2`L~)t zO*4070(}|f7v5~6Wu_%lyWDBvE+!4w4joD-GIO)2#Pe2#T!Yp?XoJ*-?S-NxhHnGP ziS8Ify3#e=n+Jw8&+&y}%XrT~l$be9ns0QU8H#IHA56XxI_|2tR%x~#(W;&aCDPpZ zGcxx_W4NY^VYD|+a}CYCx3|HKH>cEd!|a_{r@78+QO6B;QULDQGF~>mj?9c%nlZSU zeJ@kGCvi~&Ts?wYgHW3r8>NknGI}w#r{o#}J)wbzPP`^fOB}Iy@mflWD@jI1Kj%9! zq4_R0#!Hy&^fB(*Cry)8U1|49F{0aPPSVvGMq|4A(SR#)4M4R~#8#JDZc0pBN~3|s zjfk!i)>`h~G8Z*C_M((Y$5*tq`SMWNSn(-|%`Yybxr@^zV$!x@qmK5rD2u*2g2%>5 ziM}#^RtFUYcfOQEJelN%i%u!}tg~Bi=X8Z1Y$dv>!zHSsIx*c2O-aKjNta)_wH*ep5yXqM9Kem=q27Hei@tCd0X zTg5?%hIsCAC^|b*MKMO8o*N@jMLp9Q;r0!_JL6C!P8r1bjG@y=yEO6UvWJ-&P$+EdD{(LrULmckh;-*aOQqHz{o zHkHDD7+ok5(ZfW-b99kJ+GIvF;zv}eyM!!8 z_q5pJVCWxi0gtd?xZ-dE4kZ-_Z?ISjcrgMcPWmGS&Mx2%7`SDPpVcC%hB-z`Q#=E& zc6k4}Cr2SBt*fMnCT}cxj%aG;NJx%JdB5Q(9@FO)ei4PK$0!;$=;5lGN3B^NLw`F?6`VZ1 zNLXsgq0|Op(QqNk__ZIRvz~%r)2#~KgHS(g7EUe*8C{YaA{C#O!%4>^feXYUUKl3d zYdw%&Ya=SR-jat9EEz2i{wzRYq{XM3h*h|6LPUm;WV9wn3pKjH#+6f4W#`> zl5xsKOHZuYNE@rm0iO}v`KN8EDL2y5%I_{A)MX^sV*>zj)x2hyA>WAB%0Y@(jKyx)|HKC-FgJBuWKCO(>Z{=KCbKe0(G^o=#?O z={6aQ;?$tjmIC4*UI(B{i%hk1et`3Y?F{IE%p7%85%Jp+5K@b>5gJrrGtG8eCb09s z;n0bTsVzuW6}x6Ve5HVwJeWY7c&Zl<(@^LmYz6qKo~O24at*jz^Ozu8h+Lh4Nmveh zW{@{r1GzFZ!g1WyII<9iC6$9M7Ct6i3eb(9Ep|;FSwWJX7}9VeyEEYY3I59POow;H zy5X(aE8|EoQv(HUa23uxK1c^~P|-SS0E?8zv+%hvTu>`U3fEZ>Wf~a>-sn zrorJDGRVGM!H-=toMdaWZpKNhL@o}%#a1f+pci%NS>!Il$b|QuW*RUW@ZwWQMLQ8} zGk(tj(`^T*OerF3jyw9JQXAzs>JAyJztM?Pu;S_8vvLk*$E`jk8f}kJpMze(+fzvI z_Fy)Uk0#))<+~YLqNqG>5<5GDRL5rXWEU-!(NMN+iFBsJ(H<1Ou5Owd<`7>PzvGFay6whCX`VPaE7tu)Vd&=9@-LY}%ZjKbI&b=D3mCTV(jx+^0K zVt(Y6D61`KIVd|%=X-dIhE8?vfOMwmk)d8DiZop*YfIA&N@qUlkCv4nB<05#UwXwPfYTyn~8}o$@kr60y|~{ zOvVn4dr7WZ^pbRMMoMygbxxMRID@TJ+=P&5JZd6J(oq7OPt&3}OHeY7nS)YT&Qg<- z1NQTn2`DADv)v>)YOG1pL(5H)YX+JmE9(D=q8hWiq{R(PEJ-%zjJO>oDKch4NeZNl zQ;B>!6T~i&CrUtXp-CYbHD-uNvd#RE!txe~B+DBSlAM?!A&nig7bFE@CV?c|bm`Pr z4OaWfsNvE-$qiI$S;r?O;*0tuACrVzx2N*lx;%v^OXd`MY?+?q`$nm&@+3c4q9>W| z`l+;1jMnGLXijyU67Q#t}({L z3Mq{TZ~c@QY(B$bI**z}@)=H3NHREH)-J1kAjy@r%Oi;3O1YE=-Y#Bk$rS5si<6k@ z)i{aE=ecVg)0td;Mc*Gt#!?@z^mt;&OnF00en~2dQw*e> z8k1bHaHO-OFi-T)r*rS>w$svM(>T%ToloPfZs0?jyYSBry2%X6LM2J|?FkP3_w)xB zlLD}n=|>cktQtHv-AtNfie2~;4t*!8gja4&=ALM-cTyr*v*MhX!uKYtaF1ew&S4^zp)>46wrP74B~CPVFo;fOch?8FW^E$h?+xfh$jOYu!f%JN z6K^HwOvDVBj3_GcZUVOIPK&E2q>>zN9Kpcf>)t!zvDy%$WqC3QXUt2jjnn-hbk?*A z)LkgO@hedd@~*o|SO?eo{t;-Z$(*SMo229O)6k zNz58AbxTcD{REOMU$be^Y-dAsvFbKow@occi?Qf8{hDTTC4ENOD1 zE;bZ*5pqW9l<3s6am%kWA*TpL4bXdzr3i66g=I8_6J>9*jGsqS6L88x`}D^4c{)y| zJVUS1#f`v|MR1-|c4nQyDAS5dcH zkdlbjRSJV^^b|6zWZg76jasP;j)q(orA5NPjidc=X*s^Ntt;x3Cvr)hLUvo|*xu)D zhA9G7JQ&;Plh`MlmsfiAjqdpiqe&vjdh7z$l!wGt&MACr?=t?R2%rdb%R7aKES|vu zzxHl2Wp!K-lUzy?_I#N|Qv~n~XEM|+)Wr0Q`4J!HRUVy#Has<2l?uvJ{34S^h|lWal@n*{n6srxa7IM<)vo#~d2zmW}05ikzgK zN|!HSq;a??Ory(ZR#O;G&rac((wD-+VbKBSEYIl@33n$?U)ZH0>?i{$dJCtTj$SOJO@(ejm30 zCEnf}e0GxoPj1jsZ?x28)byH`y!#Z9m}ZmwI$FpDxtlMMGY%6_cwnXR4o5sI%v4SKpJ^&<*eoWxxj!pE_>QSDsnZ1lG{ zTP7djdsvc#1};}@PnK{8qLNYFh?HcA&T)G;EhE0GB_pXbk-j9F%w$2F%<7)Q3JCsb zb`@`;r|@23d_@b3jpUPXy$c7s30#^eC$OLmP2imEH81ty!3ZTm4t}RU*q>cWX31UY zQ0)%z%_=>B2ERmazuYaJ-13r4@HCX`B$c~M=^Puml97@_U{c1{Ns{9Rxg>+ffRj|_ zFrBl;8)cFaRz>~ML^tKSn%0^L%s7@R0zYSbf2h7Kl=DC{QniI0_T zgfFZlGK}M=@Ka0D*+NB)O|slp>I$#TJlDOP6p(!bF<&HkVzm@k_df1!*+~k}QzA*F z?_?tHHV-9PIO6Y{%PvwVR*I_*g^&feiR+a^irXBh2U zJ&9MgFZLuje!7?}QE6^9Tj-c6`KNgkwkCWiFpX_X*JMn;lG{ZDHwX3ysp-OZV>_Kw z!v*ijeBwJ(8#pz=4-Wc^qx>o*?EiY)A%jMT5lFnGLpPbsJ$NMM1ab7_O$r?dagfW< zy;{U+4-(gKLHtpa$dD&w?8M3i11=?@i8r^VY-xmipOiBKSsd?nA_UC-=7J;H(PJ6H zV*=P+^KU)I!B}%4TJeoBQ$Fx1Ny5i*DDFOXQpigrriU5R2PV6=@y?ic|d4Ia0kPX!!DBZx?o~|f?K|Z_zv)7 z#)mX<&)LO}yVA^2$UNQ|xscD9?zRt*p}wIl*g@oJSo8MU4D_%h^!VBuKe>>R4=+eH zBcnrHQQpCQfLxu(sgx7gzijP{bNoZ4`kl0=$@<#)$BeOT=8m)FGnkV^dCe6Ltzcgv zkU(q41yR09I>tbA?K=H>hsSyRja-?PQ?7g2k*e{q%r~A`8peV{J<_iokLTdzW-p%K zQRLR#u?9|k@H@Dt26tV+P=ZmQ)yc@^YSx9EA}$RMelMI{;OuSeSYsS#+Wg}gYz5w( zP4i_QY}z5BAR3+XZ4*I1uAn4%;tsi@GGSCbhc{03<4@)!jza}^vdR@`?#wYm!~=F zpNWZ^h=sJ=V$OMzuQ7)`DXA09Ax>hutTZ;l5R-|!@MUlk2+N&Fo@YKSH1x^n`sogs z7&0eB$$XfKNNLPuwLEne)fv>NQ)A8rh6u zWX!0Mwi4rTIP^<1EoGNd$nfjf6qX~YBIos8IcZIwJoX|?%{U$i#lm?VsV(01O7M<% zMs&BMd#1k`3ga34Wrj)vpYB7#XIs$SZVAGq;2b+M{{BR<4sw*;#@d)q*2~z|v6QqF z=))q-S`cyKB87=Zj-MhB1bx%sKopRh<|!&e6~|uK^VNbQ$@_TLq+|_ftUxu1D`cvW ziyS;|L_3!NKS8W_x2)pe-)KjO%sThHY`Cn+dXhs;b3Mk8z$Qg|US8B3dc0AclS7+^H^^bEK1}t%Yl69Qz zXY+A7YY7d-?qDD1GoJU#^^4ze8ClvmAH7L3Zq{<9P+gmc>7aUTULQ~6_R)y@?6RH@ z;{d-Px;0&$HJ09&^Pl&JH0B_yt|f$+7A!RMj{;Dpd^oLk@2I zZmu#LF~QBwnNmk$8!wvHfu7tTvWQF+c{I5pHfXo@;_*Uq6NLm_#&|Q^yLK zz_s{dW389ibVXHax6kn4x!%IYj{s}Poj2AHW;7JSC2Ty$S1nGF=#MX0Y~+E$rDvFZ zHg!S68x-k_;~Ttmzp%1|Aj|m}l{0OU%DyW@1}+-GIEy3Z*b|d1IBH7>Yf#OhB=bBv zPto!Z4_5OpQ&^=}yXriGVaP`KY;WL>glCR-Mz!9hEWT%C~TP1o{;H91u+ahOfFvB=~&oK*X` zFs6f5ghP-?hs8%RDK)vU+2sSp#c|c|X&qak9d&DRbW@2ZA&up^WaxrMp8zOi%XHU<^gf7+I$TUbhX z9m{i+fZ)!B-Q?<6sYyV#HdP(P>&uyRp<^&Q)PBIOi@+X2tNy?-KhBd~tMN4$m5V=*&1 z=`50vV!GN>ye4<8DDJx$I=`G|P^xp^(SR;=6hB9shCD#(2X%}pz%>>ip4w_+vT{8< zgUun2vO}EexmfNb3;g&bbJ~jJ;0qfbD$U8^F()z1GQ1)eC5mCelW@~VEG*-+XP#^h zE@CH<->1*$x307WVuv~dtsBs*bKb%Y<$jB*yxz7Ftwdm2z?Yq&?8_e(E7TeH27O_K zA*XlfBE$3-xoZMrt8DILz~}Z~C)4o=6XnPxr6C9n337qHgwFP`uz(KImJp?>;99^R z^O5KlpqSX;L{4mQf~^d_&EV8IAsp|(lMSE$+t@)@u|)5{($&rDRB(mvyN3j@)jYs_ zk5!Dtfyoe6hF&2Qq$_{*QaeF)#bEM&q!Pld$L1Q1w!6AXDDlr7D9H=p`v*c8vDi4E z$=Zx7u?^?|nY%8)DiNt{ZW98Hi>BYZ&|4C`Nf;k485h$rt zspz8?scdI=kxyKt3OL0$l^1>tBPPJhl+|w~Mn;v({*5a-bOwH_B2^@KIVhc}A}+dT zLj`pANcq0uuRE{6fT1G{O&K~$2*y?&9!2BTNwKh~XE91-9tqlWOoEB}`iIk)oMF?> z<&hrb}q=gofFj7;!h3w%WWdIGhapo7PW8Z z5tZwLBvn?TZLcl`()K*2#tU_z%Hu1Fco~*1w%FvaT9ELKsC<4611wn)so+Uxhnctd})63iEXn2;-4aPY(=_lr-0avNsz=9%eKMecy#!W4mR&)?n6T!qN7kg#+66VkB zTUO*)%C;|ln{gS8trx6+CRsNAM68xQ(W_#0=9vU(^)yt8B`O!YJ>nm@NLezDFDx6H)H6oKSYPv%Y;E zu1jUysU}P8C_bt^I{AywPvF`+W%?3#!-|E7_c*+$Z^ zI>{xBl35N$_<$MLzL5m>Bz4z7j%-KtwQYP4p{9o!*aU_VOPj7FiJ78#S+IZ~yuc~B z<~EAz>j=66t|}TO8FVuo(04Uru@QP*FrxbAjhBM$U`$+G5h7VxYRSH6M1!YP6yP

w`2_YDxoLN&OTGs_ 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â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 IUmgYiKg)LLQ~&?~ diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.pdb b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.pdb index da5d6496d8d81186e3fde9ae828e8f9c9316e687..39ae7b7cb37edcc01c718d02e903a34548d7086b 100644 GIT binary patch literal 160904 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 uEFSA#abc5h{Ehd<7?h*B00W{$>%M$~#eoDZYZ0 z_{rdJ74bVFzFCF40H>(14{)jqQ=d&!VX`k>h09c!#)6>&Z$o<2AKK!74B~$z(x>^s zSm5m{oB_N;U@DVL6{h(|mI~8+AzOu80q3Z&JMcIaZU>yJ!empP3X_k|N25{Fr}`?W zhR0WnKcO1Guo^C^7XOWE{5PxNiPhpys>YvO4Ns{S-%^cVTn(30i(gueKeZa3u8L3o zX+||%uEG#y71i*}YPeE`seEUtFwMbct1#)CQw`6phUcj;>6@>@q;G)=lfJjA;kT>d zcT|}4EmUFB_pS<)zV}p^;xAHRYHy2GnD|So;ic8^aup_jxk81hy{}SX;;&X=8lyf? zVe+SIRk#Q6I^dn6f6;twLpA(iHM~iMDZR}qOzCY^VM^~K6{hsI1MgC$x3e1FRSoY} zVUqs@_+ueY{eQ0tll}Xu;r%L1KIotdlg~b+!eswp6()V3t1zuU6-;T<_0q+y?G+ry1#+J|V ze+v9h1wRt{6inmcOZ=Y(f4|_ngRfxXU&sG9;2#uxvPZ#+J%m34U$N&~;6oxl*`r{^ zp7Y=z7JRZt!HPW>!2ewEYhwPaVDj~6P@aU3f`1p7_Jar?1MULeCWI0G0@x3DJ@7@~ zFNMCga8L@Sx$0poG6|moKM(QgJRZVd1AhlRQsC3TLt)Daq3;ZEbI6j-ml6LPVEUtP z$10fgXAArt`1CBC^b`LA@NA)<@b|#ZLO=jyV4YTq|i_@N3@`ESGj9Y-U(E#gz1{^aOv#aDrUQQ>RA zcU73$gMvxl9{m3f{vDyu4S81Z0`QzsMi1abe-V6Izx;vt3MPN|P=#r||EOC0$JO|M zRl`qIxE17|s&H2n%QF=Y0)C;wlph5v`C&$9_N%a${DaPDvSRY@Hr2453U>ovZ%nqv z9|L&>)7--V>;V36LVrAkq0)XAnDnE1{)LUzuoL8!_%uG%P~j|;zk+Xpr$c%!;NKJa z`>SwM@Jmo0#J>;zr=SxNRvY+%h>z&3jtW!#)K%f{5kbM^YZn052mhgvr}K&wO#XE` z{u_e-r{E8Ry$W^*??$vM)6(;$fDolG4y;PX|O>Y$@`}(Lb>GxORroaIzO!KEe6{h$>)o^e%98wL3 zsW8n?`l>ML>sJj&sc>uX2N=g#%lAj%fhs%=I7Wp@Uz`dz1RkWqKEQ)jnE3H3O!7li zxDRlG3RC$FS79pukt$5(H%f)6&zV%1@}H=}MNpt%YHw`>)@n64qYUq2A}ks4b-?uZ z4E<5Te*h0he8RTiPeYV82qUZq?vJ>Uz$w7?LjDTkD0l>TCHPMR-$C#YolcmC2fOAxs<}kS`O#A|43#&fzUxg}63x9qqTmSN zH7Yz9`B|sZPi3}Vg(*GyqkVnMgy7CJY!0U(h(Ee&*q#3edM>)M#EQ`%v}_`3N%t?Q zF?g^d;UrPwZihAKe?4~1i4V!|igg1vN{twu6(cxEN6jN>0>r=F0 z&k@NMUoBGNYq)-ir>oc|r(2~>){Ji?B1MVYri5fbjXGcdxA5v#De>iS(x&C9$R+Uq z#(m5UJ%G8ghHd2*uEUj14xp4CxLTG(OnwG3ehI>9`ATYVMlU90I$rN|jx4e1DxZxj z>(uaCmYAGJs&UP~Xlj%4nRXKE$Z2{{2W=9mD=p*&XuR_dt_^+-LA6h`9lxSgBSeFz z78KtN`n5bdeZKiifD5L|ABXex@xI?JYRHnx!k(2Pr$XwS1JH4qmw0d_?{@mq27ej;~_N5w`2Pes^?!5 zu;+0ko_Df^{^s(VOv~ltfl!H+WS z_8bS#hTVn+TfU#5=d?YivD?B^zXz@szmlc+v9QfXa4C-(eBp$`S0E04y~0!3533~h z8FHscjX{Vlw;wAOq%Lu7c>2htNCQRz*r{VCQp00vaFz?va_*?CB)pwNI%(fS_pkO0 z^^l?W;UwO2Y-DcZ1kxZ1LQ6cPJ&bRB>zN|@7&p;?3dG15=FwKn|snM&KB->Pc(FH)7+ z&LZ9_*5j(gk;hZ{TKS5$L9hg^kza#w)!=)Xl$KmC4MF4AN1Q9iq0+!Rs;a#6EJBX{ zUcJgQJ-N)!a{a3iPnq+`;jdm7@HY89SGR)K%d1y)964Rt-+!29JSoR-322S4LmUIM;pN|+=j%(k1i;1q1J@kPa}fkP zwJa7PI_}f(>nF}#&h4LqHlSsJxa!zqTy0o1uC|Q&iye=z=i2O9Ftj<~%}UZ=fh*=D zh>3SWc-wn`_!6V<$jNgF@Og%5G{JYTd5t`x=zMPW@2l*esZU|W!lmeJCa8tAGK zURR!h$YXJD#8F0e*=9P=Ok#iWTvX*(V$HdQ@|9v@9OtQ%50UuTtym?`j!?zWJcqX& zx%bKG60PBHX3O(QiO;dMybLjdK(E9CaKp+4DeCZShC)b6%bM`C`{acwkyNn#A86tSz!uYd8jM{l4gWnMi*;udQ0 zMg!Tl0-AB!C1@vZLk)h#EDPFntTAstM9Y>aS6M%4*7CPq@Qx-gCF;2tiI7u?k7)9Y zQOoCGI%Wr(ZSXc5)$cdB+Tl$o>bbI~qLCE814d#Jf080G3Xyn?D>l;#LdVM%<2cGq z(Jxzg03kXNJ{>`r8>3Y1@Oxf5_kel_W>BCtVx*vRjx_vqZtMy2mO!JS#EiVAXojPN z6D{#`I3PA7%a{2XnDmlAyy(~hsR49o@X#K`-dGf&Y~^n(ANQhJ_K>I*tXUxcv1xwKT9 z6Hsh+ynks$PpK+xxm2~>153OuDSm@|uiUz@u7PHmt7S9?mfNJ2OLAg_EbU=k3{nw`Zg9Y~$DKVU^PFJ$yTRgZx!uUf1_|veT{V6^Ag9`j%9UDO2g#KU( z{xs|+LQwJegSq&_Gn!!Xbo57Weo=@|nEaFxb0QH^voGF><23DlQJj+g7%MnU`^6Np zdJvw=aGG|2DdY*Z`sCd)dL~C9vqm%KP9*c-R}EWa#@FjO-CTq`PsMzM)2&2EV!FIb zEWZmxdhEvHnFi;2ia5_U7S92B+zrC5kh7GFJSYrl)Ka za%l=iU{3cGA=fSP9wnYah>+#Qc;dk6KoPQVD)#?49U?*^S7El!>2MJ;Z#|wPaJrue zsrw$r)uqxtoiU=9?1@_W8jVi$39s5lDw!J_z#9=Ag za=vD`!+6a|2RqGZ2fZfIAzqX0FhG;y5UojbXrUS7;Hk-Q_!GbN{sX_~enXS%@TTUt z!%68Yhf~sd2Pf?XhZ@?84lY_JL!8#x5TUJU2-mtALbYy&U~OGPthT-(M%&O3scmeC z(z+Y^YnvLPwapD-T3oZyV~k%P!n;r(KLAzI@`?T0g?kQ=jPQtN+~5q(AC7 zQ2&MFX#H`=82wj{gY>5yWA&#UhwHy_jMsnbI81-uaftqc<0$<_#}WF=j&b@Q9Ea*} zI!@F7P7su`TyN)~czdP>GKXv>?|IG1M{R_vR^~`ujuQz7f*Dw~?yBH_f*ELSD zuWy`W-_TfW-`F_WzNxX)zPWLReM@7xeQV=%`?kh1`}W4E_KC*x_Q}R`_9?~-_Gw0( zGGpxJkYNmP$T9{xED|MJtGZF6{9eKJed-!>9 znpvqJE2YJQ5FMkp`fhTnh~mNFVk`nxYNdkUennUn<)(zK#^YTbqjw8~;DRy!kgSzj zZKbpgiJM39tW=VfT5Y9*;JkHs7ZSOwqTtFg;vsCcl{##tf|@AYo9;wqk_B+}I=rz7 z2`hEjO5L|W#M7Z zK^^4O@ULY`&!&K4ktF+6P%rd7vzux(wDgFN2YJ|eLFw5&P;@Yb9Sc1xQ+hTEls^yqlqgIM?O61AnbNZ~P!=9`T2OlS zGpK{ZC|((D&m<7_5|lruN-oHho-GD-&_vu3mk}?KDE<=_PiohXFi}T zJnV{~^z1IEgFMW9O{VlL9~4U>eJ2E^XSYE4^RS@nG9`yuc-XrLJIJZypy(hHJNAI$ zaVqYHOzBxBC<_mJC@4LXZi1Ua5}j|!l%DkmW#M5v1*K=FK&`;$gB`o~qfF_U{tjc; zc-UM)>DhWv?qez5El{I5mHiVWIA!~bOzBw>sB1i|+pjXEXW^jSGe~wZsL`DAxC;qR z4FYv-9C5$;4e@e`>h?S0amoT}1*g6Nb&XT2@5z*&9R+m|3lcll{XX(mK-5)G2RYT| z0kq)f33ja0Lz&XEC{QbS*xR7|i-_y_r%dVD08lHiShi#HAIX%Stps(Ahj~7hDLo4X z<&GE0?bvle>Dg0Iqj^}^UoxdZzdg%>F54dDuWfK?0O}3D+zrJ^KdKK^`{qAGD!T;)Xp#ey0-k3sGf6 zc|1pIc%8tG9Rqc622trRAc5l}&|*RPR}l5{OPN9oV;cO>kiw=2O3!A4TEW9=X=F;z znu7ALq~`IMvrqru6t)EHuAI+?9fo`>#I_YlN3PiPE$7pe#Hr z1JprIZ4i_m-w=QnJVvs^GfGHsD#c!=ge(u+h_Hj4`bAJeb}`A0cYp+^;tevT$FE0` zE)UCalqo&NWN6`G6OA$@hmFQ3HSO4Cgt4VWHFAO$P7MKN;nV_92RY?e1Ki~lZx1L7 zryhek$f+*Q(6WNK(*%WnNz_UTi>DtWfzq=aP}g|an>A%h&z6C5Uq$f-*ODnc%LYXY zG&^=uPFSw#oG?bpHmk>xo@E`_eL5vnp67)rDrEW zv8}{4HiiVJJ`|Lm?E!U=huJleDLr!o#kP?|S5W?(8VSn6sb_-Hv)b;E;9-*lrDyMe z8vPN;UIMj(Q<4YbZKtpcpx6$gUQ!sR`Ztv+JsSZEe?hU$d-nDlH7X-J$&``jT@CxN zyfl+<=Pq<(=E59vQocDkHYv@VX<~^*g2)+-BZn3=3G;LdUh5-c1{(YlbxQGZ_Y(%iYX}{x8&?3 zq?AQuVs>&7ZnaM zkB7}E=^*lR(=#(ERtBjniYv+iD9Fm^_w3wcb1ra7dIoF(k!v1TkWNHiem325a?L5` zTuzyC^AL~(EhsBQ9K#FET6z>UIi1RpC1q#kWSEIEB_)}2h{!9*$;r+o3Z*R*loTvR zkWzpkGP6;TEE7rOrkgU--vG$U&dn5LI$3JY;3;I9vLKmVkZ`Op$w(=d3?W{gLS$ugm|c*I&@7ZRsxu`>r8gFtntn zrm3+xBRw^p7->+78_E;vc>C#Z%7hNOB%}N@(zC!wGv&aftnuayv8V+!dwUlMb;8eaj6RpyeTf|WgG3DBeG-ss( zh<+!KwdDvb3=S;HH!CqvrCH_-1;Hd(ArN(LL1xI>)6Av}BqBP*pxks;fPdccS$=w^ z8D$)2${WkF%!Te0?UG0chwbbp_^`bH~fHT(d#h85!_kRY_7W zOIC#nAE^pSQi&8KW~S#4kX;_>KyjL7>tyFgVdg^eemsSO#Jr^3bQ$pe5p1psNLJA( z`#gwJO;ShT^^cC13Cfh4YDSXTIT&U#6V15{?FQ}}`R2F8g7gf6Ic8iYnDSAMxymq* z3q3%Yrrfc(@eZHMvL|3@Vx|=MTDez4Rvwg?DcJO5rknT1EU^yL=YtJln1Armqwj44`VxB6(xeGpEv&AkR8E$b%D4H6;~=WF_;uLT0QKntm2sdoH5G-tp<#1xNs0 z(wg5O;To+0(J3i;=6vLj8jt|ozbhbHj$q28XmU3WLA$3Kfqg6$Ddv;ofYl)2wSrLk z6eQooKulRsvLgIyu$b%!$orl(O!Pb}R%S*lsQ^dm0Fj=Tgee~=>vS-LJOfWe?$rWkne!)P=Z+N!U6>*z!-pin_Y|Q?4o0t*RyK&QaB7*J6}n?n#nw=lM=$o}do5UhsW5m}Xbs=Bd$ymox%*=0 z>B`c+?_3N`oVvH)1$|i5W{fTM&276x}$26m~dAUi(FnEa|bTh9gI0*w$M0h3T*>+$WtzB*R_wM&A{Nnf0 zvMaGszl7E3cGd0kGspMMHICGFbh5uyabcCKA`_qt`&QuycjNiXQOE6O9q*cucKzdh zhbsQ6*wQ`M{pYwZ52mp4Rcmk6dqo&SPj(74*zx2o)7+SYH4}?yw-(lYO6$xg0U>iO16p@>)bDQuqj;?_Flu~(c7I0|F}E$=!E!#LtL-5 z-n{Kz>d4%C?Hj1Y2UN`+s%$6@a-TLg(0Rq3kLMlzFlObqGcw0aosnAa<6ciY-hJoj zkp~Y?+^nNk5-U$cR0?LepBz25LGSolcfYvXY3cWCf9+QJ{U6D@5@Ws&d|tF{r_=om zCq+R}a#oe~U%C&Qy~@_}(7nPdU-veY&#viZ|935$k=^Sz`u%=Xe7gInh1PPDy{T2S zMC0E3M6*#}V0q@L9iOT5qsc*Ll#=Y53Zf^}gq^)mFQl4|ZVs=SS_aQc6 z9rGGHoJzW0wB<^V4{oOpGX5e}tX%K!6&ITPM#RJFI^xLfVHH?qhsFKObBFm?a;F?Q zQ}f*XG>4-<*ew3>tZPEE@bdOgeh)1gm)x+L9b5+=o2s;Y?jD>uz2S{|3*IPdRaxBi zsQbY6>jKZ7dps_r`NoGMg1$bx%UX@WikpbVEG|9CY*kX~;J)q0Rky>t9W~>Zmbs7a zI`oY>d(bQ1!}(@^5hsq#aatuYF&3@`R-A%hn#D!x;CoePVHpLFZf}DO(mm`?aiz` zdSbgT4em<%;raPFc{CY-7qnJPm8K!?m5(lc7WQD}klf2Xzdz_|Un6YH8wYlDST(Nk zwb2`c=iNN-sc4F}ZfInU$3_dybz}HA9Lm=rnB!EbUFCky^=#qC-!GonV&II=exB2F zpWX5^8AD&Jp0oN*T!&}PEzcvYUSj|@J<{_r#8g#KS$Fs6-O6t#{XG6n+XvZMp&@;Bt3LK^ z?&IF@^xn;3x2Cth^kZWsTkv$WUyv&bIUb{o)r_(t_mms&b&Ptr`s&;PSM%%Myj=F( zkNu<-sf8sgUmn`iFY53VYm1Aag&jt6Yay%5`OJM|)aXMm6Xq<99ra7}PiyyhytnI` zL04nlt~W+~ese|n$mdNIa}+gX2TaS)#*D&h&osUJ$zcEAzwdRddqivR4KxIIx#&1Ltk*ZDK!g|j`XA|o2CtPKT=pP%6ZfB3+Fyv zIIeqe)|J_Lk6s?1e`wX!m!=KRub#YLWfM)U|EsR2Epcx+`m2~EOsa|%%Pb2D^5nGXM_8NF9ta|NMjZz$EJk-qHjHBThC#8&m71yr)=u_ zWu;+G3+q4~D<+{T=|9}xDQQ&e-Me|~yWg(4%y_}|{ zr1{DnrdSJchPV5Kk`C^(-L)6r{;p=tWqlL2eXc)v$MbRg*j0CO?&({nJ6rP*mz49L zK4C_dyY8KD9O`5(YP5H(=6bE&Q)j+CsFTy!nfF6x_d0Df4Yq7_Rw{!gqE+2x#xD0; zXZLiRH+4gW#}S`D$M4ws^vMy&xrJNDdRz|dSO4_99bZ^y8eG!q>Z>ww-~El*m+~sx zq<#J8-=p3r{nGZz@jGpw?wkGf{e|8cQ{zG}nzh-9W9(wE1jja)6Q+H%9!WOkCi{B% zbnxmQ5*I6QdrAUMs@HgMyaL43G$0?Fq=~dtM4Cp-Zpu4q?aI5B_bKo1e!T4R?H?EY zGO_ann?_B>+3iYgZ+G8g(q+Bfq$p$K^GPEtEAR}M4Lb3u!y#{1|LdQgp0GPVrgfX{ zy9PUdyRFpI>qgGlEgtVSiO70u|EH}7=k&b4bd{xc==k~Vi<0ZF7_v6P@p#{~V+WHr zymYnOGiJ}$++BSa)SBkM=DQ^On7xe)hW2kiZ1A+t=S>`Ns%^WF=_702>s9}a?o%## zzj-cf&Cr&MMttXcQS*H6lsQkgxz21qefiZ5Ip6tpNz;${yQg>5{ap|97VTq={xy%Z zW;y~p4Art*5$%5RpInw7IzwaQliOjm`!q+tZ}$$p-E&%+$N1?l#}}Un!21!K z;x3JG4RD@R<8B|0Te@8!3$|2BWK zpy2zEGMA5=*sl5K+iq*U;sz~k@~D0P4Gx>V)BWy!5gYu$kB{=-`#R`rsbweKoYq^l z{=KAbe&2Mtm6jia+qeJYJ$otWAJdRKN<>Tfp|H%32{*ECnJ{&uLvc2)d<2}XUX>T_w zZuaxafFt$GS{9fV-hC^rOVe8|?00w^^6WmWMZ&@DMJX;M$=T|u4$rasA-_7r>UcH)6~|uYHDbV z8b^&mqu1DKbQ-Nj(r8LdSfTN4IA5&dGIQYOay^xx&R!k8yghxre7pGgd3*Wz__gyf zcTMhW@-vw`dUrFW_@$VVef)g8m^z!gb@4M%Xjh+ZCSN}sql$g+0z58ZLCwT^*^_op zJd^l>ykl3f?)Bt*`@u!nM5kTOjH1Z&tg+_g$n-?ovBg6b46*5NDEoZe2QWMU$fvzf z7LZjGlvBWRu|v&ZeZ4&dFW9 zyLB?9boMcs6B83VCw4V=PU_Uj)G^W5)U~VC{3@lLyu4Xf0k$UTQ9wu*zhS4`lwxLa zx!43xHe<^fbWA`{Nc)(O$dG{8koM%B;sW{y2gC%cY2Q&kYUne{dsKAHsIZujfVhyD ze{+2PljHlJoR0s=>GYqR&i~2j@*f=E|Fjy}Q^~Mp^D*{_?VYL}*F3LeY)muF-M--` z*b2NE_Cb>`9ah8!S0vlJwc9moi`BCQ;Q<)cq8xpw-%1O<5y2{UzO!KGJ4gCX-BNLS zUblJ9uSCasnjY5;z|Nl#jlZB@N^eDaK7Zu0q|=q4(wFA(lYKXCvx-J$r>0h=v|>&D z9n6A5{M+`?eDs+VHuvm?>qE8%ert{1U*3YKl9=?f&m1-yk96w{*yEh@d*9-`kq=$= z4e1q;mz|TH<`tA%l#`#0eKqXqdj;gCW@q^d%Pga_AF^vWPwV3`Zhp15gl)aHa^*w& zwryS~7?^==b>BoGnY*t4PIeGqI*4sO`1z7rkr=x#wVn86`0FHN&8P%(0BryX>C@ZV z|4P!E|B0Afw_DTj{RdifPHvwV5Q)b?$Q^p2h-jXAa}$;N2xphMU)_BcHQnoMY$IL& zn(9Ih$jZu=cjT3-owD!xI;z^Id&az3k!b9PVi(*G05wc6W8y+o?B79p(@DG86klHp57Jai};zND!(HOGlqZo$5NXyfjfuK zdjHSxTSrCwz=9O4`IQ2^8TZyMiu~)M>4k0Qo{5?fVbT?U#d1Vsb(gK`$ReT0(D5IV zY)Q?SZyt@96Y~C+w~r2-bG_bcWaYB^Gj+@#B;Yh6ddv==AHpnyU!M8o+&jLn5s1jd z&L#O-k=C0(=|5%eI`;OD``(!x<`XdW(_S4Lv7jcEVutT1{wpPnRSI}E$FiITNl zRAc%GanDJ(Wu?cHwRc;F?A~8G_CdvmgRR2Y zB+bHln?HE-dbJs996%*|eHq9`Jg3xtu@Ath110+K%`$c>6fVuvMSE`};S`QpUbs zCS*L!55xpJnfEb~?z?wZY$F{f7l(baT$>#{b81Q1zPDH2c)gBSx=EXup{qzd?ysUj zSznEa+BP;}!qLC#t$e*WJtjc&!qkIy7UWD6KdWC%8p_`cbs9E&L1=MMpJ$h&f=^gA zWZ@B((mb@20?$z7IX9mb?Ox>^ywKli^Ba#}cDF{xLSI(fF!IAk6mwUP=3x_mUlX|N z=E5yOpY$IlVg}<0gBNNc(^>%&`z4(uf%kL5KlNY!ZT~H6o3HI!5&VH#KvuoJZ`<7z zbI;3TZ9f{dGHO=W7B&lN1}RmgUYXN^j2>ny-LT#K#=WFZ>)K{ zQo3xe*=3?r^XT%v7ZhS`pbla5A(zD`kgc7|em?|WUi&r1sUYMOD}+{hgZk6#<# zX-e{i`%)IlSbP zl*5U;Q+pT=N0zR8bMw6LZ=P3+{7T=Pwqwb0%0jQ-!slO==0>e|7<<6n<=h{NoID}- zijk+*BHuGk_2L~m<#>~_p|L(u#ofC&-Wu@z6Co6qk)22{^YGcaSC9#BKwzD&l=$Dr zvi_tLpVj}kMgMc@ec$b}c>R=K-3wkTEJ~ty?-3GNvH4y{pZGOlAKv%*MM%q~VOE8Pl8(ygtcc z={cl9B>mmFZ;q1er|nuU%Kza?$d39w<{TZE;a4Rqr}5?>m#q}<)a1o|8hMWlUp@NQ ziKkjmOsk6bidmXZx_wU~pJ{LG=oAnUK7H2Vz{KV03@$$#;(&o6uX*i3(|biDjxgD8+r zriW)q)FCInB(8l%@CW|K2J9Z*tWT9FCb{%vHaQkg2{F|day9L~{DI_pE!lp2Nb48T z8%}$Nj5#y<&nmenyo#1v6oprj%*j+(N{cC*XupIckL#1ZnYhQX->%#3)?}p`0;(hj zr03x2CLZdGv^L~;uVoeuE6^m23;ZEFWPjd}2HShYc>Y^Li5)j;^l8#>?|H#sS$#2d zPU4a8cDW^v#2 zJ;t3#JFm(gHr$^V^!Ap^EzC~St_vAC<3j)9eI?Jxq?3<-opS!p^|0N=(&pL?Tz?jE zu|yFO-!uKTf+GHUuh%~_ht=#ib3pR^MdwdnQbnW(BO>dL*W2n7(&yOUtug>xQPA4lvKW@-=crWL}BULgn@@tt&jbHio1|P>pK5rFy z?Y3jUf%S%O%dcfDi%+@@Txposw{qj@OCz`6?WYomHz$VkmsF}28bWwZs~zZFILIdI)c(Kr z^om-YVmrOG;?mH63&)BC#RFBjFapBnmXPTETO<6OcR!6-TxU`4Pd65;3lQllqOy!z z@WJ;<#${?<$IkAv!pl4c#P+ib`%Fnrepgt@+2QhTypuK2{Z@Ra^P{NcZId213;Id% z!~K=mgZWDgid2N{K3=hB8keO-8QVuMn*DiY@WB^Ki;hmDH*e*2glyE9uS$8Z|NFbe zJ$5uc-fvI6g@H#_&+8(L!fQ_AO*b!WuH)s#q%=&@3YGc_Yj|i5Who=MhE2o#(Gj!$ za&WsiYtP%SO3SJF?SE*Y_@g&HTzYKtJ3-4!v}^YCa8{N{s?_LJAyG{?dw1STLWSi+ zzMQkn;=guX&E@Ic6AZ5=!i6Ft`O-|DCCJGxS$eRHG@Q~8HauK+ukT0cO>f24N>m2d z>d8jZ8@dzBbQLDphwm#V1rtNkT;EKRf;Z*u_Dop6>ey>cs6I^?eDo_mLhWzaCvfSK z^?|!XgRb5z4Eyp`(N_ky(?h@KYuN+G=8c(Y9vtxQrK1J+Z;q(6ii)?`yzr0@PaK7< zXLqmtg>20=dgj;p?!$-~9U5FuZYWYW|8QvHJ^V%iAG*rQRlO^@!{+5>yLl5qU)QAl$htyj0giF9**)y@p)c@ z_ztH~^0Hr^iInK;bX#Y7I4kh|bs_)s9_y@3UzN$?D@q2Z=iv?BAfaVUkH@@MZ+XkT zmVU+XzIzL!o|ZJ~QL~yUa?2=MdwV)%ZjPtc$8E%{_B%&S5W>!+U(o#(x-0dJpVRdTYm1F zTrDxa1C^a)EhE`d|CAF~Nw{Za!xMhaQGMSUGyIztg=c2}UxbAvuMQZ)GY9Yiql;aw zZu!&RiryDD-s{})Es6(Ia$xl{vK2|`Pk$#XoMx5-+ zhq@EqS=x?gV3+OV-@e6Vs1*NB|K+{Mj{W<+vuoqHdtF*7t0U{6 z7?fd3&s1_Akk|Ag3H{PxOP^k!ru3U0P_M?%Gnd~NX;umSYa2KtmEPG-vubI2g9>TNM3MOa1@U5|pP*ZT75P{4N=xZ~rWL$B6|0cSa0+^!~Mbd;h0+ zNEUu^QZ@Oox&7%&($UcP;``-2V*bhV=R#JM7 zNvX%;pB{fhHuw%R<_;OOIq<;Al4Hy7)~!`tPTm>EY`dxu7Cjqum_+lI$G*L~&Xwrt zhoiF^bawKwigE`jkJOk+h}PTV&w6|};-5i@=N-1{`)x?rVZWz-jWtczOX3I_+>v8<%6)>%NBRg1ndos**;-Ph_Xi!mqza> zQ^^O(zpPMdeaNHo!)!Eu33xuV|BKXHq3@+_AMZYO*i>WpC?1UX@HV_82qx;!o7ts_%Y3MUr)n|F!z7`VWE^wqT(yU5yp5Bt*Z| zP^{Zh_UU>OdUmw;_crIwM!uVS`iq-C?^j$*RdTY>D>Zj%hYMeX1p5UZSiCniy3EED zcV*U*v;UE3wUyU;i^ort`l1gGUbfg>3tVvghcVCF-rx7CG%qEQ(VbE$cdi%RQiqM$ z+caeQiw3>Ff482p>!z}qOAWw=nUEYc@WO3M@7j}VALYE|AGP{`OZ4?KyT-hl9-gx( zQ*tJ$ytd%XKoP&Hy&qrw-4ik; z;mC(ChoAdCV0B377dKqiE1L;;(36}!L8;p7k1F{lZpWQx^@HDO*>6!%+~I#>o~;yG ztHz0q^-g_6vlA!wX$^zjm*F!`44w01Zp*H!h^l3|mtP4l{om@FT>swrcTlB%ar~KO zJCw1R)XEdZf6d&&6QBJ|mWTh=F?ZP6H-g?Cz3cN2y=y633?%jMAzAJXTYoa}2Qx=D z-)%F+&^&7XIdA)I4-<1#rVUZvXA*_Ex8(-DRMCENj*GmFU&;UEZH-TAGtuYBvuZ_S#?x7PgDT8`4X4@aI}@~tDk`L>d8?fI>1 zsC?_kZ#`w5JxQlt=Wi4PL49F&)rvRIOFXZ#7p#bAW&K1g$U%f+$3vMX)8>a*zq$x+ z)jG-Q{}mtUCZediIQgFY^B-sQnT4sv)Mzl zxt(TnSIy=?&E`Rx&8eErg__NCG@DmwHh-$we5Q#V<`hvlAFhrLhaLB_Eplefake3I z(&;5Too!JQoWJ6kjBk?ECVo5HB3pd?9p}^G>piwCfG()BW6F@ zH&<52c8V)&Y&*%7Ie6nxuiCaaE>dSZ#lR%nNpj>ZEyP`9?jvFJM}R-+Nka7~N3; z!;AYs$iY!>$LdOubfpWWZUftBYe~Yl{cU^S=!qA=c8sqNM~9Pb~gHaPBIcK~e%KaxQ)-D{2AIyZEKOt>mWDd!RCKtlChW z-kCYt7THP2qX*9Ama|vl+?Z#xq-F#8?#fR&)s-}oTUJRUxn-3!q5i^jB~9ewDDmKV z(Uo|#l*5~ec+KP%Q_?~%u96mVC6}}kxRtKZd;ZNHaf5d)Hd4Dg|Vh3qj@!Xl%(-{yOJD!Z&p&s z@4ZV(`Q4{v7Qc5YSt#&Ie(zTDA-{Jnk*m8)$v%#|mmKByUL|t7?Nf4r{Bf;^ZgSKO(c%0b8TuU>QkVaCxmUU-64a_WsP-)dHEmG-`L#8PqzEXl5@|F@3 zET`3{bh)r%y~6QU?AswY`xQ=C&atUq`W59G_aEqPTfg*ye4lE=OCw~en~{#G#hH<= zQ=7uoQx~JA6eD|A2sR78=;L`Sp<*VxGcfgjJU3>R#`T( z>CIXjSWRiDo;wbk#=3-N3=!(#+%Lp&Et_G~@oa$;-;A|)*A?-;#~4 z;es=aj7d5iXROmXp;Rn5n5~Vin_eViQZ$822@TLRn@^(>3}tGwr2f-*^ zQ^lwXC3d8g;8zo$?V9!;LU?(*O8D*`Z!D|}i*rb=!3N+EY&J^A+~i9x&gs=ywvt`w zB-5-VX_A}y@M*_*t7|juTNu!f#W}M?$+LAWL~e$3ZYcFyo6@1?iot4-XwnT)l3eLu zihaXHWlV1_LQuML&znBFT1cDeg(5-3@kA@M*G(@s+PPukGkvkKR~;yJWwoatKqMtu zkk53MAQ)Yyy z;x?;~xD8mn8F4VB3+rTHt)-|cDVHj#EJZ3sE<~3ZlM&*@nj6>2o+^V9AJl%uUT%Z zL~1T280DtfP1n_pg<>GrSPn^Of0?5H^lHMhRI|LfBGZCo!Weo^3#qf9y6HN*(b@L_ z8p}}}jZGhatt&U5Dxhp@yGHXxLebSsvW1+U3KPNX@ANd5;Ozbv2M# z4KZ!4OiWs}4^ zmTUP9RS4B?$MUXoV1}1|0?_QeCH_3qm?EZ-dTT8putp2u27W*4heFD`KjJxKvP& z=bBM0WPCuySb2b}$QNS%V&~8w! zG?OKN!v@&0POWjs?@XHUbfpjYG?)5mSpe&6z&AmC-i!5R;rUJ8=*j;ya#R13ZVi-c&Ra){enDl)Q>Jf5z| zQGSX3*)uF~RLmJwIO~TiY+9O7#R*8Y(K(xsuYLhOcELo@T$ii%k+&y7gWgX0U zhe#O0OgNICx#;w^ln*!NBrhF?RJN1Ns_gn7W`zi|DhDWuRyS+1Vpg&e<3G&`ms9Or zIgxu&ugYn>3A$$G z$40b+eNYDEH%l_wbJQ3M;_kB?jSW~++hIDiQypEVpAVi;VZuQ3awwxB?F z>c5od{8_V%9l9{|(pd|Qb+E#eyLbdTIIU^X@aafH>f##9H?~D>(9w$=yJ8tTYcodZ z6m$a)b^yRf&>a)K36`=;MNbS2s=cC?v?+9uP64#; z3<2$+pfh|^=u;xE(B4dhv$2M%v`=J|8q@5hzpX#2ha6xmK2xN_%niVaK7cSxH=!YuCbf3Jq>CJ* zG)YoOXXh|d-zS!*(q{zSbnb~p_wH~MCbUUDKKH@+%z9um%Eq!)!aPyqSmY$iN4!2;D6x3*$Tc*U`#Swl)<<9Dgei&+4$)0t6xs_N%ChD4!psBH zJ&mP;c2GR@MfNlkfSRK^ePA^;LA^{_`OY+b8$mwVT~}l{) zZUYBC9IcPC;?ak6&>}3%mQM6<#`@`+qKGxDoep0yz-VMC^{2M@4;m&H_of0uhtaVR z2`1Lk73q*^y`BYq6GI1^f85z-WAW;Z3$7USd~8&*p{5S>!^>tiDjl z;%)J13;1Gc6Venr2#4EZ)iRX6+ceZNCjdqi*Mpt-qNzx~GizNNmJHQlxKpU^R?6Q> zIWg=&@_2sMFxY~F6(tAw4xXMZ((8+P7Q=E+Wd;QcGo;?OL));Pw%E%v;%g6qWKSp9 z)5>a(k5zk@*H9jmVvNM_ZBm`2WK*RdE_J9Oh#Hn;xm+A#bO+g}I1)QqaE*2hW4s=# zHVi)XCG${rLKz zjfAfk@a5KMooDZ0igiheRZkirrUzIVyb?c9=jqCg)T5E(gheW zT4Dthi4PQ%evN$qNBCrIV_i{a=A~!jqu>y*0U{QKwWUFVqPaW6AVDi8FEnu*eE7(W zCaIfX$GV`4N>~^-(poIGSabBj*|#hXjh4^d8ZuWsT6cGyzP6Ms(N~BhI=0&b9*9Xn zb?uo;=+Ktf5AmI9MEQDB4e@bd5XKsA9P`l?!5h3UvBCZEy4Tc3F7;VA+B~mKsXvNYNs#T>xE zQkkDKt0P6!$LC;ayHSd8RJS?u&$@OV{MKH+dAf7tB|nnsAU_@OZo>n8p z%o%t`w4{RD(i$Y` z9asmNhxccr9as~|!wHnX1Nvk@T^7OmI>6_5t;<4Kqytu^ojpKVW;?(c9muPPE^k>w z%gqA`^`O+U$^gH9U{nnj$1Ifw{JQW!L0uNfEF}g^d=5-$#G;vHu7Oz=NC(FGvM31? z0n19Ms3$al>?RetL1R7wXGrihFwKCx6`_+bi^X!mSThzca^c~Fy$-cxS;CwhX!gVg zSRVP)U|ZAjxTl!9H({eO*fM{YILu5fPvAKs*Z^lJ^JzN>jiMNzOqLe`iPDIMG<9o2 z^<#sEi)t>Ck{Z+Z>_~T_C8i4z&t5xG z`jofX22J>_VFP|^)WCT#);S(V8yyxb(Udc{cuX+c!%k1u)Byi5O0Tv2BC$3@Fy?ka zhT7>I(UfR$(MZB+zo;`K+HHUxD12qeSsF-+v-=qR&~(}c!}=Js9LY;!Eg8C*4GU+% z2G(8bWrLy_Z$K9}z@t%HL6k<+nz&(uyYXAR{4{QeH%CL|E;+1OZ8)`wCg^t5W13tj zv2GajWx+B0F{#VgD3WN9ZM2jRMGcKde)!r7yD)a-LY&!P>UAAyS}_8x@c*#(9^i3S zXTJEEPoG93X=bDu^=e6$WJ#7}%a&zZZgTJ4a+53W1{)jO7y-uTj4W(RvSmsV5=s&v zffQ0U1i}(ZAdrO+mK2ge%I0P_b+awmw43(-{oZp%g>v`#-{<70Ml;aHVuD32e^3ws#Mh5IOWPN$)kHtRO+!__{(Ifa7xML!+grM@jf;K`g>7|_X7S01#6A~IT*ABZr2egAV44Fi=Vn-uyCHNt7XVZY)Q)YUq!tvsP z5SFx39cC#gF33R|)UjC9F|T{!PMCzuTA<+~-VS<=J}G3nI*YAvXaYm#T1{N!fy?53p0JtC6c7R{236dUPXFdVpBAq2HD@T^+31V5Bbg1p#E<2|lL zB=g%WS#7gs_Nipll|R*z&S{pAPP4t9ZeN*hE%EJ^Dz}4s!Ur>KDKqRVGp#{>ro|Go z?10W{qO2EggECM$m=_M$?1FT#0Fw<=8&Mm%Ft-2@yonwbyA|7DOx1cf^mD5LwN%eR zbY5!-SwMft+f=ERKyc(T>8@0ZC_}b+-Jn&3r{Oc`mTJ`!-WxufN`2El-YfO6RoDji zG+*8e+(_Ke#qzN1fa+5^j-e`D-^*f`-k-L92sen+NKUu)9l23}WZX@p-d>je zz#4$Ocb&d3Js3C`3boTNBlc`?1fEXlhm!ZlKntM`b1aCIuEIW3`f&)6fcbQ)4N#g| zrN1Q1_XcfE@h$pW5&g+MaJtasucxc_OpL(d31EkTH^vf8W_h#O4&X}I;oAJu>FNkO z3_6;oyzYr^@p$^#@X}`PYU_bz#B-?Hu;Ap|RDKIyJ9IW5%?p)c0YZs)JQT(D7c(gTi1Mtqj%vb^$+5 zI(4QcoPr3aCDS|VbvM&50V(?lMEE`vD$(u=De(##x0ZJn4>fKhFVQ%PNL}Xs^lXJ` z2zm`(X!ZdxALi45s2OT@Cf3FL0xTHd-);P)mY{>35%cXLswRa8j>jG%;F~yN6$ins znpZJmQsXQS5=@03$^wT6^d0xzaJ>1>!@G{16>W(V*7m#BIb#=MHdc!8*Dznktzrd@HL6dtUO$tssILSOJrfR3+b)` zO@#b}poCUMER&6a--bBN6eh}N@av+)80>vnu3C99Hc^3#F=`1fsuPtE3dg8ryr@Z3 zO-u*nTfvLk#Ml;ItRndCi3V&FQA2T&DjS(%uNu5@^z3S2BsEW`yItsJSZ^E$)UA;8NoU&02C|G;P|7DZSwX}I#Y0pbV7=4)3|wX6hzwkA;%HL{w&Vu3H8*iBE+!@~jzQ`kx;Q>jY_RsV>ssW3P+FKc6-g)T z$EY^pbLej2}VWBZARLiPN&*#gcEkj9p`7AHr60TB;T<9?gLhi!K{3D=sOLJnVsW`dF z1FE{}UqLS^6@i=v=UV^MD{1=na57b6TGSvbST;O3ibo294H zjskxC);5c$0UBO&Sfw4*pW_6^M@(QmgbrLADvzuEDiF5|RDZKh7OMW1bESK|!d`#d zNz~t=i=LOS-;4m6rySKkMyc84-wWCQeEvXDGG3kF4@AB3Lm;gG!xi=4BGKpQ-#VfE zch<*B|Gvdm^#|*FrT@5)BElLCPccZswX%cncnS6Hee^1dkh_z*(k15yRf(7n-3 zQc7Vq`sDyG74~46k zMCs{!QyLg;zz4Kwqi_wVbuggs^k6HV3pv$Ihnp0U&{gfiWF?RcSoy@|<3(Dkp3ClJ z@aF(n!tB-xJlwbjJXA5fGd+DPm@MyRa$0CdlprHb-(d%BryaCi_G-5b=v8|o`i>hx zV~!n?=t7WdZhOn59v8;(S_@{EE^;AXJa>JW+L7II)G z`9&A|1Z?0#b%DzRUU#dyg=bkFz!D1pY<4PcpN5GP((PG@hXH>sy;=%14YE*uNZZ6EQK$807eyE!IB3d;d$W@W*Ob=pOz#Kr!N(CN}3aAj+z9qMSIv+x< zG74e(bx3hgxI_XwJXi-BfDSAjd5^p60A3rMaOkbl5xk8|A%!zGL>G*lzm+tu#b0ew#SzW%SsOe(XT z%&^((E>L^9IDlP5=niwz1t!7-lrV`R+%Jc43hKk&$7DePA(d8BB;ze=CehQOzb0nM zw24{rZQ_m;$GH`|Dm5{q+)@V+SK*Z{sJsx14o%!|pX|3~9JXH_ zwqG5!{XJSsBoIFVNE7XEou!leZ-mAbrR_&)IoW4qSoH<#8?P_8sEA8R3yT;-e0_VR zeeZT>X?dUH&)#R9()Hc$`Q7gM2c2c+gN|Q&z}aiUS+c0qCpKRbeBH*%KgI^OefsSHgb0TYpQnl&Wihrd8Zrot)G>Iz!0_RrsCY zg()=dA_|#C%-Za=P9#oC(^a0x2_d*N;_O__b3+RG9xnn}Md*=|Sl5&2ORa zTgj>mgWVvIBgROLqv~!MpOpsT$RTI7L6AM~(9k&5m#92+GtjoQQZk{g4Fb)-AD*Kd5j5w(RD5W5HEEgks zQ`HbMw5sso@HLA95x@olth%OR6^>zNG3V|FbVf|4VJ;!sK_F5@9qo}OEwET`kv%N2 zhh-M|t+3d7m8Ae{Y;)IDK|!I~y0S{ZYMd#dKTHWpR|%&}irizr-fyw+p;j`!n~$Sy z^GReEI}9PO-XLUQ(v1)XmD;8gZ+*$4k&ClhtibujAdKjNRk5I^ zIJDGgEeDJj-^2y%)Ar)~kzfiy#9sU&67(H~-fW7=n5gVTNM!eTB6G@8eK+-9yGF4O z)4WNwTySBvn;t*<&Qx5aB{4>h2R{usC(vquA34Lg3hR=%8U?jG)`gr&Ap(cUnM?`* zORWx3-6o3?NCv)BiO)wMK=|F&5bHM=U}P6$B!|C|{;8uFowzf-i~uc8bF_9;+t<56 zx>#IXVI=j2gG5{X2i(z*$=oP);FQ~`cB5}2_J_6;$o`o zLO|Qh19?Gj73~bLPDndDE$7l@t=e5}e0Aeq5Ch=cS_M0TP-c1ch-KW4wZaoY9l9|+ z+lPOBP^}3ALN=35g858W+v)Ps;w^1d*nt*q)?QiCj`gay35t$C`!J={(}_-&M;S>n znz&zo6s1N|t~c`|i&a?$9Nvl)q8^JqV9zQxb}wQ3Dz6dBTcLBXWca7EiAtg*?2&-M zbWMg|H$L@_=O-6Oc3~GJBPtYG4OiQA^NU4U`eQ0Z-)a6WGDYb=>>!W(B?%9JJD$39 zyjVO6R*PaCl%;V z;J9FX3@k@+G}$0EyIns5Gdcb1#l1i5BY;3;HPO=nuATFYfVu5Pa>dphM~O#A31?C2 z7)QK{(}}Dge8Z^ML?tR^k9ZfjLlA+W4c&vGm^X|zQs(JF07X>>p^8AUU=+`GcQqBz zE5-rxra%GhfycT|?WaZp6$m9tLNFt$hkWgZD3J_VtA)Wf8M1@ZBOp(~NwZPpiflM< zfL*Di^F{{r#tXn`dcg0HxWvyIdUl6oq@cBy=&ZL>ut6-8ey6?KScM5qoyR4N9k%ghnQckzEZr^Anm78n9f}MEFbr$J zNsO?r==VAf|E|RZMPI+)#X*0-9q)E=+4nfk{lkuP|FF}*-tRc``^B2!>j#`h_5pYQ zLHGWH6wqNQ{V?#_SP$yCLVpjuUe%5I6QG0Fu-8!i(klodQU|GgT^GXKg5Wp8foXF# zsD8aHE=qnIDfx*A64GCs9nqhL#HXK)WRWh{>d#o>=fs;h#T$&O=)AKyEMl+1n)3Cd z`e%^}{V19NFI%%Dk`LuY2+C4um;8-TfcpAE1|DH$UN$Ep3l%&lM3^==jiM-60Bn#Y za3+CgN!eV+)ZAqy2y>T2P5b8k9rphFq0~V$%m?h4nGe`8Gk3e|yWRCYRw^?0OtmDclo_A9Bc_(%EJE^(f&Yd1~&j;P}JDl^=9iXrT^Sj+z zb#SFWD6FWjKPU=!tXWsz1FpV@+}eF;Ml0K^d#J+>fd>eO;2kqIbesb-jh6^e%?m{{ zRbvQlae1M|eBdg3)FF&V9Rhg5sREvGjepu9o~NB^;W=0Nb53>emE_T>23~Q`Uvc+e zbLG6|2H{%{QGLsG?z_Ul`ue->{`XxczwgTVk?Z7-M5U0ce*%&x%=c<<6IBX}^sk0g z3VsmY9UO^A!JLINkov)@6hct;gfplJ&p3@AUXBmJxnW!gmw6#*9x)u-^%v;~${0E+ zzslPb^pARKn_3iZoI)>V2+3)|V?JeJh{(VssTVAQ8jx@mT$du`sPNl-U{5zQi|qoCdu$$&>%@@k*Ef>5d^nrmRMg3Oz(CNKbq zZg54^Scp)HLGbj0@O&T??J*dK*DK6pRTXOl8 zymjw~_1NEK$?l^}64+oFOU89bt`kt`C4pzv35}njz?K8N^FdjR<#zE`*fm+zq@U8y zf;F0)o|(3&9Q31}hRX@0!@&8@Ck6f|&PI|?8_BSr%53@rlzXcsVTSWBu5j9!`Vsyw z4c=6`K?2`TBeM_I6`BqBJ|Orybp=_F&C%{+YOb@W2Z@4V&JZm|yLUE61FK03M4hT>*IxqPd?V;wD_IW2Sixt8E(Xw< zV|wW{1d$;Eml1S2JW6qXLO+K|i~xi$f%6iE4q^^kP0x_14U57IG7^r#dvO&h1r&~Y z>VpeSf!}eh+7g170;D=PC9)E6^H}bO;?~W>LT?~=Xup0QbylIy7m{^?Q>|pYB6I^3 zY}z|{V z20s+Vd!XJ~-gsE@A$Pm!=-<1RrL-~5-aXAY9>S_hUu=ScyXKnM zqO0_aGJZ?pp;=0CAjXLkVH<@;z%on(%N|fW{4J2G1H4rLsWzLv@m5rUw55g+7>a?< zWWSt8Otv2ei>s74-EfeUIwe`BcntBng)#Z9F)(sJl5;v*$NcwL$n2ei(%}umjA`UR9%r*6<|QFOlgulT zYxGOFlZ)0f^lK?wF9H)LNc14$ArT__%B)5i1uC)(Gl9vqD?ST3o%C~RR&^-s(+Rj% z6=eV?4X;Ur?!|^Gui-EyYTnMc4ub=R9B-x8CZ+(lXGMYAfmk4<6Oo}24maX0cEnH2 zudv4ja*QSxjtl9Rp=?boA|Dbsnpgo)1TUUgi`hmk!_r)0(}+8z`m2aOPizMz!paCi zw^v11z@73snas+>Ug#0=jKhOgpaHe|6*^oULp!nHk;;Sjfss;(swMn0i?4?$ zT__JEGq^W#1-0g9V|1WGb57_u3vu0qydA*7RA$(rxxd05AFv#J;z7%yB|c)Aqr^uo z^OAUIP6axel^~BSCbQw;PS$M;ddd~}v^zdi>&E<9kRU9GhY=74At0qA@fzoF$jb($ z$iUfB-n7hp;(N^@{TgTN`_hi3i62%G0A?rt86Q^>07Md%AAxvwkpp3i`L8;A{IzAp z62EcB|8~dUHXTE+Y7>8kk-MEnR)}X|h7N>P8H}aD=4`-3efIwgGCiGSBH6H>3OhPI zm3EkWsw}VBGj@zLxTo6kfIT%eTI;U^YxdMTIzaewR8fXZ7C@GmB2q!P&xR?&~!vsfqE!ICjivWP~KO>2p_WY0go zOn(y?r-!LMgc%*S#bX2uhj0r5L4)w;hNOn6LWhIkSK&Yw9Z7e~V0l7=A9f8+1p!%* zq!iKPQ%H<@9>c?7Vg!#ffEC9|0uM?kF=Ng~(3e{I>bX&02?-nh8qrF$=c~YFbDTcw!Bl0)tuzmxPU?{sufysuWYXHTxE;oFm{eTERaK;y;%pR zC1AWsHfCUIykLGNvFcQFJ~;%p7osd5jF_)Lg~dkc96 zG9#@!YI(;KR(`#~hFqNK5ct=cUg^r$y;dop`#P*C;5NwNb)0i*P(FZ*DanfmaDfT7 zPaeSq$leV79ZUo4pkQ?9p%^39L+l7%5``$7X#LYL44eU70|hC{fII}DgtKB*C5TqW z3_59pgSkBpyaTs$*vsIy>_iDBV&vu$F&W&-z_aS?SBDjwSp~xX2MVeD_Vg!9BK0UJ zzZw883d|gDz4J*c@wTMXX&QMvfWUn82GY3SHVsuSr51Go2V8z8JI;;+nYBR5_ZJeC zKtsEN(vONBVW)?jg|Wt@R|WbFkQwG7I0C(uNB61?Dkq4RU_cAdBw@V8H?x|91)M7D zE6kM}ruh_^tN4TN=Z^^XZyrtq9w)FOD3|vb-020N@2Hd znPVY!u2rhcw<_3$_Ss@6y6X{L#*om+jC_PYW=sBf<|Ftj8YMYRZe~i88NO=P zKfo7__~K3bg^QJ}X0)i}?8sw&0#*$LwB&YM4m|}|^FjTGNCl2j{nt?oQrNpu%g$ts zSauwPE(FF>!75|0($rvL#gz!;I-fupCr}Eio~VC__hG6;=!c^q6TD3k@qR$0Ua-3X zK{Y@QsnC#JA4GOCt1ewTszqB}VXV5rYy-O`>RF7OIb^eWnnO-wdeka=%u%ZZGAAs* zWKK9OEUnc*QXVwIqz4dym< z9yu??<6k(c*Agm1Bh;}5Jc0kUAz`UgXR|TO=c6$|CgRd4ZIv~&%<36eHiz|3z{;)z+YAyO z(LY6u<(5b$&?AB~_0Ql_zqI^nXv%+e#e>$IB4siHQ z9k5@C{FxmF20`zMJdfUhX0(QZ17KN*kye?c4tI$Wt~yT(m}KcM3Evmf zU#{kx#rh?bDT$QIz2z)(vP+^m)g@6aNAgtOU#ov1$L0Dz<+up?0p6d3HO1p1lS=Md zZ8eNqLFNglQpk7755|P=_@=q^(LBmj$*g*p!80M=@ zyB#bu%j$1UhaEICUsRtyi!8?n65C{(^rDxYcS!qCCW zbJ=jPAlVdSMpS-_<&BN0u)R6wmf(5bM?w9F@&KXjGw)|fA={1NIWYIvuyMKOAv8r; z%u0uFjm=fG!nov@hMCM{?n@-U9Ljzc78vDSZ(c#sFnH%v0WqTJ*Buu4E`lxK1!le{ za>g3-BYuX!tzU9rIVl2&L-X-pZaDv2hHbjCX zPh2N|jpAC^$z?3=T{_tlun^nh+fMeR*-rL^lU;#sob|5k$+4a6DM~((PQrJqL`}Ax zT+~xzJJ~aSbSG0vds^%i^h}q|?&@Krmq6>Rk)7>XWudiatuWh}JsV^W!abX$v(cWd zwzEAurL%24`{d~NTswyX{Qe$Xt@@Ky||wH*F}pjcSrNM-AumGc=Kp-U+45Nh+z&A~GSHX@J=(8KL3WLd2V~8LH|3_`k&hqfnWP8aK%WuE*R36LgnG^35ZdEQ<|sm zLg1X*0sa(D9C_!?p%mfj_IsWA9-3LH|AY6xlDv-`k4PfsgIMkiVkWMVg&er9=bm)H zmDhOgxZujk=ekP?XEV>;T*{8to_hlednM(*r6gD2FNLAxJN~(!&MMRY1zGvrf5x0* z9?U3sO8f`QZ9^vGz3Gu4wZY?$ z5Ez?A+ynnTq~bwL}{wF_bcg{-c|;8Eg%_!Ux(-z#rIGKmvfia`vWoPr}zG7ww=S?Unb`e zV=&}Y;~y_L!fE?G9)i;vnp>AxqW3QwSX#LEFI(CO2|2fBCs!3R9!sYDxCg;|xAa%(20R|=>N26{%^mbT- zs3*GFq~0b8a5wA!4S>7#`Xs=GnE)yYYpE92%Bj%6lw^~tMkz?8E2MN!BfUZx8)0&F z2)Ya)dZv+5DO4*ps42)tW}kM34&@IuG1&sNcD()*9EorJ5V#ZQOX7GL%cqQfT3}a2 z_>u%)f-Ecf?)Y07#V=~JBGL9TPBNe2)F`b@{{`so)^CG>j(G@<1xJhkIYj39r*j$m zkW2GlrUxT`1=cXUj4P1ytZ>Uj{a0YUTbZ*MN;%wOe-L?;haap7uoO1mVBluIyBxxV z8l(RPL&|yP!{xhCpIH?A!e$uNynX0hyTKe)o-aXm5vIt3@(k^hQVZZCVecU#Jlozw zmIdT!^U(WUr$*N?}366nw-GDTr;QYuG8oImUR(^*s}L?Pco9g2wMD1-={Asj1;SP`7zJMTC! zVsSpmi->xnP{uG5?laEsT7U)xPM$x2xsz;*P$Y?kBgbF}rkp=1+W(LT?Y7@N*Q7wr zefhkOj8#QJv=DF(&k;CA2lRael@&pNJRFEQVt6uznlU*WE*09>iRbTyw>Kpq#5_@j z3xGH;Q8}viJo5P&ytC}Q&8pdQ{waH7{rN9j`gi`Ta-4i#a-gHIH{`nJyv=Dp{`}7( zM-0Yj!v$t4g4WIkoMRwYk5^DIO5Rb5U2QUu$eb8dO&mz5Qkb$6gNFP|QOpm{-~t>4 zqn;c{FgfMd;XvMeVM=l!bA|>I;^FiQ^DvM|JcllSh64$tuRm~M z6$Y|w)IfUrqaGBi@V|mKYG@!4+vNswxKu2R)(h8QAZ@8H+JS7ka9W0=89Aldu+|H` zjQkC@UHAw_BTUOl2HOo#pg$%MLN$K`TRWieFFa-~CKsNts{0FHw8GSdXDq_L@SK&2 zF1#QXi!~Qshc{qt6beu%Ze48nlDF}}7k(;V$1eQBGDsJGWf`Ok|6v)V3%?e|$G`Af zSNb1>m5g2Zi*%&mVu~<@ITxA!SooegZ%bi2xQvV0qq&R-xD3lZTx`Y?6t3c3xQ7d` zl6wf2UK~?EYI^b_H}Ghog;~TH^g_JSIgg%>xFqs6zo@NMh6 ze0#MO0xlkP-yV10o{~<@yvVd`9ZuGeR!k&T}r>-4&B9%xY8eXrGL_W zOKE-nyL|h+oz#mjx^G`{-+nDpfzF=1_7vve}IY4Xb`+?po#rywvu%nsoob3qbuBDG~6Ee@iBg?CUOv^3j*Pg1$5x&7r? zNG2OSRRd=6WPcsuU`T4lgydU+Sx|=Sn%_UwPDp>dg{J;lgeEn+f1WIu-2NrN0;1wT zv=^Ur^slzy(N8A~RNLQ`d}Ew_V`~3Z@+6L=+@oaYl+ymA7Nq*G7g$}=&o~khD;JIA zr~CV@SlNGBRG+c_+hiWI`tKB|iS@rvp11bjBTZ@Qzdw>~K!Xvul-vJ!)&v#EK1F1F zvi~`b0gbORvoZ!Uy;xo`HF_Yv=?3E4ZXn)p1Mx$tBftM&Tz7w&?5-P-vVPgV1OsFB zXk+>B|R=?w*4s5oAI?y$p^B5c0VFz_!w;j}hy>?Is>|QDP1J_E$ zGX_q{v1#BYIW8YC(ye_1{isH~FGR~GJWmp;2JWb09sa<3?Vt|4pUBTE9Jp7I-I{?< z;M-Z$(8;`DB1A_xtjrnsf?c@-Ps%L#15evo8TgVYx#vsnZ%DucUz5hv4bU2z!F;p1 z9{4I5K?E3)`!7bi?{rdMUW`S~Z)TcQ`G&SQWW^u&r6XM#i1QQGK-R#YWT=l{Qm}(% zktIb2B5D66yI;>NrXVLNxR` z1Ma=U?s&xAKjyAa)D{>(W$vXLlRyc(QaH7ln35g2HL?-}qvO(@=*aSND?$Pd69ePN zH5xWl7`VU`iANxK6__05RbBc?q}HnlVr!0D@DqmFtpbf$bJ<7V zlB#6aH<_O#q+gENLA{)7-7YQ{SjfLzEQ-1O%VRNi6fj^AqpII4yxb%Tza^Jvpy&$5 zqhr=x(K0YHVngLGv(3M}Qn)w&@)|n~m)G0wUEVm^cIR?eB+jXc!w}+CUp^EWBR%o+ zZBG_lK9lT;Ob|LDc9kK;nt!>^^~7bCy?n*hd`G>Yrpq*1aAEm%cF&6Z%O6YjtuEQO z&q?1FTqfR?zDZ^1mV`CL=sz+HxR<}-YW%hvvo|f^UH+j}$6x+&U6fO`@$#=C1*!VS zV0CHb*?#%YKy;8jLkOurCX5arkqr9pz&!zOVuJ-)FjM=dmKb;yt{Y^0y||A;(#y00 z^E?Ka!i3M+fMk9ENxJ>hQLJ%jl;PY9-bmC^S1T(U9`@06 zm{FJUEp6cZ#KHD+ZqzoSZvIi);y<{55CS8rIZee z7ThZw{22j9bq@XpZ4sMOJ0S(oO5A#RAL~>%)5FifqHB=3L2U z>0aTLyhtn9fQ~DbD7A%b06YPpXJV;{^S1kuu-9X)qbuNaxWiYbS~28GyM@jxv+N4L z(lK8K;L3aprB@b-2CwMN_jSc@rpuScsbnzA86@A@@YD7-+?<&5un z-gZeb;eIOFJaCXM%yI(HhB|%3wda^?&k5I_>s@=gU3+e}8pSJTZFt7wd60{hzj(16 zmO{mWtEF-?ym(EvbG1MK$y0%6lUW+pTCbtC_T}}~L1?{o5bCtgI_*B1BzX%V^CFuVs*>U&^0-{DC7a9`3QF?Xjipvo-CrH65_e4%lahY)yx3 zO;_8itL@bh8>fB5dO2Ndudbb2&3gB|wO&?E4G&#{aVE_;ZHqf?i|e-C=$3ATPj|?C zYh&&3+E_ch?y;I$-DAgJ_gc|K_bw;C3~STD@(bZ|?`PW*F1Zpexe^9l34^YL+pIo7 z-zFTIukUc-8+XhgT*0k9Sz_2f!m@o^tP7#icf0VkdtGSEz1Fm5U^HZn{<;p%zP@~!&GR-%Zo{)9ABW^hDX+2FPOu}qA9 z-i`J1ZmeHeWlMiyJ;_8^Kaa7j^IcQF=3f4qyd2hFb4_~PP0;IZg1+OL{2lk*8?MW5 zEU<-t&sFw4(V6@D2kzSH(8K!m6$J*CPVq3rfo~As|}Oz91+a@(#SDc|X@s$1Vu?Aohu}4n14B z1)aPG!^RBzd2#ad6J96c-23QTwUN%^NJEtk2XLry!J?$7we%&9BeI9qNy2yoLUO`% z3{A`MDZjDK`L52uHgD4yP*!()ZL%o^_?~Z5G|DsklT}wBoF1RRU9G`aW{g3gfr9JZ z5_2L?ETWLpIT$yPNbe^*v6Vk^ZyWDHJ1g`{ezIwUL!MgXs>YrPOXCQ1$5VNEHa1P8 z;yunlb|krAjLA9=+vRPb)DL4WnM1CL-Bny~5bWe(slI4NC z{FbMXHo|mKk)m8PX0jCM<LTgg|@f*4XG;0H32`$5zRwHOD? zGtds4qD$Ozrpra9Fy>Rh8L}D`AkiQ+s*+m_hAnJ*o9>&hM%Exb-Hq5a&$}rE)eR!R zW_ZC66tXAybB50TMVJ>4NjR^~K(Jz{4RClI9GI`Q`Ceo$^7X?+iCdif`Q|5)af}C$ zJDko&^REC041vG|{P7(5;@dUYh zfI(kH2_K)GpfO@8--I0y`dByy>z{&-qG5S9J~7Y6N#$3`&HQn4C;&f?R|;&jVxc=& zs#s*771^7`)`PTox_nU5+Klh&$AE?-10VC&z%6+t&tQh2Ld%}zN+LEkK3%*v>FY-9yZsx*OUW$m0;0|J_C8j#ADXEN5aw) zvk@+vI7Ce}P9^Pzj+fys2$ccwGG9kTGd#HBGm`CussTV8?aXZ_ApVmq@`mU9hv7MB)x-S7hCi}Oi?zS2Vw!? zP3^Wj=UaJW>Un4!3tJ^tLD8JGn48(my&EfqtD0n&&gK4S7#^3b0QMga3Z?*Tthhco zk-M0e@&im1L-u8~Gnt8Ew*|VZTBK=vtV8NvyD0YArM2IBmmjbWsR!)}J7f=s?LxcS zuD(+eQ(S%8_KYP4D0C`SacU7sca!dg-W7i7;?~E#1VGB56O(k(!;G#T98+j2lCTIv z=LjqCt#E8IY_}*l(~Thjg+@?pc4VE^aEBt?-dZcFJaG zcRj>7k!q*wkF{`>#$zb;ExyZ83Wu!&Gs?*zO#J{q`sH1w3NFdCMOS(uxZ%@IIn4u| zo`y3fQvp&Oc1ecNQ9_bYLLX!(ivd2)2iXT8?e^6qA3?=gunw{1;)5JBV`1-~0FzQ$ zI21@hU_`0lm>{Yj%Ce8F`_8|3DcZktS$bwrCx~ViAa?^7lVp(-p(oB1&~cc;JmjS* zAY~CCfzn=fN#Gg+%>XLnbhRB8|MKWj^l#Yz8=#MDzyvaR7q(e(2d^|3ymIbE3-$yC zBM;LBDpbZ8N5tI}7b^6TtL8QsX=JXh31Sew*5Sex|2rC1_6BYMBTIvOmEuIwL~@3k3h6E)%pwKWIZkl z0FEj+F9cM1v6YoL{&vB>#k)I;0$D)cp54JwToD&)Qend~>T_jnrRFtL7+O3AmOKP? z)gpZ{MisNpFZ?>|0^T4#vGFE3jBBPi=jo5P2r8&}SHhFW2C4Nh7z{oOtbGapjD{L^y%66`h z35(}s0jrnBd^v4Q$ImHmsCj8YP@Ajh-rHG{l#2F^PyR zHSe)lWUn;N-)9lce(Mo@&^F+ZNQB`-%ZW7CT?54r@EoHP4qlIXvguVJo)*Aw!!E)% z+diDJ!+A?p1;%!x?%@YCunEpYG2+uYEb!~gPS6;1$19H8ziko+xlF$=D@QF-9q{{c z;g`O?s|5-Mzdo1RCSVz15 zN~8p~ttI+bC~Rj2+?OE#3l*#*ga8Uuq5fShk3s$WiV#CV?!;C@@{ys6W7Ru;6gK1K zqkw7TM*)2o*!EhKGRLe1K8ClLaw91d26tI;rx|Xj*=7gCY!}HbWOi6_$?R-mW5Q;q zT-Tdja-C*&&*l9xbCpPlrDo4MGJGSree6BVJ5h6}1HMeE94K3fI;j}J`eF84ka&f> zb9@vU68joZjUXRZ<0s0jDl}1U1x6&%xA(`?yQ3926BT3ab%j->CMvDCov5_pc4F)l z`+RIWD=tlxCDXVBJSYic9+Hg|cvZQ96TSx-GBr0b4FCaio4r_+1pthmI*3nCB$}aM z(}vThd+?jOcQ(d&C3D|&QO9Ci( zkhfRu&jx}lVP=?P?0b5dX;x{+5`T%T!#1|rKxXgkRDvDmSeh?uctu8;zxC z7YO+9<~hOi_R!gFDv%433x*$@5;MG^1t4_riP;WKU2|PmEM)~!>86%v(81W>d+umt zAM4SBW(L6E-04wMob5FLI*2F^F`Ekf^GlV!D;pZl)C{Mbjr-d<8UN#ZMSQQ&Yrq1Q z^3qvep_CV6dB7_8AApS(@1fCL=+SfMplh{xn1qQ#iwi3RVU4jEWlXJH)mZdZW0|1F zGP&7kZ%(!>QM=`#+U-?`z3Q-6i|lucEWTS|pRKUZ*4bz4?6b|5A=_+4mmQW9+fgs| z?QNjUkdMK01+(4u(+NUH(o zcu)w-*XP~K*xhhFIBH~KWww+kGlSImJi{m=6cj&8d@k$`?m5E@lE9T-_dI^lG6UH{ zGVt>5Sw#rIBaq16iVfVzafRBL4azbeeq3rB)UrMd13>EzRig;$YLy+@akl@Bc8FR; zUh-S40Tvuz}45x+fB$=o~RS3n&MJ046DbbUJod){ylrQ{q-`*N(pG2arzd`p3f zY^_DMx>7q$rFNRe*kG+OHfFNQ&QFzXLyf(vu~&7reRWpBINn}0+hlaj9ny#vTV|^} z*nUm55HQs;=N6N>#?$&i2%%o^%xp6oK4vS@ zBc#EZ%x{66V3<`5)IH3Q$2jM{fXU$s_(}nd0N|ya=LRC-Mt%i6LFU?*k$RaycHyYSOQcTHN^rGUzHGNQ#-IlE@Ae+3}Wf>TGhkEdai+#P{4% zA;w)nxM?TS;e$s7W|2?vMuEKX&v*ms0Stq?FA9n%0$tobCPX|%;YonnDzGUv*J2GvsQ>$zS&TnhWE#qP4!U8q?DVT{EV{&ULU)Fb5XhG_~x+dg){t`V`XgSDrBnQ zahka$GR464XPY^X?v%4Ti$hrC(2~{Cxv0Qmj004f?I%TRbaY$B)V$ByDa;2P_i(Qz z%jQFt+?og6^N(8cY(6GqIm?C6tVb@bFsRQW^Yut(3QBG^Fq?y7#u8CXtAsArd)uLo zQ5&)$-85ywOa|b+Ii%`?<#4w%6pC_HeWDKX#k;)3hSnrz1AG8zi3JYJ!BvMsfNDch zhcRXu&Pq`0)?}^7s^d($c&}k0^Ew;=(=wSbjD;Y+TiktE%uUc2LBmi1^dtV}`3Y`F z7=urNx5RB7o6xueZ&KNKmJP{EERL}PC~8Z*&UzZKCSVd5(S9WynqWqV@y_oX%Tx&N z$o;Pmq@05o1;RDQqOG}>aLu#$W4^_p3&t^K_nM_B97G#C$2$G4lgtabXrw~;^u`#| zF4ah}>uq@(EX&?$>EXs&V)~o9P+k_xo1!YHs)m5u#vLVdy`9`c13Kg=ErrLE-14%f@gt1H)noGf8ljHyFg#Y#C~=|e2BfGB<}l|~VDHJKu0 z{BbD@0so>T36WQEKAFkopl`DPsqe6>RNrY0YWh7D0?_)sme17hb8^95?)ZLqs-m^p zrMA;|J7jUsc<5=$hKT>GA=V?As1)2Jsm9&#JPRB(KOZ5acZtRgwcww%{of4}b9`we&ern7E* z%Pvg)y1W1FHu`&9r@zOcFHb@v(Ee}^mysZe2hQPD&ZKUvV``o;3`4#Bqie(1g zVsczs7n3Ws2TlGQBJwO#g|9G(4qTIsHskCRnK}W1MpHk*CK)je<5^oA5|)UgkPbt$ zO)DoR7ZW2T$;8NN0@)jxhD!!#sEQ@7UrSw8%N*@kZfC=+aQ$8Bj;q|btZu463pSgL zoF&?hAWix7l*kT3kzLB%N;3UsuT)TG_Q_b}oBg$=W;v4>9!B!576w&dK|y$-?-OiI zQL_TF;}?(?vP6|)dvpU}s6wK&ETjwpuYrsWaFOP+$Gga|#?%_Ss4YbywPuwH`R1<3 z0o4(QOeA8vyjI7;w=p3bUW=I35WCDHk#MMkLr#kM1RI%NX`bvVG*B0X%{LHWf*>}q zu$I>Q$C*zf2j&Uqtt{K}z@=N1X(L#LLPNY^;Kt{{7X+$6`+ewmg;|HHa#gGOcdK5A z`Ji>^oqZvEywj|w^!g{%AS5~LcjkKV(+^Fi9u-xH2(g+<;;kHtjm&JmneGlVhGV*|R9l0PymkOVr9tsckJ6k(<)~)E^C3rd@=FZo+dHrU9Z0|r@GTu^G@X1f9b{}V zbG1Q_ov+q0hdZj4xJ*CU8UJ{peHr1kZz*N6*{Cx7#JWf|a)R#i5$XWr_&CDOI1h3E zQ>`N2QUN6b6xTf}*mmnNp zP1*P$e}IT%xLuPt0RlUlU>9*|l4F+0#4L4*TTVD`IpLgoAqF{Cla*`LRJn7grW#i$ z1RoiYCNZPHCbd5kYoG)s9JPyVWs%E`3p;^TrXq##)WE0aCAF!8aD@;%PK-G$y?p-M zR6G_My&5d3nLeD3Aq2w+NZ}m&NwOi4@zTgZV+F4&nyS;ta!;NZsoo0EVs5B(Xh*&4 zJm{?>!4UdQLzWzId>mmvJ^ z2N;PsZN5pThQmKaKb9H#uTUKUiZlJqwP@)wx=?RqOBeG;K5pbLXQHVA29lO?Nsl#^ zLPi@*RpSz~4J|dJQeMuYR61#0CvP8JGQiEMM0ZyrVnG*qNi=CgQ=%$(o?DB)bDRP?m z(GvGl0hjY*hLr>7Siy0=75NrhfL+c*pnbLInrk}IFl64B1pv-0c-3Ci+&Sd7RLM!l zzzmyzLf$0s#c+HF89_q`2>xliOm47JYqu3;Z?t^cO_uLFBgwY)XEgWuRH+m7IUc=g zJrKFZ98l@V7sa@DOlvDspLB46RuCa?<~#xl5$nMLz*!cFc>{17xGdzC%SIAvoNWg3 z0<4EJQ}%|sr+JM?(j_Z2W3N-o~R$S2EcE>lJsP_FO z1S4Pn$kIXmFSS(Ktc<8IDp=2t^B@zg&FEEGrMJK)h=5={du!nrHIgH8>YHW7m5mpHI&#R+P=@zyk ziak-V*oX2H$r3^fMTll^qJ|na#J%8-jkeumYJr8x*qf_SWv&~ju|7I549`jXQi-_+ zXsiP-ap9!Gog^=M74kPmca%fWIwEb$y~aJp>PIv^U-aPBxM_OS7Z+5uMl-40yChxV z2rtt2isxVyTS|@W&Q`}Sa`YRJn`Stdihj~L?mX!nZJu>3@v}}&f5EZJFF3jXW%vHe z?)}#saJ|;S2Kf5htK3lpKwrOMnJWE;WBtGHe3HKJzWXQ3r0IWh@BP@-|6^DGPu%rS z-1X0$e&OeHXb>&X&kp5gse?IfY!F$b@`FHZkzh7=6@lOhR!;v8ld zSK^RSjUBRrmMKW)_S1i;;x`BMU+|5@btjjt@%He^B*Rpyq8dnkW1_Vr^IJ>~z5y@e zvd9lTF0npUrmS{>xehPFx*Gu$(%2|MJa9_+0^Cm~g?WojNaO7o?k0m`!~#CQm9Z#^uuq z7jp!#c3hk=^u|PaqyA!xdt;KkvG(Fpx!-ninH)D?+$+b9i~Hob`=XKK(u;`#kWg@K z=?nWzQ`}q+^HpC@tPU}6n1|U!EnxF6_q~`GGN%zs+xL=mW?|nea$MZ^sytBhFYT*} z;0?9>(!snu(j^X6?WI>lSRXq_#$>L3?~-(L0}6Z%318XgnP%}!0?zWDnpiG$3drOO zQ09|GJ@v6T%~N;w9E^=kn;i^oRC{toR*9Xfk>YZDPs%#Z={+UK+};6qeaT(h%o#|jzkx2~&XlX7qUIrJ`j6%^_n*26vb zd^CAyxpi)yasD3!WG0+{Nsb-ozgEh|&pH2^9NRBs0|?F{5$=VFLf5Xo&{BdIaJ{** z*=W3qs|*$ES($|QwchqhP!}v~NEh(2gDf-xvcX>y>Q&#yH}Lyka#m#wjwmO^(_c(1 zr;qarZp)3COMc6MFqDaop{ zA2>$lw#p}0j)fHQgV686XqW*l-(secC;{zvi4fPO1;a|83%13P1CIaUc8G79DP$(s z=4RYDfxo`328-|>{Pk^>MLRhKZNk5i$4b+KJM0?rMRr9h*t4A!4@dV5#9cuqQ+?Z3 zn{)O9WN^FiMRZHZeGchJ_zgO_rx1$;jN4{X3-HzW!8XbPH^0#@2K4XwLY29yZ{*leZ#8GnDlU*9g|FILCcrd`kD_lI)Uf(EVNAn&Tc zJ463|>e@N-xWwFw=NN2YvAC+a^bA6(Au-w*Z)HBg-=_fszKec0 zT;|Z_V0s&}u6&rQcXcin7&Nj$@;;$iHakNNonj#IrQ0;(k~A5s3R6-+ek|E-0@_ym z^&K8Xy9i<%OuuboT*c1ML>q-v=8#m52J^Hwf73MVmFZzgwy{AO+zlBXJ80=D>T=Q{ zDLDj#iNS)z-(&deyQUshFJSf8d=S5n%h{-gKwk;6K7f}2GZCeBp)G0P#*%G;M8F-A z^9bgmD9QCYBf<#!t^TGKv`S@Q<3F|rRj-246*?lWywQXl$+cDA(L3<_2|1HCfE|{9 zJT5esY#TDvgq{yVXQNV)Bo=UryjbwAS>r*?R;p@4(4dHW>LS@%Yn3WGMEfq_rj%eH z%b0965lG*$ai~jH`ms@cz8|+&n9H`leAU*25MWRLJ>_^f`w{3M*TL!4NA>V~Ld~;O zd8j*_qTlpG`Ytsw3}_#T)ny5vM0ta(_PW2~w}{=m?lgXhWcsdq4t;zRe|^_Mv838o zf@6u&?+IO7HJ`U?*5g(fDjuBs8${r%-x%XnwoRw{Z{=eVY0(! zqSO~LEg~5fn8{L3u4$F~m8Mhf2hA4xT|s+jq`U&tBRbq%bFM0629;lGdZi(4=B&K1 z%6voysSV~g_G{7{ymtlkU-z~EmefrB4Gcyhd^R!0kQd+`ApOxclUJ@Dkp74C?b7eD z`U6w>yj&eNDKNk6EzAa@1{BGfKGs9#nM%dp?? zrg*CH@c3D^JB%X3+=0N+=OHRRyztO}^$Gm-z06e(11`>Fh1B`Di+>}JtIX}VgC6*5 zFB0^@lnc1!PS$E1lL6Ed;6=zUSMAt0Ma@Qq8=$X($_TO?WE$H5Aiv=TdErE7s4x}R^oSXi(?ozCzqrhR>9ro8JX6w`QBQ4|4+Q1(r$j3ca^yVZ{jXg(uU|# zxB|(*C5WlS@1zcld!nLLILE64Sg{|1@`Q8^$$Wt)Y#Y;3^wZg0b4fsucphC&(mWX) zj@S!q^tX?ooL>C(eS6n%-Fapc>XsVwyiRvEx^CGRB^+q;PglLI>Ofn#YpT>tKhe=O z--lYiz?#3i5w#v=&EGv_?!+DR+K0A!@a;A4@jJ&!hoN|20vVaLl>N-(y&wdtfIfmX zsu;n@`Kp4hlvQe;eH%08!(GGT&L5((Kd=dJu0-_**@QP`RB%uJ1pr0cakdPPs?B?p zs!cozmwyyEo2ibVBzAOcm$zN~1!Ni%Uumd4f@w~C6`KAC-$9ZjAHm)GxYG#wM(Hm= zx;aH&dmXQdz8Suwd~G}T!^WJ-Wj1}JM}I}9guKN60%LEL`Lwu8H6Y6pJOdG&tjIPv z$AFeW5dbJfPi(E$DIuI-BC~pGxntrS>Omts^hTq3FWdh|ydstk@IJDs$EcFHR$20D z^FF9kdonRFN2pYTevyGmu$Q#cFE58GU|2Fk)GDQMb(PXrzKDMI#bjs0RHYaC*wh?Z z|DEfW-%~fI*}Nb9?3sc_G*PEGkL+bW{F%~G+%q>J=#}=0p|J!xL$>io@VG+5EtV*aveJYBhb5dWEVAtU{llHsUsdcGKQ=jfx+*&JlA#P z?*CsMdGY_IBX`=406(Sd>iG_6KpwXiK#yf-2bn!Ks;K9G2_dT14_2p}`yjDu{Z~5jxxXwH%k%L#6Kjp>2W)458 zH-8m!U7EO0{8pCePd0BdA4Vyt1E>mKd5L?#h#@f)Fj^;eADDvh(_xCSnx-mn)NoO! zV)8g(6?_s_C4$YUu6NwAAmb{ON=c4#k?N0T;;mZz^+!LB-!IA8S#v+00V72){rDef zGrx&VVg=K=4*)!^kTna5b}2cIlX`r$FN4AhKKJP~k^^%H!WinYnn>m#cFJd1Vna>C ziC|zfw^D_>z~ZS26{s8H+^}jyPV3Jmr}_>2^=DV$o_Yvh0&5cf-gY$KFc07nnvQ`( zESounSsqfSqCHz8!2j?ksrQ z&<`fZFNh#4%82+h8UQt&g2*lmWf`{0rElpx(%uS6@UZ<>a&R#T7zzBhQ;riESKhG$ z9O3}a#{dU9$ReO;-XbtC0dKQE|Bz}4G3(gFOowwl^~YDi;E{5R7wS~kgiz&nSS$nj zRR%oZiyhoK32PT+M}e!jRbK#Ga${6yQ}WpEcjpH5&%MwLp5nWw`P~HW)_sU<&!`e$ z$P4JWL>o5hePcc_b%<&Hq;K7%ipmbPov^D*pB?r^R68$%|~rJGSs$2 zAKZljVmFgbh3EskhL?S8;f?KP0f$+nak6t3Ebfv<+U*mhDoDSRjKoG1cpQKIg=8mk zSYP2N){hF^QT3j*^&a_uRB!Q6y~Q)kL$-Uc>LhaCd5i;XUQ-K@rl-H<0}RQS4QnDU z;d2(zUs{zc3i%z8L>V}VUm(5aTfTs`R-NP*&?gPYgihIg`?WI-P35`OX+0XC|76m*2p7_3X>mrriTL4OL#)U#6& z0s;d%bEOUwaL6QLwTxKI4C|M3cSR*22r5s1-ifl0CC%wi#b%pNqMQ2Hqd1BzuMNOX z7ya!)_^%+|&pTU};n=Ad1JT9sjdJ7W5iAA$=U6$(Kkc-~8_cJGVvL96l%vY2Rg2P4 z=8zpe;4NKhK4S+NTTZ}S8wIl$ssQ{^JcNb}gOQfLH53B9UK`L?khT+>(j$Tl{O~)j zvNKBC)){Y4%1&?w41v~Q1Hl$=b*8tDabyVotfbHa zUQY6!r7+$&A2SDk0Vt8NMAi%|n*@%YK*8T+{jG;lQG)fij;jCPaBBiym;lEjaGd0T z*V9xb(&Sb~Amn??Q=wx4Z$8HH=A5}yb9<9L-XTZd+$qj$mF7L7%Ltjf3i-U!ykCyF z<{o*k!Q2-Ek%IHU{jqd1Ls9FbhuM>@mTK`V%RGj;@1!&17;kqpfXtD=maQOQoa8iy zgMx*EjrB{ADG;#AfP+0l++wA9VYRLKMNu16ny<{5D5ZWCrLJMAIo@vPyENO|k_{hH zOdcYQV@P2s(baZSwQSuhT`ACCS;7LV^>4wi!beK~PUPTJ^W%Bx=5q>ZpUuCEt!0w= zi`dM|^&jY_mJ-!}6AeY9S+!Yz%sk3Q6J6Jst1#FZ-Xu`{RPcnmbFc)lxu+oWAQDPj z0Uz5sVv95e%3DoD2J!An!#L%?z^>Q*e(F%u&<&h`O`?%UZN`yY zV)D4kd>(hu_Xw8!^GQK@98wT~S%H26U2LNcq*4$tKJ>B7L-m3-k~H3Hrr%OI9nY6&)I^`>Vs<6j~C@bEIU)nGo? z(J4=`UJmjE0L4O>%%OH3`%2T}xXbG-BzDB?Cp8_?6n5>``0MX7x0)~5wt!`Af<5`W zFhI*-p{Vh6je;vb({p$Ep>YbN2j0$MNUyMOPh@iQ6|8kNv_!#nKZ+J%H~@m#H{~<@ z03WQi0O7dQv=q3EY*lMQ;GA>341jSefb(p2S~)kDB^!_Lb5$^xI=56bdrtxQuG7MP zRAL5$XjF$38l@K#0PO09Vl}03le{6ImnsZ001n|z{)l2&a;B;eot0P7ubSW*KV%Eb zh75)8poX9)NWeQ}%ihVdt8Lj}>j31y16;lhWhZmMBhAIiI=B);BNnK&TsSeNa?a+~ zLUB$O>RQJjicHnO?CT?LuO=Y_51U*T*I^RW7_^b_*1vrr;2cwnvmEffNUn^t7x4Qd zIol5&)Q}h6&PbP4`0L;P3;g;R!2a!n`2Dz?T?-KG!(adQY*aNKfBoA(i{F>z>>#V0 z1TuF7$BVf2ZpT;ABtlG8ic)`Lb8!3`j{noYSMlCFe7n(*QlLdCO260q&S@A^DA-uE z6y(T&asUAZK^~5t?FLTW1g$548DKp%DdZFge83(#%tbtmlApt0|IP~h4*h!u)$-rS zV~hEF+##Mw^UV(;H>(pcT5*ChsF0bW@-bVhM7H8u*@JPD75_ba^gI0Z?_P^S58K4Z4~H8pOdRxT8?XVnBVOC3V#1d&HyEAAE4EpAZC{LpL@j8~3 zYcj+lk!3Qvc%5T1#s90-#D&VWnnF>nl$j#B0HmBYcE_2RDG{xEktwCMAoZ*%uM3%{ zl($*Gna_eI>hG0=%+nz4`k%^qqg4M|lqaPoWecxcO-QbnRrt+sM6&2h})3xm&2Zz<^U8gk+!V|6)*wAg}GpPXZqq0|TQ z_c;FgZ<}hk4$vonjzHNqb1*iJ1wfbu%^xPz+x;!YZvn4G_;eSGxnrJr9!F^(zKZMD zli)2W`mtnV+zGslvCyg9k*-Ruqb~sv{pg0hic)^c65perHD9(xVziso80<`xPs;%y zwu?BRB!$LleY?ue0BJesLyOcQOxQX~JR4F$8~(rQ&IC%Xs?6iBmaeYubakgIo%EWd zyVL2cou#vogb)JR$iA6`1VYG;EP>z>A_3lgRaqca$|#5{GG}yV1V+*01_+|8MifLv zR7A%W8392NMMmfM|6Wyh6$uRII5X!=b-#MA?z_u(x9@)2{qC9GhT2{lLjuyRRgv@K z`=%n-?*e-uaEa6mt67I9b^qEn*!ktGsYp-(4re7Jm87{k%2d%FcYc6VDl6OK`}cS) z^6G*5cOdg;26$jKlXWpv+E1gP9z5585X*!TAEgdjDv#dqw3?SzK6=9ry5lM#;u}C% zo_9pE>rLM2D5l4Qm+IW+%Hi%YZBeV(=zcP7jJuy#bO3n4-32L!#%R8}agwbkubt!v zi2Q!8qc=Xyw|f5QjmkUaD(C4wz@_KvUg3tW3-7}hhxZXCg{*a#+ccT(4%pP5?3_)L zq&sYcXsbKYak6`W97qKljfv!OW)IDn7{~mZ&DvqPTwl<3Wux>U$v?t%^wwGZSq(XP7XKdmu z^=_pW_Nt5DiM>0*DK9caR$$&t|Mrp7-9sqH{BIAY*Kd^XMmt6xR(qTz^J8(Dga8g$ z>SfI{Rzp=A7LB)@?>}cqrNy1py3Bo@$>X{Qn*_gBd+BD2cN#znC^{&lI;eOE9C!^Z z&b_yZo#U(lEc!$ygsTHBCh`N_?J;Gx1S71e8ttP+B|wzmHAlOyBGC<0w;1^{_YLH^ z?uq(A)R$EZl4(c$D$IMXi_-*Wa9BeGHJI#u-f!PGRav3!k?@_j`$)(771u!QJ#dBX^o zd^Y@cuBF!PdX+3J%+FC|mB#zMm-3yrr*^{nKJ#gj;^#^pRuQG!eUm33W##t22&A-f zT828Tn6E`)Yl(RQ*U|emuNxbt<2UPDVQNmGU(evR1F-R`RG1O{Y;{X?WeP$U4tG*~ zX*veB>naLuYP}J#9FZl^H4*=z1kC4Kw8Nw*(vjUgn2xf;s)ygB3Kj39cvGxC&i&}I zPgA2~s`#{XsG8^G=2V9Xae0;iH;4nqiKpuQ}sG;k2)~!1{o`wb`87qdw~DJ z4dMN6!vGiiKWW$RIsTXJKHU$GbROtV?@)M;JGDKDS)g}{n`;po++17jJKS@&@wUVL zUK}f^=nsn_%u%0wQo3{rgN>Zlw$M*AhV|yrF}lhS zjZ9B(RMS2?kfQrOusYtm+@t&k8Y+c$&wUi?!L05YwENvaLz9pecQz2)+>U0`{D#CrwW^Qc+QGjwqv}2g0QFyq>M)$V}^^Fo~+#}LKPA^Jr z767`>W}%XOMCW=J45T0Wp$%a!(&+~C^T1Lqm|tM7X@4d4-OHO>09|t4>bolqF&F+X@Ci{dQp2lk8TmqrWffv|0+D;l2~*S?#UkO!-c+ z%40O=Aus4O;bizY6=|_tWw-l5m}|^CCA$vUMX#BpEYq4$-`3Gb4vuGR1;S#RgfNuAr zVr~l$z9W@>BcN6hbGK62t|1=6&m-KXyC?Yu^t3nVp!S5=^xYQSINCHU=W2EW=?a-d zP}ed;z>7$EgezC~6yJZgr?VJovfa(G^Q+|ZD}tuD9}_}R)fBa@Skyu*>VnrP$0o*3 zlKEV@`e*sBQ110*xnD+*kbceKUc{IUrOf2v>9)Sa56_t9XPw{#fVg4DYH!P-+v=x@ zx219oIJ%@GIBN^FW)xvfI3{pMO7E-;dj~W(F1nDSWlVB%*gYJmlwge6xn1by#m4p} z#%&s7AK*&5(Q2gGDQY1%B+1)O)o6(Sk525fwNK5Vlj%|8?g0%83qe&Yvc!01$W8RO znuA7yqBN@%H)&glD2gn|G5n6{U>7-q0je33*!XNSO+HSbKK9!3gBbjX@??z=Pa?lA9#3a7v*DN-OTX> zKQH7SjbGh16g2YoempaiSDGrhu}Sv}FLBn@!%bkY;F^hcZ@6aKge%-H!}PQjHIHF2 z`~*88KqgS5R9oXH^su=}Y;Z!i45!|wBs-f6au(cIS-)r>^~oqK+8Z4~Pq zwMgT&i%-*i*0n3AEpWf$$=ZFmow;JwTayR}593THtN}E0U~;?-LaI!ZR0iQvGTOzJ zTe!ykx|nJD9Ap|Eq-qbj8s<48!BgXA+w0Ncf5y1X8viq! zj0E(bf6a!GHW%sjpL9=?hQj%WX7P^|G0_lNA)AAvsnNCT<9<*BH8-sq4smKcITa)F z8tvn)MRHT=Evvvrs%KcZOpc4zRzgE1^gIXhSl_pX=os`4$jb`<1IRHB#m=t9R9s_& zNy__a7;WFt>JtjZ#-9SO*?h=uB*`ZiSM)q2DW#Yx~Im!vwNxg4IzvN zwv=%$bS+!2lZ()e?8hhMLpXvibl&o0a)i(X61;-q{sfvta`C+9xkQKL&Md>-R}!SM zC;2bTy1+fdla0Yv7o|)LklLXj7q?ky32(JDORdtmO*BCTl6`qCqD7lf5G31?XG^TR z+H2m&>3_Ag{~b(IDSV}1!kVz;^Eg4<_&v4&Tes_;a)JAge%Pi18#;5rhJOTg!2cp_ z+rU!rl=~6Wz!?kxp;H>pi|qJJ=WzEs#%pQr_0z%`+oEYLl3pguR z!64D)iZNhTic3c^2FeMq$z6xOk?3>XZyAT~17!w~miH;LE5ro>#GvvRCE^xQVpPUE z^m3S6eD5m9!admiYhMO&v~`vNYNSeZNwb)*lA~;7`#H`KcwTNq7^v0f;a?j6vvT=A z$h#0w@c*gcAlePX;ME2dw9u(aQ6~m{t#q?EqE^z{pt|^OSaiF!Zx~!x44xcC^8_q- zkx=vo!uxmM*G6a22i7J?I=nMfg|k2~g$`Q4wD&e-kFdC4q4_x$7!U1r#0!a??A0c1 zk7uvxRhhf8?@>IhEkjCaqwIBsXxGnDv@O{WojBUZ3ej$wt!TTmpEz-}n+wrynWt#y zWp6uiw9gl!eZh_>cx(2~6GywJ5bdj`K){)jiQemjv!|;Enu0qD!W5YmVT#P=<5JvONbzrl6n7L-+)+sJ z;G8OmW0m2VJhLl1cdW`vXLpA3&g?Erna=Jq6-7F`+rrb?^SYDnc`tHlaPdqf7#&=K z>fv`@uf6UX?lB5|7WU4ijhQS>jQd`D2lpSe#{0Ou~rW0>iBzS1;W$; zP%^SVFjZ}P9NsWw#M-gg>NB>RO}QIX_5&=r)Ed+}$Gsc^fsI3UNNRSUu}$(_iR2zF zNw|b<4o%xmutM7MBbv!^nn=cmGL=Vf$q+E41Hx)qbbE`S$zn1ozhvZW^h_Tap(nKV0Oz zar-@f!2PXQ>qVJgBju{}{A(+)1^LR}Q88G?@p0Ur_jv28WqU<4Ct|A-$;ICJ3S?$r z){%}eZ^n4Nu%7a}-xE%cb{6@{HSy#QuN~uNy_l>QOa%VRdO#+4@8QZl;XfJxi@E^b zW=`zF%s-{zgV%U-5cDOWQg(T*wG0Kc8pGhG_E%K+ACD#%h~nm$_~_Vm2H+sL;kTxu zZSj3;B*fzAROqj@Ax)?X#PJr7M(y&fzi~})l zoS=`y3AbF(ikGn#gi_JXrIOpO?#-$AHq-bk#h|K4VaO?_>vRQI)tNzT=yEnCncMY`20tIJwtYN1tP4b@(|HHz7V zTBCfQD!s^+d-BWF^ZQ)6C#TUMtJEk@65I10hc79;>-nT&qZ|u(>T8s)%nTaE|6EC< z$YJAwLVLXb|51B9)z=rFYmO*)hJsQqo(F zF3OJk_dg#Z;f-9mpDVAC^Tvz~)Vzj#2FumHS=3$@UB~EM=Iu6_UfDF=L~KLYPme1} z=^rd6-5Fgs{&kX`Mbb;Ta?gwlG|&ylF7)q*az?j4RU+@+6=C5W+%tB-& zA&PVzyAx>1=9o|!YrFgTGk0jCVplfdb#JG<~z#k+;dw= za)2xM98K&^4cbiDGAkHr1kvbVTH*Kf4zP_kI5-E^$NY0npdABK02|@(^S#$#!jb86fRtD22g(P*NE6b#;WXHIXT0 zdh8jRTL^v8=}8}NL{164)@VtD|M!Cb4O)>EjRHP-knfx9sjM21I`+}MD_~9X8e*&b zpE1N+v|9{WT;bp&>|py3@AjWH+B@z)XRJlsf8LmnM*nx+{w)E$pq}6$7yl@=UL+Ru zjdjF5@uf{NbVH4(V#bJbM`S{m0&zNt$E5?_yfmO7luDj9Z&L=nFb&^JG|B-E;(silos@IBBJK{Rrg->s ztdua0a|hJ?oabT(q}QS+=O-tzBry<+s*x_@*8Y4(S_o|%|pUu6GS9#hZYbB=#N)$;>=fec3Q99CS4%oZlplz z-6wUiAqo81FfrH?80{KY)}*$T8j*0xTq#>__5i~Xweqmv@EsTY!`{XB_4d>UHHCQJ zAxJ~3&3%2^*#VeVzW@LR+}+FK&|%&!R*FHb@V0By93(&N7s=w@(%0YO*ijJv+> zr>Y{UL-XByrz~Q+1WxC_@U1Oh`OdclBvJV(WLd2onT>-X9aFbm8!+foAebS;+pVU+ z-XMW7)*F;KMqSCtB`Q7(_+0 zU&4I`_ZcR?0~|J31U)GpDum}5Fw3F+3ALh;+SPi)_U#9B`oKI8(fyLcV}Zey@9t}F z1;5O7dZ3mkziMdp0Vso4nHhs^X-Mmg;TnbtLw>0Cv@mE!iE4r~WiS-iL95kza=C;n zKRN=qObe|LG6@{ial<$|R1Ci+s+8DSJV+Ai9hL3_gD*exaJZ_8i z4op%igPdke_N`OjB8R8B@?+(+WD{534uT*k{M<^4xdDRYa1@PpkK?JA(`oQBCxnT) zT7zgg2Kq|8q-fL4O3l6Y<44Lt^7t56ete8#hN`IXvY!$v%$xI(j+M3(rNhsfYOcl) z9d1FR-GsfJmNA3qoI1hARyut-H(QejRR+Nii$j z8S{mim%5tcjFi%7u<#ZX}?`DpRqQss?|?@MFZ%I4T`T^m-tmMLdQ%VWg!i($mJOU#zv zRyGT?RQR6=;JXXBQuax4(2dzA^+YEQ6-A!Lz(lx+^zl+NBwWypvd}b^E6@xJqe(;! zs|6jt!dkR4)gd3kPtuv8sY?a)`)Y4bEujXw`0U(^KYV44pu9GXj<4L|>wkMl&uNH_7-Crch*}Pg1fGJhO6uohtY~cHS z1|i_?_Zc))Yg((fE+G;FpFukdCPVFg7_4tT?Ait#LgsnS<|+C7n4l#Aq^Zgqf~lI% z+43bmgEq)#P^#2t&`|jd!h+$17C@ke(3I#F?)mdt$Xyb}{CQeKZnGyQt~QMj))>H@ zsoa>i>EM61Ptvpo8!9Bk`R6N>^E-le?iOv%p+(vPw@lcMMW>8LfXTwXodg#)1|7u& zlMXGN&X1CO=kw|;McdODbQYq;+K$BQiMF%9_`YbDGzKI3aywG>dbwSyxl1x1wD`gN_U1i9LG|wcf(lW6xGbSGLOXsYw`%M&2xPZ0|`(vd0RDF{?;9I9m6}bVO2>vab92XJ&FjxM4 zjRE~_Nuv$fmd+U(4t>~680T$@cK!HZqLkzh4=yN>Pgf5Oif$hyTXozQSv4TpG#mE{ ztl{o^3p@5I%@0U}M8Kp+Wx8Z)+Z#+$l%Er2wATU_uq>*gO%>`AWD0WfprZz*;@&Cx zV7bmCs&T&|1$&n3`V_odYACeZ-CsYzn@a-+llf@_bX71!yHrjz@@{MlXr(aP{9s~l zM_IH!TzZr0Gv0sZbnc0r?x9%|0|t?jg;UAhTaO>+$8BhxFt|VlRh3XcGu+GSm;VCbnQ|lm literal 207028 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 Bv!04exR&B0Uv&mQ;PI^QGw&^8m`y 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 diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.WebSockets.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.WebSockets.dll index ceadb3c6de32939f48e2072a5fb87a4e4912c039..0a2e32de7dc72e18cc73dc8b3fca7792774f4c51 100644 GIT binary patch delta 706 zcmXw%K}Zx~6vyA2*_p{&SIx+6XMCEM0Ty~tdwLu6uy=wM>UK#-tA(Jd$l`sOP?m>=_g|Bp8h-sE%nT;ZW4In!Vz=un)t8uWOq+E+~)&hgYCWXoQ1spKpgOOp5KWpR$9Q ze#SKOY39=~0SjV=d5d|Ad5ijY;tcq}C(W|7%+fMT%QXEizF>YGf^aA)t+Qf-aR)4z z5_X+H+GXYoBahBNF7$yV%8Vgq+8I+whZgf_!KSe0yz{_W5GH=FKQJjybB>u|e9riW zo2T7?rz8n)2p^E!-U*D6U*0gr?7$JZs(PS0__b;~+c|A^3^c!vzO~KzTA|8NG=KvL zVnorDsA11H)NqHPB*h;A_Lv;q#Vz`5(|v4{HMLGK>B>yT_tcB()#1x(c08?;Qo}K?+Lsy4q_P=xER)OTQez{j@ey5#u<)F6ZDbhwyV~?< z6Z~&h*lXqturjyx^m_B9t>CA|?gjeUz4J0oK59N(vcG9TBwFM=@#rm;N!MNukR%B` zS`nkd87fBR^c44sC%^R|KD7OfvxtUWK2t(o2Z?kxo#G7uve6V33{XI`YtHszMeDym N@k0wOe_&CQ{sQGQuoVCR delta 889 zcmXw&Ur19?9LIm>Zg*2ND;K&%vpM_&w(acCz1|6#HTnnsSt+8m2d{Tm{D;zZ_Yfkj zrqDx3<3v5=gKLE{dZ|nF5JF;+Pm#Su4}oCz5+P9`hD7I{+=27G=lA*k&OJZ)os-m( z+MQeGVE3D!fDS!X)eQ?k+l&~w03fo4oAfZ(UyOS7rzIB)PzN!UpSs@8yFmd%N8u{(hfX#7bF<9NQn$?dnDG^;ffJXl zD=c`!bRAN#$Zr^ib%T*jrY2+*WJVS6#NuG;WF*8?My2q=l0+%k;g{)p)&yJ%I!Kkh zs(Qh4gEPo9(??8SaS!OLTK9&WJlEutF(1Q2+5bC-5;*FzV31JSRI&U!lMXzS<5bB{Ch zuI@)>^zZA_^Iv{$cDrp$M%LNpNH{hzqAFTE5=x9|ZNmdDS=ENr*s$!96WY*3Y*@P% znHU&}#A8Y%Uxqz$NgY$=xEdK(wYVmaN99=5=l13k%6)r>eOTW+%qaP@%Unyusq>$_ zSMGkJW#tENT+L%?M;Y4I=Wz`pCBByZIdk3y$dNvuP$*Gg)GU$vKA9^rlRv&1^i{9& z&mbh~*+2%FrU8?4Vq=#GjUa*_qEs;iAwaLGpGmMzk3 mk#d2?D&2?aKA9v$ffvCISYN{&Ds27#fb1vrL(&#XW9vWQGT^KL diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.dll index 7dfdce214bc17540623aa94624ac5a1253deba26..6ec371913b3139d7f9929774622e107cdb2420d9 100644 GIT binary patch literal 524288 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

EuyOAB#QRd)pdXT>iSEq!7 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%0AR`g`E} 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 bkUs}&b;?70iQXSH+&-u}$ofNkQ Date: Mon, 14 Sep 2026 16:16:32 +0200 Subject: [PATCH 0007/1002] Add HLSL vector conversions, int clamp, and double frac to CultMath Aetheria Cut 8a needs int2(float2), clamp(int, int, int), and frac(double). Fill them in CultMath as dxc compiles them: - generate-swizzles.ps1 emits same-size conversion constructors and math functions between float, int, and bool vectors. dxc lowers float to int as fptosi (toward zero; NaN and out-of-range undefined), numeric to bool as != 0 (fcmp une, NaN is true), bool to numeric as 0 or 1. floatN(int) splat keeps floatN(0) from going ambiguous against floatN(intN). - Int and int-vector clamp are min(max(x, a), b), matching dxc's IMin(IMax(x, a), b); inverted bounds return b. - frac(double) keeps double precision. dxc demotes double frac to float, as it does exp and lerp; CultMath's existing double overloads already diverge that way, and design.md now says so. Co-Authored-By: Claude Opus 5 --- packages/cultmath/docs/design.md | 13 ++++++- packages/cultmath/src/CultMath/Swizzles.g.cs | 39 +++++++++++++++++++ packages/cultmath/src/CultMath/math.cs | 8 ++++ .../CultMath.Tests/HlslSemanticsTests.cs | 37 ++++++++++++++++++ packages/cultmath/tools/generate-swizzles.ps1 | 27 +++++++++++++ 5 files changed, 123 insertions(+), 1 deletion(-) diff --git a/packages/cultmath/docs/design.md b/packages/cultmath/docs/design.md index de09ee26..ad8409fd 100644 --- a/packages/cultmath/docs/design.md +++ b/packages/cultmath/docs/design.md @@ -52,7 +52,18 @@ That makes these HLSL rules, not options: operand returns the other (so `saturate(NaN)` is 0), `clamp(x, a, b)` is `min(max(x, a), b)`, and `saturate(x)` is `min(1, max(0, x))`, which maps -0 to +0; `any`/`all` accept numeric vectors (a component is true when it is - not 0); `min`, `max`, and `abs` on int vectors return int vectors. + not 0); `min`, `max`, and `abs` on int vectors return int vectors; int + `clamp` is `IMin(IMax(x, a), b)`, so inverted bounds return `b`. +- Same-size vector conversions (`intN(floatN)`, `floatN(intN)`, `boolN(floatN)`, + `boolN(intN)`, `floatN(boolN)`, `intN(boolN)`) exist as constructors and + `math` functions and follow dxc: float to int is `fptosi`, truncating toward + zero; numeric to bool is `!= 0` (`fcmp une`, so NaN is true); bool to numeric + is 0 or 1. DXIL leaves float-to-int undefined for NaN and out-of-range values, + and so does C#; CultMath does not pin them. +- dxc demotes double `frac`, `exp`, `lerp`, and `floor` to float. CultMath's + double overloads keep double precision instead: `frac(double)` is + `x - floor(x)` in double. That is a deliberate divergence for CPU simulation + time, which shaders do not carry. dxc marks float arithmetic and compares `fast` (no NaNs) unless a value is `precise`, so drivers may optimize NaN handling away and NaN results on real diff --git a/packages/cultmath/src/CultMath/Swizzles.g.cs b/packages/cultmath/src/CultMath/Swizzles.g.cs index ce84bbc4..db1c56bd 100644 --- a/packages/cultmath/src/CultMath/Swizzles.g.cs +++ b/packages/cultmath/src/CultMath/Swizzles.g.cs @@ -7,6 +7,8 @@ namespace CultMath; public partial struct float2 { public float2(float2 xy) : this(xy.x, xy.y) { } + public float2(int2 value) : this(value.x, value.y) { } + public float2(bool2 value) : this(value.x ? 1.0f : 0.0f, value.y ? 1.0f : 0.0f) { } public float r { readonly get => x; set => x = value; } public float g { readonly get => y; set => y = value; } public readonly float2 xx => new(x, x); @@ -72,6 +74,8 @@ public partial struct float3 public float3(float x, float2 yz) : this(x, yz.x, yz.y) { } public float3(float2 xy, float z) : this(xy.x, xy.y, z) { } public float3(float3 xyz) : this(xyz.x, xyz.y, xyz.z) { } + public float3(int3 value) : this(value.x, value.y, value.z) { } + public float3(bool3 value) : this(value.x ? 1.0f : 0.0f, value.y ? 1.0f : 0.0f, value.z ? 1.0f : 0.0f) { } public float r { readonly get => x; set => x = value; } public float g { readonly get => y; set => y = value; } public float b { readonly get => z; set => z = value; } @@ -320,6 +324,8 @@ public partial struct float4 public float4(float2 xy, float2 zw) : this(xy.x, xy.y, zw.x, zw.y) { } public float4(float3 xyz, float w) : this(xyz.x, xyz.y, xyz.z, w) { } public float4(float4 xyzw) : this(xyzw.x, xyzw.y, xyzw.z, xyzw.w) { } + public float4(int4 value) : this(value.x, value.y, value.z, value.w) { } + public float4(bool4 value) : this(value.x ? 1.0f : 0.0f, value.y ? 1.0f : 0.0f, value.z ? 1.0f : 0.0f, value.w ? 1.0f : 0.0f) { } public float r { readonly get => x; set => x = value; } public float g { readonly get => y; set => y = value; } public float b { readonly get => z; set => z = value; } @@ -1001,6 +1007,8 @@ public partial struct float4 public partial struct int2 { public int2(int2 xy) : this(xy.x, xy.y) { } + public int2(float2 value) : this((int)value.x, (int)value.y) { } + public int2(bool2 value) : this(value.x ? 1 : 0, value.y ? 1 : 0) { } public int r { readonly get => x; set => x = value; } public int g { readonly get => y; set => y = value; } public readonly int2 xx => new(x, x); @@ -1066,6 +1074,8 @@ public partial struct int3 public int3(int x, int2 yz) : this(x, yz.x, yz.y) { } public int3(int2 xy, int z) : this(xy.x, xy.y, z) { } public int3(int3 xyz) : this(xyz.x, xyz.y, xyz.z) { } + public int3(float3 value) : this((int)value.x, (int)value.y, (int)value.z) { } + public int3(bool3 value) : this(value.x ? 1 : 0, value.y ? 1 : 0, value.z ? 1 : 0) { } public int r { readonly get => x; set => x = value; } public int g { readonly get => y; set => y = value; } public int b { readonly get => z; set => z = value; } @@ -1314,6 +1324,8 @@ public partial struct int4 public int4(int2 xy, int2 zw) : this(xy.x, xy.y, zw.x, zw.y) { } public int4(int3 xyz, int w) : this(xyz.x, xyz.y, xyz.z, w) { } public int4(int4 xyzw) : this(xyzw.x, xyzw.y, xyzw.z, xyzw.w) { } + public int4(float4 value) : this((int)value.x, (int)value.y, (int)value.z, (int)value.w) { } + public int4(bool4 value) : this(value.x ? 1 : 0, value.y ? 1 : 0, value.z ? 1 : 0, value.w ? 1 : 0) { } public int r { readonly get => x; set => x = value; } public int g { readonly get => y; set => y = value; } public int b { readonly get => z; set => z = value; } @@ -1995,6 +2007,8 @@ public partial struct int4 public partial struct bool2 { public bool2(bool2 xy) : this(xy.x, xy.y) { } + public bool2(float2 value) : this(value.x != 0.0f, value.y != 0.0f) { } + public bool2(int2 value) : this(value.x != 0, value.y != 0) { } public bool r { readonly get => x; set => x = value; } public bool g { readonly get => y; set => y = value; } public readonly bool2 xx => new(x, x); @@ -2060,6 +2074,8 @@ public partial struct bool3 public bool3(bool x, bool2 yz) : this(x, yz.x, yz.y) { } public bool3(bool2 xy, bool z) : this(xy.x, xy.y, z) { } public bool3(bool3 xyz) : this(xyz.x, xyz.y, xyz.z) { } + public bool3(float3 value) : this(value.x != 0.0f, value.y != 0.0f, value.z != 0.0f) { } + public bool3(int3 value) : this(value.x != 0, value.y != 0, value.z != 0) { } public bool r { readonly get => x; set => x = value; } public bool g { readonly get => y; set => y = value; } public bool b { readonly get => z; set => z = value; } @@ -2308,6 +2324,8 @@ public partial struct bool4 public bool4(bool2 xy, bool2 zw) : this(xy.x, xy.y, zw.x, zw.y) { } public bool4(bool3 xyz, bool w) : this(xyz.x, xyz.y, xyz.z, w) { } public bool4(bool4 xyzw) : this(xyzw.x, xyzw.y, xyzw.z, xyzw.w) { } + public bool4(float4 value) : this(value.x != 0.0f, value.y != 0.0f, value.z != 0.0f, value.w != 0.0f) { } + public bool4(int4 value) : this(value.x != 0, value.y != 0, value.z != 0, value.w != 0) { } public bool r { readonly get => x; set => x = value; } public bool g { readonly get => y; set => y = value; } public bool b { readonly get => z; set => z = value; } @@ -3102,9 +3120,15 @@ public partial struct double3 public static partial class math { public static float2 float2(float2 xy) => new(xy); + public static float2 float2(int2 value) => new(value); + public static float2 float2(bool2 value) => new(value); + public static float2 float2(int value) => new(value, value); public static float3 float3(float x, float2 yz) => new(x, yz); public static float3 float3(float2 xy, float z) => new(xy, z); public static float3 float3(float3 xyz) => new(xyz); + public static float3 float3(int3 value) => new(value); + public static float3 float3(bool3 value) => new(value); + public static float3 float3(int value) => new(value, value, value); public static float4 float4(float x, float y, float2 zw) => new(x, y, zw); public static float4 float4(float x, float2 yz, float w) => new(x, yz, w); public static float4 float4(float x, float3 yzw) => new(x, yzw); @@ -3112,10 +3136,17 @@ public static partial class math public static float4 float4(float2 xy, float2 zw) => new(xy, zw); public static float4 float4(float3 xyz, float w) => new(xyz, w); public static float4 float4(float4 xyzw) => new(xyzw); + public static float4 float4(int4 value) => new(value); + public static float4 float4(bool4 value) => new(value); + public static float4 float4(int value) => new(value, value, value, value); public static int2 int2(int2 xy) => new(xy); + public static int2 int2(float2 value) => new(value); + public static int2 int2(bool2 value) => new(value); public static int3 int3(int x, int2 yz) => new(x, yz); public static int3 int3(int2 xy, int z) => new(xy, z); public static int3 int3(int3 xyz) => new(xyz); + public static int3 int3(float3 value) => new(value); + public static int3 int3(bool3 value) => new(value); public static int4 int4(int x, int y, int2 zw) => new(x, y, zw); public static int4 int4(int x, int2 yz, int w) => new(x, yz, w); public static int4 int4(int x, int3 yzw) => new(x, yzw); @@ -3123,10 +3154,16 @@ public static partial class math public static int4 int4(int2 xy, int2 zw) => new(xy, zw); public static int4 int4(int3 xyz, int w) => new(xyz, w); public static int4 int4(int4 xyzw) => new(xyzw); + public static int4 int4(float4 value) => new(value); + public static int4 int4(bool4 value) => new(value); public static bool2 bool2(bool2 xy) => new(xy); + public static bool2 bool2(float2 value) => new(value); + public static bool2 bool2(int2 value) => new(value); public static bool3 bool3(bool x, bool2 yz) => new(x, yz); public static bool3 bool3(bool2 xy, bool z) => new(xy, z); public static bool3 bool3(bool3 xyz) => new(xyz); + public static bool3 bool3(float3 value) => new(value); + public static bool3 bool3(int3 value) => new(value); public static bool4 bool4(bool x, bool y, bool2 zw) => new(x, y, zw); public static bool4 bool4(bool x, bool2 yz, bool w) => new(x, yz, w); public static bool4 bool4(bool x, bool3 yzw) => new(x, yzw); @@ -3134,4 +3171,6 @@ public static partial class math public static bool4 bool4(bool2 xy, bool2 zw) => new(xy, zw); public static bool4 bool4(bool3 xyz, bool w) => new(xyz, w); public static bool4 bool4(bool4 xyzw) => new(xyzw); + public static bool4 bool4(float4 value) => new(value); + public static bool4 bool4(int4 value) => new(value); } diff --git a/packages/cultmath/src/CultMath/math.cs b/packages/cultmath/src/CultMath/math.cs index ca74857f..f5c81095 100644 --- a/packages/cultmath/src/CultMath/math.cs +++ b/packages/cultmath/src/CultMath/math.cs @@ -105,6 +105,9 @@ public static partial class math public static float2 frac(float2 value) => value - floor(value); public static float3 frac(float3 value) => value - floor(value); public static float4 frac(float4 value) => value - floor(value); + // dxc has no double Frc: it demotes to float, as it does for exp and lerp. CultMath's double + // overloads keep double precision instead, so frac(double) is x - floor(x) in double. + public static double frac(double value) => value - Math.Floor(value); // dxc lowers float min/max/clamp to DXIL FMin/FMax (saturate to Saturate, defined as FMin(1, FMax(0, x))). // DXIL.rst: FMin(a, b) is a < b ? a : b, FMax(a, b) is a >= b ? a : b, and a NaN operand returns the other. @@ -130,6 +133,11 @@ public static partial class math public static float2 clamp(float2 value, float2 minimum, float2 maximum) => min(max(value, minimum), maximum); public static float3 clamp(float3 value, float3 minimum, float3 maximum) => min(max(value, minimum), maximum); public static float4 clamp(float4 value, float4 minimum, float4 maximum) => min(max(value, minimum), maximum); + // dxc lowers int clamp to IMin(IMax(x, a), b): inverted bounds return b rather than throwing like Math.Clamp. + public static int clamp(int value, int minimum, int maximum) => min(max(value, minimum), maximum); + public static int2 clamp(int2 value, int2 minimum, int2 maximum) => min(max(value, minimum), maximum); + public static int3 clamp(int3 value, int3 minimum, int3 maximum) => min(max(value, minimum), maximum); + public static int4 clamp(int4 value, int4 minimum, int4 maximum) => min(max(value, minimum), maximum); // DXIL Saturate is FMin(1, FMax(0, x)); that operand order, unlike clamp(x, 0, 1), maps -0 to +0. public static float saturate(float value) => min(1.0f, max(0.0f, value)); diff --git a/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs b/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs index 7b845ea7..ac97f92f 100644 --- a/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs +++ b/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs @@ -311,6 +311,43 @@ public sealed class HlslSemanticsTests Assert.Equal(new int4(5, 5, 5, 5), math.int4(5)); } + [Fact] + public void VectorConversionsFollowDxc() + { + // fptosi truncates toward zero; NaN and out-of-range inputs are undefined in DXIL and not pinned. + Assert.Equal(new int2(-1, 2), math.int2(new float2(-1.7f, 2.9f))); + Assert.Equal(new int3(0, 0, 3), new int3(new float3(-0.5f, 0.5f, 3.99f))); + Assert.Equal(new float4(1.0f, -2.0f, 3.0f, 0.0f), math.float4(new int4(1, -2, 3, 0))); + // Numeric to bool is `!= 0` (fcmp une for float, so NaN is true); bool to numeric is 0 or 1. + Assert.Equal(new bool2(true, false), math.bool2(new float2(float.NaN, -0.0f))); + Assert.Equal(new bool3(false, true, true), math.bool3(new int3(0, 5, -1))); + Assert.Equal(new float2(1.0f, 0.0f), math.float2(new bool2(true, false))); + Assert.Equal(new int4(0, 1, 1, 0), math.int4(new bool4(false, true, true, false))); + // intN(intN) is exact; it must not promote through float and lose 2^24 + 1. + Assert.Equal(new int2(16777217, -16777217), math.int2(new int2(16777217, -16777217))); + float2 splat = math.float2(0); + Assert.Equal(float2.zero, splat); + } + + [Fact] + public void FracAndIntegerClampFollowHlsl() + { + // frac(double) keeps double precision; a float frac of 1e9 + 0.25 would return 0. + Assert.Equal(0.25, math.frac(1.0e9 + 0.25)); + Assert.Equal(0.75, math.frac(-0.25)); + Assert.Equal(0.5f, math.frac(2.5f)); + + // IMin(IMax(x, a), b): the result stays int, and inverted bounds return b. + int clamped = math.clamp(7, -1, 3); + Assert.Equal(3, clamped); + Assert.Equal(-1, math.clamp(-5, -1, 3)); + Assert.Equal(0, math.clamp(1, 3, 0)); + Assert.Equal(new int2(0, 3), math.clamp(new int2(-4, 9), 0, 3)); + Assert.Equal(new int3(1, 2, 3), math.clamp(new int3(1, 2, 3), new int3(0, 0, 0), new int3(5, 5, 5))); + Assert.Equal(new int4(2, 2, 4, 4), math.clamp(new int4(1, 2, 5, 4), new int4(2), new int4(4))); + Assert.Equal(1.0f, math.clamp(2.0f, -1, 1)); + } + [Fact] public void MatrixMulFollowsHlslRowMajorConvention() { diff --git a/packages/cultmath/tools/generate-swizzles.ps1 b/packages/cultmath/tools/generate-swizzles.ps1 index 9030f2be..e5f79011 100644 --- a/packages/cultmath/tools/generate-swizzles.ps1 +++ b/packages/cultmath/tools/generate-swizzles.ps1 @@ -21,6 +21,19 @@ $families = @( @{ Scalar = "bool"; Sizes = @(2, 3, 4); Functions = $true }, @{ Scalar = "double"; Sizes = @(2, 3); Functions = $false } ) +# Same-size vector conversions, as dxc lowers them: float to int is fptosi (toward zero; NaN +# and out-of-range are undefined in DXIL), int to float is sitofp, numeric to bool is `!= 0` +# (fcmp une, so NaN is true), bool to numeric is 0 or 1. Keyed "target<-source"; {0} is a +# source component. Identity forms (intN(intN), ...) come from the composition loop, which +# also keeps an int vector argument off the lossy intN(floatN) overload. +$conversions = [ordered]@{ + "float<-int" = "{0}" + "float<-bool" = "{0} ? 1.0f : 0.0f" + "int<-float" = "(int){0}" + "int<-bool" = "{0} ? 1 : 0" + "bool<-float" = "{0} != 0.0f" + "bool<-int" = "{0} != 0" +} $componentFields = @("x", "y", "z", "w") $namings = @(@("x", "y", "z", "w"), @("r", "g", "b", "a")) @@ -86,6 +99,20 @@ foreach ($family in $families) { } } + foreach ($source in @("float", "int", "bool")) { + $expression = $conversions["$scalar<-$source"] + if (-not $expression) { continue } + $converted = for ($i = 0; $i -lt $size; $i++) { $expression -f "value.$($componentFields[$i])" } + Line " public $type($source$size value) : this($($converted -join ', ')) { }" + if ($family.Functions) { + $functionLines.Add(" public static $type $type($source$size value) => new(value);") + } + } + if ($scalar -eq "float" -and $family.Functions) { + # floatN(int) splat: without it floatN(0) is ambiguous between floatN(float) and floatN(intN). + $functionLines.Add(" public static $type $type(int value) => new($((@('value') * $size) -join ', '));") + } + # Single-component color aliases; x/y/z/w are the fields themselves. $letters = $namings[1] for ($i = 0; $i -lt $size; $i++) { From f0605367e0d7e57941a57bacb0b8cb8d893073be Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 14 Sep 2026 16:16:32 +0200 Subject: [PATCH 0008/1002] Release CultMath 0.2.1 Bump the package and assembly version and rebuild the tracked Unity DLL and pdb from a deterministic build. Co-Authored-By: Claude Opus 5 --- .../cultmath/src/CultMath/CultMath.csproj | 2 +- .../Runtime/Plugins/CultMath.dll | Bin 296960 -> 299008 bytes .../Runtime/Plugins/CultMath.pdb | Bin 140892 -> 142220 bytes .../unity/org.gamecult.cultmath/package.json | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cultmath/src/CultMath/CultMath.csproj b/packages/cultmath/src/CultMath/CultMath.csproj index 7c567105..1c2bfe24 100644 --- a/packages/cultmath/src/CultMath/CultMath.csproj +++ b/packages/cultmath/src/CultMath/CultMath.csproj @@ -8,7 +8,7 @@ CultMath CultMath GameCult.Math - 0.2.0 + 0.2.1 Clean-room C# math shaped for HLSL-style renderer code. GameCult README.md diff --git a/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.dll b/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.dll index bf712012ee75b870340835a98c75593f17d6d33e..d3c4a62fa9d4b99e1c064d91904c32608a6df662 100644 GIT binary patch literal 299008 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

pt4b- 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¥9?V=YH2icYj`+vw|)GeGtd z`X*cUom=+1_xrC?+vvu>lRD&>jM_JCCVMC6!`@|OzpW9AwrKA%?;Xj>af~?AWX#*> pSBd@&(~q2e$m#*Vtu4=%zfgw^8Rn9|IbF?e*!@gCshCd literal 296960 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

yXUIFsG|bMBca$@+ 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�gNhH{l&O@B|hP4Aojwvwm!t*rNLtoN;=_sv&+`n!y${PZ`PvdT|?uc@T` zlREzsI{z<}aEJ2K-+DGHC;i>$YvrWB0Uc4!66L?6{C_IHzWOif`roPRpVjq$TKRA4 z`d_c>UrpElHRa!@>o8Q;p^L7=yUH1&{3n(Fi1L4RlAl`o`&W)$O@9mPp!ZFG7rRyO zTSo6&PwyM)eMjhh)8Ew2D<}PZEmA-It*x~3kLdir)%kDJ8Fo^B`a9i9<)pva?N(0u z``!NEuCwx&DSxK&tE)d%*T1u_{~2B9vC3bh>)%4xznuDWm4An>!~MDrH|jbpSI&LP zAEo@k%0I2^e~G^T?p6NN`uSGVtIhPjZz=yZOZLW zEmF=><=>rnXa5b`MY%f`*i*rb%xg~|1IT=Renw7FHz2Z zU7x#^-&XmbC?{X}&nthR@^}4qot3{p`OhlH0 z<@Zs3YvsSHoZiZRSowca{&%|mS5z9yr{HXv#8<<_R(|3eWyj+cm7d14WfGsR^$Z@V zm-s;K#MwECO=?ZU$Ll3pwG(g1N$joutLk5={zK|FsFdvbxlH2i6%%)qPOM)k*>$E& zV%Lg^pOsGhRqHM4*VXzJ_0wngYWRPiXX`7HtQ?*WVBG*-s{>DLv(kybYQ07Mx>~=Yeom$29DXX3cw5E9?WGgXYyFY>b+n$R zel;C`T>TE}f2jVCTCY>TveqxEf2oyR)y}ep{Ih(c>>Kpc*Z|Ew&;77|?yYppKqbGVpMDh`(^0z~*RGxF6#uO#Y>-^%;=dcquSh!E^iwWf zKUv@3FtPaW%mwW#{+qL3yP`VDk*&4sdF^^czd4`lH>ZJ)xl_p#_4^a*nBQyHK9^M!IMY1dHgD*jvQ>zLxdt4Gu+tM|H5yJlSQ#VeQ(Y&Q;nqO1nPS8D3PUopxuw#hP`gU%n1(uLh<2S+ zr;6UIi*_y0uBWu?TkUG8WA4|kS=v=u$K0e{qqOUDb&7vB7lz62XYo(y<{;_#6%s4y zGy8QmSr`B0E(nv~x8k4Q4}+wWsgPJvpWOY~WL^Ao{g`$Y|8!5(uD#`xBflz@xLmtF z(*&5UY0z4`&MEm(CHK~@m$d5*?HaFL#b?F*F!_BeJ~1{0Nyn>@SV5otud>Oy_#_#r zUB&0gQ`+@q`Q*rbr4rxJuI-v3FKM2%(ym{WJVMELYu7C8TBco3YFF{;^pbWJpHc5= z*Lm$KshpkKReW|mq+P`)*ck2Fu3ew&y%uWMhdRS)I>V;gby8>eppv_3*K^vnK)Xh1 zS2@kkZ?tQgc3r2Owc52pyMELzU!9M&>zIytTe}8mR~dDt>X=8g>qG6@qW5}PyVmNM zr?u+}?K+|}?5|xnYu7~WnypqOW^&?*_@bcD2Ox{C}!i@;jft3yiFu^wal(o;8yG zT{RP5s+)LP)BEG9$vSu6Lc?YrTn*aM?0#17u~M5pg@y{jkv^qsDCjilecW@3Kb#69&BS5-|+-v<{dKYcfR zPWkD3;yC4xRQ^ikS8b3aA5wn$j(J4+>HFq(<)`nS%as4N@_$r*N9C7P&X4L}qr1r@ z^*gHnj_xvCO@=zoK$(QT{w#pGi9Z^u7D9%1__H?^AyI zKHf$7w<>?4@{cLMQ2FV*{F};8-|J^7KYhplyYin<{`<t~73HU&XQnIv zdF5|beq&vSGs;gt?bymmKl2<^KmFvhUimwe@98@CQhrUHr>E=OMg0Zp_fmhS`sH<< z|EBBTQu!-%{g0@BtFC`#+RE5EIB{;vF=lwY9yQp&kQ`MZ=qQTeu>46jkbB;^lP{zJ-N zqWoAn|5E;7}8LcZ2d?#t=t(EozVWV2Co&Gf6-FU0|S>^y}!E^ACFFteZ_b6Wzr0H-!?)Pk&#iqWtu?hAWl- z%jHSh&m|N8t%TmnPk*QQOgZUq7C$H_{r%#ka#kw;W92VaeiQZQ>3O@4p0`Vd$-7Te z{u(`XchXb$RYB5Uq5L7b4&!tk?$UMGpqxjQKUw)>l%G*Q{q5!|y_)`xbDQ2b{Y@uN z?^{{#+gR^gMem!h{Pg!APx{)b+np*FUT4|FrVo)b+n!*T0&s|7*&>PuF3nu0t1Hhj*1T zMEOrD{}JW?>Lfq4^mn%$y_)_8*Fo=_{vLO$-nWe2x1QcN()*6k`=-C;omWo!yI!Pz z`Ws(qz> z&SRCoNY}rGu75f8=PLgWU5ER19d6WhSgxG=ls`)OgOz_;*Z&fIciyY~r}gu#rdONk zecw|4Yszn?_dTZk3(8-w{Pud^Q2oo)x7B}8?^~ptrOLlY`NxzKs{fSo2P@xJf30!~ zl`~yAf%13h{P*enH|h+pSN>bd8LRx7%3q?K{klGPE5EJsKT%G;@}F1!K;`fH?K&%e zf%2bK{^jaFrTmu4|6VzdDu0IZuTuUc>c61;PRj42{MO2URXM$t|FH7^r2Ox6{og42 zKA(asDs8~CWfGsRwHc4pOMIYq;_RHnCbd4n$Ll3pwG(g1N$joutLk5={zK|ltF?ny z2i8kGp>>m-WPP*N)77t7JL&XRKS%wC)&E)RYt`?j^~>tl(((7H-=I=*RzH_XyuD)L zj?#(sDG-!rf7XPidpk2j(H}-2+ zR3|yIwRSzPU61H@<8%FPG|(}3DtV%QLqZ+%d+i#iU4`lt|4rMX_bUGT_O5ciP);T7 z8me8ze-C{fQ~bB_h&pBUUN>sjZ0#DOGu)>$yjsWfQSx&-!!kOijdne(U0c+-O1nmB z*XKIJi|Vw~t_{jLpq$#;^_X_utz#ByS4kbyP{$0>u9NCi(R+2#t_9llly-fqT`hIY z{n|B4yDICLo3v|`c73i+@lW5vF!}u~{u$gHBpts(VkLblzs@G>;-Ae0Ve_U%PJBu8G<; zTe}|CuK(9eZsq^qC$n2U`Rz^5=R@kJr}Tyz$?-dDCi=RQ_HK}@YgbE5&+w3 z>8Sc$bPuYc{415;N9X^xuFuOl|MVSdc(vqHnZ8f;uAcPMcdOPll79P|iTQOC_tZ~Z zRW&hvFI%Mi^d0Rv<)`m!ICwk~8^>?i3A_|AOupyVP%`yF;k_ipse~`SWyrCh7ds z_us!NKYbUzPxEauEY1r zPv6sjQGWW){-yHM_xE>{|B>>~EB|)oS5VG*^;_%u&sP6-_1EkAU#jaoTG#(-<-exu zzhC|Ky8dO9UrRaNmA^#S=Xsrf`sreV^3%^4k19X?q;Z$>dnkXF@_$tR7Uid(LpCZu z{WS85^3%^G)0O|c@;58Lv97}z<)@!mY~`e%TMnw9etKE2{2j{obe(%CzoyR9({=8m z{sQ%TslQYG^19A{)Aetu{1v+XN7TPn*T1sz8!G=Eo&QQ*pV>P9a>~h5{wn4FS^3|p zUtc+|D*q1UZ&ZGugg(l@M)|FjKSKGR>ebhk-&Q$)SN>1RFHn9d<=mnCUCN)Rd|OX< z*C=6<@`oz_A>}Voeyp5-DSxo?w9|Cv^VlXV;c~ za$inA!S>4N4xW0B9pokbdgT+ZEtQy~=i5ncvQ9tcUh60K<@B@eA2Ufm{lxo#m-OrE z>9mEOPV4FE^l3Ngr=N!}Ret)ZxT^Bg&&G|Ef9~=m?QF@!V@kM3`ROO;9m+{RKc7-g z`YHMc<-D!@t;%1b{HxV}MNj5=dNMDqC-di(|DK-DZ_)F46Fr~5rTm9<9iG&6=&9?l zQ8^=(|BUkUmG7&ceui)1C-3L9X&VxLC=kKvq@*7o0xvuFQNSO zGk+E3r=R?d%hv+(t({;E@*I|Ql9##Hi<&RN*M*Z|Rl&kb= z`g_W4df)W7l{~#~Wxa1>y>Au0Z@%)=-(@`Ir@zsZRet(=O(o@@)cK##`G28=JCvXP z*0WhT>F+*YD<}O8=!kNbDE}Sh|5N$()qhdf|4v>1tgipl%70VW|9V~jYP$ZfDgQoQ zhoQO-U34AZRn8FQKdJmjl>e)f{M6FlzjE|y`de5By>I%v*sXfsGJ4;7df!OzJ3{Z9 z{-$p=QP*L)a_&?9DCG}U{%KwROZ5GB zukxSP&$pUhZKn5qOZl%UznR|mnDQ?uf4%bC>wQD@FH_%E|3STPk#d$Q{~qNZQ%zmNw|2pB#{5QKDR$cHGt1EW4y5X%>ckE*Iz}u{z*wyNVw_Cljo7D&Ju=-+m zs~_HJ^~WC80KCf@h&`=A_(y9n_OgcH-PTa-Z4JYFtl`+l8i9G%NbGBk!arG~Im7u=UH))UaNp0cLnL~8~#A!Q*xZ!N;<)?)mJwUk$9pkuvYEyJ1Ca(vNRfwQcYy!sM4yvHhh*;x9Z=ve=>*5N#BJ)Kw3;r%w?0&5d4v^L|b))ri3ZN=BDZMfLlj!Uc^xYXK- zuUorunY9Psu=e6|YahO8?Z*|?0es6kh%2o___lQzS6N5#9qSmbwvOYw)(Ko=oy7O7 zQ@GYTjqh7$aGiA)3;7?scR1Jc_Oqh;F;=k4N$Rt7g)S^UTfaf=n>$5sj4 zYL&!KtkSs6DvO_5<#4-I9zU}x;ts1aer{F8omO?+W!1#p{LjTY))!V?++*e7msSJZ z%m3V|WBto&g!`<<_?6WJ_ghWzYpWR^u$p6$)dCM%E%6(xH6F6s;I~#=JZ!bYBUXDn zYIVSWTOIM3)d|0|I^%Jx3x02P#S>OH{EyWgPg*_j2dgKZvU=f$K+bnTIJ zJaoA3qgeasaP>#C4v-0HkHN?ui?KZpFR{mC33~!wYEQ(H_9Tukg$_TP$ymmoLZ>V; zSM8}-&Yp&s+tabUJ%d*(pu^8>CRVa%VP$(ZR8`*2{clKIrY_G$s?Dg2h z-hfxzo3N?98LzRoU^9Cw{@&h(&F$^@2YUy$uy^9M_HJxx@4;5~UTkge!|Uw**v3A9 zx%NS9Yahbv?Zep4K8iQk$FRM99B;HwU|~$CTkLb#**=fA z+83~keGzZ7ZHM`6yLh{u!ESaI@32GcZpV11T>^X9CGjr1H1@R1;vemD*vl@DciR=Q zw_O?Uv8!SqyE^9CHL;kUCf-fuU-fp$}Tz;1?v z?B@7qy9ExmTjGOuYaC*?!H4X&IMi;358Lf=nB4*YVt2&hb|-wq?u;YsF8HY36-V0L z@G-kPjKgC z!}eVK#GZ%S?D_bqy^vS8BXihZ#CiuZhwa6<(_V_Z>}9yyUXEYbD>!BkGKcMzxYu5V z|FT!p--pa$dkyRT$Q-uU;sJXdog!oo+w1WgdjlS_H_`tVnZx#GJYsL5a}=4w_Ey%% zkU4B`!{hdL{NCO{{{%9J?VWhi-i<%ld+?OK7k{+(am;CC4%_=#pF!rZeE`qe2k{sC z5T3IS^Xh+*Icy(g{VO`w1^XEO&puA)A~J`a6KFdp={U$7c21$^oTigO$MT&sth4A? zfpZo^=Nv}Pd5rn{ESba3MJ(a)fwwMoTrBBiu#}U<(oTqFoEXbGCGax-4ov2-QyMRK z%3^t^99D43V@0PTR&pw1Wv41uajIigrzTc&YGZY$F4k~zu%^=hYdH9od1P8<5aL*}s47O!&JVH2l4UhQ4R;ZzIeUU z58FBY@djrAws!{Njm{wK;0(r_oFVM(h|FPUD0Xs&;VsT^`kj$E?2N!J&Pcq?8HHV) z(RjNv2D>?9@eXGkc6Y|(oz4X8;Y`H4oJrWznT&sQreH5;D&Fl(!`{wxyvLb=eVm!R zV;(YxomqIVGaLIkbLjsGnZwRpyw9131DyGIzq1erI*afDXE6?Pmg1kCWjNSbjt@F3 zaEP-KA97aVP-ith?5x3I&RYD7vkr$l>+un11CDSu;iJxG9O-P~93DgFu(K5(cedeZ zXFLAY*@0u6otW?J#<9*Ge8Sm_2i zP77S^v}EtQ$ozL&<9kjUT$kghtH7baAyF1?hM48&LH}`kooTn z#xI;9xW^faUpm8ZuQMF~<&406&Pe>q8HM|u(fGA91`jx6vB(*R2c7ZwjWYocITP_) zXA&NECgTxj3h#Inng7mIJmyTp@0{uMk0bNnnSm#qnfM=P7M^rw;}6apJmt*AADwx4 z+L@0(ISbi)2ATiPB0TFX#$TMJc+Odd|8Z0RJ7oU5 zCGaY@B%LP6{C7*UZi>u*w=C;s$ozN9v2Kn$hr8vmg+6u` zaJM?^Tx9;cHSv14Hnwx?;tg&Nws#xgjc!Bi;5NdW+{Wzch|GVt3F}VC{CAsTXSW%h zTao$iHpkoC7IeBI^WSZW-Q3o6?m*_h+lKX>$ozNP;$3b#?CG}0Ke`=wwHGq~-Hxn# zBlF+wgniu3nCEuEzHV2%*X_nJ{gCHyw>$QCd*FR;Px=Fp`S12(JrJ4yZf_jq_M!7< zWd6H-@j-yMu2+#&d=JCy!N0OhNIl! z__#X)N4q2OukI+08H3D!cQos<$ozN5;5c_IKIx9b@$PtD{Tnj>-3hFpLgv3a5ubJ^ z(V2wIe|IuYcBjyJ2ATivRD9N*MrSJW{O?X@Jq?-v?hKsn&cuJXvv7tx8((ne;7oTe zzUa=wS?+v%$z6!E-9`AayBO!VOR>ORhI8HJ_)m8Q&U07dEAA?s@2gPi_Z1<95WK-A;Jc?To*;UGSXS760pY!}D%;{MGG&7u=rsKercNbbF)a z^+DU~i;mY1U9UfS-T=&a133pDng8A(47|Y@dP6YshGOgu!%Mv3Si&2DmwF?yq&JGa zrI7jWjm9$G7%c0J#ml^LSk4=dmwOX9vOF^Xy@^=Sn}n6T$ynK&f>pe!Sk;@xk=2m- z?@h-V-VChi&BR*XEUfL##yZ{{tn1Cidfq(D@#bTFZy`4D7U31%Vr=Lw#VfsK*vMN> z{_l|a@2$YAyp`C*TZLD9tFfuK2Cwnfa%3}P{(I}Nxwjtw;BCMb-X^@(+l(!}Egabj zng8Bayw2N(ZM^N6>+Qg{-cG#U+l}qKJ$Qq+7u$RL*n1-~|GoWqlXn0+dI#}l?+|wK z4&yD}QS9s;!&|-M*u^`6w|OVAt9J@-_fBIs?+o7IoyG3nIlR+5k3GB#c$aq(dwTrC z8tadqi@m%|*0%0Op8vfp-s6SX$BXIbA@koWf%kePv7c8O|Kyd${$4q}&nu4uyoz|g zR~ZL-Rq+9@Iu7z`;-9_RIM}O;4|+K`#A|>Lc@1%>*9af>8uO0BkooU5!Qoz0e8g); ze*`lBz2-R5Yk`k>Epe3B8Xx!C;ApQc{?%)TW4!j5?{#4BSY-Zt9dVr337_;j<9M$N z{>|%(6TEI5`4lq$z3%w5*8?YcJ@M~eFP!Z4#%H`fIK}IW&wBlEs@I>r&mqtM-T-{w z8;H}rLG=HD%ztk%zTgePnch%*(Hn-dyy5tgHv(sSBk^T#6wdKRV}UmY=XzuDpWZl} z=Z(i#ya_npn}`d%Nx0CPjIVlAaFI6^U-PEnVsAPw@n+ysZzjI(&BA5gY<$C;gUh|S z_?9=1vt5Zi^Lz7IuR>~Nz6_aWnWL;PN1kRg$FM@?IGu{fG|QY|T^X5XnUk!mB2TlKQ&>H7nobR5 znq|(gu7ymq%vsiTkZG1VhxIb&F(-2Y>t`-vgNz+8%`z@F%wz(dW|3)@$>Q%aA)Us^ zG|R-;BvS&f&XmNanbN#^4f0PjGG+1inR3`XQy%}2smQA>kZG2wj4d-&u~nuzw$9Y# z)$5RHmZ^=onYwh^BGW9BgY7a6@P4<;Kbi!Vl z&K!R?GR-nw@SaRpI(?9**-SU=o9T}CW_n=1Oiy0@6Ee**z3{$FZyb>6gZF3p^6Efj znq~UopiF=Kb7lYz&J5($2a#!(8H5jI2GbdeOtZ`o9F`f1f5{BP;hEw1NM;0%%#7s7 z$B@r&W)$m%$mcgRn)M>&^P3rii!)>CEI~fMnQ^RNM?Sxq@%Tn&0xr)?#5XgOa7AV^ zzLlARD>GB^?aVY>m6?w3WM<&%%uIYYGYi*bX5)LAIk+}67vIm!!*!YYSeRLe>obe+ zgUn*wkXecwGs|#OW;uSCS%I4~EAgYuD%_G;&3S%|e1FfZVf_j6{FYgZpJvwK_RM17-d`|rg z>#LE^sh?$i4e~klL;SrT(`k-;PW=+BTOglPza;CH$mi5AjjjE%c%5Gk+xX=%*RP0e z{mOW~UzOwAA)iyfI=1&~(zy}&ocgu#CciFr^mFiLzX7jyLO!Q{L+tD~!dv~u*u`(c ztG6MaQ@<(R?l;43esjFTZ^5hGkD+~UPW?9cN53uh^4sCvetYcgcffo6 zj@ZZVgn52v?CW>Id;PB1&+mqR^1EYyzX#su_rw8yFTCIHjRXBY_<-LR2l@T*&whU# z><_>P{ed{dAA}G2gK?-o1RwT?;xK<0{>2}T!~GHXh(8iX_@nSqe>9Ht$KYfBSRCb# z!^i#cING0pfAuHg7=IGx`;&33KLwxgr{Xw&8b0Yy$MOCQ{F^@$C-}4QDStLj^ylEy z{#=~o&%?j_^Kr7j5TEfE;S_%{KI<>Vss1v2&R>qx{1y1TzY?eWtMDKGYMkM(!593s zIMZK;FZ%0omcIdC@;BjZe>1-9Z^1eKRxI$h;aq<^{?p%q^ZcFoioYA@`+IPKzZVz! z`|wqNKQ8hQ;A{RtTL10|{bRVyKaOwsC-|*cj!Z58Bzereq5m*v$@kg4UD!%zM4xZSUapZS$}bq6xF{HnOqua3L? znz-Aq&8uG^Q_HW5U-~(8_99cuZ-D#!hWM4=2>1Jq@oT>c9`KuDk>3mt`pxkhzXcxh zTjIBVYdq|?!6SZKJnFZ@fBWt6nBM`v^E={kzY~7%cg7Qb7yOUk6;Jxz@CUy;p7ML( zkA6=)?f1f;{N8xR?}I=4eetZ{4}bCd<2io-{?{Lf=lwzWt3Mbo_(Sl2{!qN=4?`@2)2I~&Vo=iuepxmZ3s4=ZHnW5w)3tdw1Zm9vYnN_Ht$%`U@g z+2vS0y8>%uS7OcVDy)@VjkU9DuugU@*3GWNdfD}ulih&zvzxF%b~9d)-GU9XTk*>5 zHf)sLj=#(9z{c5~*fhJF--m0EX`kK0`uE6FS#~e$KOo;Rv-?*tXvl)Zre$X=u~1DQfu zJLcbgBU32rvYv%Zp=^frY-9>$vp6Rk(kVcuP&Q`$Ph<*ZOR#d<=wmdG*R>URQ%D6OJ6<^O*XV)@h3T11uUXDzmY;9bTtxM-E5%J7pW<>TDxA?;=wu+nDux$P~&p!S}OGab30<7G|6C>Uv}fWm~Y`fIK^8TjHi{ zYy2?V1~+Hh;z!wb9J2+PLfQ7XHQNC{$#$f_4VgmOPOP^hQz+XRcVxTJ`5c)-*{--N z+YNVTyVL&ynL^nf_+_>yoxR8u%JyQt51B&Q-nc*82fxntrGEgKLfL+JFxwx$$qv9n z*@5_Nb`ZxLMy619Fzchp6v__4W7(njU3M5A&kpC+?~y5#9l`oP$P~(s#2>Pw=$t~P zP!pb|U_oorD*%lktDqDR?nE6|Gmf*I%rGtmoXVJ4W3elQ2K!CVZ2c^C%sF$xx994tcq_5&;tEX7NMWmqy;j-`SX zSUOmVWr9^$Hdu|91#7Teuof>5)?xWzJyr-dV8vh)Rth#_jBs zw$rbHOrc;0)(UoF?O-?73HD&!U@z7S_F+!2AL|DPut9K;y;mSpC^&>y28Xdxa1?(R z9K*)Jal9%x!I4dnZ;Qc6Y#N-xYl73*EI5O|56)uq;2i!TIFBuY3wUjCk-aUEr_jK@ zgt-*BcwLaWgn##qJcR~XY#W4leGp^2pak9!l*INyX}mEgiyeY;cvDawI|dc;=Abfm z3aa8QL3QjL)WlnZ+Snzii?;DC1z@zG!ijtqw4W5F;S6%5D6gAp7#8hHv0M&g)Y6y^t`acnRKp9sd{xL_PdK8ZYq z2IKK>!33NTOvI;xNjNc>j86wsa8fW8{~k=k$-#7dCYXU!f|>YiFbk&!v+=oL4o(Z^ zlK(t1|ATq>k6=E|2o~ZC!6KX)EXEgur5rg6ng78uoEIE!77{^tmepn zBJ)33gRcZ@aelB47X<5ZVXy&T4L0GTU^BiJY{A9BR`xDI=6|paUk|q9vS0_k5$wd} z!ESsr*n=yAz4%tJ4_5~J@$KLMt_lv~JHa7b9UR7YgQK`6IEL>9$8l|N0^bi#;=14z z76zwreQ<_z_yBnd4bI}m;2drW&eQ)8ng78B{3y7HTLS)TbJoX!i(7*XeiCGHTM*)> zL5$mj68KqA5_bfp@$;Z8?hMM|uAn^b4l3doL1o+%RK+iY>Lr-}$ovm#;=Z6ZeihWE zzaN?ZK@J`W8emb-5Dx~8@SC799txV^w?R`p95lltL38#VMdp9d0*?hP@w=ck9uL~! z_d#1c5wzpT{~+@}XpcVx9q?4p5q}Ii;pw0={uFej_L1S}g)#LL1-ST3B5mxoiZd^i;=gwwEM zIGuB@gv|eN2J0%w{10ccu7=G2a2D$t$ovmyW36xwo!ZF!59hM3i_HIU9_t)r{)h8f zH$a|3!-d!|Ttw$eWd4VXS^o~1|KU>BS0VotB3#D$YGnS0%ki3U1vU#;;_t&%*gRZ~ ze+buLi*PMo8?IwlOJx3s>shx(=6|>W+k~6wFq+lSle+=$Ho za69Xpkoh0(z?;LJ*eTqNw}g9mwKFpR!@aD#AoD-mhh4+{czbvNyM+hwj_?r2bVvRv zM0gl`gh%nN@EHA`$ovnFv+jk=|L_F%4o}j#2burjDa;E`W8d%${d zN9KQcp7j7^{)ZQEV0aN92<=O4YY_5JAwm}ihZ%e@%;JzR#D~I|V}>I0KP@e^{RNW61muE8^o}Wjdpg`5#urF=2H&`N;eaYvL1OZ93zS z=l`%S>+#6^4|8xr*Z`jj8{)*U5k4I@#z|ol{Cn6GCx^}OnXoxd30vT^VN0AEw#Mhe zHaIP8i_eGcaC+Dt{}Fb;8DU3!A?$=R!_N3(*ac^WUGb%`8_o{9kj zD%_0w!!5ky*U0=2w_;Ja4G)If>3@UF|8NI>8}7uz;ch$gh%mYcnp6CkK?KE1pXMF#M9v^{3$$*XTmf1b9ffdhUYkkUy%79 zp2z=&7w~*|5q}N&ub5jGLKpuRX7FN|MTR)qQCyP$?kh6?qY~&vB{36~Mn5Wx*{B=_ zQF)FGk@+80#5k&qmqb;uL{uFwjcQ`as5VEILgs%|7t2IBST<^amqiV+T+|3Jj~Zk7 zs0mhxnqtMM8CHs#W96s?R*70-)u=UAi`roIs4e+5koh0A!&*^$tQ~d0I#EZg8+F2Z zQD=_KLFRwd1sgV;QDy|GEu2d|F$V$-M}Uc>)( zJo7&qfWMChV)JMad;fsU|7b8?8x6sh(NJs^4a3&aaJ()Wfo-CZm>Z44w$W(3J{p7V zqOo{GG!ENG=;ePo1-b%DVmD6MANWyG@Wy}6?y)TX5eknOzaxX zqJKLw|D)M>M>Ge!M|1JcXdd>6=Hp$_LhKnW!aqifu~)Pd?~ayX?`S#R6Rp5L(MrsV zR$k@+8O#zD~*{ByJw2S?lR!Du@U ziFV*a(M}v1?Z$_rJ?tHZ%>QUF4v+TXBhh{w5gousqk}jyI>eEWA@e^vjE_f0addPH z{~8^~G0_Rkk51y)=oCH?oyKv|8TLMjJpV^$@o&*NoDiL-{}eL+qYL-b}8n6 z`+oDzljY!u_vs02P2mBeXLX?#8^i_@cW_>ZVO&WI}F3sGg98CAs>qv|*- zs);W}wQ+V-7hjHYa8A?!3!;WNH)@3cj2h#-s0l8JnwH|30!7rn}xHsyD|BCwKzGwh`6%EAw(IEUf8jJ^` zAy^a*#e>l>&hr~&-bTY&e~Zl9XapXKM&i+E6#hFJjmM%f_+2y>k4NM1`)E9#h$i5F zqKSAinuI?@lkrqE1%HgD;^}A_{uE8eGtmtEIhu)QqgnV%G#k%FbMU{>Ts$Am!(XHM zcp+MdR=kKaw2}E1FJ@g4nQ!q@)|HX@7B6F66`61Ga;zS&pi={xZ}CdjwUGH1uVP&X znQ!rGtQW7LlY`8+crEJ&$b5^}v2KXWw|G4^iZ|fz;!W5%-i%kpTd+yI6|auBaePx` zzQx=d8ITjDd=IX;WG#^(I$FJRaB zBHkYJ|AETt7Q1*yoWbsK7VnHh>=DO!S6l*n#wGEOacS%om&Lo|a@adAkN3nCu}@qX z^Wv)5H?EHN#x=2DTpRxs*Tw#E4&E0xzyWbXygzP)1LMZ{K->fe#ZB?gaWfnoH^&F# z7C0nsi4VoCacJBIACBANu(%!mC2o(y;|};p+!05_o$%4PGmebA;A3%D92IxN$K&oe zI_`mgjeFvlxEJQfy>V>Z2cL-h;<&gUJ{kAN@$mrsTRada#DnmucrZ?khv3ukP@EJG z!@tMFadJEYpNU7}lz0?A8;{1R@fdtA9*fiBark^Z9;e3>@E`F+oDomL7vjk{GoFGk z##3=tJPlupr{nB+2EH86#5wUSEQn{9=Kqf^GT-7ktmh%mxA9!o^O0E>&%=fBd^)cp z&$sbH)~_MYxA7v@OOWT=crm^nFU4i?GJGRmj?3c}_-4EkSH!D0{w?JBHeQWy$7|@U zLY{BqwYWN7hwsMgaZS8|SKmYa`9{16-;X!rx_Ao~##?!HJu+|OZMY%cjvM10xGCPr zs~;lsHr|aN#e3*%LFR3|7q`ay@RN8yZi^4#r}07D9v{Nb;={NjK8l~m$8cwS9CyVh zaCdwXzlcxap7=C=8K1$u@mc&=d=B@;=kcrf0`8A5;@7cVhIt#iSQKaQV4THo;t&tT zF@77Dz{7D#JQA12qj6dMcU%sS#pUt4xFQ~pE93WZRXh<_$N$7N@nl>Ze~9bisW=CJ zj2qzTxFP-&H^MV<#d+_KR+1&#GjqH)h7d3op#)QeEz9QJ4i=VQ6l7brWRSr`UP;H& z#;aX^(({?$+A&;I5&&pgk(&ogt***#VrV68eEtWz7ndbJ6hp*DjJsvB%nTfv#? zTyU1!2F_OJgGyZhYSjlCl>uWl0M1bfm{vpJT$Kgqsa@b9Y6P6G3gDq?H+YyTfuB%g z;NfZ<{G_UYN2m+IBh_ATfw~AhN?i;tRF{CCQkTxbuGLT#ILIB;2S~ws=6NRQa2#k4B}VS zjqq*|zp8G6Zw2wI>Sp-4AbwTd0&Y{cA~_Glud3VN+d=%Qx*h&G5WlMKfbRhDtLjd$ zU)==`sJp>Ibq|=Rd%>ORK5$6g4-Tsbu*!n?RrMfz7l>a~4}l}M5|Io(3n?Go)S!;#bwP@Vy{@RXqn@q@D-& zsTaVD)r;U4)Jy1G0^(QI%iyKz74R3-tH>_{@vG`J_~jseRlN>gq2569OCWw#y$SxZ zdJDWty^Z|KAbwT71Aaxli{u&*zpCDYUkl<_)%)Oe>I3js)rZKh2l1@IiGF_=oBg@F8^?_#Jfy_^?_Depj6dKBC&d@2S<`qiPNK zM`|7TnCbxkSe*?%t~P*wqBem~sLkN_RX6yg+6w-uIv0FOZ3F*Ioew^(E&%^r^?}c* z4EPsn0DM*@wCFEE{HhuP|4L=S=hZIcKLGKoY6SdiRRCX9yTQLvCGaIR2L7!Y2VYhd z@PDfd!B^B?Z2u0#ud0i{zgHK7uc=GGe^8f#udBT2-E>KgEEbuIW$>N@Zpbv^jc>IQ7z1@WuuM({m#6Zo&{X5{aK_*Hca_<_0={C9O5 z_@TNT{10^pxL@4~M*1$WM&Avl^gUp$z89?1_ks2LesG3<0Bq0?f{pqiaHf73oTVQD zXX{5PQGxhX{TOKU<6x|xKt2b=uj(hkx%w$^o_-oUL_Y)0*Uy57>gT}2^z+~+^b6qO z`bF@Q`X%rP{W5r@eg#~hUj>iSuYn8o>tK_913X&434Thy1sGQ!I`T{Vc`@nvk0SEK|IH(ga(L>no1o8hm3l8gDU{;TSpVtL&m);HLbO{{MV_;s7 zg9TjyNA-o^ZoL;Q>WjdVz8Ea)OTaOGDY!>p29E2?!3li@SkYI4llm&~LVY!L_&Jbs zwY~=Yd3`N-k-iT3J`n$}uLr-NZvZdRH-cZ(H-VSxo55euw}6-FTfr~s+rZ29?cgu! zJHRXSo!~F&yTB{;-QX|ld%&yoz2KMiec;vle()>$0ZP0E#Q*CD!E5zH;IHV1kzWVm z|Mer__4-lp*YsoH4f=8L*Yy+NjrvLOYx*hhCjB({8~Pb+ZwB%I`dRQ6{T%pp{XBT9 zegXVV{UUgqehJOr0`dR)W$+vN74Q!ID)`&_HSkXTI`}*K4e&1gCiqSL7I?RQ8{6Ln zIaljm3Ph2RtVXz=^`81PAb zEcmDTIPfWbJosn&1n_BnBKYTe3HXd&I-lRng7|;E4E~oO{$HO2|0@vxuTO#h0L1_6 z)4;#hXCQeI#Q*D+@RvaRzdjTGGKl}zZSYq>&eeJ~_^Mum#g8F>2tw%^fvIH_4!!63*!Iv1@QMk{J-u4 z-`5!={|4g!^#J(qIzjRwi2v6^;C`J&5}7Q##_WQpK>WWM0qaZwtT(&C8Ky*P1Bm}O zWAK?E{@;v)vrPq5=0Z@Ly`V7{p%a6gtIfq=+FSz8HJ2iv2jc(DW$^hR{@+{<9%imU z@(B?CZ>|JCX|4i~Fjpf#62$+TYrvz-wMZ6%_|TAF*kreV{Sx#EXaKo za}#)+xfxt!ZUK)sw}L-wZbRn;5dUv(ho1=I|IHoX5_2cmV(tQ$n!8DD1@Zsp9{6$) z|8MREPd4`S>@+Wc8_bK~M)MN5$-E49nODHg z=2dWuc@69~uY*124REV@6FkSf1)gi(27Apr;5PFvc%FF=Jm0(zZZ{u*7nl#h&zb#T zpQ$+%|8Hu+jHy4A=Y}Bu-!y=OW+s@J*~oW-_~ z%|+mC=3?--%q8IM=2Gw*<}&aOb2<3i<_hpmb0zpY<|^o50^UH-q<^Tfjdsw}KCt+pzsMi2paYgMVo503R}Ug5NQB zfe)Lz!S9-T(0l~M|C@WkN6mfUADR2X$IJuZADaik$IU}%{t1ZxHxGl~H;;f%nn%Gu zHIIQ$na9CDGf#j|nc@=!gyaxWQc^%D{LHxgY1AN823I3gV3w+hQ4gS4(2Yk)Ei{?Lo z_r_(StP_=foa{73U4_@>zp{>bpUsOT+I3;x*DgKwLL!)l^`0`dQ5Ciu^0Hu$d5 z;J=s{e9xr8e>L;K_sx9p-^^j)2j+0_-^~%=hh_ozA7&xA-y97_@iAacd@PuXj{|Gt zLhv*S~cD-i!5p9Y%v3^0yYf^*_C!F1dP z&W%@t^Wrt&A@MqJe%t{b8lMdw7Hn(fANZ*_gZvl}{~r&4$Hocx>39e{F3y6B;$7hJ@d)^{aREFb-VHX#C2UUw z@&EA{xFjA2TjC11G`f^G42$j<`t|MB%;dwc`9CcY6|8{Y)3i*E+k$G3nT z@vY!zF^TV2NrZ(1HSoejx%j=@lnxnt-N#3WokN?$!_Zm+9HO`Ybrx^dYzwU!s zLXYC@pbL2`=-JU1YBum0;cY^@qikx7x802J=9AsgdxVG7j_`(!-MsT+H}9Dk<2?@} zyrW?^?^+n+Z3#BZp`_f`H`3A)l>%{+r9lF5lGY%BjJ8C5#lm<ocX{rP1h8Ta%D+OKYe}YbZQOmIg^{kU&-!a)siu)~F+21_ujcRHM~q-5T{5 z3c1#(t(?iXMpO_SZS}>sMjMlf^4eS>Q*MoRx*(f}ORogUM96TN&1zXRy3Cs|n=)VK z%$G%&2R`8pmV52xPGz~MERRb0LbjCjjT8o3PdzPKv7sFnLcoWU@QVj=nrHls90icM3T#l^bh(1i-{vcz9OL>KFlDuSq3r`NHGvP z+*U(EQOyL>AIMN3MIp8gLBb&UhI`Tl~7X0x4EWFk)8vhI%p- zB*j4bU1qKj7s>RyST*#7rQ=dq7mhIL9bsDg9D*Q7n0;P15N5tDQ$joLfiSjC!oYbO zA#UylNf7uro$XZVIBzUOZ0HT2OCbF&o(W+f)Xdukf`yZ?27SY(1YS2Ju_&t&-=Lt& z!nG0>qa&He3EaNi)D~XJ0-OJ7)XC0tT~s&n)Ce_ zB=`wu6bOsXNmz8=C=hDzbOT|ndEG!*Yu<>^4Vbr~#jch@?CcMOwdQTA#M=hbVCm!Z zmCGRz)|^wZ#IB!^M0fi31*0Hgt+}LPAUHWcVZ2QcWQ5o{2f|wO##Q148HUTZ&lA>~ z*A=p}m>KYUojU>aX9vdkMBNn*TO*4($>ca1v2&IduS@btk)-xyXJ#x{?oN`ys5D$C zcaK^o(4FBBkZj20Geg8SWb@gPv61#{iF3|C(#^4}h*+xLQCgoV4vrJA9x1BkYqLpi zFj|rM%&xw^voZs_viTt|>OWYtk+aC2q-{?oo0G%d!3skMi#RJBEG!-@;)rmNurS(p zR<=COVW}-Y7`2U#CInK;p<-bSnor8o+Cf?u?JN{&A-%%6D2WDrH$>}_a#uE=m+Edw zb|%GyzKKeOu_6I!aspjl7)+uygF{J_2uP28q@i|dd{owMPnuCTJ(f$NZhQQ7LlO-p zxpJl_JCZ~@v&B-muTUIJihZ2@5{exy_mw3{%Gs1pIKPhcX9=BcPeDYCxSZ&0q%4wi z2y8BL-A(nd(@8z>Z$>9ffnE2Ht@B+m)5MBx@!vrU(2V16JoS{lmWNhma~&?N-I>aCtIGbxHVrI zD2yh94EL07Po_wJuPtUqlJP=u*Hl7Beu{?-*V2%4l46O4cyMAzo|(n~keJCGq}81a zj1@UEcO}JTZy1xm%K4X2P;*>7fIQml&1_s!s^0krI;NWo|Y8Gg;tfhpqjGj zVqYF<=B5IV5mKk|g1sERl zE5a^sDVPqWX_Zr^RM>&f7Mti~u$w^q4j&MQ>#ReT8a&&SkoQu3sAe?A|#DyG3 zylx;IB%FjpfhUCaNa5pb@lIfgw3vA)0MTP#)M}w7oW+XeXAyeAr{X@j@W1ZbRi#@}c{HCJ4 zl_k>7q*R(N>dNGk95*|%xrkdg)tW3GBr-CVvz6)KglGHD5_jT@ws3eUj6?&OGHSUZ zl;e^d;~bQZU_62b#3I=zORE=DWX2{S!#uTe=r zZiw0YVNoeNl$WEU9Aj)XDW82G$Oy=7y`-3DpOQ@5vwLupa6b=4wl$wARyHO>b}QlF zQz~ckj!(bG6iyss+*v5>vZoD+g#EJ39(yIj?y>$d=VaObs?$H&>CeSeH{Dv>vqg7S zwl~I#B_AON?xWe;SH_Vn#+_O<8t#il?YZ2>LV2y6 zIoC|c2~H}vCSNXAx(b}?4o+(;4vmd)FKyFUdDBh?c_^8(3u#jl8Ka(p?f&zUVj-Fo zn7Rq;DF+hn$VP*l`lHp{h8c|pERN+lc8x}3qtTj)(J0~Lrg>?%bf-T*Zz@WJB6DLU zdVr`bkfL*{mS)(jRV1FILF`h~dgT@ZM}1-_H8*ZFJ+ZTozjJa$0=t-4_e4Bjje3T1j-BRgCGzF+o>>;-a6>A>$!Xbp)p>!N`fx;^qg)WXn0*AZT+Pv!^hun*oc$j zCPOvep3My93%KwpQ8;?YHAb;8+MN{laD8312+85{ubS>I;h2a#-9X)4SN09^1S1h^ zd+S0jZ%b1bw3$)ve-!fBOulcA+nD?0+PCB`a!XOT(vVYci8FmBUy@5P7v%yuJIH2b z_h`4>mx3b<&7Iaf?zM0s$`xFtlr6CV4ipQe!p`!6Vw)FrmxnU>lHEE>Y^eEiCQH=! zVc5YIPhIkrs!u~iy%e<#02zTUmS)*q#Fe7LSlK?iq6_2^76FwgO>Jiwh6`?Y`Rb}N zhNa(kyYS``u}_eo6Q!t9@<+p|tuorw|9N&tskz$@Gr4XaEFmempy>8jp4=d7PuMm& zA#wc|4VLM`onE4T%s8_sK_+j{IOU5xJX}Yq>IV@vN1O zI^FRJTQ34zt!n5A%gLp%Rvcj=IKotSHi0mCy>1{(DlZ|FfnilRn?RTdULz0&%IR8S zJ241?F-ywkLg#v8AvXUYp*y^e3&tmW7zj1FsCz%Wcf9L0kFDM9DkKQumz5xcGPo1EI&gNg(uyli&vYfCWL2P$QQ_?%q1+ z;xeoe3Dp#@8zk)Metd#%kl-@BZk6~ZS1oK0j8FP_AQM8QZ!B>W$Lp|_J7pY`Q}JKq6=w@(QKm*I_qF6R%IZy>mgpiktCK?$j+zuILA3}EW~zXkZ=HVNvtzZe8?He8wJ9$ z@+yH$_}rYBE_cl(l=^V0@Hqs+vI;fxN$k*G$A>JdAn=5})=5}ajxd0>APH?jLBKlm z#(}WTym6HTBSzo#Xdo;ruNz3km*d22D6V~ku6>@c%3O*il7!RpSp~w3@;&d3g8;wc zBsdL6SbyF)5H>E~(4ZS6tU9kdMZ7LE*0;|SX0X?tA}-rWZ^Aa{Oaft2c#}Xlr#hQJ z7!)U=gS~DbEC{C?2<`E@flw1~6m&WEx;g}cMpb2!Z}!d`jFKqF_l`4BPn6{w$Vn8P z)?Sr0k>aFHq>V)-;!ROM=}pmS#0_LpMPm<=#Zk0vH9C^p2J$OM!&X<=faTn?K+f|4 zUTw=RM8#+sHHaFdgCT{pDs<8(s{tCq*_B>#dPk^iEM2JYHM<5AQx z-D2V=*6hI2LQhr8K4mJW|EoIBmj0FTE=JM5tEOi%LASeM|F0W=V0Bz7DHMDhlYUpx1*_S%K zP>+w-3;kd%Hn>Grww;@2@fN7Z|67mJ7fgG;FGM>cJwjgjFtyWC<_ME+B1qXMby`|3~TE_x40}O*J)*wM|h?JtUo$ zsHtyC)ff=LN{gFk%%3|}lV0S4W*4-$V7UucxL}nF+Fh{T1)VPFazT#^dR?&H1v^|Y z?1Ity`RSxa@k@_JJ}F`s)To^eM_TDmhDKi2?f(5_y^l*(@<(AAif)P;rRnpc#wZfq zdC{zHoQVWg5=iTg!MD3an>- z?0dAPekOw=WL`uvzcp%TN~PvS^Y{-wYBW^W)L#2 zqOMmoEN~@$1bc}0eC$74KbQK6hS{jlHvWl0_1~<986uQIXVOSV=QhOYP7zK0NkfL| z#hI>3sRlbJ>GlN;ZpqqpYvO7)z>XD@mHA|hFN5Too4WW_ zS9aj+gzri0O7bfQ22SZ;x@_mpfx*_n!NHSwSwc^0PWP_tC^_*>Q@&5bH#BN$XDp~s z&8R0}H8s}GNH0pwND(yiY2kA!pB1SYnqU>5c0TL*bn@xq)5E8i&vrgL_zb6J%p{nQ zjiJ6?yqm*RBb{Xj^@ym^x*nMhb;p3Skmu8zwbGlh_AxJmdT$*J@lbHmRWV34)7a$%@>{_f{OS(nu z2+}RquBE|donB-^siVyY(^|#JlHWPFyI=#ZSV1>3>t|B|-DxxHhcGUpxyENS{VLMDJ#&VTB z2}EuQdW0-uNmvvTAU0tU3ARi@?5Vi;^co<-rvse=J+@QHRCY3-5Hb zxf~xZvGl&nr8am*DU?9ume@i&#fK1Y4hayO&`g5Ov{RZ+)g+*%wr-uOX{K8#vRY=! zXm`p#Tcu80r7k7eb|IaZ8P%n`&`VF)47;S3JrqKpT}g8!29sLi@WsmdeW@kHR;EX} zgcgxV0>mb?kYF>VS7djit0knKuGZ{h)D5R;Yv1W=j|Ho$k-n8ZswUmr=*FwpR_W5T z4SW4C_L5A21dc2cVv7{SSjNP{c40eYZn5i0zT0iSo$2k8{dS_{L*PiW5S!0-sas>Z z*H*EYc}1?$KY(6`rt?U!MHk4M`e94L~=xuDY^M=aX za<;p2$Wmscl7RIpfoMkT(+pT61J^@HSJ&b?I3yux5uYG}?NUDkJ0ujcUR0%W>t$-| zXr>)?5h~nUt(^=^k~+=?6iA(zRJLb2UBh}r$*z}lyHGo&(w#!>j7ay);1y#0iNr4W z^a`PN*``-DaDen{N{OwFV@MYwx7cZsY}obF!;RQdoYdK!ODvH&r)Ih&5{21{SZ3=% zchvbt)w%jg`|7-!rA|-sV@_hOqk5k#fx_My$^zyUllD(^eCsKTaSQ1A?s-Wd}mmJSEr^tR>to zQ(8iqnrJfLV3rU{%8o`^Q>2K7ln-$>J4g_XW_rhl%yQ9W63b311c{_Tnyo2rFGFn*a-3_DYnvHOcC9r^ zAph`|lBL9@=Q?dJqaqzm`#?G(B~cblO=@;DBfXrA8q=q$rl?`sp~am&-T8&9E3T84 zqhK%h!U-h9;q(9n$*t4pCd=1xE)HW3u5o>=4p)tFdU>V{O-q^<$qIp0h?Izw#M%Wq1$t&Ivb&ZIIvdey6fKB&QDD2k4*t7WE?fCKiX&~* zlREU=VrFz>Az%IWZO<^@>M7Nrm$G{6cw_eBjca=NS(N=@S#vm??%{Mw4(5>RuZZ}q z-DoaT*~qsQ(qhsSY?@Hze<5jHM~WO}c{42UrsC_zNrs)6tCEo;#R`9MS`Fd>r#A2Z^(zN=RCizx-Q)xKEFPob9+FR55&hE|=OXW%~ zY2w@Le5o@jlE+}e4OuCyWpS$YNC1@;VuwW3O_B2qLXVPy(O{VapsZj)?)6M z;c|Jjbo!DdL)r51SpVXI!pM@)f+b?tneC4_iORby>i7ty&pyoy?03m4E_zbBjW6(x zZ*WhE`PofsW=Ec{m}dDon5cCg@>8kFIQ$g3eTQ-VuhjT2N$c$Q?Kx;iv+ej=IQ5Cc zUyo`wbV*UPDOz!3U9{q&x~hV-j@NcX$MN|ZX&*w*^Z^`N<+ba4Rhtplf6xmz0VFwoB!g3rqaOSTgOJhzV3p zUpzY4A9b&9Ydz`Y$QSbC@A*P#NcLa4K7IXjgSE9o-+1ALH>qs+Yxo+xDZ~y8-=C%z zMSZIaMZV*{f$ud&Bm8=f?`YcJE_j>$$CAxQn|xq?{}cOf)&sm1l@@)1JNySW%&vZ( z>l`c>z4d&0f1@ti=iW?XP50FLsZA%A@)Q_qhJ%B z8;WfUn=1cTnD6m(u;u&v(`;I(RVyC}rJqiZH2N|!;n9XXNt~+TN6T1D%X0jazt8cG zB=!!<7@`&Yx{7v>(l0Vv?y*D^-A=!4KtrCDHZdQhujEOljDYm5^p%t?HvK%+E8D)7 zk&2?TY~42b{A315DWPo=vrk?r_rT|;)9dK^zl%I%Ovda(m#Nmtd^pfn%58}_0!9bg ze6%O0`Y~drNuRgTt`hAVp&dE<;N<^ofKLNzj Br^NsO diff --git a/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.pdb b/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.pdb index 1eaadd23e29b9d1685d79dd83cc16436d756bcf6..896e41b0980de8be6bdce8384f09554296d8418c 100644 GIT binary patch literal 142220 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Μ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 literal 140892 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 A(EtDd diff --git a/packages/cultmath/unity/org.gamecult.cultmath/package.json b/packages/cultmath/unity/org.gamecult.cultmath/package.json index c09bf6bb..29c93763 100644 --- a/packages/cultmath/unity/org.gamecult.cultmath/package.json +++ b/packages/cultmath/unity/org.gamecult.cultmath/package.json @@ -1,7 +1,7 @@ { "name": "org.gamecult.cultmath", "displayName": "CultMath", - "version": "0.2.0", + "version": "0.2.1", "unity": "2021.3", "description": "Precompiled CultMath numeric primitives and matching HLSL semantics for GameCult Unity runtimes.", "license": "MPL-2.0", From 111b918ec06c5b96563cc970124be3442821ffcd Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 14 Sep 2026 18:04:04 +0200 Subject: [PATCH 0009/1002] Make CultMath normalize follow dxc and release 0.2.2 dxc 1.9.0.5402 lowers float2/3/4 normalize(x) to x * Rsqrt(Dot(x, x)), and DXIL.rst defines Rsqrt as 1 / sqrt(src). A zero vector normalizes to NaN and a NaN component poisons every component. CultMath divided by max(length, 1e-20), which returned 0 for a zero vector and a huge finite component beside a NaN one. - math.normalize(float2/3/4) is now value * (1 / sqrt(dot(value, value))). - The HLSL mirror drops cultmath_normalize and its epsilon constant: it now equals the normalize intrinsic, and nothing consumed it. - HlslSemanticsTests pins zero and NaN normalize, the rsqrt bit pattern, and zero length/distance. design.md states the rule and notes that DXIL.rst's Rsqrt special-value table is a copy of Round's. - GameCult.Geometry's iso-surface gave degenerate triangles (an inside vertex on the isovalue) a zero normal through the old epsilon. It now guards them explicitly, with a test. - quaternion normalize keeps its identity fallback: quaternion is not an HLSL type. - Bump to 0.2.2 and rebuild the tracked Unity DLL and pdb. Co-Authored-By: Claude Opus 5 --- packages/cultmath/README.md | 5 ++-- packages/cultmath/docs/design.md | 15 ++++++++---- packages/cultmath/shaders/CultMath.hlsl | 5 ---- .../cultmath/src/CultMath/CultMath.csproj | 2 +- packages/cultmath/src/CultMath/math.cs | 7 +++--- .../tests/CultMath.Tests/HlslMirrorTests.cs | 5 ++-- .../CultMath.Tests/HlslSemanticsTests.cs | 22 ++++++++++++++++++ .../HlslSourceCompatibilityTests.cs | 2 +- .../Runtime/Plugins/CultMath.dll | Bin 299008 -> 299008 bytes .../Runtime/Plugins/CultMath.pdb | Bin 142220 -> 142220 bytes .../Shaders/CultMath.hlsl | 5 ---- .../unity/org.gamecult.cultmath/package.json | 2 +- .../CultGeometryIsoSurface.cs | 4 +++- .../IsoSurfaceTests.cs | 17 ++++++++++++++ 14 files changed, 63 insertions(+), 28 deletions(-) diff --git a/packages/cultmath/README.md b/packages/cultmath/README.md index 0be46738..0f9a99fe 100644 --- a/packages/cultmath/README.md +++ b/packages/cultmath/README.md @@ -31,8 +31,7 @@ shader semantics. deterministic value-noise primitives - `shaders/CultMath.hlsl`, a canonical HLSL mirror include for shader-side parity. HLSL already owns `float2`, `float3`, and `float4`; the include - exposes `cultmath_*` functions for shared semantics, including CultMath's - safe `normalize` contract. + exposes `cultmath_*` functions for shared semantics HLSL does not provide. - `Voronoi.SampleTones`, a C# batch surface that calls the Rust `cultmath-core` native kernel when `cultmath_core` is available and falls back to the managed parity path otherwise. @@ -59,7 +58,7 @@ float grain = math.value_noise_bicubic(math.float2(12.0f, 3.5f)); ```hlsl #include "CultMath.hlsl" -float3 normal = cultmath_normalize(float3(0.25, 1.0, -0.1)); +float3 normal = normalize(float3(0.25, 1.0, -0.1)); float rim = cultmath_saturate(1.0 - dot(normal, float3(0.0, 0.0, -1.0))); float glow = cultmath_smoothstep(0.2, 1.0, rim); float grain = cultmath_value_noise_bicubic(float2(12.0, 3.5)); diff --git a/packages/cultmath/docs/design.md b/packages/cultmath/docs/design.md index ad8409fd..f43f48e2 100644 --- a/packages/cultmath/docs/design.md +++ b/packages/cultmath/docs/design.md @@ -60,6 +60,14 @@ That makes these HLSL rules, not options: zero; numeric to bool is `!= 0` (`fcmp une`, so NaN is true); bool to numeric is 0 or 1. DXIL leaves float-to-int undefined for NaN and out-of-range values, and so does C#; CultMath does not pin them. +- `normalize(x)` is `x * Rsqrt(Dot(x, x))`, which is how dxc lowers it, and + DXIL.rst defines `Rsqrt` as `1 / sqrt(src)`. A zero vector therefore + normalizes to NaN (`0 * inf`), and a NaN component makes every component NaN. + (The special-value table under `Rsqrt` in DXIL.rst is a copy of the `Round` + table and contradicts that definition, so CultMath follows the definition.) + `length` and `distance` are `Sqrt` of the summed squares, so a zero vector + gives 0. Callers that can meet zero-length vectors guard them before calling + `normalize`. - dxc demotes double `frac`, `exp`, `lerp`, and `floor` to float. CultMath's double overloads keep double precision instead: `frac(double)` is `x - floor(x)` in double. That is a deliberate divergence for CPU simulation @@ -75,9 +83,7 @@ GPU. Because `min`, `max`, and `saturate` return the non-NaN operand, some functions turn NaN or infinity into numbers: `smoothstep(a, a, a)` is 0; infinite inputs to `smoothstep` and the intercept helpers give numbers; the bezier, `smoothstep01`, and `smootherstep` functions return finite values for -NaN input; and `normalize((NaN, 2.41))` is `(NaN, 2.41e20)`, because the NaN -length is clamped to the epsilon and the other component is divided by it. -Callers that must detect bad data should check `isnan` before calling these +NaN input. Callers that must detect bad data should check `isnan` before calling these functions. Deferred until a consumer needs them: `float4x4`, `transpose`, `determinant`, @@ -115,8 +121,7 @@ itself: the test proves the composition in the text, not the intrinsic rules, which only `HlslSemanticsTests` pins. Where HLSL is silent, CultMath keeps its own decisions and does not defer to -Unity.Mathematics: `normalize` is safe (divides by `max(length, 1e-20)`), -`hash` returns float, and `Random` is CultMath's own xorshift32. Engine-shaped +Unity.Mathematics: `hash` returns float, and `Random` is CultMath's own xorshift32. Engine-shaped helpers that HLSL lacks (`float2x2.Rotate`, `float3x3.Euler`, `quaternion`, `snoise`) enter only when a consumer needs them, with their semantics stated in code. diff --git a/packages/cultmath/shaders/CultMath.hlsl b/packages/cultmath/shaders/CultMath.hlsl index 365705f5..afffb2c2 100644 --- a/packages/cultmath/shaders/CultMath.hlsl +++ b/packages/cultmath/shaders/CultMath.hlsl @@ -11,7 +11,6 @@ static const float CULTMATH_PI = 3.14159265358979323846; static const float CULTMATH_TAU = 6.28318530717958647692; static const float CULTMATH_HALF_PI = 1.57079632679489661923; -static const float CULTMATH_NORMALIZE_EPSILON = 1.0e-20; float cultmath_radians(float degrees_value) { return degrees_value * (CULTMATH_PI / 180.0); } float cultmath_degrees(float radians_value) { return radians_value * (180.0 / CULTMATH_PI); } @@ -171,10 +170,6 @@ float cultmath_distance(float2 left, float2 right) { return length(left - right) float cultmath_distance(float3 left, float3 right) { return length(left - right); } float cultmath_distance(float4 left, float4 right) { return length(left - right); } -float2 cultmath_normalize(float2 value) { return value / max(length(value), CULTMATH_NORMALIZE_EPSILON); } -float3 cultmath_normalize(float3 value) { return value / max(length(value), CULTMATH_NORMALIZE_EPSILON); } -float4 cultmath_normalize(float4 value) { return value / max(length(value), CULTMATH_NORMALIZE_EPSILON); } - float2 cultmath_reflect(float2 incident, float2 normal_value) { return incident - 2.0 * dot(normal_value, incident) * normal_value; diff --git a/packages/cultmath/src/CultMath/CultMath.csproj b/packages/cultmath/src/CultMath/CultMath.csproj index 1c2bfe24..efa883dd 100644 --- a/packages/cultmath/src/CultMath/CultMath.csproj +++ b/packages/cultmath/src/CultMath/CultMath.csproj @@ -8,7 +8,7 @@ CultMath CultMath GameCult.Math - 0.2.1 + 0.2.2 Clean-room C# math shaped for HLSL-style renderer code. GameCult README.md diff --git a/packages/cultmath/src/CultMath/math.cs b/packages/cultmath/src/CultMath/math.cs index f5c81095..7e8757ba 100644 --- a/packages/cultmath/src/CultMath/math.cs +++ b/packages/cultmath/src/CultMath/math.cs @@ -213,9 +213,10 @@ public static partial class math public static float distance(float3 left, float3 right) => length(left - right); public static float distance(float4 left, float4 right) => length(left - right); - public static float2 normalize(float2 value) => value / max(length(value), 1.0e-20f); - public static float3 normalize(float3 value) => value / max(length(value), 1.0e-20f); - public static float4 normalize(float4 value) => value / max(length(value), 1.0e-20f); + // dxc lowers normalize(x) to x * Rsqrt(Dot(x, x)), and DXIL Rsqrt is 1 / sqrt(src): a zero vector is 0 * inf = NaN. + public static float2 normalize(float2 value) => value * (1.0f / MathF.Sqrt(dot(value, value))); + public static float3 normalize(float3 value) => value * (1.0f / MathF.Sqrt(dot(value, value))); + public static float4 normalize(float4 value) => value * (1.0f / MathF.Sqrt(dot(value, value))); public static quaternion normalize(quaternion value) { var length = MathF.Sqrt(value.x * value.x + value.y * value.y + value.z * value.z + value.w * value.w); diff --git a/packages/cultmath/tests/CultMath.Tests/HlslMirrorTests.cs b/packages/cultmath/tests/CultMath.Tests/HlslMirrorTests.cs index 445ad255..818fa3ed 100644 --- a/packages/cultmath/tests/CultMath.Tests/HlslMirrorTests.cs +++ b/packages/cultmath/tests/CultMath.Tests/HlslMirrorTests.cs @@ -31,7 +31,6 @@ public sealed class HlslMirrorTests "cultmath_smootherstep", "cultmath_lengthsq", "cultmath_distance", - "cultmath_normalize", "cultmath_reflect", "cultmath_rotate", "cultmath_csum", @@ -54,8 +53,8 @@ public sealed class HlslMirrorTests Assert.Contains(symbol, include); } - Assert.Contains("CULTMATH_NORMALIZE_EPSILON", include); - Assert.Contains("max(length(value), CULTMATH_NORMALIZE_EPSILON)", include); + // HLSL's normalize intrinsic is the contract; a mirror copy would only restate it. + Assert.DoesNotContain("cultmath_normalize", include); } private static string GetCultMathRoot() diff --git a/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs b/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs index ac97f92f..665f2c02 100644 --- a/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs +++ b/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs @@ -187,6 +187,28 @@ public sealed class HlslSemanticsTests Assert.Equal(DoubleBits(-0.0), DoubleBits(math.max(-0.0, 0.0))); Assert.Equal(DoubleBits(0.0), DoubleBits(math.min(-0.0, 0.0))); + // dxc: normalize(x) is x * Rsqrt(Dot(x, x)); length and distance are Sqrt of the summed squares. + static bool AllNaN(float4 value) => + float.IsNaN(value.x) && float.IsNaN(value.y) && float.IsNaN(value.z) && float.IsNaN(value.w); + var n2 = math.normalize(float2.zero); + Assert.True(float.IsNaN(n2.x) && float.IsNaN(n2.y)); + var n3 = math.normalize(float3.zero); + Assert.True(float.IsNaN(n3.x) && float.IsNaN(n3.y) && float.IsNaN(n3.z)); + Assert.True(AllNaN(math.normalize(float4.zero))); + var nanX = math.normalize(new float2(float.NaN, 2.41f)); + Assert.True(float.IsNaN(nanX.x) && float.IsNaN(nanX.y)); + Assert.True(AllNaN(math.normalize(new float4(1.0f, float.NaN, 2.41f, 1.0f)))); + var skew = new float3(0.25f, 1.0f, -0.1f); + var inverseLength = 1.0f / MathF.Sqrt(skew.x * skew.x + skew.y * skew.y + skew.z * skew.z); + var normalized = math.normalize(skew); + Assert.Equal(Bits(skew.x * inverseLength), Bits(normalized.x)); + Assert.Equal(Bits(skew.y * inverseLength), Bits(normalized.y)); + Assert.Equal(Bits(skew.z * inverseLength), Bits(normalized.z)); + Assert.Equal(Bits(0.0f), Bits(math.length(float2.zero))); + Assert.Equal(Bits(0.0f), Bits(math.length(float3.zero))); + Assert.Equal(Bits(0.0f), Bits(math.length(float4.zero))); + Assert.Equal(Bits(0.0f), Bits(math.distance(new float3(1.0f, 2.0f, 3.0f), new float3(1.0f, 2.0f, 3.0f)))); + Assert.Equal(0, math.sign(float.NaN)); Assert.Equal(-1, math.sign(-0.5f)); Assert.Equal(new int3(-1, 0, 1), math.sign(new float3(-2.0f, 0.0f, 4.0f))); diff --git a/packages/cultmath/tests/CultMath.Tests/HlslSourceCompatibilityTests.cs b/packages/cultmath/tests/CultMath.Tests/HlslSourceCompatibilityTests.cs index ca4584c7..c6ece795 100644 --- a/packages/cultmath/tests/CultMath.Tests/HlslSourceCompatibilityTests.cs +++ b/packages/cultmath/tests/CultMath.Tests/HlslSourceCompatibilityTests.cs @@ -91,7 +91,7 @@ public sealed class HlslSourceCompatibilityTests } Assert.True(mismatches.Count == 0, $"{mismatches.Count} mismatches:{Environment.NewLine}{string.Join(Environment.NewLine, mismatches.Take(12))}"); - Assert.Equal(26, compared.Count); + Assert.Equal(25, compared.Count); } private static int Components(Type t) => t.GetFields().Count(f => f.FieldType == typeof(float) && !f.IsStatic); diff --git a/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.dll b/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.dll index d3c4a62fa9d4b99e1c064d91904c32608a6df662..3cfc761833b884bc7c9906223f7124db65f46828 100644 GIT binary patch delta 3425 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 Ys>F2T@M)De#j<*GAf{TpYYdC}KTluauK)l5 diff --git a/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.pdb b/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.pdb index 896e41b0980de8be6bdce8384f09554296d8418c..169a71177222918626f6f0725af26bfb959832cc 100644 GIT binary patch delta 1469 zcmZY7dsNe97zgloKNxHY1R}~s*@keUF@(f{II#Kx;Dr#Hd7h2rh-Ez?gzNjy)~#>7 z&RXZq*YB7)pfR7zUL3^E++r_DUD}fNqy5{PhdcWtc5V2iwz9P|jg?}jzV9*?Gc=Of zpRU-Kmy!qhtKOTLUu(k9>BgFuyOi&@hq% znyKd6*rJ$wZ7-Jh>>XL47M|q#uFnXfciG!3rxm3;Zb-FF0c>UC?&jQT{xHYGC4P8o zx1Ze0aPfLXFXfrNXSXFfZdl>GsijsSd(*P+)pxSjD9qA1t%SEq+$+<3f5ohl*W{cz z`}1Vol>EqFd#X>QCmw!nw711rG=66w?cA~6m1z|p2RYUZ9Ng$6S36l2?mY9Ws;kGO z*-|p8pFHm_d_1p?*KMkrcx7LqR_tZAlUCIy=N4Ye?0;}8`$GJtC*#E*y`W3Ta7k=0 zqAx?+1BM;~ZMwxyolwY<`IYGP7bT0L9vo_J+?XI5?udtmp{D-I*URkPgIQ6=l2 zHuW<4s@TzbH?df813XLAA};n(OA!?RIC+7HvzSfwb~dcpoHoKt^;zV5F63O_=ymrb+Dex z9OO?ADO@*Kgj`{xHE_pskrc8eTmP4A<8tu~7b&04R`|iC9t3P5)?<_ek^E->2QE3fRa$0hr&VP%b+9j z;1ILt(-23sbwC1o67ZmuX_OHqU?2+Mb7ql|SyWC8fQktG1>x`oQ3jR7<#2R0&conK z;(RzR!u1lUAqK(;;(VwTscns~n8w#cKd2{9EQW80vG6U?4;q;KB$IzfTnvptc#jC0 zh^wKQxENZP{1lU$hPwl`$pTF$G=G3UzTSJsDw~_pD3)tx=W1DY&`cO3)LhmrAM@bkO~aL*maA>I+V9wx%B1ln zE7EI{N@r!6);AI(9TYcjc61lr9U3p?il;7(wmm2r45}WuFm2`K^mzVd^+TPg|4-Yj zhsl!TMkh3fV^VCj8$?Rq^DKMW&Q;_=WRzGqBD#Oww5Um7oY*pxWak)Eu*7$=+(Fpu z_{c2crOvGdon2}ltdd!VY&j}Bu;}^tx*Sc-bIo&5s+nw3H zrc=^cBW;`wtlnRID`ONEbRQ@@zsid6kLyj%97`IQAD^p>3ZCm-RvKAXdHy=S*G84xQQDEQ%=Ex-6MHIsy0a5@ z6^;Pm%AQs{ou}qM?$(Jl7ClJ-^K|T#NI38-D@8yz{ zY$oDTMX8~KPtI(lIxNUn?vy-o7VAvD#@di`QYyEJCUp^bLC(|uL;E(;kT1~wi*+Fv zKcR9LK(PiHv_$MK9zs4~qSiPNyBJ<-3jwi$Ay$h7go`qQZGt!iGDc(`^+X7fDv+`1 zMa;X!7PbWkAr5TQ2Om;>egrZkJO7vLX0xdtHcEWgbKt#%x-~mEw9ZVgHDoCDKd0Y} zJ!G$@s;-cO--H(&!E%6fqjEj~-n&6ARt!h6Yv5P_RhL2@HUaXn0yyqL0Q6D~1X%*t zsbI-==%*c|WT(I=o4jU^kUvbSYn+I?48A&DNNoLB;!n+S&kdmsr417s@^G<>gZ^KT S8>xOHBwQGuY6Z@O!sI{SJ;9m) diff --git a/packages/cultmath/unity/org.gamecult.cultmath/Shaders/CultMath.hlsl b/packages/cultmath/unity/org.gamecult.cultmath/Shaders/CultMath.hlsl index 365705f5..afffb2c2 100644 --- a/packages/cultmath/unity/org.gamecult.cultmath/Shaders/CultMath.hlsl +++ b/packages/cultmath/unity/org.gamecult.cultmath/Shaders/CultMath.hlsl @@ -11,7 +11,6 @@ static const float CULTMATH_PI = 3.14159265358979323846; static const float CULTMATH_TAU = 6.28318530717958647692; static const float CULTMATH_HALF_PI = 1.57079632679489661923; -static const float CULTMATH_NORMALIZE_EPSILON = 1.0e-20; float cultmath_radians(float degrees_value) { return degrees_value * (CULTMATH_PI / 180.0); } float cultmath_degrees(float radians_value) { return radians_value * (180.0 / CULTMATH_PI); } @@ -171,10 +170,6 @@ float cultmath_distance(float2 left, float2 right) { return length(left - right) float cultmath_distance(float3 left, float3 right) { return length(left - right); } float cultmath_distance(float4 left, float4 right) { return length(left - right); } -float2 cultmath_normalize(float2 value) { return value / max(length(value), CULTMATH_NORMALIZE_EPSILON); } -float3 cultmath_normalize(float3 value) { return value / max(length(value), CULTMATH_NORMALIZE_EPSILON); } -float4 cultmath_normalize(float4 value) { return value / max(length(value), CULTMATH_NORMALIZE_EPSILON); } - float2 cultmath_reflect(float2 incident, float2 normal_value) { return incident - 2.0 * dot(normal_value, incident) * normal_value; diff --git a/packages/cultmath/unity/org.gamecult.cultmath/package.json b/packages/cultmath/unity/org.gamecult.cultmath/package.json index 29c93763..9b13645b 100644 --- a/packages/cultmath/unity/org.gamecult.cultmath/package.json +++ b/packages/cultmath/unity/org.gamecult.cultmath/package.json @@ -1,7 +1,7 @@ { "name": "org.gamecult.cultmath", "displayName": "CultMath", - "version": "0.2.1", + "version": "0.2.2", "unity": "2021.3", "description": "Precompiled CultMath numeric primitives and matching HLSL semantics for GameCult Unity runtimes.", "license": "MPL-2.0", diff --git a/src/GameCult.Geometry/CultGeometryIsoSurface.cs b/src/GameCult.Geometry/CultGeometryIsoSurface.cs index 6fc9355c..583fdd87 100644 --- a/src/GameCult.Geometry/CultGeometryIsoSurface.cs +++ b/src/GameCult.Geometry/CultGeometryIsoSurface.cs @@ -172,7 +172,9 @@ namespace GameCult.Geometry normal = -normal; } - normal = math.normalize(normal); + // A degenerate triangle (an inside vertex exactly on the isovalue) has no area and gets a zero + // normal; normalize follows HLSL and would return NaN for it. + normal = math.dot(normal, normal) > 0f ? math.normalize(normal) : float3.zero; var firstIndex = (uint)(positions.Count / 3); Append(a, positions); Append(b, positions); diff --git a/tests/GameCult.Geometry.Tests/IsoSurfaceTests.cs b/tests/GameCult.Geometry.Tests/IsoSurfaceTests.cs index 90d5f7f6..63b794b3 100644 --- a/tests/GameCult.Geometry.Tests/IsoSurfaceTests.cs +++ b/tests/GameCult.Geometry.Tests/IsoSurfaceTests.cs @@ -47,6 +47,23 @@ namespace GameCult.Geometry.Tests } } + [Test] + public void Samples_on_the_isovalue_emit_finite_normals() + { + var samples = new float[2, 2, 2]; + for (var y = 0; y < 2; y++) + for (var z = 0; z < 2; z++) + { + samples[0, y, z] = 0f; + samples[1, y, z] = 1f; + } + + var mesh = CultGeometryIsoSurface.Extract(samples); + + mesh.TriangleCount.Should().BeGreaterThan(0); + mesh.Normals.Should().OnlyContain(value => float.IsFinite(value)); + } + [Test] public void Extraction_is_deterministic_and_applies_origin_and_cell_size() { From 0f2c1f04ef66a8b85c507747c508960ff1417ae0 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 14 Sep 2026 18:19:53 +0200 Subject: [PATCH 0010/1002] Add PCG integer hashes to CultMath and release 0.2.3 CultMath's hash is the shader-style frac(sin(x) * 43758.5453) and returns float. Unity.Mathematics' hash returned a well-mixed uint, and seeding from the float hash collapses: a 100x100 position grid gave 1625 distinct values in Aetheria's zone generator. - math.pcg(uint), pcg3d(int3/float2/float3), and pcg4d(int4/float4) follow Jarzynski and Olano, "Hash Functions for GPU Rendering" (JCGT 9(3), 2020). pcg3d and pcg4d are the paper's code from page 32. pcg is O'Neill's RXS-M-XS 32/32 output over one LCG step, with the constants checked against pcg-c's pcg_variants.h. - CultMath has no uint vectors, so pcg3d and pcg4d carry uint bit patterns in int3/int4. The float overloads hash IEEE-754 bits via the HLSL intrinsic asuint(float), which is new. pcg3d(float2) holds z at 0, the paper's route for 2 -> N inputs. - The HLSL mirror gains the same functions, written over scalar uints so the text compiles both in dxc 1.9.0.5402 (lib_6_3, HV 2021, clean) and in C#. HlslSourceCompatibilityTests now compares int and uint arguments and results by value; a wrong shift in the mirror's pcg4d gives 208 mismatches. - Known-answer vectors come from an independent Python transcription. pcg3d separates a 100x100 half-unit grid (the full int3). One component alone has one birthday collision there, as a 32-bit value can. The same grid on the integer lattice has none. - design.md states that the hashes are integer-exact in HLSL and on the CPU: dxc wraps uint multiply and add modulo 2^32, as C# unchecked does. - Bump to 0.2.3 and rebuild the tracked Unity DLL and pdb. Co-Authored-By: Claude Opus 5 --- packages/cultmath/docs/design.md | 12 ++++++ packages/cultmath/shaders/CultMath.hlsl | 32 +++++++++++++++ .../cultmath/src/CultMath/CultMath.csproj | 2 +- packages/cultmath/src/CultMath/math.cs | 37 ++++++++++++++++++ .../tests/CultMath.Tests/HlslMirrorTests.cs | 3 ++ .../CultMath.Tests/HlslSemanticsTests.cs | 5 +++ .../HlslSourceCompatibilityTests.cs | 29 ++++++++------ .../tests/CultMath.Tests/MathTests.cs | 35 +++++++++++++++++ .../Runtime/Plugins/CultMath.dll | Bin 299008 -> 299520 bytes .../Runtime/Plugins/CultMath.pdb | Bin 142220 -> 142636 bytes .../Shaders/CultMath.hlsl | 32 +++++++++++++++ .../unity/org.gamecult.cultmath/package.json | 2 +- 12 files changed, 176 insertions(+), 13 deletions(-) diff --git a/packages/cultmath/docs/design.md b/packages/cultmath/docs/design.md index f43f48e2..f5f5d5a5 100644 --- a/packages/cultmath/docs/design.md +++ b/packages/cultmath/docs/design.md @@ -120,6 +120,18 @@ compiled under `using static CultMath.math;`, so its intrinsics are C# `math` itself: the test proves the composition in the text, not the intrinsic rules, which only `HlslSemanticsTests` pins. +Integer hashing uses the PCG hashes from Jarzynski and Olano, "Hash Functions +for GPU Rendering" (JCGT 9(3), 2020): `pcg(uint)` is O'Neill's RXS-M-XS 32/32 +permutation over one LCG step, and `pcg3d`/`pcg4d` are the paper's (3 → 3) and +(4 → 4) hashes. They use only uint multiply, add, xor, and shifts. dxc wraps +uint multiply and add modulo 2^32 exactly as C# unchecked arithmetic does, so +they are integer-exact in HLSL and on the CPU, GPU included, unlike the +`sin`-based `hash`. CultMath has no uint vectors, so `pcg3d(int3)` and +`pcg4d(int4)` carry uint bit patterns in int components. The `float2`/`float3`/`float4` +overloads hash the IEEE-754 bits (`asuint`), so -0 and 0 hash differently. +`pcg3d(float2)` holds z at 0, which is the paper's route for (2 → N) inputs. +Seeds and other scalar uses take one output component. + Where HLSL is silent, CultMath keeps its own decisions and does not defer to Unity.Mathematics: `hash` returns float, and `Random` is CultMath's own xorshift32. Engine-shaped helpers that HLSL lacks (`float2x2.Rotate`, `float3x3.Euler`, `quaternion`, diff --git a/packages/cultmath/shaders/CultMath.hlsl b/packages/cultmath/shaders/CultMath.hlsl index afffb2c2..6179d45a 100644 --- a/packages/cultmath/shaders/CultMath.hlsl +++ b/packages/cultmath/shaders/CultMath.hlsl @@ -281,6 +281,38 @@ float cultmath_hash(float value) { return cultmath_frac(sin(value) * 43758.5453) float cultmath_hash(float2 value) { return cultmath_hash(dot(value, float2(127.1, 311.7))); } float cultmath_hash(float3 value) { return cultmath_hash(dot(value, float3(127.1, 311.7, 74.7))); } +// PCG hashes (Jarzynski and Olano, JCGT 2020), written over scalar uints so CultMath's int3/int4 carry the bits. +uint cultmath_pcg(uint value) +{ + uint state = value * 747796405u + 2891336453u; + uint word = ((state >> (int)((state >> 28) + 4)) ^ state) * 277803737u; + return (word >> 22) ^ word; +} + +int3 cultmath_pcg3d(int3 value) +{ + uint x = (uint)value.x * 1664525u + 1013904223u, y = (uint)value.y * 1664525u + 1013904223u, z = (uint)value.z * 1664525u + 1013904223u; + x += y * z; y += z * x; z += x * y; + x ^= x >> 16; y ^= y >> 16; z ^= z >> 16; + x += y * z; y += z * x; z += x * y; + return int3((int)x, (int)y, (int)z); +} + +int3 cultmath_pcg3d(float2 value) { return cultmath_pcg3d(float3(value, 0.0)); } +int3 cultmath_pcg3d(float3 value) { return cultmath_pcg3d(int3((int)asuint(value.x), (int)asuint(value.y), (int)asuint(value.z))); } + +int4 cultmath_pcg4d(int4 value) +{ + uint x = (uint)value.x * 1664525u + 1013904223u, y = (uint)value.y * 1664525u + 1013904223u; + uint z = (uint)value.z * 1664525u + 1013904223u, w = (uint)value.w * 1664525u + 1013904223u; + x += y * w; y += z * x; z += x * y; w += y * z; + x ^= x >> 16; y ^= y >> 16; z ^= z >> 16; w ^= w >> 16; + x += y * w; y += z * x; z += x * y; w += y * z; + return int4((int)x, (int)y, (int)z, (int)w); +} + +int4 cultmath_pcg4d(float4 value) { return cultmath_pcg4d(int4((int)asuint(value.x), (int)asuint(value.y), (int)asuint(value.z), (int)asuint(value.w))); } + float cultmath_value_noise(float2 position) { float2 cell = floor(position); diff --git a/packages/cultmath/src/CultMath/CultMath.csproj b/packages/cultmath/src/CultMath/CultMath.csproj index efa883dd..8474fc05 100644 --- a/packages/cultmath/src/CultMath/CultMath.csproj +++ b/packages/cultmath/src/CultMath/CultMath.csproj @@ -8,7 +8,7 @@ CultMath CultMath GameCult.Math - 0.2.2 + 0.2.3 Clean-room C# math shaped for HLSL-style renderer code. GameCult README.md diff --git a/packages/cultmath/src/CultMath/math.cs b/packages/cultmath/src/CultMath/math.cs index 7e8757ba..99b3c234 100644 --- a/packages/cultmath/src/CultMath/math.cs +++ b/packages/cultmath/src/CultMath/math.cs @@ -382,6 +382,43 @@ public static partial class math public static float hash(float2 value) => hash(dot(value, new float2(127.1f, 311.7f))); public static float hash(float3 value) => hash(dot(value, new float3(127.1f, 311.7f, 74.7f))); + public static uint asuint(float value) => (uint)BitConverter.SingleToInt32Bits(value); + + // PCG hashes from Jarzynski and Olano, "Hash Functions for GPU Rendering" (JCGT 9(3), 2020). Integer-only, so + // dxc and C# agree bit for bit. pcg3d/pcg4d carry uint bit patterns in int3/int4; float overloads hash IEEE bits. + public static uint pcg(uint value) + { + var state = value * 747796405u + 2891336453u; + var word = ((state >> (int)((state >> 28) + 4)) ^ state) * 277803737u; + return (word >> 22) ^ word; + } + + public static int3 pcg3d(int3 value) + { + uint x = (uint)value.x * 1664525u + 1013904223u, y = (uint)value.y * 1664525u + 1013904223u, z = (uint)value.z * 1664525u + 1013904223u; + x += y * z; y += z * x; z += x * y; + x ^= x >> 16; y ^= y >> 16; z ^= z >> 16; + x += y * z; y += z * x; z += x * y; + return new int3((int)x, (int)y, (int)z); + } + + // The paper hashes 2 -> N inputs through pcg3d with the unused component held constant. + public static int3 pcg3d(float2 value) => pcg3d(new float3(value, 0.0f)); + public static int3 pcg3d(float3 value) => pcg3d(new int3((int)asuint(value.x), (int)asuint(value.y), (int)asuint(value.z))); + + public static int4 pcg4d(int4 value) + { + uint x = (uint)value.x * 1664525u + 1013904223u, y = (uint)value.y * 1664525u + 1013904223u; + uint z = (uint)value.z * 1664525u + 1013904223u, w = (uint)value.w * 1664525u + 1013904223u; + x += y * w; y += z * x; z += x * y; w += y * z; + x ^= x >> 16; y ^= y >> 16; z ^= z >> 16; w ^= w >> 16; + x += y * w; y += z * x; z += x * y; w += y * z; + return new int4((int)x, (int)y, (int)z, (int)w); + } + + public static int4 pcg4d(float4 value) => + pcg4d(new int4((int)asuint(value.x), (int)asuint(value.y), (int)asuint(value.z), (int)asuint(value.w))); + public static float log(float value) => MathF.Log(value); public static float2 log(float2 value) => new(log(value.x), log(value.y)); public static float3 log(float3 value) => new(log(value.x), log(value.y), log(value.z)); diff --git a/packages/cultmath/tests/CultMath.Tests/HlslMirrorTests.cs b/packages/cultmath/tests/CultMath.Tests/HlslMirrorTests.cs index 818fa3ed..d73c6d7b 100644 --- a/packages/cultmath/tests/CultMath.Tests/HlslMirrorTests.cs +++ b/packages/cultmath/tests/CultMath.Tests/HlslMirrorTests.cs @@ -40,6 +40,9 @@ public sealed class HlslMirrorTests "cultmath_quadratic_bezier", "cultmath_cubic_bezier", "cultmath_hash", + "cultmath_pcg(uint", + "cultmath_pcg3d(int3", + "cultmath_pcg4d(int4", "cultmath_value_noise", "cultmath_snoise(float2", "cultmath_snoise(float3", diff --git a/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs b/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs index 665f2c02..954c4375 100644 --- a/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs +++ b/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs @@ -209,6 +209,11 @@ public sealed class HlslSemanticsTests Assert.Equal(Bits(0.0f), Bits(math.length(float4.zero))); Assert.Equal(Bits(0.0f), Bits(math.distance(new float3(1.0f, 2.0f, 3.0f), new float3(1.0f, 2.0f, 3.0f)))); + // asuint(float) reinterprets the IEEE-754 bits. + Assert.Equal(0x80000000u, math.asuint(-0.0f)); + Assert.Equal(0x3FC00000u, math.asuint(1.5f)); + Assert.Equal(0x7FC00000u, math.asuint(BitConverter.Int32BitsToSingle(0x7FC00000))); + Assert.Equal(0, math.sign(float.NaN)); Assert.Equal(-1, math.sign(-0.5f)); Assert.Equal(new int3(-1, 0, 1), math.sign(new float3(-2.0f, 0.0f, 4.0f))); diff --git a/packages/cultmath/tests/CultMath.Tests/HlslSourceCompatibilityTests.cs b/packages/cultmath/tests/CultMath.Tests/HlslSourceCompatibilityTests.cs index c6ece795..9426e4c8 100644 --- a/packages/cultmath/tests/CultMath.Tests/HlslSourceCompatibilityTests.cs +++ b/packages/cultmath/tests/CultMath.Tests/HlslSourceCompatibilityTests.cs @@ -78,26 +78,33 @@ public sealed class HlslSourceCompatibilityTests foreach (var input in cases) { var slot = 0; - var args = types.Select(t => t == typeof(float) ? (object)input(slot++) - : Activator.CreateInstance(t, Enumerable.Range(0, Components(t)).Select(_ => (object)input(slot++)).ToArray())!).ToArray(); - var expected = Floats(counterpart.Invoke(null, args)!); - var actual = Floats(mirror.Invoke(shader, args)!); - if (expected.Length != actual.Length || expected.Zip(actual).Any(p => !(float.IsNaN(p.First) && float.IsNaN(p.Second)) - && BitConverter.SingleToInt32Bits(p.First) != BitConverter.SingleToInt32Bits(p.Second))) + var args = types.Select(t => Scalars.Contains(t) ? Scalar(t, input(slot++)) + : Activator.CreateInstance(t, Components(t).Select(f => Scalar(f.FieldType, input(slot++))).ToArray())!).ToArray(); + var expected = Values(counterpart.Invoke(null, args)!); + var actual = Values(mirror.Invoke(shader, args)!); + if (expected.Length != actual.Length || expected.Zip(actual).Any(p => p.First is float a && p.Second is float b + ? !(float.IsNaN(a) && float.IsNaN(b)) && BitConverter.SingleToInt32Bits(a) != BitConverter.SingleToInt32Bits(b) + : !p.First.Equals(p.Second))) { - mismatches.Add($"{mirror.Name}({string.Join(", ", args.Select(a => string.Join(" ", Floats(a))))}): C# {string.Join(" ", expected)}, mirror {string.Join(" ", actual)}"); + mismatches.Add($"{mirror.Name}({string.Join(", ", args.Select(a => string.Join(" ", Values(a))))}): C# {string.Join(" ", expected)}, mirror {string.Join(" ", actual)}"); } } } Assert.True(mismatches.Count == 0, $"{mismatches.Count} mismatches:{Environment.NewLine}{string.Join(Environment.NewLine, mismatches.Take(12))}"); - Assert.Equal(25, compared.Count); + Assert.Equal(28, compared.Count); } - private static int Components(Type t) => t.GetFields().Count(f => f.FieldType == typeof(float) && !f.IsStatic); + // Integer arguments take the bit pattern of the float input, so specials become 0, 0x80000000, NaN bits, ... + private static readonly Type[] Scalars = { typeof(float), typeof(int), typeof(uint) }; - private static float[] Floats(object value) => value is float f ? new[] { f } - : value.GetType().GetFields().Where(field => field.FieldType == typeof(float) && !field.IsStatic).Select(field => (float)field.GetValue(value)!).ToArray(); + private static object Scalar(Type t, float f) => t == typeof(float) ? f + : t == typeof(int) ? BitConverter.SingleToInt32Bits(f) : (object)(uint)BitConverter.SingleToInt32Bits(f); + + private static FieldInfo[] Components(Type t) => t.GetFields().Where(f => !f.IsStatic && Scalars.Contains(f.FieldType)).ToArray(); + + private static object[] Values(object value) => Scalars.Contains(value.GetType()) ? new[] { value } + : Components(value.GetType()).Select(field => field.GetValue(value)!).ToArray(); ///

The documented HLSL-to-C# transformations, and nothing else. internal static string TransformHlslToCSharp(string hlsl) diff --git a/packages/cultmath/tests/CultMath.Tests/MathTests.cs b/packages/cultmath/tests/CultMath.Tests/MathTests.cs index de1bf996..534ec276 100644 --- a/packages/cultmath/tests/CultMath.Tests/MathTests.cs +++ b/packages/cultmath/tests/CultMath.Tests/MathTests.cs @@ -12,6 +12,41 @@ public sealed class MathTests Assert.Equal(0.75f, math.frac(-1.25f)); } + // Expected values come from a Python transcription of the paper's pcg3d/pcg4d (JCGT 9(3) 2020, p. 32) and + // O'Neill's pcg_output_rxs_m_xs_32_32 with PCG_DEFAULT_MULTIPLIER_32/INCREMENT_32, independent of this code. + [Fact] + public void PcgHashesMatchReferenceTranscription() + { + static int3 U3(uint x, uint y, uint z) => new((int)x, (int)y, (int)z); + static int4 U4(uint x, uint y, uint z, uint w) => new((int)x, (int)y, (int)z, (int)w); + + Assert.Equal(0x07BB2FE2u, math.pcg(0u)); + Assert.Equal(0xA8BEEA3Cu, math.pcg(1u)); + Assert.Equal(0x995312E1u, math.pcg(0x12345678u)); + Assert.Equal(0xE62A4902u, math.pcg(0xFFFFFFFFu)); + Assert.Equal(U3(0x9BAFD7C6u, 0xA8E88A6Bu, 0x3F15482Cu), math.pcg3d(new int3(0, 0, 0))); + Assert.Equal(U3(0xFA9F79A6u, 0x48F2F44Cu, 0x596F5AB1u), math.pcg3d(new int3(1, 2, 3))); + Assert.Equal(U3(0x67DCF282u, 0x49E87E17u, 0x10018917u), math.pcg3d(U3(0xFFFFFFFFu, 0x80000000u, 0x7FFFFFFFu))); + Assert.Equal(U4(0x0F02F829u, 0x2D568769u, 0x32B0C43Bu, 0xD32548EAu), math.pcg4d(new int4(0, 0, 0, 0))); + Assert.Equal(U4(0x3622CD16u, 0xF11471D8u, 0xE1109B3Fu, 0x02B94C2Fu), math.pcg4d(new int4(1, 2, 3, 4))); + Assert.Equal(U4(0x72180037u, 0x81D493E6u, 0xD9BA7226u, 0x14C9ABA7u), math.pcg4d(U4(0xFFFFFFFFu, 0x80000000u, 0x7FFFFFFFu, 0xDEADBEEFu))); + Assert.Equal(U3(0xA7B40FEEu, 0x9B70DFC0u, 0x3106C2C5u), math.pcg3d(new float3(1.5f, -2.25f, 1e7f))); + Assert.Equal(U3(0x5A09E5C6u, 0x53EC0DABu, 0x4BE4A1ECu), math.pcg3d(new float2(3.0f, 4.0f))); + Assert.Equal(U4(0x1849E380u, 0xF199DEE0u, 0x6C6B4934u, 0x34AF16DFu), + math.pcg4d(new float4(-0.0f, BitConverter.Int32BitsToSingle(0x7FC00000), 0.5f, 1e-7f))); + } + + [Fact] + public void Pcg3dSeparatesAPositionGrid() + { + // A single 32-bit component is subject to birthday collisions (x has one here); the full output is distinct. + var hashes = new HashSet(); + for (var i = 0; i < 100; i++) + for (var j = 0; j < 100; j++) + hashes.Add(math.pcg3d(new float2(i * 0.5f - 25.0f, j * 0.5f - 25.0f))); + Assert.Equal(10000, hashes.Count); + } + [Fact] public void VectorOperationsAreComponentWise() { diff --git a/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.dll b/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.dll index 3cfc761833b884bc7c9906223f7124db65f46828..ef93b69b20adc6df666aeba9ce5c4260ce5ba947 100644 GIT binary patch literal 299520 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
HC9-xypJnAZE9fM&DJzk66M8=> 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 F_#bgdYnlK6 literal 299008 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 diff --git a/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.pdb b/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.pdb index 169a71177222918626f6f0725af26bfb959832cc..0bc1d4149c2ad9e666db32e4dddbf835313c3175 100644 GIT binary patch delta 23115 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 F{|8_X3_bt= diff --git a/packages/cultmath/unity/org.gamecult.cultmath/Shaders/CultMath.hlsl b/packages/cultmath/unity/org.gamecult.cultmath/Shaders/CultMath.hlsl index afffb2c2..6179d45a 100644 --- a/packages/cultmath/unity/org.gamecult.cultmath/Shaders/CultMath.hlsl +++ b/packages/cultmath/unity/org.gamecult.cultmath/Shaders/CultMath.hlsl @@ -281,6 +281,38 @@ float cultmath_hash(float value) { return cultmath_frac(sin(value) * 43758.5453) float cultmath_hash(float2 value) { return cultmath_hash(dot(value, float2(127.1, 311.7))); } float cultmath_hash(float3 value) { return cultmath_hash(dot(value, float3(127.1, 311.7, 74.7))); } +// PCG hashes (Jarzynski and Olano, JCGT 2020), written over scalar uints so CultMath's int3/int4 carry the bits. +uint cultmath_pcg(uint value) +{ + uint state = value * 747796405u + 2891336453u; + uint word = ((state >> (int)((state >> 28) + 4)) ^ state) * 277803737u; + return (word >> 22) ^ word; +} + +int3 cultmath_pcg3d(int3 value) +{ + uint x = (uint)value.x * 1664525u + 1013904223u, y = (uint)value.y * 1664525u + 1013904223u, z = (uint)value.z * 1664525u + 1013904223u; + x += y * z; y += z * x; z += x * y; + x ^= x >> 16; y ^= y >> 16; z ^= z >> 16; + x += y * z; y += z * x; z += x * y; + return int3((int)x, (int)y, (int)z); +} + +int3 cultmath_pcg3d(float2 value) { return cultmath_pcg3d(float3(value, 0.0)); } +int3 cultmath_pcg3d(float3 value) { return cultmath_pcg3d(int3((int)asuint(value.x), (int)asuint(value.y), (int)asuint(value.z))); } + +int4 cultmath_pcg4d(int4 value) +{ + uint x = (uint)value.x * 1664525u + 1013904223u, y = (uint)value.y * 1664525u + 1013904223u; + uint z = (uint)value.z * 1664525u + 1013904223u, w = (uint)value.w * 1664525u + 1013904223u; + x += y * w; y += z * x; z += x * y; w += y * z; + x ^= x >> 16; y ^= y >> 16; z ^= z >> 16; w ^= w >> 16; + x += y * w; y += z * x; z += x * y; w += y * z; + return int4((int)x, (int)y, (int)z, (int)w); +} + +int4 cultmath_pcg4d(float4 value) { return cultmath_pcg4d(int4((int)asuint(value.x), (int)asuint(value.y), (int)asuint(value.z), (int)asuint(value.w))); } + float cultmath_value_noise(float2 position) { float2 cell = floor(position); diff --git a/packages/cultmath/unity/org.gamecult.cultmath/package.json b/packages/cultmath/unity/org.gamecult.cultmath/package.json index 9b13645b..6ab136b4 100644 --- a/packages/cultmath/unity/org.gamecult.cultmath/package.json +++ b/packages/cultmath/unity/org.gamecult.cultmath/package.json @@ -1,7 +1,7 @@ { "name": "org.gamecult.cultmath", "displayName": "CultMath", - "version": "0.2.2", + "version": "0.2.3", "unity": "2021.3", "description": "Precompiled CultMath numeric primitives and matching HLSL semantics for GameCult Unity runtimes.", "license": "MPL-2.0", From 452f928bb72534181f9d037d2b8bfe7addfeb2a6 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 14 Sep 2026 21:01:07 +0200 Subject: [PATCH 0011/1002] Write an unset CultRecordRef as nil and read it back unset The formatter wrote default(CultRecordRef) as nil but read nil back as "", so re-upserting a loaded record changed its bytes (0xC0 became 0xA0). One in-memory unset value: CultRecordKey.Value is never null, so default(CultRecordRef) equals a ref built from "". One wire form: an empty key writes nil, and nil or a legacy "" reads back as default. Load then save is byte-stable; a store holding "" converges to nil on its next save. Rust, TypeScript and Python have no reference type: a reference member is a string in the consumer's own payload, so there is no sibling codec to align. The store-composition contract now names nil as the one unset wire form. The new test loads a record with an unset ref through a fresh cache, re-upserts and flushes, and requires identical payload bytes; it fails on the old formatter. Co-Authored-By: Claude Opus 5 --- .../CultRecordRefFormatter.cs | 9 ++-- .../Contracts/cultcache-store-composition.md | 11 ++++ src/GameCult.Caching/CultDocumentContracts.cs | 7 ++- src/GameCult.Caching/CultInspectorModel.cs | 4 +- .../SerializationOptionsTests.cs | 51 +++++++++++++++++++ 5 files changed, 75 insertions(+), 7 deletions(-) diff --git a/src/GameCult.Caching.MessagePack/CultRecordRefFormatter.cs b/src/GameCult.Caching.MessagePack/CultRecordRefFormatter.cs index a5f984fc..1aa0968f 100644 --- a/src/GameCult.Caching.MessagePack/CultRecordRefFormatter.cs +++ b/src/GameCult.Caching.MessagePack/CultRecordRefFormatter.cs @@ -3,16 +3,19 @@ using MessagePack.Formatters; namespace GameCult.Caching; +// An unset reference (the empty key) is nil on the wire and default(CultRecordRef) in memory; a "" read from older +// stores is the same unset reference, so load then save is byte-stable. public sealed class CultRecordRefFormatter : IMessagePackFormatter> { public void Serialize(ref MessagePackWriter writer, CultRecordRef value, MessagePackSerializerOptions options) { - options.Resolver.GetFormatterWithVerify().Serialize(ref writer, value.Key.Value, options); + if (value.Key.Value.Length == 0) writer.WriteNil(); + else writer.Write(value.Key.Value); } public CultRecordRef Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) { - var key = options.Resolver.GetFormatterWithVerify().Deserialize(ref reader, options) ?? string.Empty; - return new CultRecordRef(new CultRecordKey(key)); + var key = reader.TryReadNil() ? null : reader.ReadString(); + return string.IsNullOrEmpty(key) ? default : new CultRecordRef(new CultRecordKey(key!)); } } diff --git a/src/GameCult.Caching/Contracts/cultcache-store-composition.md b/src/GameCult.Caching/Contracts/cultcache-store-composition.md index 8c4fc529..b24c83b3 100644 --- a/src/GameCult.Caching/Contracts/cultcache-store-composition.md +++ b/src/GameCult.Caching/Contracts/cultcache-store-composition.md @@ -236,6 +236,17 @@ another runtime need not obey the `storedAt` rule. - Deserialization runs under untrusted-data security. `CultRecordRef` is a permitted dictionary key, compared by its key string. +## Record references + +A record reference is its target's key string. An unset reference, the empty +key, is **nil** on the wire, never `""`. A reader takes nil and `""` as the same +unset reference and writes it back as nil, so loading and re-saving an unchanged +record is byte-stable. In C# the unset reference is `default(CultRecordRef)`, +equal to one built from `""`; `CultRecordKey.Value` is never null. Rust, +TypeScript and Python have no reference type: a reference member is a string in +the consumer's own payload value, so a consumer writes an unset one as its +language's null (`null`, `None`, `Option::None`), not as an empty string. + ## Value-type encoding Vector-like value types (Unity.Mathematics, consumer structs) encode as diff --git a/src/GameCult.Caching/CultDocumentContracts.cs b/src/GameCult.Caching/CultDocumentContracts.cs index 0d4f1643..442f5c4f 100644 --- a/src/GameCult.Caching/CultDocumentContracts.cs +++ b/src/GameCult.Caching/CultDocumentContracts.cs @@ -57,12 +57,15 @@ namespace GameCult.Caching public readonly struct CultRecordKey : IEquatable { + private readonly string? _value; + public CultRecordKey(string value) { - Value = value ?? string.Empty; + _value = value; } - public string Value { get; } + // Never null: default(CultRecordKey) and new CultRecordKey("") are one empty key. + public string Value => _value ?? string.Empty; public override string ToString() => Value; diff --git a/src/GameCult.Caching/CultInspectorModel.cs b/src/GameCult.Caching/CultInspectorModel.cs index f40d9055..c457031f 100644 --- a/src/GameCult.Caching/CultInspectorModel.cs +++ b/src/GameCult.Caching/CultInspectorModel.cs @@ -305,7 +305,7 @@ namespace GameCult.Caching return string.IsNullOrWhiteSpace(name) ? record.Key.Value : name!; } - // The key a CultRecordRef holds; null and "" are both the empty key. + // The key a CultRecordRef holds; "" when unset. public static string RecordKey(object? recordRef) => (recordRef as ICultRecordRef)?.Key.Value ?? string.Empty; public CultInspectorShape ShapeOf(Type type) @@ -464,7 +464,7 @@ namespace GameCult.Caching } } - // A key is taken when another serializes the same (a CultRecordRef by its key string, null and "" alike) or when + // A key is taken when another serializes the same (a CultRecordRef by its key string) or when // the rebuilt dictionary type's default comparer calls them equal (0.0 and -0.0 serialize apart but are one double key). private bool Taken(Type documentType, CultInspectorShape dictionary, object key, IEnumerable keys) { diff --git a/tests/GameCult.Caching.Tests/SerializationOptionsTests.cs b/tests/GameCult.Caching.Tests/SerializationOptionsTests.cs index 7127f574..ff17d598 100644 --- a/tests/GameCult.Caching.Tests/SerializationOptionsTests.cs +++ b/tests/GameCult.Caching.Tests/SerializationOptionsTests.cs @@ -38,6 +38,48 @@ namespace GameCult.Caching.Tests Assert.That(Convert.ToHexString(payload), Is.EqualTo(InteropNotePayloadHex)); } + [Test] + public async Task UnsetRefReloadsAndResavesByteIdentical() + { + var path = Path.Combine(Path.GetTempPath(), $"cultlib-unsetref-{Guid.NewGuid():N}.cc"); + var registry = CultDocumentRegistry.ForTypes(new[] { typeof(UnsetRefHolder) }); + byte[] Payload() => CultDocumentMessagePackSerialization.DeserializeSnapshot(File.ReadAllBytes(path)).Records.Single().Payload; + try + { + using (var seed = new CultCache(registry)) + { + seed.AddBackingStore(new SingleFileMessagePackBackingStore(path)); + await seed.UpsertAsync(typeof(UnsetRefHolder), new UnsetRefHolder { Name = "holder", Set = new CultRecordRef(new CultRecordKey("other")) }, + new CultRecordKey("holder")); + await seed.FlushAsync(); + } + + var written = Payload(); + CultRecordRef unset; + using (var reopened = new CultCache(registry)) + { + reopened.AddBackingStore(new SingleFileMessagePackBackingStore(path)); + await reopened.PullAllBackingStoresAsync(); + var loaded = reopened.Get(new CultRecordKey("holder"))!; + unset = loaded.Unset; + await reopened.UpsertAsync(typeof(UnsetRefHolder), loaded, new CultRecordKey("holder")); + await reopened.FlushAsync(); + } + + Assert.That(Payload(), Is.EqualTo(written), "an unset reference loads and re-saves byte-identical"); + Assert.That(unset, Is.EqualTo(default(CultRecordRef))); + Assert.That(unset.Key, Is.EqualTo(new CultRecordKey("")), "default and \"\" are one empty key"); + var legacy = MessagePackSerializer.Serialize("", CultDocumentMessagePackSerialization.Options); + var read = MessagePackSerializer.Deserialize>(legacy, CultDocumentMessagePackSerialization.Options); + Assert.That(MessagePackSerializer.Serialize(read, CultDocumentMessagePackSerialization.Options), Is.EqualTo(new[] { MessagePackCode.Nil }), + "a \"\" reference reads as unset and writes nil"); + } + finally + { + if (File.Exists(path)) File.Delete(path); + } + } + [Test] public async Task RefKeyedDictionaryRoundTrips() { @@ -171,5 +213,14 @@ namespace GameCult.Caching.Tests [Key(0)] [CultName] public string Name = string.Empty; [Key(1)] public Dictionary, float> Weights = new(); } + + [CultDocument("tests.unset_ref_holder", "tests.unset_ref_holder.v1")] + [MessagePackObject] + public sealed class UnsetRefHolder + { + [Key(0)] [CultName] public string Name = string.Empty; + [Key(1)] public CultRecordRef Unset; + [Key(2)] public CultRecordRef Set; + } } } From 90e7dbee2782004c99ffd58f63b9f240971f2049 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 14 Sep 2026 21:01:22 +0200 Subject: [PATCH 0012/1002] Give inspector drawers the record they sit in, read-only A drawer saw only its value; Aetheria's schematic-shape drawer needs sibling members of the owning document (texture path, aspect, hull tints). The model owns the seam: CultInspectorEdit.Record is a second copy of the stored document as the edit began, cloned on first read and kept for the edit. The Studio lowers it as CultInspector.Record, so a runtime CultUI panel gets the same seam from the same edit. The Draw signature is unchanged, so existing drawers keep compiling. Why not hand drawers the edit copy the Studio already draws: that copy is what Commit upserts, so a write through it would be saved without passing through the returned value, GUI.changed, or read-only metadata. The record copy is read by nothing, so writing to it saves nothing and changes neither the edit nor the cache. It does not show edits other drawers made earlier in the same frame. The Studio's separate document-type field collapses into the held edit. Co-Authored-By: Claude Opus 5 --- src/GameCult.Caching/CultInspectorModel.cs | 15 +++++++++++++-- .../Caching/Editor/CultCacheStudioDrawers.cs | 13 ++++++++----- src/GameCult.Unity/Assets/Caching/README.md | 9 +++++++++ .../CultInspectorModelTests.cs | 5 +++++ 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/GameCult.Caching/CultInspectorModel.cs b/src/GameCult.Caching/CultInspectorModel.cs index c457031f..aaa7bbaf 100644 --- a/src/GameCult.Caching/CultInspectorModel.cs +++ b/src/GameCult.Caching/CultInspectorModel.cs @@ -238,14 +238,24 @@ namespace GameCult.Caching // A private copy of one stored document. A lowering draws into Document; the cached object is never touched. public sealed class CultInspectorEdit { - internal CultInspectorEdit(CultStoredDocument source, object document) + private readonly Func _snapshot; + private object? _record; + + internal CultInspectorEdit(CultStoredDocument source, object document, Func snapshot) { Source = source; Document = document; + _snapshot = snapshot; } public CultStoredDocument Source { get; } public object Document { get; } + + // The record being drawn, as stored when this edit began, for drawers that read the document they sit in. It is a + // second copy, made on first read: not the cached object, and not Document, which a lowering commits. Nothing + // reads it back, so writing to it saves nothing and changes neither the edit nor the cache. + public object Record => _record ??= _snapshot(); + public bool IsSpent { get; private set; } public bool IsFor(CultStoredDocument record) => !IsSpent && ReferenceEquals(Source, record); @@ -342,7 +352,8 @@ namespace GameCult.Caching public CultInspectorEdit BeginEdit(CultStoredDocument record) { if (record == null) throw new ArgumentNullException(nameof(record)); - return new CultInspectorEdit(record, Clone(record.Document, record.Descriptor.DocumentType)); + var type = record.Descriptor.DocumentType; + return new CultInspectorEdit(record, Clone(record.Document, type), () => Clone(record.Document, type)); } // Whether CreateDefault makes a value: a string, struct, list or dictionary, or a concrete class with a parameterless constructor. diff --git a/src/GameCult.Unity/Assets/Caching/Editor/CultCacheStudioDrawers.cs b/src/GameCult.Unity/Assets/Caching/Editor/CultCacheStudioDrawers.cs index 12eed25e..a421a476 100644 --- a/src/GameCult.Unity/Assets/Caching/Editor/CultCacheStudioDrawers.cs +++ b/src/GameCult.Unity/Assets/Caching/Editor/CultCacheStudioDrawers.cs @@ -16,7 +16,7 @@ namespace GameCult.Unity.Caching.Editor // frame's edit copy, so nothing it or any other drawer did that frame is saved. type is the value's declared type. // member is the member the value belongs to, also for list elements and dictionary keys and values, and null for a // bare value. inspector.DrawDefault hands the value back to built-in drawing; inspector.DrawValue draws a sub-value - // with claims. + // with claims. inspector.Record is the record being drawn, read-only: a copy nothing saves. public interface ICultInspectorDrawer { object Draw(CultInspector inspector, string label, Type type, object value, MemberInfo member); @@ -33,7 +33,7 @@ namespace GameCult.Unity.Caching.Editor private readonly Dictionary _foldouts = new Dictionary(StringComparer.Ordinal); private readonly Dictionary _notices = new Dictionary(StringComparer.Ordinal); private string _path = string.Empty; - private Type _document; + private CultInspectorEdit _edit; private bool _drawerFailed; internal CultInspector(CultInspectorModel model) @@ -45,6 +45,9 @@ namespace GameCult.Unity.Caching.Editor public IReadOnlyList Records { get; internal set; } = Array.Empty(); + // The document being drawn, as the model's CultInspectorEdit.Record: a copy for reading, never saved. + public object Record => _edit?.Record; + private static GUIStyle ErrorStyle => _errorStyle ??= new GUIStyle(EditorStyles.label) { normal = { textColor = new Color(1f, .35f, .3f) } }; private static CultInspectorDrawerClaims Claims @@ -62,7 +65,7 @@ namespace GameCult.Unity.Caching.Editor internal bool DrawDocument(CultInspectorEdit edit) { _drawerFailed = false; - _document = edit.Document.GetType(); + _edit = edit; DrawMembers(edit.Document, edit.Source.Descriptor.DocumentType, edit.Source.Key.Value); return !_drawerFailed; } @@ -242,7 +245,7 @@ namespace GameCult.Unity.Caching.Editor var item = DrawValue("Value", shape.ValueType, entries[i].Value, member, path + "{" + i + "}.value"); if (EditorGUI.EndChangeCheck()) { - key = Model.ReplaceKey(_document, shape.Type, entries.Select(e => e.Key).ToArray(), i, key, out var notice); + key = Model.ReplaceKey(_edit.Document.GetType(),shape.Type, entries.Select(e => e.Key).ToArray(), i, key, out var notice); Notice(path, notice); entries[i] = new KeyValuePair(key, item); changed = true; @@ -261,7 +264,7 @@ namespace GameCult.Unity.Caching.Editor if (Add(shape.ValueType, path, out var created)) { - var fresh = Model.FreshKey(_document, shape.Type, entries.Select(e => e.Key).ToArray(), Records, out var notice); + var fresh = Model.FreshKey(_edit.Document.GetType(),shape.Type, entries.Select(e => e.Key).ToArray(), Records, out var notice); Notice(path, notice); if (fresh != null) { diff --git a/src/GameCult.Unity/Assets/Caching/README.md b/src/GameCult.Unity/Assets/Caching/README.md index a5ea3d92..d96f674f 100644 --- a/src/GameCult.Unity/Assets/Caching/README.md +++ b/src/GameCult.Unity/Assets/Caching/README.md @@ -114,6 +114,15 @@ for list elements and dictionary keys and values, so an attribute drawer checks the type it is handed. `inspector.DrawDefault` hands a value back to built-in drawing; `inspector.DrawValue` draws a sub-value with claims applied. +`inspector.Record` is the whole document the value sits in, for drawers that +read sibling members (a texture path, a hull's tints). It is read-only by +contract: the model's `CultInspectorEdit.Record`, a second copy of the stored +document as the edit began, made on first read. It is neither the cached +object nor the edit copy the Studio saves, so writing to it saves nothing; an +edit reaches the record only through the value `Draw` returns. Within one frame +it does not show edits other drawers made earlier in that frame; after a save +the next frame's edit starts from the saved record. + ## Inspector Annotations The annotations live in `GameCult.Caching`, so headless shared models carry diff --git a/tests/GameCult.Caching.Tests/CultInspectorModelTests.cs b/tests/GameCult.Caching.Tests/CultInspectorModelTests.cs index c5fd8cb1..1de5eaf8 100644 --- a/tests/GameCult.Caching.Tests/CultInspectorModelTests.cs +++ b/tests/GameCult.Caching.Tests/CultInspectorModelTests.cs @@ -216,6 +216,11 @@ namespace GameCult.Caching.Tests var record = readOnly.AllStoredDocuments.Single(); var edit = model.BeginEdit(record); Assert.That(edit.Document, Is.Not.SameAs(record.Document)); + var drawn = (InspectItem)edit.Record; + Assert.That(drawn, Is.Not.SameAs(record.Document).And.Not.SameAs(edit.Document)); + Assert.That(edit.Record, Is.SameAs(drawn), "one record copy per edit"); + drawn.Name = "a drawer wrote here"; + Assert.That(((InspectItem)edit.Document).Name, Is.EqualTo("original"), "the record copy is not the committed copy"); ((InspectItem)edit.Document).Name = "changed"; ((InspectItem)edit.Document).Numbers.Add(3); From b85a82872eab7bcd828bc610b4102a183266cf19 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 14 Sep 2026 21:18:01 +0200 Subject: [PATCH 0013/1002] Release CultLib Unity 1.0.58 and the Studio 1.3.0 Rebuilds the tracked plugins with scripts/build-unity-package.ps1 -UpdateTemplate so they carry the unset-ref wire fix and CultInspectorEdit.Record. The Studio package moves to 1.3.0 for CultInspector.Record and depends on cultlib 1.0.58. Co-Authored-By: Claude Opus 5 --- .../Assets/Caching/package.json | 4 ++-- .../Plugins/GameCult.Caching.MessagePack.dll | Bin 41472 -> 41472 bytes .../Plugins/GameCult.Caching.MessagePack.pdb | Bin 18920 -> 18940 bytes .../Runtime/Plugins/GameCult.Caching.dll | Bin 118784 -> 118784 bytes .../Runtime/Plugins/GameCult.Caching.pdb | Bin 37948 -> 38024 bytes .../Runtime/Plugins/GameCult.Logging.dll | Bin 6656 -> 6656 bytes .../Runtime/Plugins/GameCult.Logging.pdb | Bin 9256 -> 9256 bytes .../Plugins/GameCult.Mesh.Quic.Native.dll | Bin 15872 -> 15872 bytes .../Plugins/GameCult.Mesh.Quic.Native.pdb | Bin 11960 -> 11960 bytes .../Runtime/Plugins/GameCult.Mesh.dll | Bin 675840 -> 675840 bytes .../Runtime/Plugins/GameCult.Mesh.pdb | Bin 160904 -> 160904 bytes .../GameCult.Networking.WebSockets.dll | Bin 14848 -> 14848 bytes .../Runtime/Plugins/GameCult.Networking.dll | Bin 524288 -> 524288 bytes .../Runtime/Plugins/GameCult.Networking.pdb | Bin 247280 -> 247280 bytes .../x86_64/gamecult_mesh_quic_native.dll | Bin 40448 -> 40448 bytes unity/org.gamecult.cultlib/package.json | 2 +- 16 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/GameCult.Unity/Assets/Caching/package.json b/src/GameCult.Unity/Assets/Caching/package.json index dff80c97..2717cdeb 100644 --- a/src/GameCult.Unity/Assets/Caching/package.json +++ b/src/GameCult.Unity/Assets/Caching/package.json @@ -1,7 +1,7 @@ { "name": "org.gamecult.caching.unity", "displayName": "GameCult CultCache Unity Tools", - "version": "1.2.0", + "version": "1.3.0", "unity": "2021.3", "description": "Unity editor tooling for inspecting and editing CultCache .cc stores.", "keywords": [ @@ -10,7 +10,7 @@ "Data" ], "dependencies": { - "org.gamecult.cultlib": "1.0.57" + "org.gamecult.cultlib": "1.0.58" }, "license": "MIT", "category": "Scripting" diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.MessagePack.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.MessagePack.dll index e4c51fc6bd2f45f6872da2bf321617dc22e4e3e0..7d73acbb9a6fc16af8565ecbc961e094781d1e1e 100644 GIT binary patch delta 13110 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 Y5GPOXs!kLlML$_nES&l`H8Fzz4=_06asU7T diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.dll index f1ba6f938fe8a225c329395c44f01e8e80ce7a94..f4897b893667c8d711f187e5492490c79abab6b8 100644 GIT binary patch delta 44282 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

wx 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 delta 43818 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 delta 7046 zcmZ9R3tSad9>>pIF85x*i@ba*f;>b~7DGiO36+O{hD5#s-=df)DyCA}y)&R9ilJj` z+9s*3`AAc*ZCmPYzFI4{hgz1>L#@nLrDaLlw!i;yF8)8`=kw*9@A?1doHH|L<_uW9 z-Ewf7rLK4J$pJz{JtM@4G$HDIQ7@b~clxYpJb}C@>iC>@xO)Tm*)jmYe!eth2_jdY`r4H7K;!AfFFD<%4n2@ zRv~C0gbjM2+zze)JGcfY<^xhz--!34PWFM0o=C;l=4w08Dk4A}NCf>rI&gulU^h4b zj)EV-JrFktxnK~;1M@*8s0aH&=wPcD0A_>j;5xVsd@`&e48(%3KzOFrC1NwJA^{|W zhrmcM4ouDT6|=xrunX)5!*xNCksI9w-DwV6qE8W`J@~3tk@LJsT<&aTsmyf{(%H-~zY;Zh}Uj;g%(Cd5#h2-lx07o zq$Io@SbfODRxuom1`|Ljm<<*JH>d`6U_ICbwu8OkO>h{z2Tp-=;9@a;Tm`p`0j%P8 zSz7X~!XK|m8azan?PVE-SiDiExLqXW+eLpc5DYQe6_KB>h*6%<7Kg%ugOSt;?|=iw z`w$0sE<`-!tF+Q1V`FgpKkzmqZ5GnJ?tqsm{>>f+pUr$R^XaIEfH{bNDEk`^pNsyy zPA}$i7EgxHbD`lQc>ulHpJe_R^BB~-f%%AkEb}Ab3*e`uKgv7;^*FE)@zXNi0baqp z2i)}(YnY6NrF40|0`H7; zQ-) z>6!3q=9gXAqN(90By`5?s%640csFd=mC}EPpN9VdUyl6Svcn{_k>7!Tg4ilh18fi)(ioeU8;_or1`1{N$eiFCH?)t&no!*^A12Ad}d1c+~nt&&qn@v z=G0*W^S;4&1!`CcFS}R+4fs9t z7Vs;~X?MKJoI1G1oQ}WFoUZ5%<`n;dIrZ=Qku}i%{1bCJ;HJrMF&~Qf&u|A@#J@17 z53k$IslQ*D`_caY8*8v3p^0q`j1)L%4n%tgf9cbA}58hgLN z*nYb*r^lu{^9Xo6^8xS#<}_e0=562)FsJ_dG&`<8B_uaD2+<0j!u%AbOdfzWunDm- zGTs8d2lZU(PIxh1u?M9G!b{*Dcz+xp1gC%WCH$b*>HgDmo#t&oou2D-=Jb2OAb7Cs zfL3(|bNcSjWZo5?4G)p|6d%HzK5%lR)A)i8$U{S@JfIjp3?9Y?%x4~mvlBja(% zFJMmnJ;I#6DIaBi7CsW*R`D^$H!dqRv_psVnH>p6!`sUN=rMbYIlUK(nbQ>;&zu(N z1m?6RCYpSb;d1|{117Ts@+r)zgA$WZHTg7?mzw->=7s2Q2E2oJ|EEhdlN#h1)9zKq zJPAIBIbD%*=Cp?9Tl|}krz=vy+!y{7^9cCUaF=&LI>SXQfqb#apJ7hFZn>CKzMDC{ zYE|a+tDD9=1zu_Kci}hlrpJOFyDB7jojP2?JRZK3Io+aV%qhRxG4BCiN0-oh#t)%kJ#)IJ8<^7s zU$lfa=hK^WBXfF@)ibB~OU&ubw;5~3J04vT-!0VO$w|Iz_2fQyRf*Cw=?zX77k}K$ z3`9w9ctwoMqVuIG+4NCqwPAO{?IJjHbfjH8HuUXuhnRrZpy$`LDqBRt6k!@n1dvQg_;&FR--CY*FuT{@r=|ZdEf0OY<;wAd`is$3D~4Ko{#m=~MAoi_MLRYgFKStv zx>-Hk0}FfC+7D~aqzAq8W5C_O<9`clm@=R`(KBU8&lFd9nllI=1QqmMVIA0+3g5vA zRHSD1w)MwGlHG@_TTTLG({${NJ(^1HZH|&>_J>avJt53pMEZ-}U^UShj(tJcG0lEzpEUZ5Sg@L+Us@U) zI$VhMYKGGxN-ZM30N)&HuHJE3eDtFa(p?NyM`P}ZA}&CTwTy8*A}sD5>Nsb2yp>w1 zQ}ps>F&Wr1BGocL&T|7&Jet? z91)__S}|@EzA4mNy;b+jLCoPnZ;x?L}=?(RpsS_jx+{e|j8TM_n1 z^{oDJ^?-rJn9gqXJEs%ViB_*W9TxXJiwGKve4FC_LA~wl1-*cSsWd( z!Bx257>6!3o1VXXpWk?dono?LMD zZFQtFTW`0fmoi7sThm>ctIuE4=sK57y^qm?6R7mlx=f(bsdagp%1|vSiOK@4w-Ilx z^~ohK)A}Y-IZI3KMZwY&^EAXv*UrK=gB<-3>I zr()wCrj6)Ikq~WU43&}Es8|Fsd;d;^9o{IQCj1MqB diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Logging.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Logging.dll index 20215ab3b8250723843c42bd19b9413638e866e1..78029aca3cf1f7ff53d0898443008bfb07711369 100644 GIT binary patch delta 167 zcmZoLX)u}4!QvD8o8-CHsMP#3_r>dz zSxizDpn{Qap@KlwIvx`(>ciLa&9ZUTRodKX!pg*H#lXP82*g&Kr<+MLFggC2vyWf*{_W~29k`HllMxhGFonaEcr`_f4@@gooVepTW^azem67y{pL41 zi&*&0^$ZvoxEUGP4D}53OwBjXHDqRD`Oj3ad-4+F0D;_k{|mcZ|M_fo3xCFFIVXHF zi%F^iOwbrA2vXhqx5B+g`%9OqK7Z5ZP7_upPD=&`21X#Z+&tY(nu*bT^Ja_HjEv@! YaJ#XPBL_Nr;v3c@_#0Y;ds`vR zFJCEa1ds5X;o@A%VGL%RYrL+3(oqEf0IihIYTQ5!#_xfB2jNpfn{j$5g|qDkUj!Ig zIH7<5Kmq`YwU(2$mc>ehuZqx-Igt>PWDFx1SJ()h00031E&cTooHX4-ga2iAelo1F zlb;M1M4+Y`v;cqr0R1XI0kXjYN08I1;aIRj)JI`$WkYprbS_P0b7(GPY-|7k0nb5+ z)d0W>07#PMUh0@SL6W@}+4+G9%9HvG8W?@)F^>RX2mnAAP`VIs?n;4kUh@&WSUs~W G4U8e@EN!O% diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.dll index 124537423c740810cfae333a05756187168d11fa..3880dc313ce8364ff1ee70e2946ec7c80280755a 100644 GIT binary patch delta 256 zcmZozpxLlMb3zA8!``{`8hcuM7+ZUoT6>sVdstd~SX+D8w)U{IxG`EypXkPJENjJp z0JC=>*o;7?)%1sM?9z-@?SI|axBqqHNdG2KEPf>G>BeiWvt}*#OFjBLcX^2|=S_YK zJp%>?Zbk++Lp=jMQ;Y4*VqCd;EEaxMU#EX@;R+CVKd+5T_rGymv#O%HM9 z@>PI}9#(~lg4AC%v5H#dcCmi@{-(g~2VJ?&GI4@j2zJf(=^k9dOpF%WS9@_KGcsCC b=l9_tIf2MzN;R+Dg?SHa9;`v**X6r1YnjdR6O%HM9 z@>PI}svU-kg4B1ZG}Lc%++=*hf_umIgRWd>nK(f%1iNPYbPq0JCPwq^tG&3A85zx| b^ZRg_vzjyLF&Jz&bmQ8_xSi3D>pvp^4eVAw diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.pdb b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.pdb index 39ae7b7cb37edcc01c718d02e903a34548d7086b..b980c4a82d46852e370262b3ab53742e9f30e131 100644 GIT binary patch delta 369 zcmeBp$=UIeb3%>C`*|Imp8na+OK&^~oB2n_%fhefYvY8i6Bs3f6?nG4D|{c3aoVuW z>PYdXn|kgGKmGhB-Szm7ko4A-ZkkNnPX;sUGbsdS$tde?Y7b(m;0!XC>wVeYWY)8h zZ$_Mq)c#4U68?VPE)mAa#Hes#uj4B1Bk#J7=IwW~_WZLg;g~J|y?a?49DWjw9qVOQ zZMO<%bYfLl?%)})YVW)g8nOKAY8-9eo)p;|@#=2Db^br4X7_%d%%46dhEamCY5Ud~ z#vT?4pZUw~GdM6Y9NR1x+w`8@Z*5uU)N=>6F-%|Bz$jC%my(miz`&TVzN`^QF_^!3 z5@x1T=e1bA_++ch-NWvQxv9>jIVE~N`RVDIdFfE)KA}%eGc+(TEYZKM{P35xTkG~M zovHtBCBc>ZrIwWE7iA-Kycf~^#*o0lVEB8fkNNQ!za7@!ik6k}F>Y@En#j2QYa-KR FApj$mo*@7L delta 369 zcmeBp$=UIeb3%>CZvT_@5zpVcHCtyH)%;kqN%}?UpT-GWCooC|E1XTpmbMEQeskiD z$=sXEUt9Lv{FJgSDd@b@-^zJg`99=qKN-xZ&!iCWD>L^m`;C9|dKZ@GEnl&6$I*$w z3@b9OGbPR6|Enh9_jZXeMkYpunI{d3Crf2p%qVO~TDIu@fpZTcnYz3aYk5QT|EM(l z_1tb1&gjIdaCW=WTD!CJO58daSq+Qy6BOEbEUxU1d}`B{p;*@bzij%P7)A+3rR`f| z7<*VGA}tm+FgP$VbZwnBdF!;JUM=gpE=;tXC@_6t1EWm6UP?|50|R6D4UV}$ib419 zSHU?Zcb%L6rS4qNrz>#feyJtp`9;|X9knkF`xz2A7#zd{b_o=`^J*-P`z*L8g3-49Ya-+JuZc{P Fg#fL3pA`TA diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.WebSockets.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.WebSockets.dll index 0a2e32de7dc72e18cc73dc8b3fca7792774f4c51..45230ea931b5b01fd08fd48c01233ec5ad889978 100644 GIT binary patch delta 197 zcmZoDX(*Y{!P40;zjcFB^CJv?nLw+Z~W8jv?_dl#QPml_cjM; z2(yY>=ov6Da5FNn8R{A6nOZO~C^It1O+F|uJlVm3d-F8icZ@8YM|~bm?$8eqFx3p! zPd4K9>HqTBu*X#5|Ku0?`3g|Mp7T&akm{9Y4MH=lZtdMXd&|tt8uthI$5irsfO`%8U$hlMl)ZPj)ci-aJkB9V5#^cE4GZJM;qt9`G9e z&6&H#VG+A0v%lpxjmac}eN2vFGM;192u!O9lo8Mj*D_ nJl%+!iP3!XVw3ZXjOLSz&CFTN8T1$oHVaw=F>YqG_|FIcHvm7I diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.dll index 6ec371913b3139d7f9929774622e107cdb2420d9..2e708bf5f4ace4dfd448268b98ed4f23c8a9a92c 100644 GIT binary patch delta 237 zcmZo@P-tjSn9#xUUPSj>V^3=jV`~pnYY+3*9u}q_j8@b8f3U;?skc8^^nsM@PZn`T zt9H|$EZa?gvc9etF#NsL$NYGV-wx|tX)(z&Gr+Je-yc3=E7wY`J~<5BA55jON>`f3dd%>FLaW Z*v(nZ8T1$owhR7aKg_tD=^y()MgU$ET3i4C diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.pdb b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.pdb index 136641cc628561d9c5aa9725c2bfa4d115becf02..18389098bb6432677995dfaec93bd6444dce4952 100644 GIT binary patch delta 337 zcmV-X0j~b=ix2RN50HEmZLW?UyL5I-oY;De2&6uxDc9f5fsnP30mLmJySKgQVRDGE zEz%2yL{G^icmt0K3eWXLip!B_DhZ*wmvk-xvLHJK7clzP0 zbF{>hlYuW4z8}jJa;{bv0E13`_}*;wsnsH$2g3wIw~H?U zs0BJus=9^60-TE&OrNIT06+o&#g6{`Tt#*l(&cL<+mm$FdBS&v1 zrhxze0RT7bf7XI-Y+fsnP30mLmJpMeC#aV*FJ zuHk&Zt>5wvV-)9rMYUo&RviALiHDD+@+q6Fr%$e-@CXGq&=49Ar5z-AA3)-~|hyw_Lx+4Vu0IihWYTG~%h3^A- zhrw4Z#8P@u3Wseq0k>^60-TE&SvaA906+o&inW%LwU)(7gs+OwkvWkNmm$FdBS%-* z2%P``0RS!i^%0yj-9v-_Wp;ittg%O7ZDm7sY;-P6Z)ay|Zf7oJY-|7k0idQDv;cqr j0R1XI0kXjYN08I1;aIRj)R&D=0~&{=!2-9X!2?SKVV994 diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/x86_64/gamecult_mesh_quic_native.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/x86_64/gamecult_mesh_quic_native.dll index a58ef10c1ae2b4004597e7cbc560b6a0c2b5e49b..06a43172c0ed5d51c555db088f6fab78e29a79dc 100644 GIT binary patch delta 27 fcmZqJ!_=^cX@dYGv!?5c&BBa{Nnl2Ka;FslfT0OW delta 27 fcmZqJ!_=^cX@dYGv+S4Un}rz@lfaDf Date: Mon, 14 Sep 2026 21:34:23 +0200 Subject: [PATCH 0014/1002] Write an unset CultRecordRef as "" in every position 452f928 made nil the unset wire form, including dictionary keys: a Dictionary, float> holding the empty key encoded it as C0. Python msgpack refuses nil map keys under strict_map_key, its default, so cultcache-py cannot decode such a record. Nil cannot be the one canonical form; "" can, and every runtime reads it. The writer always writes "". The reader still takes nil as unset, because 452f928/b85a828 stores and Aetheria's Cut 9 import wrote nil; such a record converts to "" on its next save and is byte-stable after that. The store-composition contract names "" for value and key position, requires readers to accept nil, and tells other runtimes to write "". The tests pin payload bytes, so each claim is consequential: an unset ref writes "", reloads through a fresh cache and resaves byte-identical; a nil-written legacy payload reads as unset and resaves as ""; a ref-keyed dictionary with an empty key writes "", reads back unset and resaves byte-identical. The nil writer fails every byte assertion, a reader taking nil as a set key fails the legacy pair, and a reader taking "" as a set key fails the read-back assertions. Co-Authored-By: Claude Opus 5 --- .../CultRecordRefFormatter.cs | 11 +-- .../Contracts/cultcache-store-composition.md | 16 ++-- .../SerializationOptionsTests.cs | 74 ++++++++++++------- 3 files changed, 59 insertions(+), 42 deletions(-) diff --git a/src/GameCult.Caching.MessagePack/CultRecordRefFormatter.cs b/src/GameCult.Caching.MessagePack/CultRecordRefFormatter.cs index 1aa0968f..5a8ac630 100644 --- a/src/GameCult.Caching.MessagePack/CultRecordRefFormatter.cs +++ b/src/GameCult.Caching.MessagePack/CultRecordRefFormatter.cs @@ -3,15 +3,12 @@ using MessagePack.Formatters; namespace GameCult.Caching; -// An unset reference (the empty key) is nil on the wire and default(CultRecordRef) in memory; a "" read from older -// stores is the same unset reference, so load then save is byte-stable. +// An unset reference (the empty key) is "" on the wire in every position, map keys included (other runtimes refuse nil +// map keys), and default(CultRecordRef) in memory. Nil, written by 1.0.58 stores, reads as unset and saves as "". public sealed class CultRecordRefFormatter : IMessagePackFormatter> { - public void Serialize(ref MessagePackWriter writer, CultRecordRef value, MessagePackSerializerOptions options) - { - if (value.Key.Value.Length == 0) writer.WriteNil(); - else writer.Write(value.Key.Value); - } + public void Serialize(ref MessagePackWriter writer, CultRecordRef value, MessagePackSerializerOptions options) => + writer.Write(value.Key.Value); public CultRecordRef Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) { diff --git a/src/GameCult.Caching/Contracts/cultcache-store-composition.md b/src/GameCult.Caching/Contracts/cultcache-store-composition.md index b24c83b3..ab028fca 100644 --- a/src/GameCult.Caching/Contracts/cultcache-store-composition.md +++ b/src/GameCult.Caching/Contracts/cultcache-store-composition.md @@ -239,13 +239,15 @@ another runtime need not obey the `storedAt` rule. ## Record references A record reference is its target's key string. An unset reference, the empty -key, is **nil** on the wire, never `""`. A reader takes nil and `""` as the same -unset reference and writes it back as nil, so loading and re-saving an unchanged -record is byte-stable. In C# the unset reference is `default(CultRecordRef)`, -equal to one built from `""`; `CultRecordKey.Value` is never null. Rust, -TypeScript and Python have no reference type: a reference member is a string in -the consumer's own payload value, so a consumer writes an unset one as its -language's null (`null`, `None`, `Option::None`), not as an empty string. +key, is **`""`** on the wire in value and map-key position alike. Nil cannot be +the form: msgpack readers in other runtimes (Python under `strict_map_key`) +refuse nil map keys. Readers must also accept nil as unset, because C# 1.0.58 +stores wrote it; the writer always writes `""`, so such a record converts on its +next save and is byte-stable after that. In C# the unset reference is +`default(CultRecordRef)`, equal to one built from `""`; +`CultRecordKey.Value` is never null. Rust, TypeScript and Python have no +reference type: a reference member is a string in the consumer's own payload, +and a consumer writes an unset one as `""`. ## Value-type encoding diff --git a/tests/GameCult.Caching.Tests/SerializationOptionsTests.cs b/tests/GameCult.Caching.Tests/SerializationOptionsTests.cs index ff17d598..1b6dfe16 100644 --- a/tests/GameCult.Caching.Tests/SerializationOptionsTests.cs +++ b/tests/GameCult.Caching.Tests/SerializationOptionsTests.cs @@ -38,41 +38,47 @@ namespace GameCult.Caching.Tests Assert.That(Convert.ToHexString(payload), Is.EqualTo(InteropNotePayloadHex)); } + // An unset reference is "" (A0) on the wire. Legacy is the same record as 1.0.58 wrote it, with nil (C0). + private const string UnsetRefPayloadHex = "93A6686F6C646572A0A56F74686572"; + private const string UnsetRefLegacyPayloadHex = "93A6686F6C646572C0A56F74686572"; + // A ref-keyed dictionary whose unset key is "" (A0): msgpack readers under strict_map_key refuse a nil key. + private const string RefKeyedPayloadHex = "92A6686F6C64657282A5616C706861CA3E800000A0CA40000000"; + [Test] - public async Task UnsetRefReloadsAndResavesByteIdentical() + public async Task UnsetRefWritesEmptyStringAndResavesByteIdentical() { var path = Path.Combine(Path.GetTempPath(), $"cultlib-unsetref-{Guid.NewGuid():N}.cc"); var registry = CultDocumentRegistry.ForTypes(new[] { typeof(UnsetRefHolder) }); - byte[] Payload() => CultDocumentMessagePackSerialization.DeserializeSnapshot(File.ReadAllBytes(path)).Records.Single().Payload; + var key = new CultRecordKey("holder"); try { using (var seed = new CultCache(registry)) { seed.AddBackingStore(new SingleFileMessagePackBackingStore(path)); - await seed.UpsertAsync(typeof(UnsetRefHolder), new UnsetRefHolder { Name = "holder", Set = new CultRecordRef(new CultRecordKey("other")) }, - new CultRecordKey("holder")); + await seed.UpsertAsync(typeof(UnsetRefHolder), new UnsetRefHolder { Name = "holder", Set = new CultRecordRef(new CultRecordKey("other")) }, key); await seed.FlushAsync(); } + var written = Convert.ToHexString(StoredPayload(path)); - var written = Payload(); - CultRecordRef unset; using (var reopened = new CultCache(registry)) { reopened.AddBackingStore(new SingleFileMessagePackBackingStore(path)); await reopened.PullAllBackingStoresAsync(); - var loaded = reopened.Get(new CultRecordKey("holder"))!; - unset = loaded.Unset; - await reopened.UpsertAsync(typeof(UnsetRefHolder), loaded, new CultRecordKey("holder")); + await reopened.UpsertAsync(typeof(UnsetRefHolder), reopened.Get(key)!, key); await reopened.FlushAsync(); } + var resaved = Convert.ToHexString(StoredPayload(path)); - Assert.That(Payload(), Is.EqualTo(written), "an unset reference loads and re-saves byte-identical"); - Assert.That(unset, Is.EqualTo(default(CultRecordRef))); - Assert.That(unset.Key, Is.EqualTo(new CultRecordKey("")), "default and \"\" are one empty key"); - var legacy = MessagePackSerializer.Serialize("", CultDocumentMessagePackSerialization.Options); - var read = MessagePackSerializer.Deserialize>(legacy, CultDocumentMessagePackSerialization.Options); - Assert.That(MessagePackSerializer.Serialize(read, CultDocumentMessagePackSerialization.Options), Is.EqualTo(new[] { MessagePackCode.Nil }), - "a \"\" reference reads as unset and writes nil"); + var legacy = (UnsetRefHolder)CultDocumentMessagePackSerialization.DeserializeUntyped(typeof(UnsetRefHolder), Convert.FromHexString(UnsetRefLegacyPayloadHex), registry); + var legacyResaved = Convert.ToHexString(CultDocumentMessagePackSerialization.SerializeUntyped(legacy, typeof(UnsetRefHolder), registry)); + + Assert.Multiple(() => + { + Assert.That(written, Is.EqualTo(UnsetRefPayloadHex), "the writer writes an unset reference as \"\""); + Assert.That(resaved, Is.EqualTo(UnsetRefPayloadHex), "reloaded through a fresh cache, it resaves byte-identical"); + Assert.That(legacy.Unset, Is.EqualTo(default(CultRecordRef)), "a nil reference reads as unset"); + Assert.That(legacyResaved, Is.EqualTo(UnsetRefPayloadHex), "a nil reference resaves as \"\""); + }); } finally { @@ -81,31 +87,40 @@ namespace GameCult.Caching.Tests } [Test] - public async Task RefKeyedDictionaryRoundTrips() + public async Task RefKeyedDictionaryWithUnsetKeyRoundTripsByteIdentical() { var path = Path.Combine(Path.GetTempPath(), $"cultlib-refkeyed-{Guid.NewGuid():N}.cc"); var registry = CultDocumentRegistry.ForTypes(new[] { typeof(RefKeyedHolder) }); var alpha = new CultRecordRef(new CultRecordKey("alpha")); - var beta = new CultRecordRef(new CultRecordKey("beta")); + var handle = new CultRecordHandle(new CultRecordKey("holder")); try { using (var cache = new CultCache(registry)) { cache.AddBackingStore(new SingleFileMessagePackBackingStore(path)); - await cache.UpsertAsync( - new RefKeyedHolder { Name = "holder", Weights = new() { [alpha] = 0.25f, [beta] = 2f } }, - new CultRecordHandle(new CultRecordKey("holder"))); + await cache.UpsertAsync(new RefKeyedHolder { Name = "holder", Weights = new() { [alpha] = 0.25f, [default] = 2f } }, handle); cache.FlushAllBackingStores(); } + var written = Convert.ToHexString(StoredPayload(path)); - using var reopened = new CultCache(registry); - reopened.AddBackingStore(new SingleFileMessagePackBackingStore(path)); - await reopened.PullAllBackingStoresAsync(); - var loaded = reopened.Get(new CultRecordKey("holder")); + Dictionary, float> weights; + using (var reopened = new CultCache(registry)) + { + reopened.AddBackingStore(new SingleFileMessagePackBackingStore(path)); + await reopened.PullAllBackingStoresAsync(); + var loaded = reopened.Get(handle.Key)!; + weights = loaded.Weights; + await reopened.UpsertAsync(loaded, handle); + reopened.FlushAllBackingStores(); + } + var resaved = Convert.ToHexString(StoredPayload(path)); - Assert.That(loaded, Is.Not.Null); - Assert.That(loaded!.Weights[new CultRecordRef(new CultRecordKey("alpha"))], Is.EqualTo(0.25f)); - Assert.That(loaded.Weights[new CultRecordRef(new CultRecordKey("beta"))], Is.EqualTo(2f)); + Assert.Multiple(() => + { + Assert.That(written, Is.EqualTo(RefKeyedPayloadHex), "the unset key is written as \"\""); + Assert.That(weights, Is.EqualTo(new Dictionary, float> { [alpha] = 0.25f, [default] = 2f }), "the unset key reads back unset"); + Assert.That(resaved, Is.EqualTo(RefKeyedPayloadHex), "reloaded, it resaves byte-identical"); + }); } finally { @@ -113,6 +128,9 @@ namespace GameCult.Caching.Tests } } + private static byte[] StoredPayload(string path) => + CultDocumentMessagePackSerialization.DeserializeSnapshot(File.ReadAllBytes(path)).Records.Single().Payload; + [Test] public void DeclaredResolverEncodesValueTypeAsPositionalArray() { From 29bec57021c091f7bb16f33d77ed964659181764 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 14 Sep 2026 21:34:23 +0200 Subject: [PATCH 0015/1002] Decode an edit's Record from the bytes its Document came from BeginEdit cloned Document eagerly but Record lazily from record.Document, so a cache change in place before Record's first read made the two copies come from different states. BeginEdit now serializes the document once and deserializes Document from those bytes; Record deserializes the same bytes on first read. Record is the state the edit began from, and costs one deserialize only when a drawer reads it, with no second serialize. Each commit still spends the edit, so a slider drag begins an edit per frame; that serialize was already paid for Document, and Record adds a deserialize only in frames where a drawer reads it. The new test mutates the cached document between BeginEdit and the first Record read; it fails on the lazy clone. Co-Authored-By: Claude Opus 5 --- src/GameCult.Caching/CultInspectorModel.cs | 6 ++++-- .../CultInspectorModelTests.cs | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/GameCult.Caching/CultInspectorModel.cs b/src/GameCult.Caching/CultInspectorModel.cs index aaa7bbaf..6a86f5ee 100644 --- a/src/GameCult.Caching/CultInspectorModel.cs +++ b/src/GameCult.Caching/CultInspectorModel.cs @@ -252,7 +252,8 @@ namespace GameCult.Caching public object Document { get; } // The record being drawn, as stored when this edit began, for drawers that read the document they sit in. It is a - // second copy, made on first read: not the cached object, and not Document, which a lowering commits. Nothing + // second copy, decoded on first read from the bytes Document came from, so a cache change in between cannot split + // them: not the cached object, and not Document, which a lowering commits. Nothing // reads it back, so writing to it saves nothing and changes neither the edit nor the cache. public object Record => _record ??= _snapshot(); @@ -353,7 +354,8 @@ namespace GameCult.Caching { if (record == null) throw new ArgumentNullException(nameof(record)); var type = record.Descriptor.DocumentType; - return new CultInspectorEdit(record, Clone(record.Document, type), () => Clone(record.Document, type)); + var snapshot = _serialize(record.Document, type, type); + return new CultInspectorEdit(record, _deserialize(type, snapshot), () => _deserialize(type, snapshot)); } // Whether CreateDefault makes a value: a string, struct, list or dictionary, or a concrete class with a parameterless constructor. diff --git a/tests/GameCult.Caching.Tests/CultInspectorModelTests.cs b/tests/GameCult.Caching.Tests/CultInspectorModelTests.cs index 1de5eaf8..7ce19824 100644 --- a/tests/GameCult.Caching.Tests/CultInspectorModelTests.cs +++ b/tests/GameCult.Caching.Tests/CultInspectorModelTests.cs @@ -199,6 +199,18 @@ namespace GameCult.Caching.Tests Assert.That(none, Does.Contain("cannot serialize")); } + [Test] + public async Task RecordIsTheStateTheEditBeganFrom() + { + using var cache = new CultCache(Registry); + await cache.UpsertAsync(typeof(InspectItem), new InspectItem { Name = "original" }); + var record = cache.AllStoredDocuments.Single(); + var edit = Model().BeginEdit(record); + ((InspectItem)record.Document).Name = "changed in place before Record was read"; + + Assert.That(((InspectItem)edit.Record).Name, Is.EqualTo(((InspectItem)edit.Document).Name).And.EqualTo("original")); + } + [Test] public async Task RefusedCommitLeavesTheCachedDocumentUnchanged() { From b03118db2cd10534eae2150254d620e4b9d1519d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 14 Sep 2026 21:34:23 +0200 Subject: [PATCH 0016/1002] Space the Studio drawer's ReplaceKey and FreshKey arguments Co-Authored-By: Claude Opus 5 --- .../Assets/Caching/Editor/CultCacheStudioDrawers.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/GameCult.Unity/Assets/Caching/Editor/CultCacheStudioDrawers.cs b/src/GameCult.Unity/Assets/Caching/Editor/CultCacheStudioDrawers.cs index a421a476..2b4a87cb 100644 --- a/src/GameCult.Unity/Assets/Caching/Editor/CultCacheStudioDrawers.cs +++ b/src/GameCult.Unity/Assets/Caching/Editor/CultCacheStudioDrawers.cs @@ -245,7 +245,7 @@ namespace GameCult.Unity.Caching.Editor var item = DrawValue("Value", shape.ValueType, entries[i].Value, member, path + "{" + i + "}.value"); if (EditorGUI.EndChangeCheck()) { - key = Model.ReplaceKey(_edit.Document.GetType(),shape.Type, entries.Select(e => e.Key).ToArray(), i, key, out var notice); + key = Model.ReplaceKey(_edit.Document.GetType(), shape.Type, entries.Select(e => e.Key).ToArray(), i, key, out var notice); Notice(path, notice); entries[i] = new KeyValuePair(key, item); changed = true; @@ -264,7 +264,7 @@ namespace GameCult.Unity.Caching.Editor if (Add(shape.ValueType, path, out var created)) { - var fresh = Model.FreshKey(_edit.Document.GetType(),shape.Type, entries.Select(e => e.Key).ToArray(), Records, out var notice); + var fresh = Model.FreshKey(_edit.Document.GetType(), shape.Type, entries.Select(e => e.Key).ToArray(), Records, out var notice); Notice(path, notice); if (fresh != null) { From 2053ab740dbd6638129a8e538f7a34c278670106 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 14 Sep 2026 21:34:23 +0200 Subject: [PATCH 0017/1002] Build the native QUIC connector reproducibly with /Brepro b85a828 changed x86_64/gamecult_mesh_quic_native.dll with no native source change. The two copies differ in six bytes: the PE header TimeDateStamp and the debug directory timestamp. The MSVC link stamps the build time, so every -UpdateTemplate run rewrote the committed DLL. /Brepro on compile and link replaces the timestamps with content hashes. Two clean builds from an emptied build root now produce identical bytes, and the DLL embeds no build path. The committed DLL changes once to the reproducible form; after that the release byte check covers it like the managed plugins. Co-Authored-By: Claude Opus 5 --- native/GameCult.Mesh.Quic.Native/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/native/GameCult.Mesh.Quic.Native/CMakeLists.txt b/native/GameCult.Mesh.Quic.Native/CMakeLists.txt index 2850951d..dcb3014c 100644 --- a/native/GameCult.Mesh.Quic.Native/CMakeLists.txt +++ b/native/GameCult.Mesh.Quic.Native/CMakeLists.txt @@ -14,6 +14,9 @@ target_compile_definitions(gamecult_mesh_quic_native PRIVATE GAMECULT_MESH_QUIC_ target_include_directories(gamecult_mesh_quic_native PRIVATE "${MSQUIC_ROOT}/include") target_link_directories(gamecult_mesh_quic_native PRIVATE "${MSQUIC_ROOT}/lib/x64") target_link_libraries(gamecult_mesh_quic_native PRIVATE msquic crypt32 bcrypt) +# The DLL is committed beside its source, so a rebuild must reproduce it: /Brepro drops the link timestamps. +target_compile_options(gamecult_mesh_quic_native PRIVATE /Brepro) +target_link_options(gamecult_mesh_quic_native PRIVATE /Brepro) set_target_properties(gamecult_mesh_quic_native PROPERTIES OUTPUT_NAME "gamecult_mesh_quic_native" From a0813c6eed24d30bf88073ef615b633c77ebfcd6 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 14 Sep 2026 21:35:34 +0200 Subject: [PATCH 0018/1002] Release CultLib Unity 1.0.59 and the Studio 1.3.1 Corrects the 1.0.58/1.3.0 release. Rebuilds the tracked plugins with scripts/build-unity-package.ps1 -UpdateTemplate so they carry "" as the unset CultRecordRef wire form in every position (nil still reads as unset) and the edit-start Record snapshot. The native QUIC connector changes once to its /Brepro form; later rebuilds reproduce it byte for byte. The Studio package moves to 1.3.1 and depends on cultlib 1.0.59. Co-Authored-By: Claude Opus 5 --- .../Assets/Caching/package.json | 4 ++-- .../Plugins/GameCult.Caching.MessagePack.dll | Bin 41472 -> 41472 bytes .../Plugins/GameCult.Caching.MessagePack.pdb | Bin 18940 -> 18924 bytes .../Runtime/Plugins/GameCult.Caching.dll | Bin 118784 -> 118784 bytes .../Runtime/Plugins/GameCult.Caching.pdb | Bin 38024 -> 38032 bytes .../Runtime/Plugins/GameCult.Logging.dll | Bin 6656 -> 6656 bytes .../Runtime/Plugins/GameCult.Logging.pdb | Bin 9256 -> 9256 bytes .../Plugins/GameCult.Mesh.Quic.Native.dll | Bin 15872 -> 15872 bytes .../Plugins/GameCult.Mesh.Quic.Native.pdb | Bin 11960 -> 11960 bytes .../Runtime/Plugins/GameCult.Mesh.dll | Bin 675840 -> 675840 bytes .../Runtime/Plugins/GameCult.Mesh.pdb | Bin 160904 -> 160904 bytes .../GameCult.Networking.WebSockets.dll | Bin 14848 -> 14848 bytes .../Runtime/Plugins/GameCult.Networking.dll | Bin 524288 -> 524288 bytes .../Runtime/Plugins/GameCult.Networking.pdb | Bin 247280 -> 247280 bytes .../x86_64/gamecult_mesh_quic_native.dll | Bin 40448 -> 40448 bytes unity/org.gamecult.cultlib/package.json | 2 +- 16 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/GameCult.Unity/Assets/Caching/package.json b/src/GameCult.Unity/Assets/Caching/package.json index 2717cdeb..016a25e9 100644 --- a/src/GameCult.Unity/Assets/Caching/package.json +++ b/src/GameCult.Unity/Assets/Caching/package.json @@ -1,7 +1,7 @@ { "name": "org.gamecult.caching.unity", "displayName": "GameCult CultCache Unity Tools", - "version": "1.3.0", + "version": "1.3.1", "unity": "2021.3", "description": "Unity editor tooling for inspecting and editing CultCache .cc stores.", "keywords": [ @@ -10,7 +10,7 @@ "Data" ], "dependencies": { - "org.gamecult.cultlib": "1.0.58" + "org.gamecult.cultlib": "1.0.59" }, "license": "MIT", "category": "Scripting" diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.MessagePack.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.MessagePack.dll index 7d73acbb9a6fc16af8565ecbc961e094781d1e1e..d57846bb430c3bd533735cbb969ef9f3cffc558f 100644 GIT binary patch delta 14092 zcmZvD349b)w*I+Q)zxd#UEN7{l1``7*{GxwAncnM1Vm7jO$8AZMFkZL5`_TzW=-!@J;pq?9t%0pzRVa4o06bMAg?1``02vSEB>nRABbha^j zLD=9^&EEKCML|F}`>-UWxAeugrJsGDUMu?Bujmiv20&2VR!yYo$Mx&spk*MN3<9Z( z_0(t?ociEYF$Y6bA8G!UXihU~o6|A`f<JR+^2Q?9aW)ye2N9n}R57ongm(J+2=CNkF$o;!}TyZk>tmTct>d z$qI86i?eU}ku51mtd2le9oH>nFc9Ck$r{aOs4pS$A?HX$Eex!&VC&vC&&5Ys%0)~Sp)DN;EICsHG$#OB6G4_1bD>Fg z#9v%^K5%t|R#TAG3#KJx zDEgn{Ft4#62_*ac%uBI(Ep+f^UB@;&Q5ej|cg-xR1F(MxROMsXpA=nh_XyVHPSzar zM!ines5RD8rS16U|D<;IOs0iTuw@Qt$Qy5r`yk@^SKXl3H2(*=u;v1J6ODab+dQ9t zHKww#njw$Jv~1ibgEO=!+3yC6lI$?%@fn`g7`wu1k!CuZU2l6sncO@G3~yp`%xieP zy}tC-eWa8)?NY7z(8(sF+ZS}Rn!xY(+K+7Vif_l8M(5swi z$dl>>|ZtTx-g$hnedwu8-!s-_1si!)|oAL8ZGc>)|VQ(GTHF-vkyBJMej!$QEZ|=h1(uKdZ3%{ZZe;asrK&Tdj zKs=ZY>)wqa#V36t#X+yWW>&AyQPb^Rt#7xV%IlfqehRd#1U+@ORzahmDp{*pajImk zVMXyNviJ*Dl>AgNLw3m>tVuTZb2=~N^{vKIB&-gI<9XSnSGLUmvyR;4PfX79`+Duy zOB?$-C1aY`&{kt*5!RhtHs;9|dac{--T7%T&;B&OqBG?-wB}tPNXlB~d4hpo*M(ot z{N0XxLl=Hy7n@&pk>ArP$23=I8^&X_%XqvO+Mu3`H-<2X?gOxX1#-&F-p`6tW%k#s zD3%^Jv4;m3mz=~8GEPd&lh?wW2p~CJqqP4o8U;b>q``l~pe&RPI3v`Tm>lxyz5ea3 zyTMZ7iRLzBQDXzdmyA?{L zLnjP%@*^E@#jvHxeXnzeO#Gi6^0z2dkC=Ukq3$izf9j1g=j@b;)o_XZQ!(K`yUBbE zrRODi<1ABJM)IC;#?r?jlYCn-w}JZyb6x%^<`b+$cLkP|LD>~!m+!<+vc6nmY*pDM z8KRt~c+B5Hu6CX-idCF0rh+)93q@^tii?$UF|E46TcgTjM9c44nu4^hm(n~R_U6-& zAl}vr79w#=B-2Z2<+9c@tUXszj_c>4JuS}yntvespGM`G&w+2=2^S^i|A1XG6!yCL zJhP{RZFvD)P(YqB0|2Q-R-RUF@?_3%;Mkf>Rj1#?`-nyk0%grd5QHL_MS$RjBPf@_Vt!m?I&XugI{Nx2yAcw z#QLJQyukv4>kNa$H2<0gkD;xpFHl@tbmYw~zJnjeAGsMyWt#*4&G`}TNQ?jI0Uw;^n|>oGC2 zK{w2QLT7ypl9x67)+|SL3%n#i!xmzJR}8_q%O&+S;X@>6Y`j>Gwo+>ob(A z4|@%dp_~0KM4Z;=khuQd>grFG=M$wBGgmVU5Sin}`of-;C=y@V3le7NFv?c9^_C5= zf0IZReI*5bSb%jXYhnq^>R#*L_6LcgZq7*W%gSO_@8l49pAK3L+$ZPm9x<9x7Q&e@uzhSU+0Lpclu{e5k&REv`Y{r`BL#?2> z?0-7*K3@1VH{|ajc6(Q{<`H{QagQ24L{>NV)!aiPu2an{(c~Er1)L?#ezW-WP}kMV zE-7hE{6AP)M?vD&F;Mdd#>dItT2dzt+kYu3bGvAe4AvIOD&s0Nbik~^$MQlP$}aF(J}@y4Mv>(Q7xh{Jd>Z^N&MJmC zrZ@izEi!b-f>6rU3Vew9MZ9F@fonEAu<=;=EL{RA_^_aA2bd9v{wB}G(9VaVv*-fm-BLF&FH5QBW$1Bvip3pEF)t#rFHVIE<>XJmd4p0= zccM4jQr)~o5b9=;{YdKS99t!wC7oNXwv>Q6*F79-sR%~_wV|85aC99jCU36Jcri_8 zTi~ZoH8D7K92l+xk|WF6?HZbr@}O89Z_d|g&Zg=_XFNF=ZmKS7#>oTXVyEP$>XPO` zEHIM@#<`E;#whPa*CHqkOhdJ9MA7&(b4uvK!;g(-4>5yqcq%1}`nLX*fpAK-R}=>GHZ52 z_cX+tzma7P-%rbqGqKd^L9ZNVPU_q)8VN^T&Q1hcOR?IpMEDN&gR-Te_zLndVOzfu0rtpioo<>o3QR^blo)V#hJcYJRsrD)Cd|x zDtqDUwR(ew_7ynEWp{1|zLyy^P)-@SUv?P|&98ILcpwDic`Zn~)}R(=MM-fyfd*1r zOTB$w#jH#pm{bDeZ)lU*7s%`f5_JNMa~FVIIke#9t40PwP-SR$Wndx})Ql4;;!nRS<^7 zPu>EpCi~LrWR6EeT?KT*xEwQh&^8Gp?z1}0-(*7$of ze_`KQ^rWey>gSkhEh7cx%Mxe09`kK)P5059e_m}z;VTz)XI$|TuC$)cv->QzzfWmx z0+6Q`)fx>^L(~HatE02-aeyS zLyiw2O6zcLD(_33TaPRHv(%o^+4fTyCaiPeRcVzroQzZ0M1^%8jA|S!oMpM!$`mtB z)RV7}&W#PD3nL2y)oFv$IrzqMPCfo2~ zdcN6BcPGgvv)>55@hGilcGhiu0c?#!%niOoOn?8c3NETA)l0j>u**pcTesda-Y%^z z%e{(%)onf4(Gy_JdJI?`1KIP*Gp~u0em2jQa?Y%OvMozv$e#>@=X1=Xw4TN42>{ka zmUy#s46ikbSznikaQ~90id^ThBI>u^fls9TMAe-(CrpB!iIXNA$Infitf4}AguiuP z$ne(VO|SD1FJn8uOKeuIGdQ=+&RxpAgLPJnQ>!zsPKNd~i_YFU8Q9MZqHgS+p{;O3 zi=2p!i*iT5T$jF#$GCL?;`CV;a^~`~-J*HsWM=cbBoS9cp27I=0wrUF*%a^%Z{gaO zcRYUf$y?jWyjtJeXJ#|vTzh6VCBClobI_dDF(6&uWSkiksQY7FX&npInprJVVO(uq z3|eMR1GO&U(#Q3Cd4ygH-n{8-2>J>dwWxQ0sXo;=*l8=S61{B&sz7M(g6& z99Q^o=#$U54VdJrb*24kLrPq2f7(z5n%})t%(AoHi^pG$0@Z;fQ&3vx9VC05vpF{X zqUoZgv!J|gYRk3w)D2QvC!VZ=VV4@aKznWX?7&DhQ6Ea5g$E_W zl*Ktur}H8&M0NVNF(IzgOA)5eOa3Ftw@G@hqz_5?0LkASX3HNV?Cs6G(!u~GjiCiP z?Fh5v!E|Y%PV>Tpa!H+1kwKs{B~3?Jv8#;f2VpKYp(Ilfptb7avV7X3JQ5AiJH?C3 z0`%KrmWRqR1^IM!1^dfL8ig{N6>)%%8ZmwuX@!F7OoRAtbz z5$YDNPR}NmgMKgRAEe~$IG23`d_LVNeGV&UpI;QfGDnjVto~Zt;#I{wY#d(kXbJz^ zF(QwvKa2u8{Z=~4mvomlv|*hb&9E8#PkzL(3ld=)*^JMPJdFl?BtwG_(Lg9`(?8Fy)tzr<*dG2 zR^JP$hEs*xT_wXcWc6=L`A#X>DLd#oNl8lXFL@=UiW$hLPP1jZ!|H9Q_@%^WJm#c_ zYeG48ePxK-_xlv{|1A^voTP6{x=V)jRg7&a3pv%*eztr%$dW&lG2NTT^zSLA$7R|} zeLTcg${ZX_an2URxYTzt#D`@TzfI4uKkwC;8!y9x= zqS+D!r~vadLVc0PvG_HwkOaytRv(Fu#cy;)5{)*F#-;%!CHgLPG&YvO`Mf6>P`Yx^vORO+e5|FBu%qbM`M2i8Y$5Q(5uov9h(fDuor%||5(ij{U{j)omtA3j^|Li2$EcB8R*WW3HqL1 z+8v*Xw%zZv?$s6B@q%+%IWNPv6zwQE>}xWasQ&+juIV1 z=S{goaXhz%Lv-*2x=jtyw;vyxSTLJi$3k$x zq%B1^NaUogjFw5Xj@Fj!3zyMLj*brIe;iKJ_b&35d>JmMc06|wt)p$eZ^9Y6;{^I4 zTuFOew8Q6%)X;|~P$ZHwX#}3JxZs}x$w-zKyXeb6Wu%_&cTs&N8)=|%wT|V`Oz%i{ zO5yxP)Il!>21k0(WEX7>jEpo=2v=OzU0Zoxq!&HsqDhrgB7NvX+$LD}a?ur$zSt6R zm}2;7(dMjwFi(+j64UlLD)n{&q45B6%4b9{tgXt_6jq=?Z8A2Dk zXtHm0-b<2wDwI<4a?!uXQYa>ncABmjmn@Gdq%^B;zgpU6;0q5!E z*elv_+9=U7-)G)UkrA}XMXIk|8$nwn+C>MVcVYc}+C@9CAC08fBx1nLPNbpq|lWCGf z?KGw|YfPbIrxDlRPTPb1jf?25p^oY9is8n^wET1jedHTsTtWvVf@S_V<5D`-chQyFTBDhkx@a|}j25~@qTDjtBOW*A(QU5s4DDHCKCN?6(DRb9fbMhA63-uv z8|c4W^qwbW+(?hOXr2C&v5=l}(NTS`v51~=(dpil(MsE0)Ezz-({2al=zhQ@w8vHc z=-Fp1r4L;6jQ+XNMh9JVx%V3b6GtK^7dO%Ou5JzvA~#Xf2+rX$`c_q<%V?&H+BI)< zIlb?qXFN*uX7Z18EOSMALG%_Xb>X?X61|lMNaR$pf|^|2l|rW#^x98!@4C7(rEc1p z?6kAoOo^7!M3IcHpaHm|ozyi+w2Usx=@}>|c2V9&Q(dK>ZjIbV%ev@prgrG^~OkeI2N@F2Qo|TRH z2vjAf*t2|;mx&PMROV2DhAH%1nzbKD&ly-M)I&D-BP3M836j(I3p7=u0cm^bu+sD; z2`=!sEbu+lg6@+6IW2z2er8yuc+P%*SRxmZj<^RDnJ3i^+R2%o;<7JFn_Ac)PcoF= zGOQfVKb=848NCB{R6$*-BX?-mhGk{`rsia-9R&x`*)?5Fxo~HT6Ec5J;r;n+-!6l5 zs&x3S)bZo=gOjt9gF#TD5UaW%$DQN4llo{DE?7GLn~y8fEW(Kn{0{u|XMpOs@9ZcE zP%S9#HIfdLbeN>0B^@v66iKH`I!n^IpoO%M`AhH{(2kNMwmo*b8MKlfm;7$fTKuHe z!+##=a{olyAmvr`diolw!WCd1{@o_?^^&i`NqsqZrW@peVzY9u{pRq>G~1jbZ6-cvTN*x!KDR zPam;eVSW|(vEnXCi=n+lY*wxb_7JgGF<|vx~W6Utt9F$LKsro=Gl-wiquSQ^bW8cY(g;Wx6=cw9>a6PVWrg zrcRM%HzU0dgTJ&Q0`2==rnjZJL*FjlqP|OKM6=>u+MC{~=EkcdEB*-69=_Yuh0^Il z(TsL46b~0NJv+v9W`gO|kv~jb7Y8uI>Z<7-ywD}&52dPtl-#Jhz=2{%!1w_)j^Dd4pEw9Q?AS}x@&XP4lyIc zE{>tf4)G4CUrZ@v%X@)~dB@n5aA zQv?HTv*7doW?_NyKx+bjhj*MdMeS8^zIFgEuFwuiS_?-j#514~+Ab-Nl2&cH$|GhE zBx6xQoxfe1r5+BxqHV@6rmt%Ym1xDEwXbC;$E2TQv>AsB`kFR_V$!A$YkR~eL7g<| z;)rru#gE!Cy0skbRxiQ(K**JUnm5!_;PPA23p}NguadM@tnj_ysfV9Ko?6jT`nBg% zjF_b8Bd&@D^dZvb5d9;sMDHW=3v-7&$7oc#S|1^{mJHU<5!1?ds)uN~Z#;NEZppQx zBz>WNfW}ubKfh`P=y!PYn&ehi=Wo^bC?hJL(l3^hBT7x>ZrG1XlXnJu8s6)q&v{~2 zbiBS@WuJY-c?e}5sy~$T96{>py?sO|HPX9Sx>)Wy>RWNWca`MlLHmODi1I}GRqtI= za*w1BN?I%YLCtqSX0cYR^XW89xu;~Uf;VE3{+pj*5-vOFL=ugU0N0cq; zCw#f*B-kP8Ym&a}s_%)8@gGtC5p4FqC);tr$qnYnPW5Zqf!jkv>U#S=59q@mRjDG4rMrbj*{rcvy7{_%$AA8SOx{5t7S;{XzZq{?Vz}n$oKR$7FDt;&j|iwlOA!L49{%x^`#y zH-WFjoY)F+M4cXe0{o7WmjZL)S*PjR=ENTGBP*7x3l*RLqdOw&xlOkT~wg(gW6o}$alZ^6kU2X*Ja{w8lE9JR2w8DPdAPJ8bdJI!Y?5qzMxk^=sE^oOgh%{iw6$bR z=wc`?1LZ;2s6K^xzYw|9X_k7t{JK!P_F&9M@>9j+;r({WJp;A`#V8{^j zGY^MqMbGlzhlVKpCU>1|(h((?`7$(5+8{N~_aoazkB_yxd@+f>XX0Mn~70mEcFb+0EgYDl> z7~41o`wX8BH{#I658n>PJ9LpE@!}#?elIT4aRS2|2$%^x{Ub0{>n7bU%ONc(U#GC4STxh0Wv*n#bnP0(E;%U!I zVuik2e5>yj^MR*&_lx!34dOBH11Prv&ijj9{l&G2hx)Y?8n!p z>`^lx-1ha%(&EUY2X4KQH@j%~mn{odw!vC23 QKXYhCKfuGHqo?=(13d#(0ssI2 delta 14056 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 S|EHk`y6y-)a6+_naQz=+*KW!H diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.MessagePack.pdb b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.MessagePack.pdb index 59e5f71226182f2dd174e0053530de4871e619ec..55eaa33b0435a3b361d9d4c8fd733d3486a7fa96 100644 GIT binary patch delta 1406 zcmX}r4KUPc90%~{+1>t#4S5%}UYE;~Teh@yh}0Glj;51K&f#1r*15`Tjmk-R+X}sq zF16>@mD$V7Rhv|kP9xWxt8;m~#(9}8MJKb7`;zHD^O^7O`9II^|MJZLKPjir<+L!B zXC)%UZq3&zI|w0a^GP4`Gz&lZ-t|>Mo;MmsCM1$c7_O1f@^`7oldhheduyJp{&1Y_bThLOVQ$K^TE4;5f6%5^#joum!$=W@omH ztow*f5}*;Rm$J!S&_KEio9u^tI0@x&(S<{Pf*#NS6);2_n&2L^K?gjAXQ1WA5G!y8 zUkC%kWel-{E6})1#*kYm?!#~JFZ>7ZfalJT`Y~FlrI3hP4m~VRLg^=Q3k1i|0~M>G{6-hqAOeIS(j_=A@4_0K?gFhl>%?7))lzy%hY-B;hLJ~OGJyujmaxu4dZJ1<(N zY0gOC?VT(+s&AQPctU!%CM;J^P$%b^naf_c+Z%_L9Q5JZWOVrr#zcs(iT!_cKlSIq ztPARZ3T4ZtV_o*W`=tg-kFlv!pLaSRdF6ZW)#lAjUgM6>4%<3-RI8PyW2N=V-YVNn z|3g9KIGb0xKGiGT=#xZu(S_}-lftA09P0(WwUMm+=uq2~kkCAR7oBAhFI#MUBnJL6 zZbNswvg)d6seR{nm+kwmXZAhFsrzR_5t+|@z<3U~Wq5Z9Iu2Z~y`!?)lT-csiI^2x zi+f$m#~mLD+!vUAncLbu*rl-Zt7v~x&^_IGdSOzs=8VIxJn6;*Awz<5{e=yQJ9S3~ zmIvN9Fg2D+y`%r$6IT49;9bD5k=wMm&q1bTS)vHPbv(Sba?$HIA?I&CY^#>oDjaTI z&=>jks4Gh!M29@ucDLZgoh;4sP2&Sm_qK-CkDA_2YMR=$TvFYgBHnk%x?dCJS{VDR zPWhxl9Iu<6I&7nNra0!%VX<49^RJGH6GhE~?4w&%Rpq8@Z~rk~HTKA4dcM=>>$9zo zIcwe~JS}Ryxln6^aD)DHNte`PgJHJomPS2~60^WEd8fwYa%W3N#>Q4|{K~hTX^P(X z9pC4Mr|d^?C{W2JF|XPeitTb9!a6>g3{Z ztECJ+KWkkb)1bJtw3zs~keJvc*MOAWJ7dz*<94Sp^rD7dveCugBG#Al#WplbE)nn5 zilUd)^iqqwRjjgzq6$7$h^Qi*Dz;O_?)NQJk*z9OWyj$}QROdkwa;BEtP`Q8HLGTt XvAQOh)}+#!W4Ms2!grfCi;({TP1Cn1 delta 1397 zcmX}s4=|Kz90%~{*+1_RinUlmIy>$9vr%g!x<=fbzj3EfNphEJinZygle9Owh^8)f zFqd{XS(fN>+jRcaWk~<1Bz670O1Xx~pAM%`-Ip`HGoShXp67jj@B7X(&%CeIbW%-^ zDIHvw5aQ^UnEVYPL_DFmBTj4&$T~kB5!i91@X0{Jz1(9Gnp9hFLRDXjv4l_(E2bn> z%pyNP7953qH~}Z23TmMaE>8Eb$Ys0o!Dd!Si&Okf^gUdyP?a8 zts-lk*<>%Yftw4P{0YXcY?29iPy#wQ19h$((gbh7Sjr*hQij+-Cp>^>@CpWC6s+AC zvJm`X6(oS8J458q3~lZzhTK8%2wuQP;4NZ^DJ+H{h=*!;4ql5HvJtMqJeeU0fq2=} z4o+PxvUR#<5#^^jHrXR%lLImi$$ ziZEMN+Pr{Vr>3EzI@<=r;$AI|8m|H!`U z?kASdQCfwknfDe5vyAkY5|T$0UAe!6Z+#swsOn#tE%!{nnOE1^p!L;_SazfYK0bSn z`)+t{`6dISoQ8&ZZaXeG1&sx$97nSYKWc{ZRO}-mtE)B!SKaS08Bdeke!6ALU6EN= z-o{Q|QAzUCuR=GwNqSFr2khxyp1xZ=vGeq|(#n|B!_Vcp ztF=2~qF&$9=(*lrqoz#QwKIM#n!_N^w`{=MMtf+5RrPx2c$-mqdr;E*oam&N+Zwe!nKDg!|I*b% zvfA5UI5&je|4v}C&o{Dg_ybEnCd}drLyOCw5?}mk^!BkCgS@bs-P!p!o6Zq^f&FS* zYax!GgR!9{;S)b*>LA*)f-DGSC9B_f+wo*ZnDgPQEqvxvh1%06ji;a$9kk-1y52`` zt)RN4R2N8fo2f2^>VBl<(%N#iz1+8vZSNpcwVqG9=S`#+ajMX*qv?hbr N6yrhqBP(JJ{sUZGt62a5 diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.dll index f4897b893667c8d711f187e5492490c79abab6b8..3152517278f0d506e303bd85a0540565abb6c305 100644 GIT binary patch delta 4725 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 X*mPxLchq)PBA~e&VVqvpp4tEZ+bOM% delta 4290 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 delta 499 zcmVRyRrC{JznQq`E#k>Nq{AYq-L!a%L$| zM5Xr4v{=St&k28wv;U@w4X1OydvRgv!H>mGxp1S+5H; zdi=@~0YeK<>>M-%PLcw5dz$vN^X3GR_U4l%T-ATc`Pij7J;{lKh0U0h{N>@adZ5mc zQI>F7q@OV*@{JoW{uET#Klj$+2Mpu2YUCy>JzIHFG!cK5&FcA=#gx#o%_U00jP*c{ zFwy^jhB313bq4wV4em)1wiMFTA0uJ6DKRZazoTR#55Hx&VLv#6!DVZ)ai!_jmYQ-< ziX9q)P9m(c(>rdKyWOy(EyZ-`_Od#!UcIi)mvi2SPNJXcitb;)<+u+~+HB_4y+u#u zbk*JN;LA=~kF1W4LfRgoQ00oWsCaPu21%?E$B)siUcjnX9nwWzTh=}|l@VY6O1hqR pczV#c^UtL`{rk<^%&vt`k(Jic(oIC`DJU3+DODxz2eak|LLHoS`epzC diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.Quic.Native.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.Quic.Native.dll index 1948251dea8c1782bc9b0327973172b5b0d8791f..6bfffb8a23dfefef212ce0d8a7458922dd1e13a0 100644 GIT binary patch delta 183 zcmZpuX{edd!BXMv)wQw5K$6jV@?J?*M(fRwC4UMD>~*oKQOFa5FNn8R{A6nObh1Ysk#R(kvbGa`F=600EEZ5hlGBRZiP`+*UpKRW)fc zi%F^iR8Z(UR1l(3Lb{kQpz z&LS3m3q1n{25v?MHbXrFJyVO#a}Al9SYBTcT{C%!ae%(tx>7@XYPyF zC$pHODnJDz-$Dg}s&zajTGWTH<(p;Ws;jiQ(}b0Y(~5zCff0zUHcvN`W@5D1yxC$k cBcsLScq?;O3kE#~gUy0AX^fj0ZT>R?0HxYSg8%>k diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.Quic.Native.pdb b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.Quic.Native.pdb index e825a4ea4d86eb91fd8846eefd547b8bc17e883e..847cefd2ec07da79be7a0eefeecc9cc27aecda8b 100644 GIT binary patch delta 709 zcmV;$0y_P;UASG4d=yCMSTv0|dP291MylZYdXj@1TIsg2ui$`97HvSKRbDD#abv zEd@fQ{{gKB;ik16$j=|JAVXME)UiK4#m!|BosND_>V?<)6&@F#(D;#HpCk(&K!-&x z4`5xMvKkHd26&y6Ey?g8p?C>JYqr+&vTWGezH&Zw@ zyPiW0Uxkh4siteerlV-!1FE_l_X`05f>d^8a&xn<37rBMyG)U)06+o&IkyaGeCH%c zzLi(bcbhtHlVl7d80ZS>@c;k;0I%eSRs~9zPO!p=!D6w+IFp|Y7etosTIB$M001O# zVml#G@Ii)YJQ5H19sx&TZDm7sY;-P7WpijQWNd5z00B=ghs*%L3ILR`gh`g|1W1c> r+9^JrnVXaP3>p~6DsG7YU$NObM6eUur(IHM65$IW}-Ns8M&Z|LSgO z704T>c#);wP?fqW4Cj9e+|~2lJaub~!e4k8-D{lH6mEsQT zmI9&D|A5wmaMRijewHj;^s1mPDj5d^}_4@3Xh9VX#7a9&@VlEnD@aJ zq%8BdH2_!n?G?z5!2_q*-5!H%*`F8k!NYi{G=bm%=>pu-}U z2e2+rS&fE!1H4YkmSlL4P`reqHCyX>SvG8KUpb$;@^|%RethI=OgQd@o8A4Cx5wh{ zUC*J0ufj(2RMWL!(@`|=0aaa&`vn03f>d^8a&xn<37rBMOrNIT06+o&#g6{`T zt#*l(&cL<+lVl7d7;h)0fdBvj05|O9RyHhtN~0fh$%P!p~k6fO1uUb`G<%EDeky98Ofc diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.dll index 3880dc313ce8364ff1ee70e2946ec7c80280755a..b02d835548ea7de9770ded14fb8c5cb1538d528f 100644 GIT binary patch delta 256 zcmZozpxLlMb3zA;zkd6f#-7$5#?~ID)*j~89+uV~*47@jtv&24Zj9E`C%Um4%UUxa z!0a6eHY1Q}J^i5@yELP9`(HQq?SI`k(!U8z+1TPa?JbK(ckwMvySX!GFE6p>yvc8= zXTZR~&B(xJsAr&OYPr2xj4M})fiuG3&c?h^IIl6aAPEYQy=^?IM zz6wxLu_sVbkotskDWXnU7jzgIB<^iL=*o4Li4){PuxqwY_uvv{Vzk`8+KVfhksVdstd~SX+D8w)U{IxG`EypXkPJENjJp z0JC=>*o;7?)%1sM?9z-@?SI|axBqqHNdG2KEPf>G>BeiWvt}*#OFjBLcX^2|=S_YK zJp%>?Zbk++Lp=jMQ;Y4*VqCd;EEaxMU#EX@;R+CVKd+5T_rGymv#O%HM9 z@>PI}9#(~lg4AC%v5H#dcCmi@{-(g~2VJ?&GI4@j2zJf(=^k9dOpF%WS9@_KGcsCC b=l9_aLCY5C@lfsnP30qk3U$tofvAYEf4 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 delta 643 zcmV-}0(|}Oix2RN50HEmZLW?UyL5I-oY;De2&6uxDc9f5fsnP30i!g3P^!9wMo7`T z=sdOv$YD?}Q|DXaM0r{#f?|j7b6y$Tfx06F006C&-D=xF5QXmpd56JQEyPlKQ7B0$ zq%H}CCX_gJFG?>)tC2Kxf5glvMvv6j=#!OIQe*cA9PnN&X!p!_hO?_J%lSda@ljdA z1rCF*Uq)xd1qr=7E?Uw8emgEMZ z6X>|@<~>Q1Bw%y|fmE^0F*iw|#Xwpr$pbyd{E9uTNOafyRdHIpep8(8&-oCizVaIS z{{i>MeUelUZaeH>YYdb#DQ?NuNxpMz_s89{c{&tqb%40?y{XY~=SucT*^-Q(#m`P) z)|vHsR+cSWH&lg7q5R!tj~4>tn(i5N_urr!WS0szLd9$kX(2TrYaiIvX4wg8tQ!2%;kZzraK00031 zH|*qAHY|QhqaSn0g&f_(M`3McLv?I)E=+G{XK8L{E@W(M0003@RpiS6fB*obFWV#G d`a4F2x3r06{@P-fjZgy`ho!*+x23@YO9X7zHzNQ5 diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/x86_64/gamecult_mesh_quic_native.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/x86_64/gamecult_mesh_quic_native.dll index 06a43172c0ed5d51c555db088f6fab78e29a79dc..48ff569f01a5dad922b96109f1e30b054bef7436 100644 GIT binary patch delta 5068 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 Date: Tue, 15 Sep 2026 20:02:33 +0200 Subject: [PATCH 0019/1002] Add the TypeScript QUIC realtime plane migration target Eureka target for giving cultmesh-ts a QUIC realtime provider and consumer, byte-compatible with GameCult.Mesh.Quic and the Unity native MsQuic connector. First consumer: the StreamPixels service publishing to its Unity overlay. Operator rulings 2026-09-16: overlay character, subathon window and scene intents travel as QUIC state frames and the costume catalog as an HTTPS content artifact; shared TypeScript route verification moves to a browser-safe module; Windows x64 and Linux x64 only; datagrams out of scope. Co-Authored-By: Claude Opus 5 --- docs/typescript-quic-realtime-target.md | 160 ++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 docs/typescript-quic-realtime-target.md diff --git a/docs/typescript-quic-realtime-target.md b/docs/typescript-quic-realtime-target.md new file mode 100644 index 00000000..751d5277 --- /dev/null +++ b/docs/typescript-quic-realtime-target.md @@ -0,0 +1,160 @@ +# TypeScript QUIC Realtime Plane Target + +Date: 2026-09-16 + +Status: target accepted by the operator (2026-09-16), ready for Eureka. No cut +map exists yet. When the pipeline starts, Imagination maps the cut into +`docs/typescript-quic-realtime-cut.md` against `main` at `a0813c6` or later. + +The TypeScript runtime gains the CultMesh QUIC realtime state plane that the C# +runtime already has: a provider that serves frames and a consumer that receives +them, byte-compatible with `GameCult.Mesh.Quic` and the native MsQuic connector +the Unity package ships. This document states the end state and the invariants +that constrain getting there. + +Operator ruling, 2026-09-16, on providing QUIC for a Node service: "Option 2 all +the way, this is what CultLib is supposed to be, we're not half assing it." A +separate .NET provider process and a WebSocket shortcut were both rejected. + +## Why now + +The first consumer is StreamPixels. Its service (Node 24, TypeScript, on +Yggdrasil) must publish realtime state to a Unity overlay running on a +streamer's machine. The overlay is a receive-only client using the Unity +package's `CultMeshNativeQuicRealtimeTransportConnector`. Today no TypeScript +path exists: + +- Node v24.15.0 has no `node:quic`, with or without `--experimental-quic`. +- `packages/cultmesh-ts` and `packages/cultnet-ts` contain no QUIC code. +- `GameCult.Mesh.Quic` (.NET 10, `System.Net.Quic`) is the only QUIC provider. +- The C# TCP control and content connectors are plaintext and restricted to + loopback (`src/GameCult.Mesh/docs/transport-planes.md`, "Security and release + gate"), so they cannot carry the overlay's remote session either. + +## This touches the foundation + +- **Wire parity is an invariant.** The C# codec is the reference: + `src/GameCult.Mesh/CultMeshRealtimeWireProtocol.cs`. The TypeScript runtime + must produce and accept identical bytes: + - ALPN `cultmesh-state-v1`; connection close code `0x43554c54`, stream abort + code `0x53544154`; reliable stream type `1`, latest-only stream type `2`. + - Frame: magic `0x31545343`, then a 37-byte little-endian fixed header + (delivery byte, producer epoch i64, sequence i64, channel/schema/body id + lengths u16, payload length i32, header size i32 = 37, wire version u16 = + 1), then UTF-8 channel id, schema id, body id, then payload. + - Limits: payload at most 64 MiB; each identity at most 65,535 UTF-8 bytes; + decode rejects wrong magic, unknown version, out-of-range delivery, and any + length that does not sum exactly. +- **Delivery semantics are an invariant** + (`src/GameCult.Mesh.Quic/README.md`, `CultMeshRealtimeTransports.cs`): + - `ReliableOrdered`: one persistent ordered stream; broadcast is + completion-bearing. + - `LatestOnly`: independent streams; at most one pending frame per + `(channel, body)`, replaced by a newer `(producer epoch, sequence)` + generation; a keyed coalescing outbox per physical peer, so a slow or + departed consumer never backpressures the producer. + - `Unreliable`: fails closed until datagrams are exposed, matching the managed + C# adapter. +- **Trust is an invariant.** No remote session comes online without the chain + in `transport-planes.md`: an Odin-signed `CultMeshRouteCertificate` (Verse, + authority runtime, protocol set, endpoint, generation, validity, provider + P-256 key) checked against consumer-pinned Odin roots, TLS 1.3, and the + endpoint certificate bound to that route, including the + `cultmesh-state+quic://host:port?cert-sha256=` pin. + Signatures are ECDSA P-256 over SHA-256 with P1363 `r || s` encoding and the + length-prefixed canonical transcript. Unsigned traffic exists only under an + explicit `LocalDevelopment` policy on loopback. +- **One implementation of TypeScript route verification.** `cultmesh-browser` + already verifies Odin route certificates and provider nonce possession with + WebCrypto (`packages/cultmesh-browser/src/index.ts`, `verifyAuthorityRoute`, + `canonicalRoute`, `canonicalSession`, `verifyP256`). The Node QUIC path must + reuse that owner, not grow a second verifier. +- **The realtime plane carries state frames only.** Schemas, commands, + receipts, manifests, and immutable content do not travel through it + (`ICultMeshRealtimeTransport` doc comment). RUDP is never installed + implicitly in its place. +- **Existing consumers survive.** The StreamPixels service already imports + `cultcache-ts`, `cultnet-ts`, and `cultmesh-ts` (`verse-state.ts`, + `idunn-rudp-health.ts`) for Odin advertisement and Idunn health over RUDP. + Imagination audits every other TypeScript consumer across `F:\Projects` + before sizing the cut. + +## Target state + +- `cultmesh-ts` exposes a QUIC realtime provider and a QUIC realtime consumer + with the same ergonomic shape as the C# `CultMeshQuicRealtimeServer` + (listen, broadcast with an explicit delivery mode) and + `ICultMeshRealtimeTransportConnector` (connect by advertised candidate, + receive frames), under the branded `CultMesh` entrypoint. +- QUIC comes from native MsQuic bindings owned by CultLib, not from a Node + polyfill or a third-party QUIC stack with different semantics. How the binding + is built and shipped is the means (Imagination probes it); what it must + deliver is TLS 1.3, ALPN, independent unidirectional or bidirectional streams, + certificate validation with a caller hook, and clean close and abort codes. +- Frame encoding and decoding exist once in TypeScript and are tested against + bytes produced by the C# codec. +- Application code never picks endpoints, ranks routes, or writes reconnect + loops; `CultMeshSessionManager`-equivalent route selection owns that, as in C#. +- The build produces binaries for the hosts that run them: Windows x64 for + local development, and Linux x64 for Yggdrasil, built on Linux or the deploy + path's builder, not cross-compiled on Starfire. + +## Not in this migration + +One foundation per pipeline. These are separate, named pipelines or consumer +work: + +- **TypeScript content plane** (a provider in `cultmesh-ts`, a verifying HTTPS + reader in `cultmesh-browser`) for exported character artifacts. HTTPS content + transport and single-host trust on Yggdrasil were already ruled. +- **Authenticated remote control plane** (TLS on the TCP schema and content + connectors). See Q1. +- **Browser QUIC** (WebTransport). Browsers keep the verified WebSocket path. +- **Python, Rust, and Kotlin QUIC.** The parity scope is role-scoped; this + migration claims TypeScript and C# only. +- **StreamPixels integration** (service publication, overlay subscription, and + the catalog and scene-intent schemas) is consumer work in StreamPixels after a + released `cultmesh-ts` exists. + +## Verification the cut must reach + +- Golden frame bytes from the C# codec decode in TypeScript, and TypeScript + encodings decode in C#, for every delivery mode and at the length limits. + Malformed inputs are rejected identically. +- Separate processes, both directions: a TypeScript provider to the C# native + connector (the one Unity uses) and to the managed connector, and a C# managed + provider to the TypeScript consumer. Extend the existing parity harnesses + (`CULTMESH_NATIVE_EXTERNAL_ENDPOINT`, `packages/cultnet-ts/test/interop`) rather + than adding a parallel one. +- `LatestOnly` coalescing: a stalled consumer does not delay the producer, and + the consumer converges on the terminal generation. +- Trust negatives: an expired or unsigned route, the wrong Odin root, a + mismatched `cert-sha256` pin, and a replayed nonce are each refused, with a + mutation per rule. +- The Linux x64 binary runs on the Yggdrasil deploy path, verified on that host. + +## Rulings (operator, 2026-09-16) + +The operator accepted every recommendation below ("You got it"). Each question +is kept with its options as the record of what was decided against. + +- **Q1. Which remote plane carries the overlay's non-frame data?** The realtime + plane forbids schemas, commands, and content, and the TCP planes are + loopback-only. A: publish her character, the subathon window, and scene + intents as QUIC state frames with their CultCache schema id and payload, and + ship the costume catalog as a versioned immutable artifact on the HTTPS + content plane; the overlay sends no commands, so it needs no remote control + plane. B: add TLS to the TCP schema and content connectors as its own + pipeline first. **Recommended: A.** It needs no new plane for M1, matches a + receive-only client, and leaves TLS TCP to the first consumer that sends + commands. +- **Q2. Where does shared TypeScript route verification live?** It is inside + `cultmesh-browser` today, and `cultmesh-ts` is Node-only. A: move it to a + browser-safe shared module that both import (for example beside + `cultnet-ts/contracts`). B: have `cultmesh-ts` depend on `cultmesh-browser`. + **Recommended: A**, so neither transport package owns the other's trust. +- **Q3. Which platforms must the native binding support at release?** + **Recommended: Windows x64 and Linux x64 only**, the two hosts that run it + today. +- **Q4. Are QUIC datagrams (`Unreliable`) in scope?** **Recommended: no.** Fail + closed like the managed C# adapter; no consumer needs them. From bf9f6f7874c8b3e37c141bb1f538856dba7cb4c2 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 13:16:56 +0200 Subject: [PATCH 0020/1002] Map the TypeScript QUIC realtime plane migration Seven cuts against main at f2cd2eb4, with the largest liability priced first rather than discovered later. The native binding was the open question: a probe loaded the committed msquic.dll through koffi under Node 24, drove a handshake on MsQuic's own threads and closed cleanly, with no addon build and no toolchain at load time. It is one cut, not the campaign. The consumer audit found no package at zero external consumers and every external consumer on a file: path rather than the registry, which is why registry naming is an operator question rather than an assumption. Two corrections against the target are recorded in the map rather than absorbed silently: a cited transport filename that does not exist under that name, and a registry path the target assumes for cultmesh-ts that has never existed. Co-Authored-By: Claude Opus 5 --- docs/typescript-quic-realtime-cut.md | 1065 ++++++++++++++++++++++++++ 1 file changed, 1065 insertions(+) create mode 100644 docs/typescript-quic-realtime-cut.md diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md new file mode 100644 index 00000000..d2416191 --- /dev/null +++ b/docs/typescript-quic-realtime-cut.md @@ -0,0 +1,1065 @@ +# TypeScript QUIC Realtime Plane Cut Map + +Date: 2026-09-16 + +Status: Imagination output for the target in +`docs/typescript-quic-realtime-target.md` (operator-accepted 2026-09-16). No +code in this document has been written. Nothing here is committed by +Imagination; the root agent commits. + +Anchor: repo `F:\Projects\CultLib`, branch `main`, HEAD +`f2cd2eb4641269c653977bdba9b4bce2a26d870c`. Every `file:line` below is read +against that commit. If HEAD moves, re-anchor before cutting. + +How to read this document: section 1 prices the largest liability first, as +the target requires, because if that price had turned out to dominate the +campaign, the cut order below would have been wrong. Section 2 is the probe +ledger; every mechanism claim in this map carries `(probe)` when it was +established by running something, or `(source read)` when it was established +by reading a file at a named line. Nothing is claimed from a package name or a +README. Section 3 is the consumer audit. Section 4 names rejected options and +why. Section 5 is the authority map for every ownership change. Sections 6-12 +are the cuts. Section 13 holds the operator questions; section 14 the +subtraction estimate; section 15 what could not be assigned. + +Two corrections to the target, recorded here rather than silently absorbed: + +- The target cites `src/GameCult.Mesh.Quic/CultMeshRealtimeTransports.cs`. + That file is `src/GameCult.Mesh.Quic/CultMeshQuicRealtimeTransport.cs` + (674 lines). `CultMeshRealtimeTransports.cs` exists, but in + `src/GameCult.Mesh/`, and holds the transport-neutral contracts + (`CultMeshRealtimeDelivery` at :8-13, `CultMeshRealtimeFrame` at :19-44, + `ICultMeshRealtimeTransport` at :46-52, + `ICultMeshRealtimeTransportConnector` at :55-63) `(source read)`. +- The target says the binding is "shipped through a registry". Today only + `@gamecult/cultcache-ts` has a registry publish job + (`.github/workflows/publish-packages.yml:20-24`, `:40-76`); `cultnet-ts`, + `cultmesh-ts` and `cultmesh-browser` have none, and every external consumer + reaches them by `file:` path (section 3). Registry delivery of the binding + therefore also means registry delivery of `cultnet-ts` and `cultmesh-ts`, + which is a naming decision the operator has not yet made. See Q5. + +## 1. The largest liability, priced first + +The target's biggest new surface is CultLib owning native MsQuic bindings for +Node on two platforms. The price depends on three things: what Node itself +offers, what the repo already owns, and how a native artifact reaches a +consumer host without a toolchain. Each was probed. + +### 1.1 What Node offers + +- Node `v24.15.0` on Starfire has no `node:quic`, with or without + `--experimental-quic` (`ERR_UNKNOWN_BUILTIN_MODULE`), and its internal + binding table has no `quic` entry (`No such binding: quic` under + `--expose-internals`). `process.versions` reports `openssl 3.5.5`, no + `ngtcp2`, no `nghttp3`, `napi 10` `(probe)`. Yggdrasil runs Node `24.14.1` + from NodeSource (`F:\Projects\gamecult-ops\inventory.md:660`) `(source read)`, + so the same absence holds on the deploy host. +- Conclusion: there is no first-party QUIC in this Node line. Anything that + works is native. + +### 1.2 What the repo already owns + +- `native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp` (440 lines) is a + CultLib-owned C ABI over MsQuic: `cultmesh_quic_open/state/poll/error/close` + (`:309-440`). It negotiates ALPN `cultmesh-state-v1` (`:32`, `:341-344`), + uses deferred certificate validation and answers the pin decision through + `ConnectionCertificateValidationComplete` (`:239-263`), reassembles the + 1-byte-kind plus 4-byte-LE-length QUIC stream framing (`:123-157`), and + queues whole encoded frames for a polling host (`:400-418`). It is Windows + desktop only by construction: ``, ``, `` + (`:1-3`), `CryptHashCertificate2` for the pin (`:184-200`), + `__declspec` exports (`:18-22`), and the CMake build refuses non-Windows + (`CMakeLists.txt:4-6`) `(source read)`. +- The bridge is consumed by the Unity connector through `DllImport` of library + name `gamecult_mesh_quic_native` + (`src/GameCult.Mesh.Quic.Native/CultMeshNativeQuicRealtimeTransport.cs:259-277`), + which polls every 2 ms by default (`:14`, `:167-203`) `(source read)`. The + built DLL and `msquic.dll` 2.5.9 are committed at + `unity/org.gamecult.cultlib/Runtime/Plugins/x86_64/` (last rebuilt in + `a0813c6`, 2026-09-14) `(probe: git log)`. +- The Windows build is scripted and pinned: `scripts/build-quic-native.ps1` + downloads `Microsoft.Native.Quic.MsQuic.Schannel` `2.5.9` by URL, checks its + SHA-256 (`:13-14`, `:27-41`), and builds with CMake `-A x64` (`:48-52`). + The last build on this machine used Visual Studio 17 2022 Build Tools, MSVC + 14.44 (`artifacts/quic-native-build/x64/Release/CMakeCache.txt`) `(probe)`. + `cl.exe` is not on PATH but Build Tools are installed, so the existing + script works here as-is. +- `tests/GameCult.Mesh.Quic.Native.Tests/GameCult.Mesh.Quic.Native.Tests.csproj:20-29` + builds that bridge before the test build and copies it beside the test + output `(source read)`. `scripts/build-unity-package.ps1:80-82`, `:143-147` + builds it again for the Unity package `(source read)`. + +Conclusion: CultLib already owns the MsQuic body for one platform, one role +(client), and one host (Unity). The cost of the target is extending that body +to a second role (provider), a second platform (Linux x64), and a second host +(Node), not creating a body from nothing. + +### 1.3 How Node loads it + +The decisive probe: from Node 24.15.0, with `koffi@3.3.0` installed into the +scratchpad, `koffi.load` loaded the committed `msquic.dll` then +`gamecult_mesh_quic_native.dll`, bound the five v1 exports by C prototype, +called `cultmesh_quic_open("127.0.0.1", 9, <64 zero hex>)` which returned `0` +with a non-null handle, observed `cultmesh_quic_state` move from `Connecting` +to `Failed` after 34 ms, read the bridge's structured error string through +`cultmesh_quic_error` ("shut down by the transport (status=0xFFFFFFFF800704D0, +error=0x1, msquic=F:\...\msquic.dll, events=event=1)"), got `-2` from +`cultmesh_quic_poll` on a failed client, and closed cleanly `(probe: +scratchpad/koffi-probe/probe.js)`. MsQuic ran its worker threads inside the +Node process and the poll model crossed the boundary without any callback +into JS. + +What that proves and what it does not: + +- Proves: the existing CultLib C ABI is directly loadable and drivable from + the Node line in question with no addon build, no Node headers, no MSVC at + install time, and no per-Node-version artifact. The `.async` call form + exists on bound functions (`typeof state.async === "function"`), which is + the mechanism for a blocking wait off the JS thread `(probe)`. +- Does not prove: a QUIC handshake succeeded (port 9 was intentionally dead); + that the provider role works (the bridge has none); that Linux works (the + bridge is Windows-only). Those are cut deliverables, not probe results. + +koffi facts used by the design, from its shipped documentation, not from +memory: JS callbacks always run on the main thread and calls from other +threads are queued to it, with an explicit deadlock warning if the main thread +blocks on a secondary thread (`node_modules/koffi/doc/callbacks.md:166-176`); +asynchronous calls run on a worker pool sized to the core count with a default +cap of 256 queued calls (`doc/misc.md:26`, `:37`); prebuilt binaries ship for +Windows x64 and Linux/glibc x64 among others, Node >= 16, no compiler needed +(`doc/index.md:17-38`) `(source read)`. Package weight: 1,713,562 bytes +unpacked, 87 files, MIT `(probe: npm view)`. The design below uses no JS +callbacks at all; the only crossing is one blocking `next_event` wait per +runtime issued through `.async`, so the deadlock class in `callbacks.md:176` +cannot occur. + +### 1.4 How it reaches Linux + +- `libmsquic` is published by Microsoft for Debian 13 (trixie) at + `packages.microsoft.com/debian/13/prod`, versions including `2.5.9` + (`pool/main/libm/libmsquic/libmsquic_2.5.9_amd64.deb`, 2,906,420 bytes, + SHA-256 `1baa61ade0b7b4a99f6dcb6b00d9aedb12b5566d00918a325be7425e878e51ba`, + `Depends: libssl3t64, libnuma1, libxdp1, libnl-route-3-200`) `(probe)`. + Yggdrasil is Debian 13 (`gamecult-ops/inventory.md:356`) `(source read)`. + The same `2.5.9` pinned for Windows exists for the deploy host. +- The NuGet packages carry Windows binaries only: `Microsoft.Native.Quic.MsQuic.OpenSSL` + 2.5.9 contains `bin/{x64,x86,arm64}/msquic.dll`, `lib/*/msquic.lib`, + and headers `msquic.h`, `msquicp.h`, `msquic_winuser.h`; no `.so`, no + `msquic_posix.h` `(probe: nupkg listing)`. The Linux build needs + `msquic.h`, `msquic_posix.h`, `quic_sal_stub.h` from the msquic source + tree at tag `v2.5.9`; all three are fetchable at + `raw.githubusercontent.com/microsoft/msquic/v2.5.9/src/inc/` (HTTP 200, + 79,280 / 17,909 / 4,731 bytes) `(probe)`. GitHub releases `v2.5.9` carry only + `*_test.zip` bundles; `v2.5.11`, `v2.6.1` carry no assets `(probe)`, so the + deb is the only distribution-grade Linux runtime for this version. +- Build host for Linux: Docker Desktop on Starfire runs a `linux/amd64` engine + `(probe: docker version)`, so a `debian:13` container is a Linux build host + for the development loop. The release artifact must come from a Linux host + the deploy path trusts: Yggdrasil itself, or a CI runner. Q6. +- Windows toolchain: MSVC Build Tools 2022 present; CMake 4.3.2; also a MinGW + gcc from StrawberryPerl on PATH `(probe)`. The map keeps MSVC for Windows + because the committed Unity DLL is built with MSVC `/Brepro` for + reproducibility (`CMakeLists.txt:17-19`) `(source read)`; mixing toolchains + for one DLL is a liability with no capability behind it. + +### 1.5 Price verdict + +The binding does not dominate the campaign. The C body exists; the Node load +path is proven with one 1.7 MB MIT dependency and zero addon tooling; the +Linux runtime is a pinned distro package on the exact target OS; the Windows +build is already scripted. The real cost is the C++ rewrite from a +client-only, Windows-only, per-client poll bridge to a runtime-neutral, +two-role event bridge (section 8), estimated at roughly 1,000 lines of C++ +replacing 440, plus a Linux build script and CI job. That is one cut, not the +campaign. + +What would have changed this verdict: if the bridge had needed JS callbacks +from MsQuic worker threads (it does not; the wait/event model avoids them), or +if `libmsquic` had not been available for Debian 13 at the pinned version (it +is), or if the FFI load had failed on Node 24 (it did not). + +## 2. Probe ledger + +| # | Claim | Method | Evidence | +| --- | --- | --- | --- | +| P1 | Node 24.15.0 has no `node:quic` and no internal quic binding | probe | `require('node:quic')` -> `ERR_UNKNOWN_BUILTIN_MODULE` with and without `--experimental-quic`; `--expose-internals` -> `No such binding: quic`; `process.versions.ngtcp2 === undefined` | +| P2 | The committed CultLib MsQuic bridge loads and runs from Node 24 via koffi | probe | `scratchpad/koffi-probe/probe.js`: open rc 0, state 2 after 34 ms, structured error string, poll -2, clean close | +| P3 | koffi ships Windows x64 and Linux glibc x64 prebuilds, needs no compiler, Node >= 16 | source read | `koffi/doc/index.md:17-38` | +| P4 | koffi async calls run on a worker pool; JS callbacks only on the main thread | source read | `koffi/doc/misc.md:26,37`; `koffi/doc/callbacks.md:166-176` | +| P5 | koffi is 1.7 MB unpacked, MIT | probe | `npm view koffi dist.unpackedSize dist.fileCount`; `package.json:27` | +| P6 | MSVC Build Tools 2022 (14.44) and CMake 4.3.2 are present; the last bridge build used them | probe | `artifacts/quic-native-build/x64/Release/CMakeCache.txt`; `cmake --version` | +| P7 | `libmsquic 2.5.9` exists for Debian 13 amd64 with its SHA-256 and dependency set | probe | `packages.microsoft.com/debian/13/prod/dists/trixie/main/binary-amd64/Packages` | +| P8 | Yggdrasil is Debian 13 with Node 24.14.1 from NodeSource | source read | `gamecult-ops/inventory.md:356`, `:660` | +| P9 | MsQuic NuGet OpenSSL 2.5.9 carries no Linux binary or posix header | probe | nupkg listing | +| P10 | MsQuic POSIX headers are fetchable at tag v2.5.9 | probe | HTTP 200 for `msquic.h`, `msquic_posix.h`, `quic_sal_stub.h`, `msquic_winuser.h` | +| P11 | The pinned `msquic.h` has `QUIC_CREDENTIAL_TYPE_CERTIFICATE_PKCS12`, deferred/indicated certificate flags, `QUIC_SEND_FLAG_FIN`, `QUIC_STREAM_EVENT_SEND_COMPLETE`, API version 2 | source read | `artifacts/dependencies/msquic-schannel-2.5.9/package/build/native/include/msquic.h:123,132-133,142,246,394-398,1290,1530,1850` | +| P12 | Docker Desktop on Starfire runs a linux/amd64 engine | probe | `docker version --format '{{.Server.Os}}/{{.Server.Arch}}'` -> `linux/amd64` | +| P13 | `openssl` 3.5.5 CLI is available on Starfire (mingw) | probe | `which openssl` | +| P14 | npm names `cultmesh-ts`, `cultnet-ts`, `cultmesh-browser`, `@gamecult/cultmesh-ts`, `@gamecult/cultnet-ts`, `@gamecult/cultmesh-quic-native` are all unclaimed | probe | `npm view version` returned nothing for each | +| P15 | Only `@gamecult/cultcache-ts` and the three Python packages have publish jobs | source read | `.github/workflows/publish-packages.yml:20-24,40-76` | +| P16 | Every external TS consumer uses `file:` paths; none uses a registry version | probe (Explore agent over `F:\Projects`) | section 3 | +| P17 | The StreamPixels deploy path extracts a CultLib tarball beside the app and runs `pnpm install --frozen-lockfile` and `pnpm build` on Yggdrasil | source read | `gamecult-ops/scripts/deploy-streampixels-preview.sh:21,95-103` | +| P18 | The Unity native connector refuses any endpoint without a 64-hex `cert-sha256` pin | source read | `CultMeshNativeQuicRealtimeTransport.cs:103-105` | +| P19 | C# `IsProtected` accepts `wss`, `https`, or any scheme containing `quic`; the browser verifier accepts only `wss` | source read | `CultMeshAuthorityProof.cs:156-162`; `cultmesh-browser/src/index.ts:965` | +| P20 | C# and browser canonical route transcripts are field-for-field identical | source read | `CultMeshAuthorityProof.cs:275-292` vs `cultmesh-browser/src/index.ts:979-996` | + +## 3. Consumer audit + +Method: every `package.json` under `F:\Projects` (excluding `node_modules`, +`dist`, `dist-test`, `.git`, `bin`, `obj`, `Library`, `Temp`, and CultLib +itself and its worktree copies) checked for the four package names, plus a +grep of every `*.ts/*.tsx/*.mts/*.cts/*.js/*.mjs/*.cjs` import or require of +them, with symbols read from the import lines. Vendored copies inside +`Heimdall/vendor/CultLib`, `VoidBot/vendor/cultcache-ts`, and +`gamecult-ops/.artifacts/*` were classified as library-internal, not +consumers. + +Result: + +| Package | Repos | Source files | Symbols actually imported (union) | +| --- | ---: | ---: | --- | +| `cultnet-ts` | 11 (StreamPixels, Heimdall, AetheriaEve, AetheriaEve-cultlib-admission, VoidBot, Stonks, Vili, weksa, Sai, EvePlugins, Bifrost) | 28 | `CultNetRudpSession`, `decodeRudpPacket`, `encodeRudpPacket`, `encodeCultNetMessageForWire`, `parseCultNetMessage`, `invokeCultNetOperation`, `startCultNetOperationServer`, `defineCultNetDocumentBinding`, `CultNetDocumentRegistry`, runtime-presence helpers, and message/packet types | +| `cultnet-ts/contracts` | 0 | 0 | one esbuild alias only (`AetheriaEve-cultlib-admission/scripts/verify-aetheria-browser-provider.mjs:48`); `cultmesh-browser` is its only importer and is inside CultLib | +| `cultmesh-ts` | 7 (StreamPixels, Heimdall, AetheriaEve and its worktree, Stonks, weksa, Odin and its worktree) | 10 | `CultMesh`, `cultMeshRectFromBounds`, `cultMeshViewportRequest`, and types (`CultMeshRudpEndpoint`, `CultMeshDocumentCatalog`, `CultMeshViewportRequest`, diagnostics types) | +| `@gamecult/cultcache-ts` | 1 (Heimdall) | 5 | `SingleFileMessagePackBackingStore`, `defineDocumentType`, `CultCacheEnvelope` | +| `cultcache-ts` (old unscoped name) | 8 | 16 | `CultCache`, `SingleFileMessagePackBackingStore`, `defineDocumentRegistry`, `defineDocumentType`, `/inspection` | +| `cultmesh-browser` | 1 (AetheriaEve and its worktree) | 1 | `CultMeshBrowserClient`, `CultMeshBrowserOdinRendezvous`, `decodeCultNetPayload` | + +StreamPixels specifically: `apps/service/package.json:25-27` declares +`cultcache-ts`, `cultmesh-ts`, `cultnet-ts` as `file:../../../CultLib/packages/`; +`apps/service/src/verse-state.ts:4-6` imports `defineDocumentType`, +`CultMesh`, `defineCultNetDocumentBinding`; `apps/service/src/idunn-rudp-health.ts:2-7` +imports `encodeCultNetMessageForWire`, `encodeRudpPacket`, and two types. +Nothing else in StreamPixels imports these packages. No TS/JS file anywhere +under `F:\Projects` references `cultmesh-state+quic` or `CultMeshRealtime`. + +Sizing consequences: + +- Nothing this migration adds has a consumer yet. The QUIC surface is new + API; no existing export is reshaped, so no external repo changes are + required by the CultLib cuts. StreamPixels adoption is consumer work after + release (target, "Not in this migration"). +- The `verifyAuthorityRoute` family in `cultmesh-browser` is module-private + (not exported at `cultmesh-browser/src/index.ts:955`, `:979`, `:998`, + `:1012`, `:1028`), so moving it (Q2) changes no external import. The three + symbols AetheriaEve imports stay. +- `cultnet-ts/contracts` has no external consumer; adding a sibling subpath + export for the shared verifier follows an existing, internally consumed + pattern rather than inventing a new one. +- The `cultcache-ts` naming split (8 repos on the old unscoped name, Heimdall + on `@gamecult/`) is pre-existing and not touched here, but it is the + precedent Q5 has to reckon with. + +## 4. Rejected options + +- **Node built-in QUIC.** Absent in Node 24 (P1). Not a choice. +- **`@matrixai/quic` 2.0.9.** A Rust/quiche-based QUIC stack with its own + stream, certificate and event semantics `(probe: npm view description)`. + Rejected because the target requires the bytes on the wire, the ALPN, the + stream-kind byte, the deferred certificate pin decision, and the close/abort + codes to match `GameCult.Mesh.Quic` and the Unity MsQuic connector; two QUIC + stacks would have to be proven equivalent at every one of those points, and + CultLib would own neither. Semantically wrong for this campaign, not merely + unfashionable. +- **`@fails-components/webtransport` 1.6.8.** libquiche behind a WebTransport + (HTTP/3) session model `(probe)`. Wrong layer: the realtime plane is raw + QUIC with ALPN `cultmesh-state-v1`, not HTTP/3. +- **`node-quic` 0.1.3.** A wrapper around an abandoned pure-JS QUIC `(probe)`. + Not TLS 1.3 MsQuic; rejected on the same grounds. +- **A Node-API addon (node-addon-api + node-gyp/cmake-js) wrapping MsQuic + directly.** Viable, but it creates a second C++ owner of MsQuic callback + semantics beside the Unity bridge, requires Node headers and MSVC on every + Windows build host and a Node-ABI artifact per platform, and buys nothing the + C ABI plus FFI does not (P2). Rejected as duplicate authority. If koffi were + ever removed, the cheapest replacement is a thin N-API shim over the same C + ABI, not a second MsQuic body. +- **A separate .NET provider process or a WebSocket shortcut.** Already ruled + out by the operator (target, line 15-17). +- **JS callbacks from MsQuic worker threads.** koffi supports them by queuing + to the main thread (P4), but it turns every MsQuic event into a + cross-thread hop and opens the documented deadlock class. Rejected in favour + of the event-queue/wait model the existing bridge already uses. +- **Building the Windows DLL with the MinGW gcc on PATH.** Present (P6) but the + committed Unity artifact is MSVC `/Brepro`; two toolchains for one DLL is a + reproducibility liability. Rejected. +- **Building the Linux artifact on Starfire and shipping it.** Cross-building + is explicitly forbidden by the target; a Docker `debian:13` container on + Starfire is a Linux host and is fine for the development loop, but the + release artifact comes from the builder the operator names in Q6. +- **Keeping `cert-sha256` verification in C.** The v2 ABI hands the DER + certificate to the host and waits for the decision, which is the "caller + hook" the target demands and removes the Windows-only + `CryptHashCertificate2` from the portable path. The v1 entrypoint keeps its + in-C pin check only as the Unity compatibility shim (section 8). + +## 5. Authority maps + +### 5.1 Native MsQuic bridge (`native/GameCult.Mesh.Quic.Native`) + +- Owner: `cultmesh_quic_native.cpp` owns MsQuic registration, configuration, + listener, connection and stream handles, TLS credential loading, the + 1-byte-kind + 4-byte-LE-length stream framing, and a single event queue per + runtime. +- Inputs: host/port, PKCS12 bytes and password for providers, the host's + certificate decision for clients, encoded frame bytes to send. +- Outputs: events (`listener_new_connection`, `connection_connected`, + `connection_certificate_received` with DER payload, `connection_shutdown` + with code/status/text, `stream_started` with kind, `stream_frame` with the + whole encoded frame, `stream_send_complete`, `stream_shutdown`); the bound + listener port; structured error text. +- Derived state: none that the host reads as truth. Connection counts, remote + addresses and MsQuic status codes are diagnostics. +- Forbidden writers: the bridge never decodes a CultMesh frame, never decides + delivery semantics, never coalesces, never accepts a certificate on its own + in the v2 path, never reconnects. The v1 shim is the only place a pin is + compared in C, for the Unity contract only. +- Shared paths: the Unity managed connector (v1 exports) and the Node binding + (v2 exports) use the same library, the same MsQuic runtime, the same + framing code. +- Deletion line: the per-client `Client` struct with its own registration + (`:51-63`, `:316-393`), Windows-only includes and export macros (`:1-3`, + `:18-22`), `CertificateMatchesPin` as the sole trust path (`:184-200`). + +### 5.2 TypeScript QUIC realtime plane (`packages/cultmesh-ts`) + +- Owner: `src/realtime-quic.ts` owns provider and consumer semantics: which + stream kind carries which delivery mode, the per-peer keyed coalescing + outbox for `LatestOnly`, the single ordered stream for `ReliableOrdered`, + `Unreliable` failing closed, the generation filter on receive, and the + certificate pin decision on the consumer. +- Inputs: bridge events; `CultMeshRealtimeFrame` objects from application + code; an advertised `CultMeshTransportCandidate`-shaped route from the + session manager; the consumer's trust policy. +- Outputs: encoded frames to the bridge; decoded frames to the application; + the advertised endpoint string for a provider (with `cert-sha256`). +- Derived state: connection health, connected peer count, stream ids. +- Forbidden writers: application code never opens a stream, picks an + endpoint, or writes a reconnect loop (target). `src/realtime-wire.ts` never + touches a socket. `src/realtime-quic-native.ts` (the koffi binding) never + interprets frame bytes. +- Shared paths: provider broadcast and consumer send both go through + `sendFrame` on the same transport object; the coalescing outbox is the only + path for `LatestOnly` on a provider, whether the caller is a test, a tick, or + a reconnect. +- Deletion line: none inside `cultmesh-ts` (there is no prior QUIC code); the + RUDP provider transport at `src/provider-rudp-transport.ts` is untouched. + +### 5.3 Shared TypeScript route verification (Q2) + +- Owner after the cut: `packages/cultnet-ts/src/cultmesh-authority.ts`, + published as subpath `cultnet-ts/authority`. It is the only TypeScript + implementation of: Odin root lookup, validity window, canonical route + transcript, canonical session transcript, P-256/P1363 verification, + loopback detection, and the protected-scheme rule. +- Inputs: a route view (Verse, authority runtime, endpoint, protocol ids, + priority, generation, certificate), a trust policy (`mode`, `odinRoots`, + `now`), a session-open request and an accepted message. +- Outputs: resolution or a thrown `Error` with the same message texts the + browser package emits today (its tests pin them). +- Derived state: none. +- Forbidden writers: `cultmesh-browser` must not retain or regrow + `verifyAuthorityRoute`, `canonicalRoute`, `canonicalSession`, + `canonicalFields`, `verifyP256`, or `isLoopbackEndpoint`; `cultmesh-ts` must + not implement any of them; neither transport package may depend on the + other. Negative greps in section 6 pin this. +- Shared paths: the browser WebSocket client and the Node QUIC consumer verify + the same route bytes through the same function. +- Deletion line: `cultmesh-browser/src/index.ts:955-1072` and `:797-808`. +- Behavioural note, not a silent change: the protected-scheme rule becomes the + C# rule (`wss`, `https`, scheme containing `quic`; + `CultMeshAuthorityProof.cs:156-162`) instead of `wss`-only + (`cultmesh-browser/src/index.ts:965`). The browser client still refuses + non-`ws(s)` route endpoints at `:537-540`, so browser behaviour is + unchanged; the shared module simply stops being wrong for QUIC routes. + +### 5.4 Build and packaging + +- Owner: `scripts/build-quic-native.ps1` (Windows x64) and the new + `scripts/build-quic-native.sh` (Linux x64) own producing the bridge + artifact; `.github/workflows/publish-packages.yml` owns turning artifacts + into registry packages. +- Inputs: pinned MsQuic 2.5.9 (Schannel NuGet on Windows; `libmsquic` deb on + Linux) with SHA-256 checks; the bridge source. +- Outputs: `gamecult_mesh_quic_native.dll` + `msquic.dll` (win32-x64), + `libgamecult_mesh_quic_native.so` + `libmsquic.so.2` (linux-x64), each with + the MsQuic license. +- Derived state: `artifacts/` (git-ignored, `.gitignore:66`). +- Forbidden writers: no `postinstall` compile step in any published package; + a consumer host never needs CMake or a compiler. +- Deletion line: none; the Windows script is kept and the Unity package script + keeps calling it. + +## 6. Cut 1 (subtraction): one TypeScript route verifier + +Purpose: land Q2 before any QUIC code exists, so the Node consumer has one +owner to call and the browser package has nothing left to grow. + +Deletes (exact): + +- `packages/cultmesh-browser/src/index.ts:955-977` `verifyAuthorityRoute` + (23 lines), `:979-996` `canonicalRoute` (18), `:998-1010` `canonicalSession` + (13), `:1012-1026` `canonicalFields` (15), `:1028-1058` `verifyP256` (31), + `:1065-1072` `isLoopbackEndpoint` (8), `:797-803` `bytesToBase64` (7), + `:805-808` `base64ToBytes` (4). Total 119 lines deleted from the browser + package. `randomNonce` (`:1060-1063`) stays: it is browser-client behaviour, + not verification. + +Keeps and moves: + +- The deleted bodies move verbatim into + `packages/cultnet-ts/src/cultmesh-authority.ts` as exported functions, with + one edit: the protected-scheme test in `verifyAuthorityRoute` becomes + `isProtectedEndpoint(endpoint)` implementing the C# rule (P19). Types + `CultMeshBrowserIdentity`, `CultMeshBrowserRoute`, + `CultMeshBrowserP256PublicKey`, `CultMeshBrowserRouteCertificate`, + `CultMeshBrowserAuthorityTrustMode`, `CultMeshBrowserAuthorityTrustPolicy` + (`cultmesh-browser/src/index.ts:19-53`) move too, renamed without the + `Browser` infix (`CultMeshAuthorityIdentity`, `CultMeshAuthorityRouteView`, + `CultMeshP256PublicKey`, `CultMeshAuthorityRouteCertificate`, + `CultMeshAuthorityTrustMode`, `CultMeshAuthorityTrustPolicy`). + `cultmesh-browser` re-exports them under the old names as type aliases. +- `validateSessionAcceptance` (`:926-953`) stays in the browser package; it + compares WebSocket handshake fields. Its crypto lines (`:944-951`) are + replaced by a call to the new `verifyProviderSessionProof(request, endpoint, + providerKey, signature)` exported from the shared module. + +Adds: + +- `packages/cultnet-ts/src/cultmesh-authority.ts` (about 190 lines: the moved + 119 plus types and `isProtectedEndpoint`). Browser-safe by construction: it + may use only `globalThis.crypto.subtle`, `TextEncoder`, `atob`, `btoa`, + `URL`, `DataView`, `Uint8Array`. No `node:` import. +- `packages/cultnet-ts/package.json:7-18` gains an `"./authority"` export + beside `"./contracts"` (`:12-16`), same three-key shape. +- `packages/cultnet-ts/src/index.ts` re-exports the module's public names. +- `packages/cultnet-ts/test/cultmesh-authority.test.ts` (about 150 lines): + signs a route with `node:crypto` `generateKeyPairSync("ec", { namedCurve: + "P-256" })` and verifies through the shared module; one negative per rule + (expired, unsigned remote, wrong Odin root, mutated endpoint, wrong signature + length); and asserts `isProtectedEndpoint` accepts `wss://`, `https://`, + `cultmesh-state+quic://` and rejects `ws://`, `cultnet+tcp://`. +- A cross-runtime vector: `tests/GameCult.Mesh.Tests/CultMeshAuthorityProofTests.cs` + gains a test that calls `CultMeshAuthorityProof.CreateSignedRoute` + (`src/GameCult.Mesh/CultMeshAuthorityProof.cs:221`) with a fixed test key + and writes `contracts/cultmesh/authority-route-vectors.json` (route fields, + Odin public key, signature) when `CULTMESH_WRITE_VECTORS=1`, and otherwise + asserts the committed file still verifies. The TS test verifies the same + file through the shared module. This is a shared-vector check, not + cross-process interop; it proves the transcript bytes, which is what Q2 + needs. + +Per-file changes: + +- `packages/cultmesh-browser/src/index.ts:1-17` add + `import { verifyAuthorityRoute, verifyProviderSessionProof, isLoopbackEndpoint, type ... } from "cultnet-ts/authority";` + (the package already imports `cultnet-ts/contracts` at `:2-17`, so + resolution is proven). `:536` and `:914` call the imported function + unchanged. `:944-951` call `verifyProviderSessionProof`. `:961` and `:965` + are gone with the function. +- `packages/cultmesh-browser/tsconfig.json` unchanged (`moduleResolution: + "Bundler"` already resolves the `exports` map). + +Verification: + +- `npm run test --workspace packages/cultnet-ts` (build + unit; pins the + shared verifier and the vector file). +- `npm run test --workspace packages/cultmesh-browser` (all 17 existing tests + at `test/cultmesh-browser.test.ts:29-472` must pass unchanged; they pin the + error strings and the refusal order, including "rejects a mutated or expired + signed route before opening a provider socket" at `:239-258`). +- `dotnet test tests/GameCult.Mesh.Tests --filter FullyQualifiedName~AuthorityProof` + (vector generation/verification; focused, one project). +- `node scripts/test-typescript-package-closure.mjs` (the packed + `cultmesh-browser` tarball must resolve `cultnet-ts/authority` from the + registry-shaped install at `scripts/test-typescript-package-closure.mjs:63-72`). +- Negative greps (must return nothing): + `rg -n "crypto\.subtle\.(verify|importKey)|function (verifyAuthorityRoute|canonicalRoute|canonicalSession|canonicalFields|verifyP256|isLoopbackEndpoint)" packages/cultmesh-browser/src packages/cultmesh-ts/src` + and `rg -n "cultmesh-browser" packages/cultmesh-ts/package.json packages/cultnet-ts/package.json`. +- Operator-only: none. + +## 7. Cut 2 (behaviour, pure TypeScript): the realtime frame codec + +Purpose: byte parity with `CultMeshRealtimeWireProtocol` before any transport +exists, proven in both directions with shared vectors. + +Deletes: none. + +Adds: + +- `packages/cultmesh-ts/src/realtime-wire.ts` (about 130 lines). Exports + `CULTMESH_REALTIME_ALPN = "cultmesh-state-v1"`, + `CULTMESH_REALTIME_CONNECTION_CLOSE_CODE = 0x43554c54n`, + `CULTMESH_REALTIME_STREAM_ABORT_CODE = 0x53544154n`, + `CULTMESH_REALTIME_RELIABLE_STREAM = 1`, `CULTMESH_REALTIME_LATEST_ONLY_STREAM = 2`, + `CULTMESH_REALTIME_MAX_PAYLOAD_BYTES = 64 * 1024 * 1024`, + `CULTMESH_REALTIME_MAX_ENCODED_FRAME_BYTES` (= max payload + 37 + 3 * 65535, + matching `CultMeshRealtimeWireProtocol.cs:20`), type + `CultMeshRealtimeDelivery = "reliable-ordered" | "latest-only" | "unreliable"` + with wire bytes 0/1/2 in that order (`CultMeshRealtimeTransports.cs:8-13`), + interface `CultMeshRealtimeFrame { channelId; schemaId; bodyId; + producerEpoch: bigint; sequence: bigint; delivery; payload: Uint8Array }`, + `encodeRealtimeFrame(frame): Uint8Array`, `decodeRealtimeFrame(bytes): + CultMeshRealtimeFrame`. Layout exactly `CultMeshRealtimeWireProtocol.cs:37-54` + (magic `0x31545343` LE u32, delivery u8, epoch i64 LE, sequence i64 LE, + three u16 LE lengths, payload i32 LE, header size i32 LE = 37, version u16 + LE = 1, then UTF-8 identities, then payload). Decode rejections match + `:60-76` one for one: truncated header, wrong magic, unsupported version or + header size, delivery out of range, negative payload length, length sum + mismatch. Epoch and sequence are `bigint` because i64 exceeds the safe + integer range; validation mirrors `CultMeshRealtimeTransports.cs:29-39` + (non-empty identities, non-negative epoch/sequence). +- `contracts/cultmesh/realtime-frame-vectors.json`: written by a new C# test + `tests/GameCult.Mesh.Tests/CultMeshRealtimeWireProtocolTests.cs` under + `CULTMESH_WRITE_VECTORS=1` and otherwise asserted against. Cases: one frame + per delivery mode with small payload; empty payload; identities at exactly + 65,535 UTF-8 bytes (multi-byte characters included so byte length and + character length differ); epoch and sequence at `long.MaxValue`; and a + 64 MiB-payload case recorded as `{ sha256OfEncoding, encodedLength }` rather + than bytes. Malformed cases: wrong magic, version 2, header size 36, + delivery 3, payload length -1, length sum off by one, each with the C# + exception message. There is no existing C# test for this codec + (`rg CultMeshRealtimeWireProtocol tests` returns nothing `(probe)`), so this + is also the first direct C# codec test. +- `packages/cultmesh-ts/test/realtime-wire.test.ts` (about 120 lines): every + vector decodes to the recorded fields and re-encodes to the recorded bytes; + every malformed vector throws; the 64 MiB case is built in-process and its + SHA-256 compared; TypeScript-produced bytes for the same fields equal the + C#-produced bytes (this direction is what "TypeScript encodings decode in + C#" means when the vector file is the medium; the cross-process direction is + cut 5). +- `packages/cultmesh-ts/src/index.ts:37-40` gains `export * from "./realtime-wire";`. + +Verification: + +- `dotnet test tests/GameCult.Mesh.Tests --filter FullyQualifiedName~RealtimeWireProtocol`. +- `npm run test --workspace packages/cultmesh-ts`. +- Negative grep: `rg -n "0x31545343|cultmesh-state-v1" packages --glob '!**/dist*/**'` + must hit only `realtime-wire.ts` and its test in TypeScript (one codec). +- Operator-only: none. + +## 8. Cut 3 (native, subtraction then behaviour): the runtime-neutral bridge + +Purpose: one MsQuic body for Unity and Node, two roles, two platforms, no +callbacks across the host boundary. + +Deletes first (in `native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp`): + +- `:1-3` Windows includes; `:18-22` `__declspec` macros; `:51-63` per-client + `Client` with its own `api/registration/configuration`; `:184-200` + `CertificateMatchesPin` as the trust path; `:288-305` `CloseHandles`; + `:309-393` `cultmesh_quic_open` as the primary API. About 200 of 440 lines + are removed or rewritten; the framing consumer (`:123-157`), stream callback + (`:159-182`), trace/error helpers (`:65-86`, `:202-221`) are kept in spirit + and re-homed on the runtime. +- `CMakeLists.txt:4-6` (Windows-only fatal) and `:7-9` (`MSQUIC_ROOT` + mandatory) are replaced by a platform branch. + +Adds (C ABI v2, all `extern "C"`, exported with a portable macro +`CULTMESH_API` that is `__declspec(dllexport)` on MSVC and +`__attribute__((visibility("default")))` elsewhere): + +``` +int32_t cultmesh_quic_runtime_open(const char* app_name, void** out_runtime); +void cultmesh_quic_runtime_close(void* runtime); +int32_t cultmesh_quic_listener_open(void* runtime, const char* host, uint16_t port, + const uint8_t* pkcs12, int32_t pkcs12_len, const char* password, + uint64_t* out_listener_id, uint16_t* out_bound_port); +void cultmesh_quic_listener_close(void* runtime, uint64_t listener_id); +int32_t cultmesh_quic_connection_open(void* runtime, const char* host, uint16_t port, + uint64_t* out_connection_id); +int32_t cultmesh_quic_connection_certificate_complete(void* runtime, uint64_t connection_id, + int32_t accept); +void cultmesh_quic_connection_shutdown(void* runtime, uint64_t connection_id, uint64_t code); +int32_t cultmesh_quic_stream_open(void* runtime, uint64_t connection_id, uint8_t kind, + uint64_t* out_stream_id); +int32_t cultmesh_quic_stream_send_frame(void* runtime, uint64_t stream_id, + const uint8_t* encoded_frame, int32_t length, int32_t fin); +void cultmesh_quic_stream_shutdown(void* runtime, uint64_t stream_id, uint64_t code); +int32_t cultmesh_quic_next_event(void* runtime, int32_t timeout_ms, + cultmesh_quic_event* out_event, uint8_t* payload, int32_t payload_capacity, + int32_t* out_required); +int32_t cultmesh_quic_last_error(void* runtime, char* destination, int32_t capacity); +``` + +- `cultmesh_quic_event` is a fixed 64-byte struct: `uint32 type; uint32 + stream_kind; uint64 listener_id; uint64 connection_id; uint64 stream_id; + uint64 code; int32 status; int32 payload_length; uint8 reserved[16]`. + Types: 1 `listener_new_connection`, 2 `connection_connected`, 3 + `connection_certificate_received` (payload = DER), 4 `connection_shutdown` + (payload = UTF-8 reason), 5 `stream_started` (inbound, `stream_kind` set + from the first byte), 6 `stream_frame` (payload = one whole encoded frame, + length prefix stripped), 7 `stream_send_complete`, 8 `stream_shutdown`, 9 + `listener_stopped`. `next_event` returns 0 on timeout, 1 with the event + filled and payload copied, 2 when `payload_capacity` is too small (event + stays at the head; `out_required` set), negative on error. This is the v1 + two-phase poll convention (`:400-418`) applied to a queue of typed events. +- Client connections use `QUIC_CREDENTIAL_TYPE_NONE` with + `INDICATE_CERTIFICATE_RECEIVED | DEFER_CERTIFICATE_VALIDATION | + USE_PORTABLE_CERTIFICATES` (already at `:358-364`), return + `QUIC_STATUS_PENDING` from the certificate event, enqueue event 3, and call + `ConnectionCertificateValidationComplete` only when the host calls + `certificate_complete` (P11: `msquic.h:132-133,142,1290`). Timeout: the + bridge sets a 10 s handshake idle; if the host never answers, MsQuic's + handshake timeout closes the connection and event 4 is emitted. +- Listeners load `QUIC_CREDENTIAL_TYPE_CERTIFICATE_PKCS12` + (`msquic.h:123,394-398`), one credential type for Schannel and OpenSSL; the + provider's advertised pin is the SHA-256 of the DER certificate computed on + the TypeScript side from the same PKCS12 with `node:crypto` (no hashing in + C). +- Settings mirror the C# server/connector: `PeerUnidiStreamCount 1024` + (`CultMeshQuicRealtimeTransport.cs:77`, `:202`), idle timeout 30 s and + keep-alive 5 s as in the existing bridge (`:335-338`). +- `stream_send_frame` copies the bytes, prepends the 4-byte LE length, calls + `StreamSend` (with `QUIC_SEND_FLAG_FIN` when `fin`), and emits event 7 on + `QUIC_STREAM_EVENT_SEND_COMPLETE`. `stream_open` writes the kind byte as the + first send. Framing therefore lives in C on both directions, exactly where + the v1 bridge already keeps it (`:123-157`), and `CultMeshQuicRealtimeProtocol` + keeps it in C# (`CultMeshQuicRealtimeTransport.cs:635-655`). +- The v1 exports `cultmesh_quic_open/state/poll/error/close` are kept, Windows + only (`#ifdef _WIN32`), implemented on top of a private runtime with the pin + check retained from `:184-200`. External contract protected: the Unity + package `DllImport` at `CultMeshNativeQuicRealtimeTransport.cs:259-277` and + `CanConnect`'s Windows gate at `:39-41`. They delegate; they decide nothing + new. +- `CMakeLists.txt`: Windows branch unchanged in effect (MSVC, `/Brepro`, + `MSQUIC_ROOT` from the NuGet layout, links `msquic crypt32 bcrypt`); Linux + branch links `msquic` from `MSQUIC_LIB_DIR` (the extracted deb's + `usr/lib/x86_64-linux-gnu`) with headers from `MSQUIC_INCLUDE_DIR`, `-fvisibility=hidden`, + output `libgamecult_mesh_quic_native.so`, `RPATH $ORIGIN` so the sibling + `libmsquic.so.2` resolves. +- `scripts/build-quic-native.sh` (about 70 lines): fetches + `libmsquic_2.5.9_amd64.deb` from the packages.microsoft.com pool URL in P7, + verifies its SHA-256, extracts with `dpkg-deb -x`, fetches the three headers + at tag `v2.5.9` (P10) and verifies their SHA-256 (record the hashes at first + run into the script, the same way `build-quic-native.ps1:14` pins the + NuGet), configures CMake with Ninja, and copies `libgamecult_mesh_quic_native.so`, + `libmsquic.so.2`, and the MsQuic LICENSE into `artifacts/quic-native/linux-x64`. +- `native/GameCult.Mesh.Quic.Native/README.md` rewritten to describe both + roles, both platforms, the v1/v2 split, and the "no host callbacks" rule. + +Per-file changes outside `native/`: + +- `scripts/build-quic-native.ps1:54-58` output path becomes + `artifacts/quic-native/win32-x64` by default (parameter default at `:4`); + callers `build-unity-package.ps1:80-82` and the Native.Tests csproj `:20-22` + pass explicit `-OutputDirectory` today, so they are unaffected. +- No change to `src/GameCult.Mesh.Quic.Native/*.cs`. The Unity managed + connector keeps polling v1. + +Verification: + +- Windows: `powershell -File scripts/build-quic-native.ps1` then + `dotnet test tests/GameCult.Mesh.Quic.Native.Tests` (the csproj rebuilds the + bridge itself at `:20-22`; all four tests at + `CultMeshNativeQuicRealtimeTransportTests.cs:15-141` must pass, including the + wrong-pin refusal at `:79-99` and the departed-client test at `:101-141`). + This is the regression gate for the v1 shim. +- Windows FFI smoke, before any TypeScript transport exists: + `scratchpad`-style script (to be committed as + `packages/cultmesh-ts/test/realtime-quic-native.test.ts` in cut 4) that + opens a runtime, a listener with a PKCS12 generated by `openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 ... | openssl pkcs12 -export` + (P13), a client connection to it, answers event 3 with accept, sees event 2 + on both sides, opens a latest-only stream, sends one frame with `fin`, and + reads event 6 on the server side with the identical bytes. +- Linux, development loop: `docker run --rm -v F:\Projects\CultLib:/src debian:13 bash -lc "apt-get update && apt-get install -y cmake ninja-build g++ curl ca-certificates dpkg && /src/scripts/build-quic-native.sh"` + then the same FFI smoke under `node:24` in the container. This is a Linux + build on a Linux host; it is not the release artifact (Q6). +- Build economy: the only builds are the native CMake target and + `tests/GameCult.Mesh.Quic.Native.Tests` (which pulls `GameCult.Mesh.Quic`, + `GameCult.Mesh.Quic.Native`, `GameCult.Mesh`, `GameCult.Networking`, + `GameCult.Caching` by project reference). Before the first `dotnet build`, + take `Get-ChildItem -Recurse F:\Projects\CultLib\bin,F:\Projects\CultLib\obj,F:\Projects\CultLib\artifacts | Select FullName,Length` + to a scratch file and diff afterwards; restore or delete anything outside + those five projects' outputs. +- Negative greps: `rg -n "CryptHashCertificate2|wincrypt" native/` must hit + only inside the `#ifdef _WIN32` v1 block; `rg -n "windows.h" native/` only + inside `#ifdef _WIN32`. +- Operator-only: rebuilding and re-committing the Unity plugin DLL + (`unity/org.gamecult.cultlib/Runtime/Plugins/x86_64/gamecult_mesh_quic_native.dll`) + and cutting a Unity package version through `scripts/build-unity-package.ps1` + is a release action; the map does not schedule it. Until it happens, Unity + keeps the old DLL, which is fine because v1 exports are unchanged. + +## 9. Cut 4 (behaviour): Node binding, consumer, session manager, trust + +Purpose: a TypeScript consumer that connects by advertised candidate, verifies +the Odin route through the cut-1 module, pins the TLS certificate, and +receives frames from the C# managed provider in a separate process. + +Deletes: none. + +Adds: + +- `packages/cultmesh-ts/src/realtime-quic-native.ts` (about 260 lines): the + koffi binding. Resolves the platform package (`@gamecult/cultmesh-quic-native-win32-x64` + or `-linux-x64`, Q5) or, when `CULTMESH_QUIC_NATIVE_DIR` is set, a directory + (this is how the repo's own tests point at `artifacts/quic-native/` + without a registry). Loads `msquic` first, then the bridge, by absolute path + (the probe showed the dependent library must be resolvable before the + bridge loads). Declares the twelve v2 prototypes. Exposes + `CultMeshQuicNativeRuntime` with a single event pump: a loop that awaits + `nextEvent.async(runtime, 250, ...)` and dispatches typed events to + registered listeners/connections by id. One pump per process-wide runtime; + reference-counted open/close. No koffi callbacks anywhere. +- `packages/cultmesh-ts/src/realtime-quic.ts` (about 650 lines across cuts 4 + and 5). Cut 4 lands: `CultMeshQuicRealtimeTransport` (implements + `sendFrame`, `receiveFrame`, `dispose`, `transportId = "msquic-realtime"`, + `endpoint`; the `isVerifiedFor(verseId, authorityRuntimeId, protocolId, + routeGeneration)` check mirroring `CultMeshQuicRealtimeTransport.cs:352-361`), + `CultMeshQuicRealtimeConnector` (`connectorId`, `priority`, `canConnect(candidate)`, + `connect(candidate, target, signal)`), and the receive path: stream kind + vs frame delivery consistency (`:519-524`), and the per-`(channel, body)` + generation filter that drops older `(producerEpoch, sequence)` (`:538-560`). + Certificate decision on event 3: caller `validateProviderCertificate(target, + der)` if supplied, else SHA-256 of DER equals the endpoint's `cert-sha256` + (`:111-119`, case-insensitive hex); otherwise reject. Endpoint parsing: + scheme `cultmesh-state+quic`, host, port, optional pin (`:98-109`). +- `CultMeshQuicRealtimeSessionManager` in the same file: takes an + `ICultMeshRealtimeLookupSource`-shaped port `{ resolve(target): Promise }`, + a trust policy from `cultnet-ts/authority`, and connectors. Binds + candidates from `authorityRoutes` whose `protocolIds` include + `cultmesh.realtime_state.v1` (`CultMeshSessions.cs:77`) and whose + `authorityRuntimeId` matches; verifies each with `verifyAuthorityRoute` + before any connector is asked; orders by connector priority then route + priority; races at most `maxRacedCandidates` per tier (`:833-880`); requires + `isVerifiedFor` after connect (`:885-896`); keys sessions by + `verseId + "\u001f" + authorityRuntimeId` (`:46`); marks offline on transport + failure. Ships with `CultMeshStaticRealtimeLookupSource` (an array of + `CultMeshVerseDescriptorMessage` from `cultnet-ts/contracts:350-369`). No + Odin WebSocket rendezvous in Node in this migration (Q7). +- `CultMesh` facade (`packages/cultmesh-ts/src/index.ts:4700`) gains statics + beside the RUDP ones at `:6008-6186`: `parseQuicRealtimeEndpoint`, + `createQuicRealtimeConnector(options)`, `createQuicRealtimeSessionManager(options)`, + and in cut 5 `createQuicRealtimeProvider(options)`. +- `packages/cultmesh-ts/package.json:44-48` gains `"koffi": "3.3.0"` (exact) + and `optionalDependencies` for the two platform packages (names per Q5). + `koffi` is required lazily inside `realtime-quic-native.ts` so consumers + that never touch QUIC (AetheriaEve Electron, Odin, Stonks, weksa) load + nothing native. +- `packages/cultmesh-ts/test/realtime-quic-native.test.ts` (about 150 lines): + the cut-3 FFI smoke, now against the runtime class. +- `packages/cultmesh-ts/test/realtime-quic-consumer.test.ts` (about 250 + lines): TypeScript consumer against a TypeScript listener opened through + the raw runtime (no provider semantics yet): connect with correct pin; + refuse wrong pin (`cert-sha256` of 64 zeros, mirroring + `CultMeshNativeQuicRealtimeTransportTests.cs:79-99`); refuse missing + certificate when no validator; caller validator observed with the target + identity; generation filter drops a late older generation (mirrors + `CultMeshQuicRealtimeTransportTests.cs:111-140`). +- Trust negatives, each a separate test with its own mutation, in the same + file, through the session manager with a static lookup source and a signed + route built with `node:crypto`: (a) expired certificate (`now` past + `expiresAt`); (b) unsigned remote route (certificate absent, mode + `authenticated-remote`); (c) wrong Odin root (trust has a different + `keyId`); (d) `cert-sha256` pin mismatch (route verifies, TLS pin fails, so + the connector rejects before `isVerifiedFor`); (e) replayed nonce. On the + QUIC plane there is no `session_open` nonce exchange; the route's + freshness is its generation plus the TLS handshake. The replay test + therefore mutates `generation` on the connected transport's target and + asserts `isVerifiedFor` fails and the session manager disposes the + transport (`CultMeshSessions.cs:885-896`). If the operator wants a nonce on + QUIC, that is a protocol addition on both runtimes and belongs to a later + pipeline; this map does not invent it. +- Interop lane, C# managed provider to TypeScript consumer, separate + processes: `tests/GameCult.Networking.InteropPeer/Program.cs:27-49` gains + mode `quic-realtime-serve` (`--port`, `--frames N`, `--delivery + latest-only|reliable-ordered`, `--interval-ms`): creates a self-signed + certificate exactly as `CultMeshQuicRealtimeTransportTests.cs:203-228`, + starts `CultMeshQuicRealtimeServer`, prints one JSON line + `{ endpoint: "cultmesh-state+quic://127.0.0.1:?cert-sha256=" }` + to stdout, then broadcasts `N` frames with increasing sequence and exits + after the last `send_complete` or on stdin close. + `GameCult.Networking.InteropPeer.csproj:9-11` gains a `ProjectReference` to + `src/GameCult.Mesh.Quic/GameCult.Mesh.Quic.csproj`. + `packages/cultnet-ts/test/interop/cultnet-interop.test.ts` gains + `test("CultMesh QUIC realtime: C# managed provider and TypeScript consumer", ...)` + using `spawnServeProcess` (`:2491`) for the C# peer and `runJsonCommand` + (`:2557`) for a new TypeScript peer script + `packages/cultmesh-ts/test/interop/cultmesh-quic-peer.ts` (`dial --endpoint + --expect N`) that prints the received frames as JSON (fields plus payload + hex). The harness drives processes; it does not import `cultmesh-ts` + (dependency direction: `cultmesh-ts` depends on `cultnet-ts`, so the reverse + import is forbidden). The peer script path follows the `tsPeerScript` + pattern at `:41`. + +Verification: + +- `npm run test --workspace packages/cultmesh-ts` with + `CULTMESH_QUIC_NATIVE_DIR=artifacts/quic-native/win32-x64`. +- `npm run test:interop --workspace packages/cultnet-ts` filtered with + `--test-name-pattern "QUIC realtime"`; it builds the C# interop peer through + the existing `csharpInteropPeerBuild` path (`:45-58`, `:71`). +- Negative greps: `rg -n "new Function|koffi\.register|\.async\(" packages/cultmesh-ts/src` + must show `.async(` only on `nextEvent` in `realtime-quic-native.ts` and no + `koffi.register` (no callbacks); + `rg -n "verifyP256|canonicalRoute" packages/cultmesh-ts/src` must return + nothing. +- Operator-only: none. + +## 10. Cut 5 (behaviour): TypeScript provider and the coalescing outbox + +Purpose: the StreamPixels role. A TypeScript listener that broadcasts with an +explicit delivery mode and cannot be backpressured by a slow consumer, proven +against both C# connectors in separate processes. + +Deletes: none. + +Adds (in `packages/cultmesh-ts/src/realtime-quic.ts`): + +- `CultMeshQuicRealtimeProvider.listen({ host, port, serverCertificate: + { pkcs12, password }, handshakeTimeoutMs })`: opens a listener, computes + `advertisedEndpoint` (`cultmesh-state+quic://:?cert-sha256=`, + uppercase, because the Unity connector requires the pin, P18), accepts + connections into a peer set, exposes `connectionCount`, `broadcast(frame)`, + `receive()` for client-originated frames, `dispose()`. +- Delivery semantics, mirroring `CultMeshQuicRealtimeTransport.cs`: + `reliable-ordered` opens one unidirectional stream of kind 1 per peer on + first use and serialises writes behind a per-peer promise chain; `broadcast` + resolves when every peer's `send_complete` arrives or the peer is evicted + (`:216-235`, `:237-255`). `latest-only` enqueues into a per-peer keyed + outbox (`Map<"channel\u001fbody", frame>` plus a ready queue) and returns + synchronously (`:363-367`, `:572-618`); each peer's pump opens a fresh kind-2 + stream per frame, sends with `fin`, and only dequeues the next frame after + `send_complete`, so a stalled peer accumulates at most one pending frame per + `(channel, body)` and never blocks `broadcast`. `unreliable` throws + `NotSupported` with the same sentence as `:373-375` adjusted for the + runtime. +- Peer eviction on send failure or `connection_shutdown`; no reconnect logic + on the provider. + +Interop lanes (all separate processes; all in +`packages/cultnet-ts/test/interop/cultnet-interop.test.ts`): + +- TypeScript provider to C# native connector (the Unity one): the harness + starts `cultmesh-quic-peer.ts serve --frames 5 --delivery latest-only`, + reads its advertised endpoint from stdout, then runs + `dotnet test tests/GameCult.Mesh.Quic.Native.Tests --filter FullyQualifiedName~NativeConnectorReceivesFromExternalManagedProvider` + with `CULTMESH_NATIVE_EXTERNAL_ENDPOINT=` (the existing test at + `CultMeshNativeQuicRealtimeTransportTests.cs:15-33` is reused unchanged: it + already asserts a frame arrives with non-empty schema, body and payload). + Rename the test to `NativeConnectorReceivesFromExternalProvider` since the + provider is no longer necessarily managed; the env var name stays. +- TypeScript provider to C# managed connector: add + `ManagedConnectorReceivesFromExternalProvider` to + `tests/GameCult.Mesh.Quic.Tests/CultMeshQuicRealtimeTransportTests.cs`, + gated by the same `CULTMESH_NATIVE_EXTERNAL_ENDPOINT`, using + `CultMeshQuicRealtimeTransportConnector` with the pin from the endpoint + (`:111-119`) and no validator, asserting frame fields and payload bytes + equal what the TypeScript peer prints. The harness runs it the same way. +- `LatestOnly` under a stalled consumer: `cultmesh-quic-peer.ts serve + --frames 200 --delivery latest-only --interval-ms 1` while the harness dials + twice with the TypeScript consumer, pauses one consumer's pump for 500 ms + (a test hook on the runtime that stops calling `next_event`), and asserts: + the provider's 200 `broadcast` calls complete within a bounded time + regardless of the pause; the healthy consumer reaches sequence 199; the + paused consumer, once resumed, converges on 199 with fewer than 200 frames + received. This is the TypeScript form of + `CultMeshNativeQuicRealtimeTransportTests.cs:101-141` plus the convergence + assertion from `CultMeshQuicRealtimeTransportTests.cs:111-140`. +- Golden bytes across processes: the C# managed connector lane above prints + the received frame's re-encoding (via `CultMeshRealtimeWireProtocol.EncodeFrame`) + as hex; the harness compares it with the TypeScript peer's `encodeRealtimeFrame` + output for the same frame. That closes "TypeScript encodings decode in C#" + by process, not by shared file. + +Verification: + +- `npm run test --workspace packages/cultmesh-ts` (provider unit tests with + the TypeScript consumer in-process but separate connections: reliable + ordering in both directions mirrors `CultMeshQuicRealtimeTransportTests.cs:71-110`; + latest-only coalescing; unreliable fails closed). +- `npm run test:interop --workspace packages/cultnet-ts --test-name-pattern "QUIC realtime"`. +- `dotnet test tests/GameCult.Mesh.Quic.Tests` and + `dotnet test tests/GameCult.Mesh.Quic.Native.Tests` without the env var + (the new tests `Assert.Ignore`, the existing ones still pass). +- Negative greps: `rg -n "setInterval|setTimeout" packages/cultmesh-ts/src/realtime-quic.ts` + must show no polling of the bridge (the pump is the only wait); + `rg -n "reconnect" packages/cultmesh-ts/src/realtime-quic.ts` must return + nothing on the provider side. +- Operator-only: none. + +## 11. Cut 6 (packaging and release) + +Purpose: a consumer host with no toolchain installs the binding. + +Adds: + +- `packages/cultmesh-quic-native/win32-x64/package.json` and + `packages/cultmesh-quic-native/linux-x64/package.json` (names per Q5), each + with `os`/`cpu` fields, `files` listing the two binaries and + `MSQUIC-LICENSE.txt`, no scripts, and a `README.md` naming the MsQuic + version and the build host. Their contents are copied from + `artifacts/quic-native/` by the publish job, never committed. +- `.github/workflows/publish-packages.yml`: tag prefixes `cultnet-ts-v*`, + `cultmesh-ts-v*`, `cultmesh-quic-native-v*` (`:20-24`); a `cultnet-ts` job + and a `cultmesh-ts` job shaped like the `cultcache-ts` job (`:40-76`); a + native job with two runners: `windows-latest` running + `scripts/build-quic-native.ps1`, and `ubuntu-latest` with + `container: debian:13` running `scripts/build-quic-native.sh` (Q6), each + publishing its platform package, then the `cultmesh-ts` job depends on both. +- `scripts/test-typescript-package-closure.mjs:9` adds the platform packages + to the pack list on the matching host and `:63-72` adds + `assert.equal(typeof mesh.CultMesh.createQuicRealtimeConnector, "function")` + plus a runtime smoke that opens and closes a `CultMeshQuicNativeRuntime` + from the installed tarballs (proves the optional dependency resolves and the + binaries load from `node_modules`, not from a repo path). +- `.github/workflows/cultnet-interop.yml` gains a step after the C# RUDP + step that builds the Windows bridge (`build-quic-native.ps1`) and runs the + `QUIC realtime` lanes with `CULTMESH_QUIC_NATIVE_DIR` set. Linux CI + coverage of the lanes needs a Linux runner with dotnet and the deb; add a + second job `interop-quic-linux` on `ubuntu-latest` + `container: debian:13` + running only the QUIC lanes. +- `README.md` of `packages/cultmesh-ts` gains a "QUIC Realtime Plane" section + after "RUDP Helpers" (`README.md:332`) with provider and consumer examples + matching the C# README (`src/GameCult.Mesh.Quic/README.md:13-62`). + +Verification: + +- `node scripts/test-typescript-package-closure.mjs` on Windows. +- Manual dispatch of `publish-packages.yml` with `package=cultmesh-ts` builds + and tests without publishing (`:24-32` semantics). +- Operator-only: the tag pushes that publish; `NPM_TOKEN` scope for new + package names; and the Yggdrasil verification: `ssh gamecultadmin@yggdrasil.gamecult.org`, + `mkdir /tmp/cultmesh-quic-smoke && cd $_ && npm init -y && npm i cultmesh-ts@`, + then `node -e "require('cultmesh-ts').CultMesh.createQuicRealtimeProvider({...}).then(p => { console.log(p.advertisedEndpoint); return p.dispose(); })"` + with a throwaway PKCS12 from `openssl`, followed by a loopback dial from a + second `node` process on the same host. `libmsquic`'s runtime dependencies + (`libssl3t64`, `libnuma1`, `libxdp1`, `libnl-route-3-200`, P7) must be + present on Yggdrasil; the smoke will say so if not. This is the only place + the Linux artifact is proven on the deploy host, and only the operator holds + the key. + +## 12. Cut 7 (documentation and ledgers) + +- `docs/runtime-parity-scope.md:38` TypeScript row: add "CultMesh QUIC + realtime provider and consumer over CultLib-owned MsQuic bindings (Windows + x64, Linux x64), byte-parity with C#, cross-process interop lanes" to + "Claimed parity"; add "QUIC datagrams (`Unreliable`), browser QUIC" to "Not + claimed". +- `src/GameCult.Mesh/docs/transport-planes.md:35-46`: name the TypeScript + provider/consumer beside the .NET and Unity bodies; `:122-125`: state that + `CULTMESH_NATIVE_EXTERNAL_ENDPOINT` now accepts any provider and is driven + by the TypeScript interop harness. +- `docs/cultnet-transport-parity.md`: no change. It maps RUDP/TCP/LiteNetLib + ownership; the realtime plane is a CultMesh plane, not a CultNet transport + profile, and pretending otherwise would put QUIC into a document whose cut + line says "Do not put UDP packet mechanics into CultMesh" the other way + round. +- `docs/parked-features.md`: one entry, "Node Odin WebSocket rendezvous", + pointing at `cultmesh-browser/src/index.ts:84-191` as the browser owner and + the `ICultMeshRealtimeLookupSource` port as the seam (Q7). +- `docs/typescript-quic-realtime-target.md:5-7`: status line updated to point + at this map. + +Verification: `rg -n "CultMeshRealtimeTransports.cs" docs src/GameCult.Mesh/docs` +returns only correct paths. + +## 13. Operator questions + +The four rulings in the target (Q1-Q4) are closed and not reopened. These are +the forks the probes surfaced. + +- **Q5. Registry names.** The binding cannot ship as prebuilt platform + packages without `cultmesh-ts` itself being on a registry, and today every + consumer uses `file:` paths and only `@gamecult/cultcache-ts` is published + (P15, P16). All candidate names are unclaimed (P14). A: publish `cultnet-ts` + and `cultmesh-ts` under their existing unscoped names (no import changes in + any of the 11 consuming repos) and put only the new native platform packages + under `@gamecult/cultmesh-quic-native-{win32-x64,linux-x64}`. B: scope + everything as `@gamecult/*` now and take the import rename across consumers + as a separate consumer task. C: no registry; ship the binaries inside the + CultLib tarball the deploy script already extracts on Yggdrasil + (`deploy-streampixels-preview.sh:95-99`), keeping `file:` consumption. + **Recommended: A.** It reshapes nothing consumers use, matches the + `cultcache-ts` precedent of scoping only what is new, and gives StreamPixels + a versioned artifact instead of a tarball with a `.so` in it. C is the + cheapest but leaves the deploy path owning a native binary by hand, which is + the failure the target's "shipped through a registry" phrase was written to + avoid. +- **Q6. Linux release builder.** A: GitHub Actions `ubuntu-latest` with + `container: debian:13` (same OS as Yggdrasil, P8), artifact published by the + workflow, verified on Yggdrasil by the operator smoke in cut 6. B: build on + Yggdrasil in the deploy script (installs CMake and g++ on a live public + host; every deploy compiles). C: build on Starfire's Docker `debian:13` + engine (P12) and publish from the workstation. **Recommended: A.** It is a + Linux host, it is reproducible from a tag, and it keeps compilers off + Yggdrasil. C is kept for the development loop only. +- **Q7. Node-side Odin rendezvous.** The TypeScript consumer needs a route + source. The browser package has an Odin WebSocket rendezvous + (`cultmesh-browser/src/index.ts:84-191`); Node 24 has a global `WebSocket`, + so it would run, but `cultmesh-ts` may not depend on `cultmesh-browser` + (Q2's spirit), and the first consumer of the Node QUIC path is the interop + harness, not a product. A: ship the lookup-source port plus a static source + now, park the Node Odin rendezvous with a note. B: move the Odin rendezvous + into `cultnet-ts` beside the verifier in this migration so Node and browser + share it. **Recommended: A.** B is the right end state but is a second + ownership move in one pipeline; it should follow once a Node consumer that + discovers through Odin exists. + +Not asked, because the target already decided them: datagrams stay out (Q4); +no TLS on TCP planes (Q1); Windows x64 and Linux x64 only (Q3); the verifier +moves to a shared browser-safe module (Q2, section 6 names the module). + +## 14. Subtraction estimate + +Both sides of the number, by cut, in source lines (tests included, generated +`dist*` excluded, vector JSON excluded): + +| Cut | Removed or replaced | Added | Net | +| --- | ---: | ---: | ---: | +| 1 trust module | 119 (browser) | 190 (module) + 150 (tests) + 40 (C# vector test) | +261 | +| 2 codec | 0 | 130 + 120 (TS test) + 120 (C# test) | +370 | +| 3 bridge | ~200 rewritten of 440 C++; 24 CMake | ~1,000 C++ (replacing 440), 60 CMake, 70 sh, 40 README | +~700 net C++/build | +| 4 consumer | 0 | 260 (binding) + 400 (consumer/session manager) + 400 (tests) + 200 (C# interop mode) + 150 (harness) + 120 (peer script) | +1,530 | +| 5 provider | 0 | 250 (provider) + 300 (tests) + 150 (harness) + 40 (C# tests) | +740 | +| 6 packaging | 0 | 60 (package manifests) + 130 (workflow) + 30 (closure smoke) + 60 (README) | +280 | +| 7 docs | ~10 | ~40 | +30 | +| Total | ~350 | ~4,260 | about +3,900 | + +Dependencies: +1 runtime dependency on `cultmesh-ts` (`koffi`, 1.7 MB, MIT, +loaded lazily); +2 optional platform packages; +0 build-time Node +dependencies (no node-gyp, no node-addon-api, no cmake-js). Targets: +0 .NET +projects (the C# interop peer gains one project reference); +1 CMake platform +branch; +1 shell build script; +3 publish jobs; +1 CI job. + +Why the number is positive and still acceptable: the target orders a new +capability (a QUIC realtime plane in a runtime that has none), and every line +above either is that capability, proves it against the C# reference, or ships +it. The subtraction that was available (one verifier instead of two, one +MsQuic body instead of two, one framing implementation per language instead +of one per host) is taken in cuts 1 and 3. Anything that would have shrunk +the number further (a third-party QUIC stack, a callback-driven addon, a +tarball with a `.so`) was rejected in section 4 for reasons that are not +about line count. + +## 15. Not assignable to a cut + +- **The Unity package release** carrying the rebuilt bridge DLL. The v1 ABI + is preserved, so no cut requires it, but the committed DLL will lag the + source until the operator runs `scripts/build-unity-package.ps1` and + commits. Recorded here so nobody reads the stale DLL as evidence the + rewrite did not happen. +- **StreamPixels certificate provisioning** (which PKCS12, where it lives on + Yggdrasil, how its pin reaches the Odin route). Consumer work by the target. +- **A nonce on the QUIC plane.** The target lists "a replayed nonce" among + trust negatives, but the QUIC plane has no nonce exchange in C# either + (`CultMeshQuicRealtimeTransport.cs` opens no session message; trust is the + Odin route plus the TLS pin, `transport-planes.md:71-73`). Cut 4 tests the + replay class that does exist (route generation). Adding a nonce is a + cross-runtime protocol change and needs its own target. +- **Linux coverage of the C# native connector.** `CanConnect` is Windows-only + (`CultMeshNativeQuicRealtimeTransport.cs:40`); the Linux interop job in cut 6 + therefore runs the TypeScript-provider-to-managed-connector lane and the + TypeScript-to-TypeScript lanes only. The native-connector lane is Windows + by design, matching where Unity runs. +- **The `cultcache-ts` naming split** across consumers (section 3). Out of + scope; noted because Q5's answer should not make it worse. + +## 16. Reminder of what a wrong cut looks like + +If a cut touches `src/GameCult.Mesh/CultMeshTcp*.cs`, adds TLS to the TCP +schema or content connectors, adds WebTransport to `cultmesh-browser`, adds +QUIC to `cultnet-py`, `cultnet-rs`, or `cultmesh-kotlin`, or edits anything +under `F:\Projects\StreamPixels`, it has left the target's "Not in this +migration" list and is wrong. Stop and re-read this map. From 3c29fc934d337cef616f1ebf5bbbdbb721b6c1b5 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 13:35:11 +0200 Subject: [PATCH 0021/1002] Record the Q5, Q6 and Q7 rulings in the QUIC cut map All three recommendations were taken: unscoped cultnet-ts and cultmesh-ts with only the native platform packages scoped; the Linux artifact built by GitHub Actions in a debian:13 container and smoked on Yggdrasil; the lookup source port plus a static source now, with the Node Odin rendezvous parked. The status header now says no operator question is open and cut 1 has not started, so a reader of the header alone knows where the campaign stands. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index d2416191..2834f42c 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -5,7 +5,8 @@ Date: 2026-09-16 Status: Imagination output for the target in `docs/typescript-quic-realtime-target.md` (operator-accepted 2026-09-16). No code in this document has been written. Nothing here is committed by -Imagination; the root agent commits. +Imagination; the root agent commits. Q5, Q6 and Q7 were ruled the same day +(section 13, Rulings); no operator question is open. Cut 1 has not started. Anchor: repo `F:\Projects\CultLib`, branch `main`, HEAD `f2cd2eb4641269c653977bdba9b4bce2a26d870c`. Every `file:line` below is read @@ -1001,6 +1002,25 @@ Not asked, because the target already decided them: datagrams stay out (Q4); no TLS on TCP planes (Q1); Windows x64 and Linux x64 only (Q3); the verifier moves to a shared browser-safe module (Q2, section 6 names the module). +### Rulings, 2026-09-16 + +The operator took all three recommendations the same day the map was written. +Each is now a standing ruling; the options above are history. + +- **Q5 ruled A.** `cultnet-ts` and `cultmesh-ts` publish under their existing + unscoped names. Only the two native platform packages are scoped: + `@gamecult/cultmesh-quic-native-win32-x64` and + `@gamecult/cultmesh-quic-native-linux-x64`. No consumer import changes. +- **Q6 ruled A.** The Linux release artifact is built by GitHub Actions on + `ubuntu-latest` inside `container: debian:13`, published by the workflow, + and verified by the operator smoke on Yggdrasil in cut 6. The Docker + `debian:13` engine on the workstation is the development loop only; nothing + it produces is a release artifact. No compiler is installed on Yggdrasil. +- **Q7 ruled A.** Cut 4 ships the `ICultMeshRealtimeLookupSource` port and a + static source. The Node Odin WebSocket rendezvous is parked with a note in + cut 7's ledger; it moves into `cultnet-ts` beside the verifier in a later + pipeline, once a Node consumer that discovers through Odin exists. + ## 14. Subtraction estimate Both sides of the number, by cut, in source lines (tests included, generated From 8d8ad568aa280bac34bf123503a9e38c175eb558 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 15:12:08 +0200 Subject: [PATCH 0022/1002] Re-rule Q5 to C: no registry, because npmjs is unreachable here Ruling A assumed a publish job whose token is minted by logging in to npmjs.com, and the operator's subnet is blocked there. That is also why the existing cultcache-ts publish job has never run. Consumers keep file: paths; the binaries ship in the CultLib tree the deploy path carries; the Actions build attaches the Linux artifact to a release. Cut 6 and the lines of Cuts 4 and 7 that assumed a registry are flagged for remapping. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 2834f42c..544418f0 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -6,7 +6,10 @@ Status: Imagination output for the target in `docs/typescript-quic-realtime-target.md` (operator-accepted 2026-09-16). No code in this document has been written. Nothing here is committed by Imagination; the root agent commits. Q5, Q6 and Q7 were ruled the same day -(section 13, Rulings); no operator question is open. Cut 1 has not started. +(section 13, Rulings); Q5 was then re-ruled from A to C because npmjs is +unreachable from this network. **Cut 6 and the registry-dependent lines of +Cuts 4 and 7 are being remapped under C**; until that lands, their text +describes ruling A. No operator question is open. Cut 1 has not started. Anchor: repo `F:\Projects\CultLib`, branch `main`, HEAD `f2cd2eb4641269c653977bdba9b4bce2a26d870c`. Every `file:line` below is read @@ -1007,10 +1010,20 @@ moves to a shared browser-safe module (Q2, section 6 names the module). The operator took all three recommendations the same day the map was written. Each is now a standing ruling; the options above are history. -- **Q5 ruled A.** `cultnet-ts` and `cultmesh-ts` publish under their existing - unscoped names. Only the two native platform packages are scoped: - `@gamecult/cultmesh-quic-native-win32-x64` and - `@gamecult/cultmesh-quic-native-linux-x64`. No consumer import changes. +- **Q5 ruled A, then re-ruled C the same day.** A had `cultnet-ts` and + `cultmesh-ts` publishing under their unscoped names with only the two native + platform packages scoped. It fell to a Body fact the map had not recorded, + in the operator's words: "we don't even have npm access and cannot get it + because our entire subnet is blocked." The publish job needs an `NPM_TOKEN` + minted on npmjs.com by a logged-in user; nobody on this network can mint + one, which is also why the existing `cultcache-ts` job has never run. + **C stands: no registry.** Consumers keep `file:` paths. The native binaries + ship inside the CultLib tree the deploy path already carries, and Q6's + Actions build attaches the Linux artifact to a GitHub Release instead of + publishing a package. Q5's naming question dissolves with it. Cut 6 is + remapped under C below; Cut 4's binary resolution and Cut 7's ledgers + follow it. Any line in this map that still says "publish", "registry" or + "platform package" describes A and is history. - **Q6 ruled A.** The Linux release artifact is built by GitHub Actions on `ubuntu-latest` inside `container: debian:13`, published by the workflow, and verified by the operator smoke on Yggdrasil in cut 6. The Docker From 4a2fdafa6146418855e2153fcb5f954e0078bf9e Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 15:28:31 +0200 Subject: [PATCH 0023/1002] Remap Cut 6 under C: binaries in the tree, a release workflow, no registry The deploy tarball is a git archive of two package directories, so only committed files reach Yggdrasil and cultmesh-ts does not ride at all today. Under C the binding resolves binaries from an environment variable or the package's own native directory, a workflow builds the Linux artifact in a debian:13 container and attaches it to a release with a manifest and digests, and the operator smoke ships its own archive. Registry publication is parked with its seam named. One question remains: whether the four binaries are committed or fetched at deploy time. The corrected npm premise is recorded in the operator's words: reachable, publication deferred by choice. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 543 ++++++++++++++++++++++----- 1 file changed, 454 insertions(+), 89 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 544418f0..63e23fec 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -6,14 +6,20 @@ Status: Imagination output for the target in `docs/typescript-quic-realtime-target.md` (operator-accepted 2026-09-16). No code in this document has been written. Nothing here is committed by Imagination; the root agent commits. Q5, Q6 and Q7 were ruled the same day -(section 13, Rulings); Q5 was then re-ruled from A to C because npmjs is -unreachable from this network. **Cut 6 and the registry-dependent lines of -Cuts 4 and 7 are being remapped under C**; until that lands, their text -describes ruling A. No operator question is open. Cut 1 has not started. +(section 13, Rulings); Q5 was then re-ruled from A to C: no registry in this +campaign, registry publication parked for a later pass by choice. Cut 6, +section 5.4, the binary-resolution and dependency lines of Cut 4, and Cut 7's +ledger are remapped under C (landed 2026-09-16, same day). One operator +question is open: Q8 in section 11, whether the built binaries are committed +to the tree or fetched from a GitHub Release by the deploy path. Cut 1 has +not started. Anchor: repo `F:\Projects\CultLib`, branch `main`, HEAD -`f2cd2eb4641269c653977bdba9b4bce2a26d870c`. Every `file:line` below is read -against that commit. If HEAD moves, re-anchor before cutting. +`8d8ad568aa280bac34bf123503a9e38c175eb558`. The three commits since the +original anchor `f2cd2eb4` (`bf9f6f7`, `3c29fc9`, `8d8ad56`) touch only this +document `(probe: git log --stat)`, so every `file:line` below, read against +`f2cd2eb4`, is still exact at `8d8ad568`. If HEAD moves, re-anchor before +cutting. How to read this document: section 1 prices the largest liability first, as the target requires, because if that price had turned out to dominate the @@ -35,13 +41,14 @@ Two corrections to the target, recorded here rather than silently absorbed: (`CultMeshRealtimeDelivery` at :8-13, `CultMeshRealtimeFrame` at :19-44, `ICultMeshRealtimeTransport` at :46-52, `ICultMeshRealtimeTransportConnector` at :55-63) `(source read)`. -- The target says the binding is "shipped through a registry". Today only - `@gamecult/cultcache-ts` has a registry publish job +- This map's first issue attributed the phrase "shipped through a registry" + to the target. The target contains no such phrase and no word "registry" + `(probe: rg)`; the reading was the map's, and it is withdrawn. What is + true: today only `@gamecult/cultcache-ts` has a registry publish job (`.github/workflows/publish-packages.yml:20-24`, `:40-76`); `cultnet-ts`, `cultmesh-ts` and `cultmesh-browser` have none, and every external consumer - reaches them by `file:` path (section 3). Registry delivery of the binding - therefore also means registry delivery of `cultnet-ts` and `cultmesh-ts`, - which is a naming decision the operator has not yet made. See Q5. + reaches them by `file:` path (section 3). Q5 was ruled C on that Body: no + registry in this campaign, publication parked. ## 1. The largest liability, priced first @@ -381,18 +388,40 @@ Sizing consequences: - Owner: `scripts/build-quic-native.ps1` (Windows x64) and the new `scripts/build-quic-native.sh` (Linux x64) own producing the bridge - artifact; `.github/workflows/publish-packages.yml` owns turning artifacts - into registry packages. + artifact; the new `.github/workflows/quic-native.yml` owns producing the + release-grade artifact for both platforms (Q6 A) and attaching it to a + GitHub Release; the committed tree `packages/cultmesh-ts/native/` owns + delivery to consumers (Q5 C): whatever carries the package directory (a + `git archive`, an `npm pack` tarball, a pnpm `file:` copy) carries the + binaries with it, and `packages/cultmesh-ts/native/MANIFEST.txt` plus + `SHA256SUMS` own provenance (MsQuic version, build host, digest per file). - Inputs: pinned MsQuic 2.5.9 (Schannel NuGet on Windows; `libmsquic` deb on - Linux) with SHA-256 checks; the bridge source. + Linux) with SHA-256 checks; the bridge source; the pinned `debian:13` image + digest for the Linux builder. - Outputs: `gamecult_mesh_quic_native.dll` + `msquic.dll` (win32-x64), - `libgamecult_mesh_quic_native.so` + `libmsquic.so.2` (linux-x64), each with - the MsQuic license. -- Derived state: `artifacts/` (git-ignored, `.gitignore:66`). -- Forbidden writers: no `postinstall` compile step in any published package; - a consumer host never needs CMake or a compiler. -- Deletion line: none; the Windows script is kept and the Unity package script - keeps calling it. + `libgamecult_mesh_quic_native.so` + `libmsquic.so.2` (linux-x64), the MsQuic + license, and the two provenance files. +- Derived state: `artifacts/` (git-ignored, `.gitignore:66`) is the + development-loop build output and never delivery; the Unity plugin copies at + `unity/org.gamecult.cultlib/Runtime/Plugins/x86_64/` remain the Unity + package's own body (section 8, operator-only rebuild), not a source for + Node. +- Forbidden writers: no `postinstall` compile or download step in any + package; a consumer host never needs CMake, a compiler, or registry access + for the binding; no workflow commits binaries to `main` (the operator + commits from a Release asset whose digest the manifest records, Q8); + `realtime-quic-native.ts` never searches `node_modules` for a platform + package. +- Deletion line: the platform packages + `packages/cultmesh-quic-native/{win32-x64,linux-x64}` and + `optionalDependencies` from the ruling-A map are never created; the Windows + script is kept and the Unity package script keeps calling it. +- Parked seam (registry publication, later pass): the same `quic-native.yml` + artifacts are the payload a publish job would wrap; the reattachment point + is a `cultmesh-ts` job shaped like `publish-packages.yml:39-78` that depends + on the two build jobs, plus `optionalDependencies` in + `packages/cultmesh-ts/package.json` and a `node_modules` branch in the + resolver. None of that exists under C. ## 6. Cut 1 (subtraction): one TypeScript route verifier @@ -696,10 +725,16 @@ Deletes: none. Adds: - `packages/cultmesh-ts/src/realtime-quic-native.ts` (about 260 lines): the - koffi binding. Resolves the platform package (`@gamecult/cultmesh-quic-native-win32-x64` - or `-linux-x64`, Q5) or, when `CULTMESH_QUIC_NATIVE_DIR` is set, a directory - (this is how the repo's own tests point at `artifacts/quic-native/` - without a registry). Loads `msquic` first, then the bridge, by absolute path + koffi binding. Resolves the binary directory as `CULTMESH_QUIC_NATIVE_DIR` + when set (the development loop and CI point it at + `artifacts/quic-native/` straight from a build), otherwise + `path.join(__dirname, "..", "native", `${process.platform}-${process.arch}`)`, + the committed tree cut 6 lands (Q5 C; `__dirname` is `dist/` at runtime, so + the path holds in the repo, in an `npm pack` tarball, and in a pnpm `file:` + copy alike). No `node_modules` lookup, no platform package, no registry. + When neither directory holds `msquic` and the bridge, throw one error naming + both paths tried and the env var; until cut 6 lands, that is the error every + caller outside the test suite gets. Loads `msquic` first, then the bridge, by absolute path (the probe showed the dependent library must be resolvable before the bridge loads). Declares the twelve v2 prototypes. Exposes `CultMeshQuicNativeRuntime` with a single event pump: a loop that awaits @@ -736,11 +771,14 @@ Adds: beside the RUDP ones at `:6008-6186`: `parseQuicRealtimeEndpoint`, `createQuicRealtimeConnector(options)`, `createQuicRealtimeSessionManager(options)`, and in cut 5 `createQuicRealtimeProvider(options)`. -- `packages/cultmesh-ts/package.json:44-48` gains `"koffi": "3.3.0"` (exact) - and `optionalDependencies` for the two platform packages (names per Q5). - `koffi` is required lazily inside `realtime-quic-native.ts` so consumers - that never touch QUIC (AetheriaEve Electron, Odin, Stonks, weksa) load - nothing native. +- `packages/cultmesh-ts/package.json:44-48` gains `"koffi": "3.3.0"` (exact). + No `optionalDependencies`: under Q5 C the binaries are files of this + package, not packages of their own. `koffi` is required lazily inside + `realtime-quic-native.ts` so consumers that never touch QUIC (AetheriaEve + Electron, Odin, Stonks, weksa) load nothing native. `koffi` itself is a + registry dependency like `@msgpack/msgpack` (`:45`); every consumer host + already installs from the registry (`deploy-streampixels-preview.sh:102`), + so this adds no new kind of fetch. - `packages/cultmesh-ts/test/realtime-quic-native.test.ts` (about 150 lines): the cut-3 FFI smoke, now against the runtime class. - `packages/cultmesh-ts/test/realtime-quic-consumer.test.ts` (about 250 @@ -883,56 +921,354 @@ Verification: nothing on the provider side. - Operator-only: none. -## 11. Cut 6 (packaging and release) +## 11. Cut 6 (packaging and release, remapped under Q5 C) -Purpose: a consumer host with no toolchain installs the binding. +Purpose: a consumer host with no toolchain and no registry access for the +binding gets it by receiving the `cultmesh-ts` package directory, which is how +every consumer already receives the package (P16, P17). Registry publication +is parked, not ruled out; the seam it reattaches to is named at the end of +this section. -Adds: +### 11.1 Body facts this cut stands on -- `packages/cultmesh-quic-native/win32-x64/package.json` and - `packages/cultmesh-quic-native/linux-x64/package.json` (names per Q5), each - with `os`/`cpu` fields, `files` listing the two binaries and - `MSQUIC-LICENSE.txt`, no scripts, and a `README.md` naming the MsQuic - version and the build host. Their contents are copied from - `artifacts/quic-native/` by the publish job, never committed. -- `.github/workflows/publish-packages.yml`: tag prefixes `cultnet-ts-v*`, - `cultmesh-ts-v*`, `cultmesh-quic-native-v*` (`:20-24`); a `cultnet-ts` job - and a `cultmesh-ts` job shaped like the `cultcache-ts` job (`:40-76`); a - native job with two runners: `windows-latest` running - `scripts/build-quic-native.ps1`, and `ubuntu-latest` with - `container: debian:13` running `scripts/build-quic-native.sh` (Q6), each - publishing its platform package, then the `cultmesh-ts` job depends on both. -- `scripts/test-typescript-package-closure.mjs:9` adds the platform packages - to the pack list on the matching host and `:63-72` adds - `assert.equal(typeof mesh.CultMesh.createQuicRealtimeConnector, "function")` - plus a runtime smoke that opens and closes a `CultMeshQuicNativeRuntime` - from the installed tarballs (proves the optional dependency resolves and the - binaries load from `node_modules`, not from a repo path). -- `.github/workflows/cultnet-interop.yml` gains a step after the C# RUDP - step that builds the Windows bridge (`build-quic-native.ps1`) and runs the - `QUIC realtime` lanes with `CULTMESH_QUIC_NATIVE_DIR` set. Linux CI - coverage of the lanes needs a Linux runner with dotnet and the deb; add a - second job `interop-quic-linux` on `ubuntu-latest` + `container: debian:13` - running only the QUIC lanes. +- The deploy tarball is a `git archive`. The Idunn actuator on Starfire runs + `git -C CultLib archive --format=tar --output= origin/main packages/cultnet-ts packages/cultcache-ts` + (`F:\Projects\Odin\scripts\deploy-yggdrasil-streampixels.ps1:59`), uploads + it by `sftp` (`:127`), and `deploy-streampixels-preview.sh:95-99` extracts it + into `/srv/streampixels/CultLib` after deleting only those two package + directories (`:97`) `(source read)`. Two consequences: only committed files + ride (a `git archive` cannot carry untracked or ignored files), and + `packages/cultmesh-ts` is not in the archive today at all, although + StreamPixels declares it (`apps/service/package.json:26`). Adding it to the + archive list and to `:97` is deploy work in Odin and gamecult-ops, outside + this campaign (section 16); the Yggdrasil smoke below therefore ships its + own archive of the same shape rather than waiting on that change. +- pnpm materialises a `file:` directory dependency as a copy of the + package's `files` entries only: with `pnpm 10.33.0`, `node_modules/cultmesh-ts` + held `README.md`, `dist`, `package.json` and nothing else (no `src`, no + `test`) `(probe: scratch consumer with file: overrides)`. `files` is the + gate, so `native` must be listed in it. +- The MsQuic binaries the koffi probe loaded (P2) are the Unity plugin copies + at `unity/org.gamecult.cultlib/Runtime/Plugins/x86_64/` (`probe.js:4-7`), + committed in plain git (`git ls-files`; `.gitattributes` is `* text=auto` + only, no LFS), `gamecult_mesh_quic_native.dll` 40,448 bytes and + `msquic.dll` 536,928 bytes `(probe)`. Committing binaries beside the code + that loads them is therefore existing practice in this repo, not a new one. +- The Linux runtime is one file: `libmsquic.so.2 -> libmsquic.so.2.5.9`, + 7,375,872 bytes, inside the pinned deb (P7); the deb also carries + `libmsquic.lttng.so.2.5.9` and `datapath_raw_xdp_kern.o`, neither needed + `(probe: dpkg-deb -c in debian:13)`. The repo pack is 31.68 MiB today + `(probe: git count-objects)`. +- `debian:13` resolved to digest + `sha256:f324c7ff54321e8d9c588493a20244965938ce0aa50bbd1022d38010e9ffc4b1` + on 2026-09-16 and carries `g++ 4:14.2.0-1` `(probe: docker pull; apt-cache + policy)`. The builder is pinned by that digest, not by the moving tag. +- `GameCult/CultLib` is public `(probe: gh repo view)` and already carries two + GitHub Releases with binary assets, `cultlib-unity-v1.0.3` + (`org.gamecult.cultlib-1.0.3.tgz`) and `gamecult-geometry-v0.1.0` (a crate + and nupkgs) `(probe: gh release view)`; nothing in `scripts/`, `docs/` or + `.github/` creates them, so they were cut by hand `(source read: rg)`. + Release assets on a public repo download with plain `curl`, no token. +- The npm registry is reachable from Starfire: `npm ping` answers `PONG`, + `npm view koffi` is HTTP 200, and `npm view @gamecult/cultcache-ts` is a + 404 because it was never published `(probe)`. This confirms the corrected + premise in section 13: C is deferral, not necessity. +- `.gitignore` ignores `artifacts/` (`:66`) and `node_modules`; it has no rule + for `*.so` or `*.dll` `(source read)`, so nothing blocks the commit path. +- The root `package-lock.json` is committed `(probe: git ls-files)`, so + `npm ci` is the real install path (as `publish-packages.yml:55` uses it); + `cultnet-interop.yml:95` uses `npm install --no-package-lock` instead, a + pre-existing inconsistency this cut does not touch. + +### 11.2 Q8, the fork C surfaces (operator decision, recommended option first) + +Where do the built binaries live so that the `git archive` above carries +them to the host? + +- **Option 1, commit them.** `packages/cultmesh-ts/native/{win32-x64,linux-x64}/` + hold the four binaries, committed by the operator from the Release assets + the workflow attaches, with `MANIFEST.txt` and `SHA256SUMS` beside them. + Price: about 8.0 MB in the tree (7,375,872 + 536,928 + 40,448 + the bridge + `.so`, on the order of 60 KB); pack growth roughly the compressed size, + about 3 MB, and that only when the MsQuic pin moves, because + `libmsquic.so.2` and `msquic.dll` are copies of Microsoft's files and + change with the pin, not with the bridge. A bridge rebuild adds tens of KB. + A CI job checks `sha256sum -c SHA256SUMS` on every push, so the manifest + and the bytes cannot drift. Deploy path change required: none beyond the + `packages/cultmesh-ts` archive-list fix already owed. Human step: download, + verify, commit (operator-only, section 11.7). +- **Option 2, fetch them.** `native//` is git-ignored; the tree + commits only `MANIFEST.txt`, `SHA256SUMS` and a `scripts/fetch-quic-native.mjs` + (about 80 lines) that downloads the Release assets and verifies digests. + Price: zero binary bytes in git, but every carrier of the package directory + becomes incomplete until the fetch runs: a fresh clone, every worktree, + Heimdall's vendored copy, `npm pack` (a tarball without binaries looks + valid), and the actuator, which must run the fetch and then `tar --append` + the ignored files after `git archive` (cross-repo edit in Odin), or the + deploy script must fetch from GitHub on Yggdrasil at deploy time (cross-repo + edit in gamecult-ops, plus GitHub egress the StreamPixels path does not + have today). It is the "tarball with a `.so` in it by hand" failure the + original Q5 text warned about, moved one step left. + +**Recommended: Option 1.** The tarball is a `git archive`, so committed is the +only state that rides it without a second mechanism; the repo already commits +the same `msquic.dll` for Unity; and the growth is bounded by the MsQuic pin, +not by bridge iteration. Everything below is written for Option 1; Option 2 +changes only 11.4's manifest paragraph, the closure smoke, and the operator +steps, and is not mapped further unless chosen. + +### 11.3 Deletes + +None in the tree. The ruling-A surfaces (`packages/cultmesh-quic-native/*`, +`optionalDependencies`, `cultnet-ts`/`cultmesh-ts` publish jobs, new tag +prefixes in `publish-packages.yml:20-24`) are never created; that is the +subtraction, and it is an estimate change, not a diff (section 11.8). + +The existing `@gamecult/cultcache-ts` publish job +(`.github/workflows/publish-packages.yml:39-78`) stays. It is out of this +campaign's scope: it publishes a package this migration does not touch, its +only consumer today reaches it by `file:` (`F:\Projects\Heimdall\package.json:22` +`(source read)`), and it is the shape the parked registry pass will copy for +`cultnet-ts` and `cultmesh-ts`. Whether it should run before then is a +question for that pass. + +### 11.4 Keeps and moves + +- `scripts/build-quic-native.ps1` and the Unity plugin binaries are untouched + (5.4 deletion line). `scripts/build-quic-native.sh` is the cut-3 script, + unchanged here. +- The MsQuic license text already committed at + `unity/org.gamecult.cultlib/Third Party Notices/MSQUIC-LICENSE.txt` is + copied, not referenced, to `packages/cultmesh-ts/native/MSQUIC-LICENSE.txt`, + because the package directory must be self-contained once copied out of the + repo (11.1, pnpm). Same MIT text for both platforms. + +### 11.5 Adds + +- `packages/cultmesh-ts/native/win32-x64/gamecult_mesh_quic_native.dll`, + `packages/cultmesh-ts/native/win32-x64/msquic.dll`, + `packages/cultmesh-ts/native/linux-x64/libgamecult_mesh_quic_native.so`, + `packages/cultmesh-ts/native/linux-x64/libmsquic.so.2` (the real file, not + the symlink; `RPATH $ORIGIN` from cut 3 resolves it beside the bridge). + Directory names are exactly `${process.platform}-${process.arch}` so the + cut-4 resolver needs no table. +- `packages/cultmesh-ts/native/SHA256SUMS`: `sha256sum` format, one line per + binary, relative paths, generated by the workflow and committed verbatim. +- `packages/cultmesh-ts/native/MANIFEST.txt` (about 20 lines, `key=value`): + `msquic.version=2.5.9`; `msquic.windows.source` = the NuGet URL at + `build-quic-native.ps1:30` with its SHA-256 from `:14`; + `msquic.linux.source` = the deb pool URL from P7 with its SHA-256; + `bridge.commit` = the CultLib commit the bridge was built from; + `build.workflow_run` = the Actions run URL; `build.release` = the Release + tag; `build.win32-x64.host` = runner image plus MSVC version as printed by + the job; `build.linux-x64.host` = `ubuntu-latest` plus the `debian:13` + digest plus `g++` version as printed; and the date. Every value is copied + from the run log by the operator, then the CI check below keeps the file + and the bytes agreeing. The binding never reads this file; it exists for + readers and for the digest check. +- `.github/workflows/quic-native.yml` (about 120 lines), four jobs: + - `build-win32-x64` on `windows-latest`: checkout, run + `scripts/build-quic-native.ps1 -OutputDirectory artifacts/quic-native/win32-x64`, + print `cl.exe` version and `Get-FileHash` of both files, upload + `actions/upload-artifact` named `quic-native-win32-x64`. + - `build-linux-x64` on `ubuntu-latest` with + `container: debian:13@sha256:f324c7ff54321e8d9c588493a20244965938ce0aa50bbd1022d38010e9ffc4b1` + (Q6 A; the digest is the pin, the tag is the label): `apt-get install -y + cmake ninja-build g++ curl ca-certificates dpkg`, run + `scripts/build-quic-native.sh`, print `g++ --version` and `sha256sum`, + upload `quic-native-linux-x64`. No Node in this job; loading is proven by + the interop job below, on the same image. + - `release`, `needs` both, `if: startsWith(github.ref, 'refs/tags/cultmesh-quic-native-v')`, + `permissions: contents: write`: download both artifacts, write + `SHA256SUMS` and a draft `MANIFEST.txt` with every value the jobs printed, + and run `gh release create "$GITHUB_REF_NAME" --verify-tag` with the two + per-platform `.tar.gz` files, `SHA256SUMS` and `MANIFEST.txt` as assets + (`GH_TOKEN: ${{ github.token }}`; `gh` is preinstalled on hosted runners, + no third-party release action). The release notes are the manifest. + - `verify-committed` on `push` and `pull_request`, `ubuntu-latest`, one + step: `cd packages/cultmesh-ts/native && sha256sum -c SHA256SUMS`. This is + the check that the tree's bytes are the bytes the manifest names. + - Triggers: `push` to `main` and `pull_request` run `verify-committed` + only; `workflow_dispatch` runs the two builds (dry run, uploads + artifacts, no release); a `cultmesh-quic-native-v*` tag runs all four. + Only `release` has write permission. +- `packages/cultmesh-ts/package.json:14-16`: `"files": ["dist", "native"]`. + No version bump: under C nothing keys on the version; provenance keys on + the commit in `MANIFEST.txt`. +- `packages/cultmesh-ts/src/realtime-quic-native.ts` (cut 4): the runtime + class gains a readonly `nativeDirectory` (the absolute directory it loaded + from). Diagnostic only; the closure smoke asserts on it. +- `scripts/test-typescript-package-closure.mjs`: + - `:39-41`: for `cultmesh-ts`, assert the packed file list contains all + four binaries, `native/SHA256SUMS`, `native/MANIFEST.txt` and + `native/MSQUIC-LICENSE.txt`, on every host (the tarball carries both + platforms; the host only decides which loads). + - `:59-70`: the runtime smoke adds + `assert.equal(typeof mesh.CultMesh.createQuicRealtimeConnector, "function")`, + the same for `createQuicRealtimeProvider`, then opens a + `CultMeshQuicNativeRuntime`, asserts + `runtime.nativeDirectory` ends with `node_modules/cultmesh-ts/native/` + (path separators normalised), and closes it. The child at `:70` runs with + `CULTMESH_QUIC_NATIVE_DIR` deleted from its env so the default path is the + one exercised. The point: the binaries load from the installed copy of the + package, not from a repo path or a registry. +- `.github/workflows/cultnet-interop.yml`: + - After the C# RUDP step (`:127-128`): a step building the Windows bridge + (`scripts/build-quic-native.ps1 -OutputDirectory artifacts/quic-native/win32-x64`) + and a step running the `QUIC realtime` lanes with + `CULTMESH_QUIC_NATIVE_DIR` set to that directory, so CI proves the lanes + against a fresh build, then a second run of + `node scripts/test-typescript-package-closure.mjs` proves the committed + Windows binaries load without the env var. + - A second job `interop-quic-linux` on `ubuntu-latest` with the same pinned + `debian:13` container: `apt-get install` the build tools plus `libicu` + (dotnet's runtime need), `actions/setup-dotnet@v4` 10.0.x and + `actions/setup-node@v4` 24 (both work inside a container), build the + bridge with `scripts/build-quic-native.sh`, `npm ci`, run only the + TypeScript-provider-to-managed-connector and TypeScript-to-TypeScript + lanes (section 15: the native-connector lane is Windows by design), then + the closure script without the env var. The container is not optional: + the artifact is linked against Debian 13's glibc 2.41 and `ubuntu-latest` + (24.04) carries glibc 2.39 `(probe: ldd --version in both images)`, so a + symbol version the bridge or `libmsquic` references can be absent on the + bare runner; run the lanes on the image the artifact targets rather than + discover that per symbol. - `README.md` of `packages/cultmesh-ts` gains a "QUIC Realtime Plane" section after "RUDP Helpers" (`README.md:332`) with provider and consumer examples - matching the C# README (`src/GameCult.Mesh.Quic/README.md:13-62`). + matching the C# README (`src/GameCult.Mesh.Quic/README.md:13-62`), and a + "Native binaries" paragraph: where they live, that a `file:` dependency or + an `npm pack` tarball carries them, the `CULTMESH_QUIC_NATIVE_DIR` + override, the two provenance files, Windows x64 and Linux x64 (Debian 13 + glibc) only, and the four `libmsquic` runtime dependencies (P7) a Linux host + must already have. -Verification: +### 11.6 Per-file changes -- `node scripts/test-typescript-package-closure.mjs` on Windows. -- Manual dispatch of `publish-packages.yml` with `package=cultmesh-ts` builds - and tests without publishing (`:24-32` semantics). -- Operator-only: the tag pushes that publish; `NPM_TOKEN` scope for new - package names; and the Yggdrasil verification: `ssh gamecultadmin@yggdrasil.gamecult.org`, - `mkdir /tmp/cultmesh-quic-smoke && cd $_ && npm init -y && npm i cultmesh-ts@`, - then `node -e "require('cultmesh-ts').CultMesh.createQuicRealtimeProvider({...}).then(p => { console.log(p.advertisedEndpoint); return p.dispose(); })"` - with a throwaway PKCS12 from `openssl`, followed by a loopback dial from a - second `node` process on the same host. `libmsquic`'s runtime dependencies - (`libssl3t64`, `libnuma1`, `libxdp1`, `libnl-route-3-200`, P7) must be - present on Yggdrasil; the smoke will say so if not. This is the only place - the Linux artifact is proven on the deploy host, and only the operator holds - the key. +- `packages/cultmesh-ts/package.json:14-16`, `files` gains `"native"`. +- `packages/cultmesh-ts/src/realtime-quic-native.ts` (cut 4 file), one + readonly field `nativeDirectory` set at load. +- `scripts/test-typescript-package-closure.mjs:39-41`, `:59-70` as above; + `:9` unchanged (no new packages). +- `.github/workflows/cultnet-interop.yml`, two steps after `:128`, one job + after `:140`. +- `.github/workflows/quic-native.yml`, new. +- `.github/workflows/publish-packages.yml`, unchanged. +- `packages/cultmesh-ts/native/` (seven files), new, four of them binary and + operator-committed (11.7). +- `packages/cultmesh-ts/README.md`, one section after `:332`. + +### 11.7 Verification + +- `node scripts/test-typescript-package-closure.mjs` on Windows, with + `CULTMESH_QUIC_NATIVE_DIR` unset in the shell. Pins: the tarball carries + both platforms and the provenance files; the installed copy loads its own + binaries. +- `cd packages/cultmesh-ts/native && sha256sum -c SHA256SUMS` (Git Bash on + Windows). Pins: committed bytes equal the manifest. +- `git check-ignore -v packages/cultmesh-ts/native/linux-x64/libmsquic.so.2` + must exit 1 (not ignored), and + `git ls-files packages/cultmesh-ts/native | wc -l` must print 7. Pins: the + binaries are tracked, so a `git archive` carries them. +- `npm pack packages/cultmesh-ts --dry-run --json | node -p "JSON.parse(require('fs').readFileSync(0,'utf8'))[0].files.map(f=>f.path).filter(p=>p.startsWith('native/')).join('\n')"` + must list seven `native/` paths; the closure script already asserts this, + this is the one-liner for a reader. +- `workflow_dispatch` of `quic-native.yml`: both build jobs green, artifacts + present, no release created. A tag push `cultmesh-quic-native-v` + creates the Release with four assets. Pins: Q6 A, the builder is a Linux + host on the deploy OS and the artifact has a public, digest-named home. +- Negative greps (must return nothing): + `rg -n "optionalDependencies|cultmesh-quic-native-(win32|linux)|@gamecult/cultmesh-quic-native" packages scripts .github --glob '!**/node_modules/**' --glob '!**/dist*/**'` + (no platform packages exist); + `rg -n "node_modules|require\.resolve" packages/cultmesh-ts/src/realtime-quic-native.ts` + (the resolver never searches for a package); + `rg -n "\"(pre|post)install\"" packages/*/package.json` (no install-time + compile or download); + `rg -n "NPM_TOKEN|npm publish|registry-url" .github/workflows/quic-native.yml` + (the native workflow publishes to no registry). +- Operator-only, in order: + 1. After the tag build, download the Release assets, compare every digest + with the run log and with `SHA256SUMS`, place the binaries under + `packages/cultmesh-ts/native//`, fill `MANIFEST.txt` from the + log, commit. This is the only path bytes take into the tree; no workflow + writes to `main`. + 2. Yggdrasil smoke, which installs from what C ships (the archived tree) + and nothing else. On Starfire, at the commit from step 1: + `git -C F:\Projects\CultLib archive --format=tar --output=$env:TEMP\cultlib-quic-smoke.tar ` + (the actuator's own mechanism, `deploy-yggdrasil-streampixels.ps1:51,59`, + whole tree), then `sftp` it to `gamecultadmin@yggdrasil.gamecult.org:/home/gamecultadmin/`. + On Yggdrasil: + `mkdir -p /tmp/cultmesh-quic-smoke && tar -xf ~/cultlib-quic-smoke.tar -C /tmp/cultmesh-quic-smoke && cd /tmp/cultmesh-quic-smoke`; + `(cd packages/cultmesh-ts/native && sha256sum -c SHA256SUMS)` (the bytes + that arrived are the bytes the manifest names); + `ldd packages/cultmesh-ts/native/linux-x64/libmsquic.so.2 | grep "not found"` + must print nothing. If it prints, the missing ones are among + `libnuma1`, `libxdp1`, `libnl-route-3-200` (P7; `libssl3t64` is base): + under C nothing installs them because the deb itself is never installed + on the host, so `sudo apt-get install` them once and record it in + `gamecult-ops/inventory.md` beside the Node line (`:660`). Then + `npm ci` (registry access from Yggdrasil is the deploy path's own + assumption, `deploy-streampixels-preview.sh:102`) and + `node scripts/test-typescript-package-closure.mjs` with the env var + unset: this is the same smoke CI runs, now on Node 24.14.1 (P8) on the + deploy host, loading `node_modules/cultmesh-ts/native/linux-x64`. + Then the handshake: `npm run test --workspace packages/cultmesh-ts` + (builds `dist-test` and runs the cut-4/5 suites on the host), then a + throwaway PKCS12 + (`openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 -nodes -subj /CN=127.0.0.1 -days 2 -keyout k.pem -out c.pem && openssl pkcs12 -export -inkey k.pem -in c.pem -passout pass:smoke -out smoke.p12`), + `node packages/cultmesh-ts/dist-test/test/interop/cultmesh-quic-peer.js serve --frames 5 --delivery latest-only --pkcs12 smoke.p12 --password smoke` + in one shell (it prints the advertised endpoint), and + `node packages/cultmesh-ts/dist-test/test/interop/cultmesh-quic-peer.js dial --endpoint --expect 5` + in a second, which must print five frames. If cut 5 landed `serve` with + a generated certificate instead of `--pkcs12/--password` flags, add the + flags in this cut; the smoke needs a certificate it can name. Finish + with `rm -rf /tmp/cultmesh-quic-smoke ~/cultlib-quic-smoke.tar`. This is + the only place the Linux artifact is proven on the deploy host, and only + the operator holds the key. + 3. Nothing here touches `/srv/streampixels`; StreamPixels adoption + (archive list, `:97`, its stale lockfile) is consumer work (section 15, + section 16). + +### 11.8 Subtraction estimate delta against section 14 + +Row 6 of the table read `0 removed, 60 (manifests) + 130 (workflow) + 30 +(closure) + 60 (README) = +280` with `+2 optional platform packages` and `+3 +publish jobs` in the dependencies line. Under C: + +- Removed: 0 (the `cultcache-ts` job stays, 11.3). +- Added text: about 120 (`quic-native.yml`) + 40 (interop workflow) + 30 + (closure) + 70 (README) + 25 (`MANIFEST.txt`, `SHA256SUMS`) + 1 + (`package.json`) = about +285, the same order as before; the 60 lines of + platform-package manifests are gone and the release/verify jobs take their + place. +- Added binary: four files, about 8.0 MB in the tree under Option 1, 0 under + Option 2. Section 14 has no column for this; it is the real price of C and + is stated here so it is not hidden in a line count. +- Dependencies line becomes: +0 optional platform packages (was +2); +0 + publish jobs (was +3); +1 workflow file with four jobs (two builds, one + release, one digest check) and +1 job in the interop workflow (was "+1 CI + job"). Runtime dependency unchanged: `koffi` only. +- Campaign total: about +3,900 source lines, unchanged; plus 8.0 MB of + committed binaries. + +### 11.9 Parked seam: registry publication (later pass) + +Not in this campaign, by the operator's choice (section 13). When it is +picked up, it reattaches here without remapping the rest: + +- `publish-packages.yml` gains `cultnet-ts` and `cultmesh-ts` jobs shaped like + `:39-78`, tag prefixes at `:20-24`, dispatch options at `:30-33`; the + `cultmesh-ts` job `needs` the two `quic-native.yml` build jobs (or the + workflow is merged) and publishes the artifacts they already produce as + `@gamecult/cultmesh-quic-native-{win32-x64,linux-x64}` platform packages. +- `packages/cultmesh-ts/package.json` gains `optionalDependencies` on those + two names; `realtime-quic-native.ts` gains a third resolution branch after + the env var and before the committed `native/` directory, or the committed + directory is retired in the same pass. +- Naming (unscoped `cultnet-ts`/`cultmesh-ts` versus `@gamecult/*`) is the + original Q5 A/B fork, still open for that pass; P14 recorded all names + unclaimed on 2026-09-16. +- Its Body precondition is an `NPM_TOKEN` repository secret minted on + npmjs.com, which the operator can now reach (section 13). ## 12. Cut 7 (documentation and ledgers) @@ -955,9 +1291,21 @@ Verification: the `ICultMeshRealtimeLookupSource` port as the seam (Q7). - `docs/typescript-quic-realtime-target.md:5-7`: status line updated to point at this map. +- Under Q5 C, the delivery story every document tells is the one in section + 11: the binding ships inside `packages/cultmesh-ts/native/`, provenance + lives in `MANIFEST.txt` and `SHA256SUMS`, and consumers keep `file:` paths. + `native/GameCult.Mesh.Quic.Native/README.md` (cut 3) and + `packages/cultmesh-ts/README.md` (cut 6) both point at `MANIFEST.txt` as the + provenance owner rather than restating versions or digests. The parity row + above says "bindings shipped in the `cultmesh-ts` package tree", not + "published". Registry publication is described in exactly one place, as + parked: section 11.9 of this map. Verification: `rg -n "CultMeshRealtimeTransports.cs" docs src/GameCult.Mesh/docs` -returns only correct paths. +returns only correct paths; +`rg -n -i "registry|npm publish|platform package|optionalDependencies" packages/cultmesh-ts/README.md native/GameCult.Mesh.Quic.Native/README.md docs/runtime-parity-scope.md src/GameCult.Mesh/docs/transport-planes.md` +returns nothing (the only permitted mentions are this map's sections 11.9 and +13 and the target's history). ## 13. Operator questions @@ -1012,18 +1360,23 @@ Each is now a standing ruling; the options above are history. - **Q5 ruled A, then re-ruled C the same day.** A had `cultnet-ts` and `cultmesh-ts` publishing under their unscoped names with only the two native - platform packages scoped. It fell to a Body fact the map had not recorded, - in the operator's words: "we don't even have npm access and cannot get it - because our entire subnet is blocked." The publish job needs an `NPM_TOKEN` - minted on npmjs.com by a logged-in user; nobody on this network can mint - one, which is also why the existing `cultcache-ts` job has never run. - **C stands: no registry.** Consumers keep `file:` paths. The native binaries - ship inside the CultLib tree the deploy path already carries, and Q6's - Actions build attaches the Linux artifact to a GitHub Release instead of - publishing a package. Q5's naming question dissolves with it. Cut 6 is - remapped under C below; Cut 4's binary resolution and Cut 7's ledgers - follow it. Any line in this map that still says "publish", "registry" or - "platform package" describes A and is history. + platform packages scoped. The re-ruling was first stated as necessity ("we + don't even have npm access and cannot get it because our entire subnet is + blocked"); the operator corrected that Body fact the same day after + reaching npm signup: "apparently that was true yesterday." The registry is + reachable from Starfire (`npm ping` answers, section 11.1 `(probe)`), and an + `NPM_TOKEN` can be minted. **C still stands for this campaign, by choice: + no registry.** In the operator's words, registry publication is "still for + a later pass". Consumers keep `file:` paths. The native binaries ship inside + the `cultmesh-ts` package tree that the deploy path's `git archive` carries, + and Q6's Actions build attaches both platform artifacts to a GitHub Release + instead of publishing packages. Registry publication of `cultnet-ts`, + `cultmesh-ts` and the native binaries is parked, not ruled out; section 11.9 + names the seam it reattaches to, and the original A/B naming fork stays + open for that pass. Cut 6 is remapped under C (section 11); section 5.4, + Cut 4's binary resolution and dependency lines, and Cut 7's ledger follow + it. The one fork C surfaces, whether the binaries are committed or fetched + from the Release, is Q8 in section 11.2 and is open. - **Q6 ruled A.** The Linux release artifact is built by GitHub Actions on `ubuntu-latest` inside `container: debian:13`, published by the workflow, and verified by the operator smoke on Yggdrasil in cut 6. The Docker @@ -1051,10 +1404,13 @@ Both sides of the number, by cut, in source lines (tests included, generated | Total | ~350 | ~4,260 | about +3,900 | Dependencies: +1 runtime dependency on `cultmesh-ts` (`koffi`, 1.7 MB, MIT, -loaded lazily); +2 optional platform packages; +0 build-time Node +loaded lazily); +0 optional platform packages; +0 build-time Node dependencies (no node-gyp, no node-addon-api, no cmake-js). Targets: +0 .NET projects (the C# interop peer gains one project reference); +1 CMake platform -branch; +1 shell build script; +3 publish jobs; +1 CI job. +branch; +1 shell build script; +1 workflow file with four jobs; +1 job in +the interop workflow; and, under Q8 option 1, about 8.0 MB of committed +binaries. *(This line first read "+2 optional platform packages; +3 publish +jobs; +1 CI job" under ruling A; section 11.8 carries the delta.)* Why the number is positive and still acceptable: the target orders a new capability (a QUIC realtime plane in a runtime that has none), and every line @@ -1087,7 +1443,16 @@ about line count. TypeScript-to-TypeScript lanes only. The native-connector lane is Windows by design, matching where Unity runs. - **The `cultcache-ts` naming split** across consumers (section 3). Out of - scope; noted because Q5's answer should not make it worse. + scope. Q5 C touches no package name and publishes nothing, so it makes the + split neither better nor worse; the split becomes the parked registry + pass's problem (section 11.9), where the A/B naming fork is still open. + One consequence to carry there: StreamPixels' lockfile resolves + `cultmesh-ts`'s cache dependency as unscoped `cultcache-ts` + (`F:\Projects\StreamPixels\pnpm-lock.yaml:2561-2564` `(source read)`) while + `packages/cultmesh-ts/package.json:46` now names `@gamecult/cultcache-ts`, + so a `pnpm install --frozen-lockfile` against the current tree would refuse + before any QUIC code is reached. Consumer work, recorded so the Yggdrasil + smoke in section 11.7 is not mistaken for StreamPixels adoption. ## 16. Reminder of what a wrong cut looks like From 1c12136872460e8126058a003e3ab3b81ec8416d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 15:57:33 +0200 Subject: [PATCH 0024/1002] Rule Q8: the native binaries are committed The deploy tarball is a git archive, so committed files are the only ones that reach Yggdrasil without a second mechanism, and the Windows pair is already committed for Unity. Four binaries, about eight megabytes, with a manifest and digests beside them. No operator question is open on this map. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 63e23fec..c0f6f6a4 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -9,10 +9,9 @@ Imagination; the root agent commits. Q5, Q6 and Q7 were ruled the same day (section 13, Rulings); Q5 was then re-ruled from A to C: no registry in this campaign, registry publication parked for a later pass by choice. Cut 6, section 5.4, the binary-resolution and dependency lines of Cut 4, and Cut 7's -ledger are remapped under C (landed 2026-09-16, same day). One operator -question is open: Q8 in section 11, whether the built binaries are committed -to the tree or fetched from a GitHub Release by the deploy path. Cut 1 has -not started. +ledger are remapped under C (landed 2026-09-16, same day). Q8 is ruled: +the built binaries are committed to the tree (section 11.2). No operator +question is open. Cut 1 is in Hands. Anchor: repo `F:\Projects\CultLib`, branch `main`, HEAD `8d8ad568aa280bac34bf123503a9e38c175eb558`. The three commits since the @@ -1017,6 +1016,9 @@ not by bridge iteration. Everything below is written for Option 1; Option 2 changes only 11.4's manifest paragraph, the closure smoke, and the operator steps, and is not mapped further unless chosen. +**Ruled 2026-09-16: Option 1.** Operator: "Commit them, yeah." Option 2 is +history. + ### 11.3 Deletes None in the tree. The ruling-A surfaces (`packages/cultmesh-quic-native/*`, @@ -1376,7 +1378,11 @@ Each is now a standing ruling; the options above are history. open for that pass. Cut 6 is remapped under C (section 11); section 5.4, Cut 4's binary resolution and dependency lines, and Cut 7's ledger follow it. The one fork C surfaces, whether the binaries are committed or fetched - from the Release, is Q8 in section 11.2 and is open. + from the Release, is Q8 in section 11.2. +- **Q8 ruled Option 1.** The four native binaries are committed at + `packages/cultmesh-ts/native//` with their manifest and digests, + so they ride the `git archive` the deploy path already builds. Operator's + words: "Commit them, yeah." - **Q6 ruled A.** The Linux release artifact is built by GitHub Actions on `ubuntu-latest` inside `container: debian:13`, published by the workflow, and verified by the operator smoke on Yggdrasil in cut 6. The Docker From e234a64ae950fae8bf3361d8bc0d14cfe6c08423 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 15:59:09 +0200 Subject: [PATCH 0025/1002] Add the shared CultMesh route verifier to cultnet-ts Cut 1 of the TypeScript QUIC realtime plane: one TypeScript implementation of Odin root lookup, the validity window, the canonical route and session transcripts, P-256/P1363 verification, loopback detection and the protected-scheme rule, published as `cultnet-ts/authority`. Browser-safe by construction: WebCrypto, TextEncoder, atob/btoa, URL, DataView; no node: import, and a test that says so. The protected-scheme rule is the C# rule (wss, https, any scheme containing "quic") rather than wss-only, so the module is not wrong for QUIC routes; the browser client still refuses non-ws(s) endpoints itself. The transcript bytes are pinned by contracts/cultmesh/authority-route- vectors.json, written by the C# reference under CULTMESH_WRITE_VECTORS=1 with fixed test keys and otherwise re-verified by both runtimes. The vector carries a route certificate and a provider session proof. Co-Authored-By: Claude Fable 5.1 --- .../cultmesh/authority-route-vectors.json | 44 ++++ packages/cultnet-ts/package.json | 5 + packages/cultnet-ts/src/cultmesh-authority.ts | 192 ++++++++++++++ packages/cultnet-ts/src/index.ts | 18 ++ .../test/cultmesh-authority.test.ts | 238 ++++++++++++++++++ .../CultMeshAuthorityProofTests.cs | 128 ++++++++++ 6 files changed, 625 insertions(+) create mode 100644 contracts/cultmesh/authority-route-vectors.json create mode 100644 packages/cultnet-ts/src/cultmesh-authority.ts create mode 100644 packages/cultnet-ts/test/cultmesh-authority.test.ts diff --git a/contracts/cultmesh/authority-route-vectors.json b/contracts/cultmesh/authority-route-vectors.json new file mode 100644 index 00000000..76ec61f2 --- /dev/null +++ b/contracts/cultmesh/authority-route-vectors.json @@ -0,0 +1,44 @@ +{ + "nowUnixMilliseconds": 1800000000000, + "odinRoot": { + "keyId": "odin-vector", + "x": "shJLGtmRrW6D87VQKv0xYQekLIfEkeN7dVawwpmIKWM=", + "y": "iR6Gx3aVCghzSyo7TqXqr+1397L73KDNZuzN2cZ55IE=" + }, + "route": { + "verseId": "aetheria", + "authorityRuntimeId": "aetheria-daemon", + "endpoint": "wss://provider.example/mesh", + "protocolIds": [ + "cultmesh.content.v1", + "cultmesh.documents.v1" + ], + "priority": 7, + "generation": "vector-generation-1", + "certificate": { + "providerKey": { + "keyId": "provider-vector", + "x": "6XIvgx3W1q7lJFEV0yYbeKWNFgssq54BHBuh9gCwcH8=", + "y": "oi1FiKraueLic+VemzOx18MNwG6thmZMUWeqNw6vNOk=" + }, + "odinKeyId": "odin-vector", + "issuedAtUnixMilliseconds": 1799999940000, + "expiresAtUnixMilliseconds": 1800003600000, + "signature": "ZHuELFuCNNfbJt1T2mx1D9ZHXyxBedacDetmryMYhWKQxfROncltymkmL5KXl+1h8tDK6NytJCGy+7mYlb/DMA==" + } + }, + "sessionProof": { + "request": { + "schemaVersion": "cultmesh.session_open.v2", + "messageId": "vector-message-1", + "sourceRuntimeId": "vector-consumer", + "verseId": "aetheria", + "authorityRuntimeId": "aetheria-daemon", + "protocolId": "cultmesh.documents.v1", + "routeGeneration": "vector-generation-1", + "clientNonce": "VczqjH8NdBaOb+rh8xb6P0xZjWD1el2ReNB8Vbp52ko=" + }, + "providerKeyId": "provider-vector", + "providerSignature": "6kGxSu/pwcR4lzh/7Av9nhblVIwIwVFzB7kY34vVvkpaFAbAxt8mWqIyZDTftE28G1g+NL4Ea41C3QsuImmkaA==" + } +} diff --git a/packages/cultnet-ts/package.json b/packages/cultnet-ts/package.json index 2f4b74f1..d34278f5 100644 --- a/packages/cultnet-ts/package.json +++ b/packages/cultnet-ts/package.json @@ -14,6 +14,11 @@ "types": "./dist/contracts.d.ts", "require": "./dist/contracts.js", "default": "./dist/contracts.js" + }, + "./authority": { + "types": "./dist/cultmesh-authority.d.ts", + "require": "./dist/cultmesh-authority.js", + "default": "./dist/cultmesh-authority.js" } }, "files": [ diff --git a/packages/cultnet-ts/src/cultmesh-authority.ts b/packages/cultnet-ts/src/cultmesh-authority.ts new file mode 100644 index 00000000..c579f347 --- /dev/null +++ b/packages/cultnet-ts/src/cultmesh-authority.ts @@ -0,0 +1,192 @@ +// The one TypeScript implementation of CultMesh route verification. +// +// Browser-safe by construction: only `crypto.subtle`, `TextEncoder`, `atob`, +// `btoa`, `URL`, `DataView` and `Uint8Array`. No `node:` import. The browser +// WebSocket client and the Node realtime consumer verify the same route bytes +// through the same functions; the C# reference is +// `src/GameCult.Mesh/CultMeshAuthorityProof.cs`. + +import type { CultMeshSessionOpenMessage } from "./contracts"; + +export interface CultMeshAuthorityIdentity { + verseId: string; + authorityRuntimeId: string; +} + +export interface CultMeshAuthorityRouteView extends CultMeshAuthorityIdentity { + endpoint: string; + protocolId?: string; + protocolIds?: readonly string[]; + priority?: number; + generation: string; + certificate?: CultMeshAuthorityRouteCertificate; +} + +export interface CultMeshP256PublicKey { + keyId: string; + x: string; + y: string; +} + +export interface CultMeshAuthorityRouteCertificate { + providerKey: CultMeshP256PublicKey; + odinKeyId: string; + issuedAtUnixMilliseconds: number; + expiresAtUnixMilliseconds: number; + signature: string; +} + +export type CultMeshAuthorityTrustMode = "authenticated-remote" | "local-development"; + +export interface CultMeshAuthorityTrustPolicy { + mode: CultMeshAuthorityTrustMode; + odinRoots?: readonly CultMeshP256PublicKey[]; + now?: () => number; +} + +export async function verifyAuthorityRoute( + route: CultMeshAuthorityRouteView, + trust: CultMeshAuthorityTrustPolicy, +): Promise { + const certificate = route.certificate; + if (!certificate) { + if (trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint)) return; + throw new Error("Remote CultMesh routes require an Odin-signed authority certificate."); + } + if (!isProtectedEndpoint(route.endpoint) && !(trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint))) { + throw new Error("Authenticated remote CultMesh routes require TLS or QUIC channel protection."); + } + const now = trust.now?.() ?? Date.now(); + if (now < certificate.issuedAtUnixMilliseconds || now >= certificate.expiresAtUnixMilliseconds) { + throw new Error("The Odin route certificate is not currently valid."); + } + const root = trust.odinRoots?.find(candidate => candidate.keyId === certificate.odinKeyId); + if (!root) throw new Error(`Odin key '${certificate.odinKeyId}' is not trusted by this consumer.`); + if (!await verifyP256(root, canonicalRoute(route), certificate.signature)) { + throw new Error("The Odin route certificate signature is invalid."); + } +} + +/** Verifies the provider's session proof over the accepted handshake. */ +export function verifyProviderSessionProof( + request: CultMeshSessionOpenMessage, + endpoint: string, + providerKey: CultMeshP256PublicKey, + signatureBase64: string, +): Promise { + return verifyP256(providerKey, canonicalSession(request, endpoint), signatureBase64); +} + +export function canonicalRoute(route: CultMeshAuthorityRouteView): Uint8Array { + const certificate = route.certificate!; + return canonicalFields( + "gamecult.cultmesh.route-certificate.v1", + route.verseId, + route.authorityRuntimeId, + route.endpoint, + [...(route.protocolIds ?? [route.protocolId ?? "cultmesh.documents.v1"])].sort().join(""), + String(route.priority ?? 0), + route.generation, + certificate.providerKey.keyId, + certificate.providerKey.x, + certificate.providerKey.y, + certificate.odinKeyId, + String(certificate.issuedAtUnixMilliseconds), + String(certificate.expiresAtUnixMilliseconds), + ); +} + +export function canonicalSession(request: CultMeshSessionOpenMessage, endpoint: string): Uint8Array { + return canonicalFields( + "gamecult.cultmesh.session-proof.v1", + request.clientNonce, + request.messageId, + request.sourceRuntimeId, + request.verseId, + request.authorityRuntimeId, + request.protocolId, + endpoint, + request.routeGeneration, + ); +} + +export function canonicalFields(...values: string[]): Uint8Array { + const encoder = new TextEncoder(); + const encoded = values.map(value => encoder.encode(value)); + const total = encoded.reduce((sum, value) => sum + 4 + value.byteLength, 0); + const result = new Uint8Array(total); + const view = new DataView(result.buffer); + let offset = 0; + for (const value of encoded) { + view.setUint32(offset, value.byteLength, false); + offset += 4; + result.set(value, offset); + offset += value.byteLength; + } + return result; +} + +export async function verifyP256( + key: CultMeshP256PublicKey, + payload: Uint8Array, + signatureBase64: string, +): Promise { + try { + const x = base64ToBytes(key.x); + const y = base64ToBytes(key.y); + const signature = base64ToBytes(signatureBase64); + if (x.byteLength !== 32 || y.byteLength !== 32 || signature.byteLength !== 64) return false; + const raw = new Uint8Array(65); + raw[0] = 4; + raw.set(x, 1); + raw.set(y, 33); + const publicKey = await crypto.subtle.importKey( + "raw", + raw.slice().buffer as ArrayBuffer, + { name: "ECDSA", namedCurve: "P-256" }, + false, + ["verify"], + ); + return await crypto.subtle.verify( + { name: "ECDSA", hash: "SHA-256" }, + publicKey, + signature.slice().buffer as ArrayBuffer, + payload.slice().buffer as ArrayBuffer, + ); + } catch { + return false; + } +} + +export function isLoopbackEndpoint(value: string): boolean { + try { + const host = new URL(value).hostname.replace(/^\[|\]$/g, "").toLowerCase(); + return host === "localhost" || host === "127.0.0.1" || host === "::1"; + } catch { + return false; + } +} + +/** The C# rule (`CultMeshAuthorityProof.cs`, `IsProtected`): wss, https, or any scheme containing "quic". */ +export function isProtectedEndpoint(value: string): boolean { + let scheme: string; + try { + scheme = new URL(value).protocol.slice(0, -1).toLowerCase(); + } catch { + return false; + } + return scheme === "wss" || scheme === "https" || scheme.includes("quic"); +} + +export function bytesToBase64(bytes: Uint8Array): string { + let binary = ""; + for (let offset = 0; offset < bytes.length; offset += 0x8000) { + binary += String.fromCharCode(...bytes.subarray(offset, offset + 0x8000)); + } + return btoa(binary); +} + +export function base64ToBytes(value: string): Uint8Array { + const binary = atob(value); + return Uint8Array.from(binary, character => character.charCodeAt(0)); +} diff --git a/packages/cultnet-ts/src/index.ts b/packages/cultnet-ts/src/index.ts index 140526c5..e9260122 100644 --- a/packages/cultnet-ts/src/index.ts +++ b/packages/cultnet-ts/src/index.ts @@ -62,6 +62,24 @@ export { type GhostlightVariableMap, type GhostlightWorldState, } from "./contracts"; +export { + base64ToBytes, + bytesToBase64, + canonicalFields, + canonicalRoute, + canonicalSession, + isLoopbackEndpoint, + isProtectedEndpoint, + verifyAuthorityRoute, + verifyP256, + verifyProviderSessionProof, + type CultMeshAuthorityIdentity, + type CultMeshAuthorityRouteCertificate, + type CultMeshAuthorityRouteView, + type CultMeshAuthorityTrustMode, + type CultMeshAuthorityTrustPolicy, + type CultMeshP256PublicKey, +} from "./cultmesh-authority"; export { encodeFrame, LengthPrefixedMessageFramer } from "./framing"; export { CultNetPeer, createTcpFramedCultNetPeer, type CultNetPeerEvents, type CultNetPeerSchemaCatalogRequestOptions, type CultNetPeerShardCatalogRequestOptions, type TcpFramedCultNetPeerOptions } from "./peer"; export { diff --git a/packages/cultnet-ts/test/cultmesh-authority.test.ts b/packages/cultnet-ts/test/cultmesh-authority.test.ts new file mode 100644 index 00000000..cb3a62da --- /dev/null +++ b/packages/cultnet-ts/test/cultmesh-authority.test.ts @@ -0,0 +1,238 @@ +// The shared CultMesh route verifier, pinned rule by rule. +// +// Routes here are signed with `node:crypto` and verified through the shared +// module. The transcript bytes themselves are pinned by +// `contracts/cultmesh/authority-route-vectors.json`, which the C# reference +// writes (`CultMeshAuthorityProofTests.AuthorityRouteVectorsAreSharedWithTypeScript` +// under CULTMESH_WRITE_VECTORS=1); a fixture authored on this side alone would +// only agree with itself. + +import test from "node:test"; +import assert from "node:assert/strict"; +import { generateKeyPairSync, sign, type KeyObject } from "node:crypto"; +import { readFileSync } from "node:fs"; +import { join } from "node:path"; + +import type { CultMeshSessionOpenMessage } from "../src/contracts"; +import { + base64ToBytes, + bytesToBase64, + canonicalRoute, + canonicalSession, + isLoopbackEndpoint, + isProtectedEndpoint, + verifyAuthorityRoute, + verifyP256, + verifyProviderSessionProof, + type CultMeshAuthorityRouteView, + type CultMeshP256PublicKey, +} from "../src/cultmesh-authority"; + +const NOW = 1_800_000_000_000; +const VECTORS_PATH = join(__dirname, "..", "..", "..", "..", "contracts", "cultmesh", "authority-route-vectors.json"); + +interface Vectors { + nowUnixMilliseconds: number; + odinRoot: CultMeshP256PublicKey; + route: CultMeshAuthorityRouteView; + sessionProof: { + request: CultMeshSessionOpenMessage; + providerKeyId: string; + providerSignature: string; + }; +} + +function keyPair(keyId: string): { privateKey: KeyObject; publicKey: CultMeshP256PublicKey } { + const pair = generateKeyPairSync("ec", { namedCurve: "P-256" }); + const jwk = pair.publicKey.export({ format: "jwk" }); + return { + privateKey: pair.privateKey, + publicKey: { + keyId, + x: Buffer.from(jwk.x!, "base64url").toString("base64"), + y: Buffer.from(jwk.y!, "base64url").toString("base64"), + }, + }; +} + +function signP1363(privateKey: KeyObject, payload: Uint8Array): string { + return sign("sha256", payload, { key: privateKey, dsaEncoding: "ieee-p1363" }).toString("base64"); +} + +function signedRoute(endpoint = "wss://provider.example/mesh") { + const odin = keyPair("odin-root-1"); + const provider = keyPair("provider-1"); + const unsigned: CultMeshAuthorityRouteView = { + verseId: "sample.counter", + authorityRuntimeId: "sample.counter-daemon", + endpoint, + protocolId: "cultmesh.documents.v1", + protocolIds: ["cultmesh.documents.v1"], + priority: 0, + generation: "signed-generation-1", + certificate: { + providerKey: provider.publicKey, + odinKeyId: odin.publicKey.keyId, + issuedAtUnixMilliseconds: NOW - 60_000, + expiresAtUnixMilliseconds: NOW + 3_600_000, + signature: "", + }, + }; + const route: CultMeshAuthorityRouteView = { + ...unsigned, + certificate: { ...unsigned.certificate!, signature: signP1363(odin.privateKey, canonicalRoute(unsigned)) }, + }; + return { route, odin, provider }; +} + +function request(clientNonce = "nonce-a"): CultMeshSessionOpenMessage { + return { + schemaVersion: "cultmesh.session_open.v2", + messageId: "message-1", + sourceRuntimeId: "consumer-1", + verseId: "sample.counter", + authorityRuntimeId: "sample.counter-daemon", + protocolId: "cultmesh.documents.v1", + routeGeneration: "signed-generation-1", + clientNonce, + }; +} + +const remoteTrust = (odinRoot: CultMeshP256PublicKey, now: number = NOW) => + ({ mode: "authenticated-remote" as const, odinRoots: [odinRoot], now: () => now }); + +test("a signed remote route verifies against its Odin root", async () => { + const { route, odin } = signedRoute(); + await verifyAuthorityRoute(route, remoteTrust(odin.publicKey)); +}); + +test("an unsigned remote route is refused in both trust modes", async () => { + const { route } = signedRoute(); + const unsigned = { ...route, certificate: undefined }; + await assert.rejects(verifyAuthorityRoute(unsigned, { mode: "authenticated-remote" }), /Odin-signed authority certificate/); + await assert.rejects(verifyAuthorityRoute(unsigned, { mode: "local-development" }), /Odin-signed authority certificate/); +}); + +test("an unsigned loopback route is accepted only under local-development", async () => { + const { route } = signedRoute("ws://127.0.0.1:4050/mesh"); + const unsigned = { ...route, certificate: undefined }; + await verifyAuthorityRoute(unsigned, { mode: "local-development" }); + await assert.rejects(verifyAuthorityRoute(unsigned, { mode: "authenticated-remote" }), /Odin-signed authority certificate/); +}); + +test("a certified route on an unprotected scheme is refused unless it is loopback under local-development", async () => { + const remote = signedRoute("ws://provider.example/mesh"); + await assert.rejects(verifyAuthorityRoute(remote.route, remoteTrust(remote.odin.publicKey)), /channel protection/); + const loopback = signedRoute("ws://localhost:4050/mesh"); + await assert.rejects(verifyAuthorityRoute(loopback.route, remoteTrust(loopback.odin.publicKey)), /channel protection/); + await verifyAuthorityRoute(loopback.route, { ...remoteTrust(loopback.odin.publicKey), mode: "local-development" }); +}); + +test("the validity window is half-open: issuedAt inclusive, expiresAt exclusive", async () => { + const { route, odin } = signedRoute(); + const certificate = route.certificate!; + await verifyAuthorityRoute(route, remoteTrust(odin.publicKey, certificate.issuedAtUnixMilliseconds)); + await verifyAuthorityRoute(route, remoteTrust(odin.publicKey, certificate.expiresAtUnixMilliseconds - 1)); + await assert.rejects( + verifyAuthorityRoute(route, remoteTrust(odin.publicKey, certificate.expiresAtUnixMilliseconds)), + /not currently valid/, + ); + await assert.rejects( + verifyAuthorityRoute(route, remoteTrust(odin.publicKey, certificate.issuedAtUnixMilliseconds - 1)), + /not currently valid/, + ); +}); + +test("an Odin root the consumer does not trust is refused before any signature check", async () => { + const { route } = signedRoute(); + const stranger = keyPair("odin-root-1"); + await assert.rejects(verifyAuthorityRoute(route, { mode: "authenticated-remote", odinRoots: [], now: () => NOW }), /is not trusted/); + await assert.rejects( + verifyAuthorityRoute(route, { mode: "authenticated-remote", odinRoots: [{ ...stranger.publicKey, keyId: "other-root" }], now: () => NOW }), + /is not trusted/, + ); + await assert.rejects(verifyAuthorityRoute(route, remoteTrust(stranger.publicKey)), /signature is invalid/); +}); + +test("a mutated endpoint invalidates the Odin signature", async () => { + const { route, odin } = signedRoute(); + await assert.rejects( + verifyAuthorityRoute({ ...route, endpoint: "wss://evil.example/mesh" }, remoteTrust(odin.publicKey)), + /signature is invalid/, + ); +}); + +test("a signature that is not 64 P1363 bytes is refused", async () => { + const { route, odin } = signedRoute(); + const bytes = base64ToBytes(route.certificate!.signature); + for (const wrong of [bytes.subarray(0, 63), new Uint8Array([...bytes, 0])]) { + await assert.rejects( + verifyAuthorityRoute( + { ...route, certificate: { ...route.certificate!, signature: bytesToBase64(wrong) } }, + remoteTrust(odin.publicKey), + ), + /signature is invalid/, + ); + } + assert.equal(await verifyP256(odin.publicKey, canonicalRoute(route), "not base64!"), false); +}); + +test("the provider session proof binds the nonce, the endpoint and the certified key", async () => { + const { route, provider } = signedRoute(); + const open = request(); + const signature = signP1363(provider.privateKey, canonicalSession(open, route.endpoint)); + assert.equal(await verifyProviderSessionProof(open, route.endpoint, provider.publicKey, signature), true); + assert.equal(await verifyProviderSessionProof(request("nonce-b"), route.endpoint, provider.publicKey, signature), false); + assert.equal(await verifyProviderSessionProof(open, "wss://evil.example/mesh", provider.publicKey, signature), false); + assert.equal(await verifyProviderSessionProof(open, route.endpoint, keyPair("provider-1").publicKey, signature), false); +}); + +test("isProtectedEndpoint is the C# rule: wss, https, or any scheme containing quic", () => { + for (const accepted of ["wss://provider.example/mesh", "https://provider.example/content", "cultmesh-state+quic://provider.example:4433"]) { + assert.equal(isProtectedEndpoint(accepted), true, accepted); + } + for (const refused of ["ws://provider.example/mesh", "cultnet+tcp://provider.example:3076", "not a url"]) { + assert.equal(isProtectedEndpoint(refused), false, refused); + } +}); + +test("isLoopbackEndpoint recognises localhost, 127.0.0.1 and ::1 only", () => { + for (const loopback of ["ws://localhost:4050/mesh", "ws://127.0.0.1:4050/mesh", "ws://[::1]:4050/mesh", "wss://LOCALHOST/mesh"]) { + assert.equal(isLoopbackEndpoint(loopback), true, loopback); + } + for (const remote of ["ws://192.0.2.10:4050/mesh", "wss://provider.example/mesh", "ws://127.0.0.2/mesh", "not a url"]) { + assert.equal(isLoopbackEndpoint(remote), false, remote); + } +}); + +test("base64 helpers round-trip across the 32 KiB chunk boundary", () => { + const bytes = new Uint8Array(70_000).map((_, index) => index % 251); + assert.deepEqual(base64ToBytes(bytesToBase64(bytes)), bytes); +}); + +test("the C# reference vectors verify through the shared module", async () => { + const vectors = JSON.parse(readFileSync(VECTORS_PATH, "utf8")) as Vectors; + const trust = { mode: "authenticated-remote" as const, odinRoots: [vectors.odinRoot], now: () => vectors.nowUnixMilliseconds }; + await verifyAuthorityRoute(vectors.route, trust); + await assert.rejects(verifyAuthorityRoute({ ...vectors.route, priority: 8 }, trust), /signature is invalid/); + await assert.rejects( + verifyAuthorityRoute({ ...vectors.route, protocolIds: [...vectors.route.protocolIds!, "cultmesh.realtime.v1"] }, trust), + /signature is invalid/, + ); + + const proof = vectors.sessionProof; + assert.equal(proof.providerKeyId, vectors.route.certificate!.providerKey.keyId); + assert.equal( + await verifyProviderSessionProof(proof.request, vectors.route.endpoint, vectors.route.certificate!.providerKey, proof.providerSignature), + true, + ); + assert.equal( + await verifyProviderSessionProof({ ...proof.request, clientNonce: "replayed" }, vectors.route.endpoint, vectors.route.certificate!.providerKey, proof.providerSignature), + false, + ); +}); + +test("the shared module keeps the browser-safe surface: no node: import", () => { + const source = readFileSync(join(__dirname, "..", "..", "src", "cultmesh-authority.ts"), "utf8"); + assert.doesNotMatch(source, /from "node:|require\("node:/); +}); diff --git a/tests/GameCult.Mesh.Tests/CultMeshAuthorityProofTests.cs b/tests/GameCult.Mesh.Tests/CultMeshAuthorityProofTests.cs index 42f02297..44c078cc 100644 --- a/tests/GameCult.Mesh.Tests/CultMeshAuthorityProofTests.cs +++ b/tests/GameCult.Mesh.Tests/CultMeshAuthorityProofTests.cs @@ -1,10 +1,12 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Net; using System.Net.Http; using System.Security.Cryptography; using System.Text; +using System.Text.Json; using System.Threading; using System.Threading.Tasks; using FluentAssertions; @@ -225,6 +227,132 @@ public sealed class CultMeshAuthorityProofTests handler.RequestUri.Query.Should().Contain("chunkHash=").And.Contain("recordKey="); } + // Shared-vector check with `packages/cultnet-ts/src/cultmesh-authority.ts`. + // The C# reference signs a route and a session proof with fixed keys and + // writes them when CULTMESH_WRITE_VECTORS=1; otherwise it asserts the + // committed file still verifies here. The TypeScript test verifies the same + // file, so both runtimes are pinned to the same transcript bytes. + [Test] + public void AuthorityRouteVectorsAreSharedWithTypeScript() + { + var path = Path.Combine(RepoRoot(), "contracts", "cultmesh", "authority-route-vectors.json"); + using var odin = ECDsa.Create(); + odin.ImportFromPem(VectorOdinPrivateKeyPem); + using var provider = ECDsa.Create(); + provider.ImportFromPem(VectorProviderPrivateKeyPem); + var odinPublic = CultMeshEcdsaP256PublicKey.From("odin-vector", odin); + var providerPublic = CultMeshEcdsaP256PublicKey.From("provider-vector", provider); + var request = new GameCult.Networking.CultMeshSessionOpenMessage + { + MessageId = "vector-message-1", + SourceRuntimeId = "vector-consumer", + VerseId = "aetheria", + AuthorityRuntimeId = "aetheria-daemon", + ProtocolId = CultMeshProtocols.Documents.Value, + RouteGeneration = "vector-generation-1", + ClientNonce = Convert.ToBase64String(SHA256.HashData(Encoding.UTF8.GetBytes("vector-nonce"))) + }; + + if (Environment.GetEnvironmentVariable("CULTMESH_WRITE_VECTORS") == "1") + { + var signedRoute = CultMeshAuthorityProof.CreateSignedRoute( + "aetheria", "aetheria-daemon", "wss://provider.example/mesh", + new[] { CultMeshProtocols.Documents.Value, CultMeshProtocols.Content.Value }, 7, "vector-generation-1", + providerPublic, odinPublic.KeyId, Now.AddMinutes(-1), Now.AddHours(1), odin); + var signer = new CultMeshSessionProofSigner(signedRoute, provider); + Directory.CreateDirectory(Path.GetDirectoryName(path)!); + File.WriteAllText(path, JsonSerializer.Serialize(new + { + nowUnixMilliseconds = Now.ToUnixTimeMilliseconds(), + odinRoot = new { keyId = odinPublic.KeyId, x = odinPublic.X, y = odinPublic.Y }, + route = new + { + verseId = "aetheria", + authorityRuntimeId = signedRoute.AuthorityRuntimeId, + endpoint = signedRoute.Endpoint, + protocolIds = signedRoute.ProtocolIds, + priority = signedRoute.Priority, + generation = signedRoute.Generation, + certificate = new + { + providerKey = new { keyId = providerPublic.KeyId, x = providerPublic.X, y = providerPublic.Y }, + odinKeyId = signedRoute.Certificate!.OdinKeyId, + issuedAtUnixMilliseconds = signedRoute.Certificate.IssuedAtUnixMilliseconds, + expiresAtUnixMilliseconds = signedRoute.Certificate.ExpiresAtUnixMilliseconds, + signature = signedRoute.Certificate.Signature + } + }, + sessionProof = new + { + request = new + { + schemaVersion = request.SchemaVersion, + messageId = request.MessageId, + sourceRuntimeId = request.SourceRuntimeId, + verseId = request.VerseId, + authorityRuntimeId = request.AuthorityRuntimeId, + protocolId = request.ProtocolId, + routeGeneration = request.RouteGeneration, + clientNonce = request.ClientNonce + }, + providerKeyId = signer.ProviderKeyId, + providerSignature = signer.Sign(request) + } + }, new JsonSerializerOptions + { + WriteIndented = true, + Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping + }) + "\n"); + } + + using var vectors = JsonDocument.Parse(File.ReadAllText(path)); + var rootElement = vectors.RootElement; + var routeElement = rootElement.GetProperty("route"); + var certificateElement = routeElement.GetProperty("certificate"); + var route = new CultMeshAuthorityRoute( + routeElement.GetProperty("authorityRuntimeId").GetString()!, + routeElement.GetProperty("endpoint").GetString()!, + routeElement.GetProperty("protocolIds").EnumerateArray().Select(value => value.GetString()!).ToArray(), + routeElement.GetProperty("priority").GetInt32(), + routeElement.GetProperty("generation").GetString(), + new CultMeshRouteCertificate( + providerPublic, + certificateElement.GetProperty("odinKeyId").GetString()!, + certificateElement.GetProperty("issuedAtUnixMilliseconds").GetInt64(), + certificateElement.GetProperty("expiresAtUnixMilliseconds").GetInt64(), + certificateElement.GetProperty("signature").GetString()!)); + var trust = new CultMeshAuthorityTrustPolicy(CultMeshAuthorityTrustMode.AuthenticatedRemote, new[] { odinPublic }); + var now = DateTimeOffset.FromUnixTimeMilliseconds(rootElement.GetProperty("nowUnixMilliseconds").GetInt64()); + var verseId = routeElement.GetProperty("verseId").GetString()!; + + trust.Validate(verseId, route, now); + var proofElement = rootElement.GetProperty("sessionProof"); + var accepted = Accepted(request, proofElement.GetProperty("providerSignature").GetString()!); + accepted.ProviderKeyId = proofElement.GetProperty("providerKeyId").GetString()!; + CultMeshAuthorityProof.VerifySessionProof(request, accepted, verseId, route, trust, now).Should().BeTrue(); + } + + private static string RepoRoot() + { + var directory = new DirectoryInfo(TestContext.CurrentContext.TestDirectory); + while (directory != null && !File.Exists(Path.Combine(directory.FullName, "CultLib.sln"))) + directory = directory.Parent; + return directory?.FullName ?? throw new InvalidOperationException("CultLib.sln was not found above the test directory."); + } + + // Fixed test keys. They sign only the committed vector and prove nothing else. + private const string VectorOdinPrivateKeyPem = @"-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgHY0//QOheSwARzXE +iX/nGqSD7XFAy530QQqKeXPNxMChRANCAASyEksa2ZGtboPztVAq/TFhB6Qsh8SR +43t1VrDCmYgpY4kehsd2lQoIc0sqO06l6q/td/ey+9ygzWbszdnGeeSB +-----END PRIVATE KEY-----"; + + private const string VectorProviderPrivateKeyPem = @"-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgVC+9X4t+1HAiIxP4 +TEuAuBAY+3ryKK8SaitB0TqsPQqhRANCAATpci+DHdbWruUkURXTJht4pY0WCyyr +ngEcG6H2ALBwf6ItRYiq2rni4nPlXpszsdfDDcBurYZmTFFnqjcOrzTp +-----END PRIVATE KEY-----"; + private static CultMeshAuthorityRoute SignedRoute(ECDsa odin, ECDsa provider) => CultMeshAuthorityProof.CreateSignedRoute( "aetheria", From 66286b9dfbfd6f78b4c19c9fc7cc5423fae61c9c Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 15:59:09 +0200 Subject: [PATCH 0026/1002] Delete the browser copy of the route verifier cultmesh-browser now verifies routes and provider session proofs through cultnet-ts/authority. Its own verifyAuthorityRoute, canonicalRoute, canonicalSession, canonicalFields, verifyP256, isLoopbackEndpoint and the two base64 helpers are gone; the six route and trust types are re-exported under their old Browser names as aliases of the shared types. randomNonce stays: it is client behaviour, not verification. All 17 browser tests pass unchanged. Co-Authored-By: Claude Fable 5.1 --- packages/cultmesh-browser/src/index.ts | 183 +++---------------------- 1 file changed, 20 insertions(+), 163 deletions(-) diff --git a/packages/cultmesh-browser/src/index.ts b/packages/cultmesh-browser/src/index.ts index 4dddfa7d..86d933d1 100644 --- a/packages/cultmesh-browser/src/index.ts +++ b/packages/cultmesh-browser/src/index.ts @@ -15,42 +15,26 @@ import { type CultMeshSessionAcceptedMessage, type CultMeshSessionOpenMessage, } from "cultnet-ts/contracts"; +import { + base64ToBytes, + bytesToBase64, + isLoopbackEndpoint, + verifyAuthorityRoute, + verifyProviderSessionProof, + type CultMeshAuthorityIdentity, + type CultMeshAuthorityRouteCertificate, + type CultMeshAuthorityRouteView, + type CultMeshAuthorityTrustMode, + type CultMeshAuthorityTrustPolicy, + type CultMeshP256PublicKey, +} from "cultnet-ts/authority"; -export interface CultMeshBrowserIdentity { - verseId: string; - authorityRuntimeId: string; -} - -export interface CultMeshBrowserRoute extends CultMeshBrowserIdentity { - endpoint: string; - protocolId?: string; - protocolIds?: readonly string[]; - priority?: number; - generation: string; - certificate?: CultMeshBrowserRouteCertificate; -} - -export interface CultMeshBrowserP256PublicKey { - keyId: string; - x: string; - y: string; -} - -export interface CultMeshBrowserRouteCertificate { - providerKey: CultMeshBrowserP256PublicKey; - odinKeyId: string; - issuedAtUnixMilliseconds: number; - expiresAtUnixMilliseconds: number; - signature: string; -} - -export type CultMeshBrowserAuthorityTrustMode = "authenticated-remote" | "local-development"; - -export interface CultMeshBrowserAuthorityTrustPolicy { - mode: CultMeshBrowserAuthorityTrustMode; - odinRoots?: readonly CultMeshBrowserP256PublicKey[]; - now?: () => number; -} +export type CultMeshBrowserIdentity = CultMeshAuthorityIdentity; +export type CultMeshBrowserRoute = CultMeshAuthorityRouteView; +export type CultMeshBrowserP256PublicKey = CultMeshP256PublicKey; +export type CultMeshBrowserRouteCertificate = CultMeshAuthorityRouteCertificate; +export type CultMeshBrowserAuthorityTrustMode = CultMeshAuthorityTrustMode; +export type CultMeshBrowserAuthorityTrustPolicy = CultMeshAuthorityTrustPolicy; export interface CultMeshBrowserRendezvous { resolve( @@ -794,19 +778,6 @@ export function decodeCultNetOperationPayload(response: CultNetOperationRespo return decode(base64ToBytes(response.payload)) as T; } -function bytesToBase64(bytes: Uint8Array): string { - let binary = ""; - for (let offset = 0; offset < bytes.length; offset += 0x8000) { - binary += String.fromCharCode(...bytes.subarray(offset, offset + 0x8000)); - } - return btoa(binary); -} - -function base64ToBytes(value: string): Uint8Array { - const binary = atob(value); - return Uint8Array.from(binary, character => character.charCodeAt(0)); -} - function requireWebSocketEndpoint(value: string, field: string): URL { let endpoint: URL; try { @@ -946,131 +917,17 @@ async function validateSessionAcceptance( if (!providerKey || message.providerKeyId !== providerKey.keyId || !message.providerSignature) { return new Error("CultMesh authority did not prove possession of the Odin-certified provider key."); } - if (!await verifyP256(providerKey, canonicalSession(request, route.endpoint), message.providerSignature)) { + if (!await verifyProviderSessionProof(request, route.endpoint, providerKey, message.providerSignature)) { return new Error("CultMesh provider session proof is invalid."); } return undefined; } -async function verifyAuthorityRoute( - route: CultMeshBrowserRoute, - trust: CultMeshBrowserAuthorityTrustPolicy, -): Promise { - const certificate = route.certificate; - if (!certificate) { - if (trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint)) return; - throw new Error("Remote CultMesh routes require an Odin-signed authority certificate."); - } - const endpoint = new URL(route.endpoint); - if (endpoint.protocol !== "wss:" && !(trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint))) { - throw new Error("Authenticated remote CultMesh browser routes require wss:// channel protection."); - } - const now = trust.now?.() ?? Date.now(); - if (now < certificate.issuedAtUnixMilliseconds || now >= certificate.expiresAtUnixMilliseconds) { - throw new Error("The Odin route certificate is not currently valid."); - } - const root = trust.odinRoots?.find(candidate => candidate.keyId === certificate.odinKeyId); - if (!root) throw new Error(`Odin key '${certificate.odinKeyId}' is not trusted by this consumer.`); - if (!await verifyP256(root, canonicalRoute(route), certificate.signature)) { - throw new Error("The Odin route certificate signature is invalid."); - } -} - -function canonicalRoute(route: CultMeshBrowserRoute): Uint8Array { - const certificate = route.certificate!; - return canonicalFields( - "gamecult.cultmesh.route-certificate.v1", - route.verseId, - route.authorityRuntimeId, - route.endpoint, - [...(route.protocolIds ?? [route.protocolId ?? "cultmesh.documents.v1"])].sort().join("\u001f"), - String(route.priority ?? 0), - route.generation, - certificate.providerKey.keyId, - certificate.providerKey.x, - certificate.providerKey.y, - certificate.odinKeyId, - String(certificate.issuedAtUnixMilliseconds), - String(certificate.expiresAtUnixMilliseconds), - ); -} - -function canonicalSession(request: CultMeshSessionOpenMessage, endpoint: string): Uint8Array { - return canonicalFields( - "gamecult.cultmesh.session-proof.v1", - request.clientNonce, - request.messageId, - request.sourceRuntimeId, - request.verseId, - request.authorityRuntimeId, - request.protocolId, - endpoint, - request.routeGeneration, - ); -} - -function canonicalFields(...values: string[]): Uint8Array { - const encoder = new TextEncoder(); - const encoded = values.map(value => encoder.encode(value)); - const total = encoded.reduce((sum, value) => sum + 4 + value.byteLength, 0); - const result = new Uint8Array(total); - const view = new DataView(result.buffer); - let offset = 0; - for (const value of encoded) { - view.setUint32(offset, value.byteLength, false); - offset += 4; - result.set(value, offset); - offset += value.byteLength; - } - return result; -} - -async function verifyP256( - key: CultMeshBrowserP256PublicKey, - payload: Uint8Array, - signatureBase64: string, -): Promise { - try { - const x = base64ToBytes(key.x); - const y = base64ToBytes(key.y); - const signature = base64ToBytes(signatureBase64); - if (x.byteLength !== 32 || y.byteLength !== 32 || signature.byteLength !== 64) return false; - const raw = new Uint8Array(65); - raw[0] = 4; - raw.set(x, 1); - raw.set(y, 33); - const publicKey = await crypto.subtle.importKey( - "raw", - raw.slice().buffer as ArrayBuffer, - { name: "ECDSA", namedCurve: "P-256" }, - false, - ["verify"], - ); - return await crypto.subtle.verify( - { name: "ECDSA", hash: "SHA-256" }, - publicKey, - signature.slice().buffer as ArrayBuffer, - payload.slice().buffer as ArrayBuffer, - ); - } catch { - return false; - } -} - function randomNonce(): string { const bytes = crypto.getRandomValues(new Uint8Array(32)); return bytesToBase64(bytes); } -function isLoopbackEndpoint(value: string): boolean { - try { - const host = new URL(value).hostname.replace(/^\[|\]$/g, "").toLowerCase(); - return host === "localhost" || host === "127.0.0.1" || host === "::1"; - } catch { - return false; - } -} - function requireText(value: string, field: string): void { if (!value || value.trim().length === 0) throw new Error(`CultMesh browser ${field} is required.`); } From 062a5c66787090fab3a4c6b6d58574603889e398 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 15:59:09 +0200 Subject: [PATCH 0027/1002] Add a mutation check for the shared route verifier One mutation per rule the cut map names, applied to the source bytes and restored from the original bytes with a digest check; a no-op control runs first through the same write path. A survivor is a rule no test pins and fails the script. Co-Authored-By: Claude Fable 5.1 --- scripts/mutate-cultmesh-authority.mjs | 148 ++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 scripts/mutate-cultmesh-authority.mjs diff --git a/scripts/mutate-cultmesh-authority.mjs b/scripts/mutate-cultmesh-authority.mjs new file mode 100644 index 00000000..a8d705f7 --- /dev/null +++ b/scripts/mutate-cultmesh-authority.mjs @@ -0,0 +1,148 @@ +// Mutation check for the shared CultMesh route verifier. +// +// Each rule the cut map names for `packages/cultnet-ts/src/cultmesh-authority.ts` +// gets one mutation. A mutation is killed when `npm run test --workspace +// packages/cultnet-ts` fails with it applied; a survivor means no test pins that +// rule. The file is rewritten as UTF-8 bytes and restored from the original +// bytes with a digest check, never from git. A no-op control runs first through +// the same write path so a false kill from the write itself cannot hide. +// +// node scripts/mutate-cultmesh-authority.mjs + +import { createHash } from "node:crypto"; +import { execFileSync } from "node:child_process"; +import { readFileSync, writeFileSync } from "node:fs"; +import { dirname, join, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; + +const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), ".."); +const target = join(repoRoot, "packages", "cultnet-ts", "src", "cultmesh-authority.ts"); +const npmCli = process.env.npm_execpath ?? + join(dirname(process.execPath), "node_modules", "npm", "bin", "npm-cli.js"); + +const mutations = [ + { + rule: "unsigned remote route is refused", + old: 'throw new Error("Remote CultMesh routes require an Odin-signed authority certificate.");', + new: "return;", + }, + { + rule: "unsigned loopback is accepted only under local-development", + old: 'if (trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint)) return;', + new: "if (isLoopbackEndpoint(route.endpoint)) return;", + }, + { + rule: "protected-scheme gate", + old: "if (!isProtectedEndpoint(route.endpoint) && !(", + new: "if (isProtectedEndpoint(route.endpoint) && !(", + }, + { + rule: "validity window (expiresAt exclusive)", + old: "now >= certificate.expiresAtUnixMilliseconds", + new: "now > certificate.expiresAtUnixMilliseconds", + }, + { + rule: "Odin root lookup by key id", + old: "candidate => candidate.keyId === certificate.odinKeyId", + new: "candidate => true", + }, + { + rule: "route transcript field order", + old: " route.verseId,\n route.authorityRuntimeId,\n", + new: " route.authorityRuntimeId,\n route.verseId,\n", + }, + { + rule: "session transcript binds the nonce", + old: " request.clientNonce,\n", + new: "", + }, + { + rule: "length-prefix framing is big-endian", + old: "view.setUint32(offset, value.byteLength, false);", + new: "view.setUint32(offset, value.byteLength, true);", + }, + { + rule: "P-256 verification hashes with SHA-256", + old: '{ name: "ECDSA", hash: "SHA-256" },', + new: '{ name: "ECDSA", hash: "SHA-384" },', + }, + // Not listed: removing `signature.byteLength !== 64` from verifyP256. WebCrypto + // refuses a non-64-byte P1363 signature on its own, so that guard has no + // observable behaviour and the mutant is equivalent (it survived when tried). + { + rule: "loopback recognises ::1", + old: 'host === "::1"', + new: 'host === "::2"', + }, + { + rule: "protected scheme: any scheme containing quic", + old: 'scheme.includes("quic")', + new: 'scheme === "quic"', + }, + { + rule: "protected scheme: https", + old: 'scheme === "https" || ', + new: "", + }, +]; + +const original = readFileSync(target); +const originalText = original.toString("utf8"); +const originalDigest = digest(original); + +function digest(bytes) { + return createHash("sha256").update(bytes).digest("hex"); +} + +function testsPass() { + try { + execFileSync(process.execPath, [npmCli, "run", "test", "--workspace", "packages/cultnet-ts"], { + cwd: repoRoot, + stdio: ["ignore", "pipe", "pipe"], + }); + return true; + } catch { + return false; + } +} + +function restore() { + writeFileSync(target, original); + const restored = digest(readFileSync(target)); + if (restored !== originalDigest) { + throw new Error(`restore failed: ${target} digest ${restored} != ${originalDigest}`); + } +} + +function occurrences(text, needle) { + return text.split(needle).length - 1; +} + +const results = []; +let failed = false; + +try { + writeFileSync(target, Buffer.from(originalText, "utf8")); + const controlPass = testsPass(); + results.push({ rule: "control (no-op rewrite)", outcome: controlPass ? "green" : "RED" }); + if (!controlPass) failed = true; + else { + for (const mutation of mutations) { + const count = occurrences(originalText, mutation.old); + if (count !== 1) { + throw new Error(`anchor for '${mutation.rule}' matched ${count} times, expected exactly 1`); + } + writeFileSync(target, Buffer.from(originalText.replace(mutation.old, mutation.new), "utf8")); + const pass = testsPass(); + restore(); + results.push({ rule: mutation.rule, outcome: pass ? "SURVIVED" : "killed" }); + if (pass) failed = true; + } + } +} finally { + restore(); +} + +for (const result of results) console.log(`${result.outcome.padEnd(9)} ${result.rule}`); +console.log(`restored ${target} sha256=${originalDigest}`); +process.exit(failed ? 1 : 0); From 737e13286b87fc8076b4277fc4632618e4136cb2 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 16:01:46 +0200 Subject: [PATCH 0028/1002] Record Cut 1's landing One route verifier in cultnet-ts, the browser copy deleted, a C#-written vector file, and a mutation runner with a control. Soul is on it. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index c0f6f6a4..04c97e14 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -11,7 +11,9 @@ campaign, registry publication parked for a later pass by choice. Cut 6, section 5.4, the binary-resolution and dependency lines of Cut 4, and Cut 7's ledger are remapped under C (landed 2026-09-16, same day). Q8 is ruled: the built binaries are committed to the tree (section 11.2). No operator -question is open. Cut 1 is in Hands. +question is open. **Cut 1 landed** at `e234a64` (shared verifier, tests, +C#-written vectors), `66286b9` (browser copy deleted, −143 net) and +`062a5c6` (mutation runner; twelve killed, one equivalent). Soul in flight. Anchor: repo `F:\Projects\CultLib`, branch `main`, HEAD `8d8ad568aa280bac34bf123503a9e38c175eb558`. The three commits since the From c00bed85758e12a9b242c2a38112e46acad5d6e0 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 16:19:46 +0200 Subject: [PATCH 0029/1002] Record Soul's Cut 1 pass The verifier is sound in both directions, the second one by probe. What can go wrong silently is the verification story: a mutant left compiled in an ignored directory, a C# vector check with no CI owner, a public function that reads a pooled buffer wrong, and four edge rules that drift from the reference. One map claim about error texts is withdrawn. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 45 ++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 04c97e14..b584b409 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -13,7 +13,43 @@ ledger are remapped under C (landed 2026-09-16, same day). Q8 is ruled: the built binaries are committed to the tree (section 11.2). No operator question is open. **Cut 1 landed** at `e234a64` (shared verifier, tests, C#-written vectors), `66286b9` (browser copy deleted, −143 net) and -`062a5c6` (mutation runner; twelve killed, one equivalent). Soul in flight. +`062a5c6` (mutation runner; twelve killed, one equivalent). Soul's pass +found the verifier and the C#-to-TypeScript bridge sound and proved the +other direction by probe; a fix batch is in Hands for the six findings below. + +**Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative +greps, all twelve mutations rerun and killed, the control catching a +truncated write, the equivalent mutant confirmed (Node 24 WebCrypto refuses +every non-64-byte P1363 signature tried, across forty keys), the separator +byte matching C#, and the TypeScript-signs-C#-verifies direction proven by +a probe over adversarial inputs, which nothing in the repo yet pins. Found: + +- **The mutation runner leaves the last mutant compiled in `dist/`**, which + is git-ignored, and the browser tests then pass against it. A stale asset + impersonating logic, the doctrine's own trap. Medium. +- **The C# half of the vector check never runs in CI.** The only `dotnet + test` of that project is filtered to one lease test; a C# transcript + change would leave the committed vector self-consistent and nothing red. + Medium. +- **`verifyP256` fails closed on Node `Buffer` inputs**: `.slice().buffer` + on a pooled buffer is the whole pool. Internal callers allocate their own + bytes, so it is safe today and wrong for the Cut 4 consumer. Medium. +- **The `protocolIds` sort is untested**: the vector's ids were written + sorted, so removing the sort survives. Low-medium. +- **Four edge divergences from the C# rules**: an empty signature is + "unsigned" in C# and "invalid" in TypeScript; C#'s loopback set is wider + (`127.0.0.2`, and the TypeScript test pinned the narrower answer); root + lookup and validity window check in opposite orders; duplicate root key + ids throw in C# and take-first in TypeScript. All aligned to C# in the fix + batch. +- **The negative grep pins names, not structure**: a local shim under + another name passed every browser test and both greps. A guard-strength + note, recorded. +- **A killed runner leaves the mutant in the tree**; a sidecar restore is + added, as Epiphany's harness has. +- **`cultmesh-ts` resolves modules with `moduleResolution: "Node"`**, which + ignores `exports`, so `cultnet-ts/authority` is unresolvable from that + package until Cut 4 changes it; the root re-export covers it today. Anchor: repo `F:\Projects\CultLib`, branch `main`, HEAD `8d8ad568aa280bac34bf123503a9e38c175eb558`. The three commits since the @@ -367,8 +403,11 @@ Sizing consequences: - Inputs: a route view (Verse, authority runtime, endpoint, protocol ids, priority, generation, certificate), a trust policy (`mode`, `odinRoots`, `now`), a session-open request and an accepted message. -- Outputs: resolution or a thrown `Error` with the same message texts the - browser package emits today (its tests pin them). +- Outputs: resolution or a thrown `Error` whose message is the C# reference's + for the same refusal. *(First written as "the same message texts the + browser package emits today (its tests pin them)"; Soul found the browser + tests pin two messages only, and the channel-protection text was false for + QUIC. Corrected 2026-09-16.)* - Derived state: none. - Forbidden writers: `cultmesh-browser` must not retain or regrow `verifyAuthorityRoute`, `canonicalRoute`, `canonicalSession`, From c2ffc32ff6d559384fcf1a56253dcd1226633fbe Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 16:24:41 +0200 Subject: [PATCH 0030/1002] Make the TypeScript route verifier the C# rules exactly verifyP256 handed WebCrypto `view.slice().buffer`. For a Node Buffer, `slice` is `subarray`, so `.buffer` is the shared pool: a pooled Buffer or a subarray of a larger allocation verified false while the same bytes as a plain Uint8Array verified true. Copy exactly the viewed bytes. Trust rules that had drifted from `CultMeshAuthorityProof.cs`: - A certificate whose signature is empty or whitespace is an unsigned route (C# `Verify` line 120): local-development loopback accepts it, everything else refuses with the unsigned message. - Loopback is `System.Uri.IsLoopback`: any 127.0.0.0/8 host, `::1`, the IPv4-mapped `::ffff:127.0.0.1` (only `.1`), and the host names `localhost` and `loopback`. WHATWG URL normalises `127.1`, `0x7f000001` and `2130706433` the way System.Uri does. Probed on the C# side through the public policy before the rule was written; the test pins that set. - The root lookup runs before the validity window, so an expired route under an unknown root is refused as untrusted on both sides. - A policy listing one Odin key id twice is refused at first use, the closest a plain object gets to the C# constructor throwing. One test per rule, one mutation per rule in the runner's list. A fixture whose protocol ids are unsorted and whose expected transcript is the sorted one means removing the sort is now killed. The runner now matches anchors in the file's own line ending. On an autocrlf checkout the two multi-line anchors it already had ("route transcript field order", "session transcript binds the nonce") matched nothing, so the run threw at those entries instead of testing them. Co-Authored-By: Claude Fable 5.1 --- packages/cultnet-ts/src/cultmesh-authority.ts | 53 +++++++-- .../test/cultmesh-authority.test.ts | 101 +++++++++++++++++- scripts/mutate-cultmesh-authority.mjs | 64 ++++++++++- 3 files changed, 203 insertions(+), 15 deletions(-) diff --git a/packages/cultnet-ts/src/cultmesh-authority.ts b/packages/cultnet-ts/src/cultmesh-authority.ts index c579f347..fd0fcce6 100644 --- a/packages/cultnet-ts/src/cultmesh-authority.ts +++ b/packages/cultnet-ts/src/cultmesh-authority.ts @@ -44,29 +44,49 @@ export interface CultMeshAuthorityTrustPolicy { now?: () => number; } +// Rule for rule, this is `CultMeshAuthorityTrustPolicy.Verify` in the C# +// reference, in the same order: unsigned, channel protection, root lookup, +// validity window, signature. The same input yields the same refusal on both +// sides. A certificate whose signature is empty or whitespace is unsigned +// (`CultMeshRouteCertificate` trims the signature; `Verify` treats a +// whitespace signature as no certificate). export async function verifyAuthorityRoute( route: CultMeshAuthorityRouteView, trust: CultMeshAuthorityTrustPolicy, ): Promise { + const roots = trustedOdinRoots(trust); const certificate = route.certificate; - if (!certificate) { + const signature = certificate?.signature.trim() ?? ""; + if (!certificate || signature === "") { if (trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint)) return; throw new Error("Remote CultMesh routes require an Odin-signed authority certificate."); } if (!isProtectedEndpoint(route.endpoint) && !(trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint))) { throw new Error("Authenticated remote CultMesh routes require TLS or QUIC channel protection."); } + const root = roots.get(certificate.odinKeyId); + if (!root) throw new Error(`Odin key '${certificate.odinKeyId}' is not trusted by this consumer.`); const now = trust.now?.() ?? Date.now(); if (now < certificate.issuedAtUnixMilliseconds || now >= certificate.expiresAtUnixMilliseconds) { throw new Error("The Odin route certificate is not currently valid."); } - const root = trust.odinRoots?.find(candidate => candidate.keyId === certificate.odinKeyId); - if (!root) throw new Error(`Odin key '${certificate.odinKeyId}' is not trusted by this consumer.`); - if (!await verifyP256(root, canonicalRoute(route), certificate.signature)) { + if (!await verifyP256(root, canonicalRoute(route), signature)) { throw new Error("The Odin route certificate signature is invalid."); } } +// The C# policy is a dictionary keyed by Odin key id and its constructor +// throws on a duplicate. A TypeScript policy is a plain object, so the same +// refusal happens at the first use of the policy, before any route is judged. +function trustedOdinRoots(trust: CultMeshAuthorityTrustPolicy): Map { + const roots = new Map(); + for (const root of trust.odinRoots ?? []) { + if (roots.has(root.keyId)) throw new Error(`Odin root key id '${root.keyId}' is listed more than once in the trust policy.`); + roots.set(root.keyId, root); + } + return roots; +} + /** Verifies the provider's session proof over the accepted handshake. */ export function verifyProviderSessionProof( request: CultMeshSessionOpenMessage, @@ -142,7 +162,7 @@ export async function verifyP256( raw.set(y, 33); const publicKey = await crypto.subtle.importKey( "raw", - raw.slice().buffer as ArrayBuffer, + ownedBytes(raw), { name: "ECDSA", namedCurve: "P-256" }, false, ["verify"], @@ -150,18 +170,35 @@ export async function verifyP256( return await crypto.subtle.verify( { name: "ECDSA", hash: "SHA-256" }, publicKey, - signature.slice().buffer as ArrayBuffer, - payload.slice().buffer as ArrayBuffer, + ownedBytes(signature), + ownedBytes(payload), ); } catch { return false; } } +// WebCrypto reads an `ArrayBuffer` whole. A view's `.buffer` is not the view: +// a Node `Buffer` (a subarray of a shared pool) or any offset `Uint8Array` +// would hand WebCrypto the pool, and `Buffer.prototype.slice` does not copy. +// Copy exactly the viewed bytes so every view verifies alike. +function ownedBytes(view: Uint8Array): ArrayBuffer { + return view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength) as ArrayBuffer; +} + +/** + * The C# rule (`CultMeshAuthorityProof.cs`, `IsLoopback`): `System.Uri.IsLoopback`, + * which is any `127.0.0.0/8` IPv4 host, `::1`, the IPv4-mapped `::ffff:127.0.0.1` + * (and only `.1`), and the host names `localhost` and `loopback`, case-insensitively. + * WHATWG `URL` already normalises `127.1`, `0x7f000001` and `2130706433` to + * `127.0.0.1` and serialises the mapped form as `::ffff:7f00:1`, as `System.Uri` + * does on its side. `localhost.` is not loopback on either side. + */ export function isLoopbackEndpoint(value: string): boolean { try { const host = new URL(value).hostname.replace(/^\[|\]$/g, "").toLowerCase(); - return host === "localhost" || host === "127.0.0.1" || host === "::1"; + return host === "localhost" || host === "loopback" || host === "::1" || host === "::ffff:7f00:1" || + /^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(host); } catch { return false; } diff --git a/packages/cultnet-ts/test/cultmesh-authority.test.ts b/packages/cultnet-ts/test/cultmesh-authority.test.ts index cb3a62da..03a9b9f0 100644 --- a/packages/cultnet-ts/test/cultmesh-authority.test.ts +++ b/packages/cultnet-ts/test/cultmesh-authority.test.ts @@ -17,6 +17,7 @@ import type { CultMeshSessionOpenMessage } from "../src/contracts"; import { base64ToBytes, bytesToBase64, + canonicalFields, canonicalRoute, canonicalSession, isLoopbackEndpoint, @@ -120,6 +121,22 @@ test("an unsigned loopback route is accepted only under local-development", asyn await assert.rejects(verifyAuthorityRoute(unsigned, { mode: "authenticated-remote" }), /Odin-signed authority certificate/); }); +test("a certificate whose signature is empty or whitespace is an unsigned route, as in C#", async () => { + for (const signature of ["", " ", "\n\t "]) { + const remote = signedRoute(); + const remoteBlank = { ...remote.route, certificate: { ...remote.route.certificate!, signature } }; + await assert.rejects(verifyAuthorityRoute(remoteBlank, remoteTrust(remote.odin.publicKey)), /Odin-signed authority certificate/); + await assert.rejects( + verifyAuthorityRoute(remoteBlank, { ...remoteTrust(remote.odin.publicKey), mode: "local-development" }), + /Odin-signed authority certificate/, + ); + const loopback = signedRoute("ws://127.0.0.1:4050/mesh"); + const loopbackBlank = { ...loopback.route, certificate: { ...loopback.route.certificate!, signature } }; + await verifyAuthorityRoute(loopbackBlank, { ...remoteTrust(loopback.odin.publicKey), mode: "local-development" }); + await assert.rejects(verifyAuthorityRoute(loopbackBlank, remoteTrust(loopback.odin.publicKey)), /Odin-signed authority certificate/); + } +}); + test("a certified route on an unprotected scheme is refused unless it is loopback under local-development", async () => { const remote = signedRoute("ws://provider.example/mesh"); await assert.rejects(verifyAuthorityRoute(remote.route, remoteTrust(remote.odin.publicKey)), /channel protection/); @@ -154,6 +171,31 @@ test("an Odin root the consumer does not trust is refused before any signature c await assert.rejects(verifyAuthorityRoute(route, remoteTrust(stranger.publicKey)), /signature is invalid/); }); +test("the root lookup precedes the validity window, so an expired route under an unknown root is refused as untrusted (C# order)", async () => { + const { route, odin } = signedRoute(); + const expired = route.certificate!.expiresAtUnixMilliseconds + 1; + await assert.rejects(verifyAuthorityRoute(route, remoteTrust(odin.publicKey, expired)), /not currently valid/); + await assert.rejects( + verifyAuthorityRoute(route, { mode: "authenticated-remote", odinRoots: [{ ...odin.publicKey, keyId: "other-root" }], now: () => expired }), + /is not trusted/, + ); +}); + +test("a trust policy listing one Odin key id twice is refused before any route is judged, as the C# constructor throws", async () => { + const { route, odin } = signedRoute(); + const twin = { ...keyPair("odin-root-1").publicKey }; + for (const odinRoots of [[odin.publicKey, twin], [twin, odin.publicKey], [odin.publicKey, odin.publicKey]]) { + await assert.rejects( + verifyAuthorityRoute(route, { mode: "authenticated-remote", odinRoots, now: () => NOW }), + /'odin-root-1' is listed more than once/, + ); + } + await assert.rejects( + verifyAuthorityRoute({ ...route, endpoint: "ws://127.0.0.1:4050/mesh", certificate: undefined }, { mode: "local-development", odinRoots: [twin, twin] }), + /listed more than once/, + ); +}); + test("a mutated endpoint invalidates the Odin signature", async () => { const { route, odin } = signedRoute(); await assert.rejects( @@ -177,6 +219,50 @@ test("a signature that is not 64 P1363 bytes is refused", async () => { assert.equal(await verifyP256(odin.publicKey, canonicalRoute(route), "not base64!"), false); }); +test("verifyP256 reads exactly the viewed bytes: a Uint8Array, a pooled Buffer and a subarray of a large allocation verify alike", async () => { + const { route, odin } = signedRoute(); + const payload = canonicalRoute(route); + const signature = route.certificate!.signature; + const pooled = Buffer.from(payload); + const large = Buffer.alloc(16 * 1024, 0xa5); + const subarray = large.subarray(1000, 1000 + payload.byteLength); + subarray.set(payload); + const offsetView = new Uint8Array(new ArrayBuffer(payload.byteLength + 64), 32, payload.byteLength); + offsetView.set(payload); + for (const view of [payload, pooled, subarray, offsetView]) { + assert.equal(await verifyP256(odin.publicKey, view, signature), true, `${view.constructor.name} byteOffset=${view.byteOffset}`); + } + const signatureBytes = base64ToBytes(signature); + const sigLarge = Buffer.alloc(16 * 1024, 0x5a); + sigLarge.set(signatureBytes, 4000); + const sigView = sigLarge.subarray(4000, 4064); + assert.equal(await verifyP256(odin.publicKey, payload, bytesToBase64(sigView)), true); + assert.equal(await verifyP256(odin.publicKey, Buffer.from(payload.subarray(1)), signature), false); +}); + +test("protocol ids are sorted ordinally into the transcript, whatever order the route lists them in", () => { + const { route } = signedRoute(); + const unsorted = { ...route, protocolIds: ["cultmesh.realtime.v1", "cultmesh.content.v1", "cultmesh.documents.v1"] }; + const certificate = route.certificate!; + const expected = canonicalFields( + "gamecult.cultmesh.route-certificate.v1", + route.verseId, + route.authorityRuntimeId, + route.endpoint, + "cultmesh.content.v1cultmesh.documents.v1cultmesh.realtime.v1", + "0", + route.generation, + certificate.providerKey.keyId, + certificate.providerKey.x, + certificate.providerKey.y, + certificate.odinKeyId, + String(certificate.issuedAtUnixMilliseconds), + String(certificate.expiresAtUnixMilliseconds), + ); + assert.deepEqual(canonicalRoute(unsorted), expected); + assert.deepEqual(canonicalRoute({ ...unsorted, protocolIds: [...unsorted.protocolIds!].reverse() }), expected); +}); + test("the provider session proof binds the nonce, the endpoint and the certified key", async () => { const { route, provider } = signedRoute(); const open = request(); @@ -196,11 +282,20 @@ test("isProtectedEndpoint is the C# rule: wss, https, or any scheme containing q } }); -test("isLoopbackEndpoint recognises localhost, 127.0.0.1 and ::1 only", () => { - for (const loopback of ["ws://localhost:4050/mesh", "ws://127.0.0.1:4050/mesh", "ws://[::1]:4050/mesh", "wss://LOCALHOST/mesh"]) { +// The accepted and refused hosts here are what `System.Uri.IsLoopback` answered +// through `CultMeshAuthorityTrustPolicy` on 2026-09-16; keep them in step. +test("isLoopbackEndpoint is the C# System.Uri.IsLoopback set", () => { + for (const loopback of [ + "ws://localhost:4050/mesh", "wss://LOCALHOST/mesh", "ws://loopback:4050/mesh", "ws://LoopBack:4050/mesh", + "ws://127.0.0.1:4050/mesh", "ws://127.0.0.2/mesh", "ws://127.255.255.254/mesh", "ws://127.1/mesh", "ws://0x7f000001/mesh", "ws://2130706433/mesh", + "ws://[::1]:4050/mesh", "ws://[0:0:0:0:0:0:0:1]:4050/mesh", "ws://[::ffff:127.0.0.1]/mesh", "ws://[::ffff:7f00:1]/mesh", + ]) { assert.equal(isLoopbackEndpoint(loopback), true, loopback); } - for (const remote of ["ws://192.0.2.10:4050/mesh", "wss://provider.example/mesh", "ws://127.0.0.2/mesh", "not a url"]) { + for (const remote of [ + "ws://192.0.2.10:4050/mesh", "wss://provider.example/mesh", "ws://[::ffff:127.0.0.2]/mesh", "ws://localhost./mesh", + "ws://localhost.localdomain/mesh", "ws://127.example/mesh", "ws://0.0.0.0/mesh", "ws://[::]/mesh", "not a url", + ]) { assert.equal(isLoopbackEndpoint(remote), false, remote); } }); diff --git a/scripts/mutate-cultmesh-authority.mjs b/scripts/mutate-cultmesh-authority.mjs index a8d705f7..3e093414 100644 --- a/scripts/mutate-cultmesh-authority.mjs +++ b/scripts/mutate-cultmesh-authority.mjs @@ -43,8 +43,43 @@ const mutations = [ }, { rule: "Odin root lookup by key id", - old: "candidate => candidate.keyId === certificate.odinKeyId", - new: "candidate => true", + old: "const root = roots.get(certificate.odinKeyId);", + new: "const root = [...roots.values()][0];", + }, + { + rule: "empty or whitespace signature is an unsigned route", + old: 'if (!certificate || signature === "") {', + new: "if (!certificate) {", + }, + { + rule: "root lookup precedes the validity window", + old: " const root = roots.get(certificate.odinKeyId);\n" + + " if (!root) throw new Error(`Odin key '${certificate.odinKeyId}' is not trusted by this consumer.`);\n" + + " const now = trust.now?.() ?? Date.now();\n" + + " if (now < certificate.issuedAtUnixMilliseconds || now >= certificate.expiresAtUnixMilliseconds) {\n" + + ' throw new Error("The Odin route certificate is not currently valid.");\n' + + " }\n", + new: " const now = trust.now?.() ?? Date.now();\n" + + " if (now < certificate.issuedAtUnixMilliseconds || now >= certificate.expiresAtUnixMilliseconds) {\n" + + ' throw new Error("The Odin route certificate is not currently valid.");\n' + + " }\n" + + " const root = roots.get(certificate.odinKeyId);\n" + + " if (!root) throw new Error(`Odin key '${certificate.odinKeyId}' is not trusted by this consumer.`);\n", + }, + { + rule: "duplicate Odin root key ids refuse the policy", + old: " if (roots.has(root.keyId)) throw new Error(`Odin root key id '${root.keyId}' is listed more than once in the trust policy.`);\n", + new: "", + }, + { + rule: "protocol ids are sorted into the transcript", + old: "].sort().join(", + new: "].join(", + }, + { + rule: "verifyP256 copies the viewed payload bytes, not the pool behind a Buffer", + old: " ownedBytes(payload),", + new: " payload.slice().buffer as ArrayBuffer,", }, { rule: "route transcript field order", @@ -74,6 +109,21 @@ const mutations = [ old: 'host === "::1"', new: 'host === "::2"', }, + { + rule: "loopback is all of 127.0.0.0/8", + old: "/^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/.test(host)", + new: 'host === "127.0.0.1"', + }, + { + rule: "loopback recognises the host name loopback", + old: 'host === "loopback" || ', + new: "", + }, + { + rule: "loopback recognises the IPv4-mapped ::ffff:127.0.0.1", + old: 'host === "::ffff:7f00:1" ||', + new: "", + }, { rule: "protected scheme: any scheme containing quic", old: 'scheme.includes("quic")', @@ -90,6 +140,11 @@ const original = readFileSync(target); const originalText = original.toString("utf8"); const originalDigest = digest(original); +// Anchors are written with "\n"; the checkout may be CRLF (autocrlf). Match +// the file's own line ending so a multi-line anchor cannot silently miss. +const eol = originalText.includes("\r\n") ? "\r\n" : "\n"; +const withEol = text => text.replace(/\r?\n/g, eol); + function digest(bytes) { return createHash("sha256").update(bytes).digest("hex"); } @@ -128,11 +183,12 @@ try { if (!controlPass) failed = true; else { for (const mutation of mutations) { - const count = occurrences(originalText, mutation.old); + const [old, replacement] = [withEol(mutation.old), withEol(mutation.new)]; + const count = occurrences(originalText, old); if (count !== 1) { throw new Error(`anchor for '${mutation.rule}' matched ${count} times, expected exactly 1`); } - writeFileSync(target, Buffer.from(originalText.replace(mutation.old, mutation.new), "utf8")); + writeFileSync(target, Buffer.from(originalText.replace(old, replacement), "utf8")); const pass = testsPass(); restore(); results.push({ rule: mutation.rule, outcome: pass ? "SURVIVED" : "killed" }); From 1590145a81d68b8b940e0da2bb0d2962b1506cec Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 16:27:06 +0200 Subject: [PATCH 0031/1002] Pin the TypeScript-signed direction of the authority parity check `contracts/cultmesh/authority-route-vectors.json` proves C# bytes verify in TypeScript. Nothing in the repo proved the reverse; Soul's probe did it once in a scratch directory. It is now a committed check in the same shape, mirrored: - `scripts/sign-cultmesh-authority-vectors.mjs` builds the route and session transcripts with the shared module, signs them with fixed TypeScript-owned test keys over awkward inputs (a quic scheme with a query, three unsorted protocol ids, non-ASCII generation text, priority 13), self-verifies, and writes `contracts/cultmesh/authority-route-vectors.ts-signed.json`. - `CultMeshAuthorityProofTests.AuthorityRouteVectorsSignedByTypeScriptVerifyHere` reads that file with keys taken from the file, asserts the protocol ids are unsorted, that `Validate` and `VerifySessionProof` accept, and that a priority-tampered route and a replayed nonce are refused. - The TypeScript vector test runs over both files, so a transcript change on the TypeScript side fails here before C# could trust a stale file. Checked negatively: one base64 character changed in the committed signature fails the C# test. Co-Authored-By: Claude Fable 5.1 --- .../authority-route-vectors.ts-signed.json | 45 ++++++++ .../test/cultmesh-authority.test.ts | 12 +- scripts/sign-cultmesh-authority-vectors.mjs | 109 ++++++++++++++++++ .../CultMeshAuthorityProofTests.cs | 78 +++++++++++++ 4 files changed, 241 insertions(+), 3 deletions(-) create mode 100644 contracts/cultmesh/authority-route-vectors.ts-signed.json create mode 100644 scripts/sign-cultmesh-authority-vectors.mjs diff --git a/contracts/cultmesh/authority-route-vectors.ts-signed.json b/contracts/cultmesh/authority-route-vectors.ts-signed.json new file mode 100644 index 00000000..726731ce --- /dev/null +++ b/contracts/cultmesh/authority-route-vectors.ts-signed.json @@ -0,0 +1,45 @@ +{ + "nowUnixMilliseconds": 1800000000000, + "odinRoot": { + "keyId": "odin-ts-vector", + "x": "lqw9TE0EyuDU5Ghe8SafIbBBYkhHMUF7HXJQUc0nXsw=", + "y": "nUj+Xhakih97JiJcTUNMHM9JIo7MVQaauuAkCXph+tw=" + }, + "route": { + "verseId": "aetheria", + "authorityRuntimeId": "aetheria-daemon", + "endpoint": "cultmesh-state+quic://provider.example:4433/?cert-sha256=ABCDEF", + "protocolIds": [ + "cultmesh.documents.v1", + "cultmesh.content.v1", + "cultmesh.realtime.v1" + ], + "priority": 13, + "generation": "ts-generation-ünïcode-∞-1", + "certificate": { + "providerKey": { + "keyId": "provider-ts-vector", + "x": "JKyjtWnoE5fhSWbeqr188SbReQWCjssf5mSMEa5pV+E=", + "y": "vtduzojDpbT49sbxBSsBQ+f3PG3rm+CUk/MTy2MM/ws=" + }, + "odinKeyId": "odin-ts-vector", + "issuedAtUnixMilliseconds": 1799999940000, + "expiresAtUnixMilliseconds": 1800003600000, + "signature": "NS5a7X8fNqTi1CdpPAcJaMmEsozwFRoygTW4z+JlhHFq7uaZcb4G7NwoEpPqo/Fv+UA7pNl5N+qUMuSD/oAq1Q==" + } + }, + "sessionProof": { + "request": { + "schemaVersion": "cultmesh.session_open.v2", + "messageId": "ts-vector-message-1", + "sourceRuntimeId": "ts-vector-consumer", + "verseId": "aetheria", + "authorityRuntimeId": "aetheria-daemon", + "protocolId": "cultmesh.documents.v1", + "routeGeneration": "ts-generation-ünïcode-∞-1", + "clientNonce": "HICtAmV++1MarssY04Tkyn1j9qVEcOMp/P5Ce1M0Yec=" + }, + "providerKeyId": "provider-ts-vector", + "providerSignature": "OgJHkmw3fhPRS5TXxZm94yZvkWAV5TPDuvG+/zIVlnU7OFENZ0Nn0Pdx0IT/vDfEWXD+8/+sCZVFIFwa4tUjsg==" + } +} diff --git a/packages/cultnet-ts/test/cultmesh-authority.test.ts b/packages/cultnet-ts/test/cultmesh-authority.test.ts index 03a9b9f0..5cd47245 100644 --- a/packages/cultnet-ts/test/cultmesh-authority.test.ts +++ b/packages/cultnet-ts/test/cultmesh-authority.test.ts @@ -30,7 +30,13 @@ import { } from "../src/cultmesh-authority"; const NOW = 1_800_000_000_000; -const VECTORS_PATH = join(__dirname, "..", "..", "..", "..", "contracts", "cultmesh", "authority-route-vectors.json"); +const CONTRACTS = join(__dirname, "..", "..", "..", "..", "contracts", "cultmesh"); +// Written by the C# reference (`CultMeshAuthorityProofTests.AuthorityRouteVectorsAreSharedWithTypeScript`). +const VECTORS_PATH = join(CONTRACTS, "authority-route-vectors.json"); +// Written by `scripts/sign-cultmesh-authority-vectors.mjs` and verified by the +// C# reference; checked here too so a transcript change on this side cannot +// leave a stale TypeScript-signed file behind for C# to trust. +const TS_SIGNED_VECTORS_PATH = join(CONTRACTS, "authority-route-vectors.ts-signed.json"); interface Vectors { nowUnixMilliseconds: number; @@ -305,8 +311,8 @@ test("base64 helpers round-trip across the 32 KiB chunk boundary", () => { assert.deepEqual(base64ToBytes(bytesToBase64(bytes)), bytes); }); -test("the C# reference vectors verify through the shared module", async () => { - const vectors = JSON.parse(readFileSync(VECTORS_PATH, "utf8")) as Vectors; +for (const [label, path] of [["C# reference", VECTORS_PATH], ["TypeScript-signed", TS_SIGNED_VECTORS_PATH]] as const) test(`the ${label} vectors verify through the shared module`, async () => { + const vectors = JSON.parse(readFileSync(path, "utf8")) as Vectors; const trust = { mode: "authenticated-remote" as const, odinRoots: [vectors.odinRoot], now: () => vectors.nowUnixMilliseconds }; await verifyAuthorityRoute(vectors.route, trust); await assert.rejects(verifyAuthorityRoute({ ...vectors.route, priority: 8 }, trust), /signature is invalid/); diff --git a/scripts/sign-cultmesh-authority-vectors.mjs b/scripts/sign-cultmesh-authority-vectors.mjs new file mode 100644 index 00000000..dd68e2b2 --- /dev/null +++ b/scripts/sign-cultmesh-authority-vectors.mjs @@ -0,0 +1,109 @@ +// The TypeScript -> C# direction of the CultMesh authority parity check. +// +// `contracts/cultmesh/authority-route-vectors.json` is written by the C# +// reference and verified by TypeScript. This script writes the mirror file, +// `contracts/cultmesh/authority-route-vectors.ts-signed.json`: TypeScript +// builds the route and session transcripts with the shared module +// (`packages/cultnet-ts/src/cultmesh-authority.ts`), signs them with fixed +// TypeScript-owned test keys, and the C# test +// `CultMeshAuthorityProofTests.AuthorityRouteVectorsSignedByTypeScriptVerifyHere` +// verifies the committed file with the reference implementation only. +// +// The inputs are deliberately awkward: a quic scheme with a query, three +// unsorted protocol ids, non-ASCII generation text, a non-default priority. +// +// npm run build --workspace packages/cultnet-ts +// node scripts/sign-cultmesh-authority-vectors.mjs +// +// Rewrite the file only when the transcript rules change; ECDSA signatures are +// randomised, so every run produces a different byte-for-byte file. The keys +// sign only this vector and prove nothing else. + +import { createHash, createPrivateKey, sign } from "node:crypto"; +import { existsSync, writeFileSync } from "node:fs"; +import { createRequire } from "node:module"; +import { dirname, join, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; + +const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), ".."); +const modulePath = join(repoRoot, "packages", "cultnet-ts", "dist", "cultmesh-authority.js"); +const outputPath = join(repoRoot, "contracts", "cultmesh", "authority-route-vectors.ts-signed.json"); +if (!existsSync(modulePath)) { + throw new Error(`${modulePath} is missing; run 'npm run build --workspace packages/cultnet-ts' first.`); +} +const { canonicalRoute, canonicalSession, verifyAuthorityRoute, verifyProviderSessionProof } = + createRequire(import.meta.url)(modulePath); + +const NOW = 1_800_000_000_000; +const odin = testKey("odin-ts-vector", { + kty: "EC", crv: "P-256", + x: "lqw9TE0EyuDU5Ghe8SafIbBBYkhHMUF7HXJQUc0nXsw", + y: "nUj-Xhakih97JiJcTUNMHM9JIo7MVQaauuAkCXph-tw", + d: "8X45DCbNJ7IR2iPoz5JUC_zB8fHh3zoUJUaAA7mnOnQ", +}); +const provider = testKey("provider-ts-vector", { + kty: "EC", crv: "P-256", + x: "JKyjtWnoE5fhSWbeqr188SbReQWCjssf5mSMEa5pV-E", + y: "vtduzojDpbT49sbxBSsBQ-f3PG3rm-CUk_MTy2MM_ws", + d: "ZSdIb9sLpAfb-nTAUR1Y1re4OsVM4ABJ1Gpq5pStSyQ", +}); + +function testKey(keyId, jwk) { + return { + privateKey: createPrivateKey({ key: jwk, format: "jwk" }), + publicKey: { + keyId, + x: Buffer.from(jwk.x, "base64url").toString("base64"), + y: Buffer.from(jwk.y, "base64url").toString("base64"), + }, + }; +} + +function signP1363(privateKey, payload) { + return sign("sha256", payload, { key: privateKey, dsaEncoding: "ieee-p1363" }).toString("base64"); +} + +const unsigned = { + verseId: "aetheria", + authorityRuntimeId: "aetheria-daemon", + endpoint: "cultmesh-state+quic://provider.example:4433/?cert-sha256=ABCDEF", + protocolIds: ["cultmesh.documents.v1", "cultmesh.content.v1", "cultmesh.realtime.v1"], + priority: 13, + generation: "ts-generation-ünïcode-∞-1", + certificate: { + providerKey: provider.publicKey, + odinKeyId: odin.publicKey.keyId, + issuedAtUnixMilliseconds: NOW - 60_000, + expiresAtUnixMilliseconds: NOW + 3_600_000, + signature: "", + }, +}; +const route = { + ...unsigned, + certificate: { ...unsigned.certificate, signature: signP1363(odin.privateKey, canonicalRoute(unsigned)) }, +}; +const request = { + schemaVersion: "cultmesh.session_open.v2", + messageId: "ts-vector-message-1", + sourceRuntimeId: "ts-vector-consumer", + verseId: "aetheria", + authorityRuntimeId: "aetheria-daemon", + protocolId: "cultmesh.documents.v1", + routeGeneration: route.generation, + clientNonce: createHash("sha256").update("ts-vector-nonce").digest("base64"), +}; +const providerSignature = signP1363(provider.privateKey, canonicalSession(request, route.endpoint)); + +// A file TypeScript cannot verify itself would make a C# refusal meaningless. +await verifyAuthorityRoute(route, { mode: "authenticated-remote", odinRoots: [odin.publicKey], now: () => NOW }); +if (!await verifyProviderSessionProof(request, route.endpoint, provider.publicKey, providerSignature)) { + throw new Error("The TypeScript module refused its own session proof."); +} + +writeFileSync(outputPath, JSON.stringify({ + nowUnixMilliseconds: NOW, + odinRoot: odin.publicKey, + route, + sessionProof: { request, providerKeyId: provider.publicKey.keyId, providerSignature }, +}, null, 2) + "\n"); +console.log(`wrote ${outputPath}`); diff --git a/tests/GameCult.Mesh.Tests/CultMeshAuthorityProofTests.cs b/tests/GameCult.Mesh.Tests/CultMeshAuthorityProofTests.cs index 44c078cc..f89cb40c 100644 --- a/tests/GameCult.Mesh.Tests/CultMeshAuthorityProofTests.cs +++ b/tests/GameCult.Mesh.Tests/CultMeshAuthorityProofTests.cs @@ -332,6 +332,84 @@ public sealed class CultMeshAuthorityProofTests CultMeshAuthorityProof.VerifySessionProof(request, accepted, verseId, route, trust, now).Should().BeTrue(); } + // The other direction. `scripts/sign-cultmesh-authority-vectors.mjs` builds + // the transcripts with the TypeScript module and signs them with + // TypeScript-owned keys over awkward inputs (a quic scheme, unsorted + // protocol ids, non-ASCII generation text, a non-default priority). Only + // the reference implementation judges the file here; the keys come from + // the file, never from this side. + [Test] + public void AuthorityRouteVectorsSignedByTypeScriptVerifyHere() + { + var path = Path.Combine(RepoRoot(), "contracts", "cultmesh", "authority-route-vectors.ts-signed.json"); + using var vectors = JsonDocument.Parse(File.ReadAllText(path)); + var rootElement = vectors.RootElement; + var routeElement = rootElement.GetProperty("route"); + var certificateElement = routeElement.GetProperty("certificate"); + var odinRoot = PublicKey(rootElement.GetProperty("odinRoot")); + var providerKey = PublicKey(certificateElement.GetProperty("providerKey")); + var certificate = new CultMeshRouteCertificate( + providerKey, + certificateElement.GetProperty("odinKeyId").GetString()!, + certificateElement.GetProperty("issuedAtUnixMilliseconds").GetInt64(), + certificateElement.GetProperty("expiresAtUnixMilliseconds").GetInt64(), + certificateElement.GetProperty("signature").GetString()!); + var protocolIds = routeElement.GetProperty("protocolIds").EnumerateArray().Select(value => value.GetString()!).ToArray(); + var priority = routeElement.GetProperty("priority").GetInt32(); + CultMeshAuthorityRoute Route(int routePriority) => new( + routeElement.GetProperty("authorityRuntimeId").GetString()!, + routeElement.GetProperty("endpoint").GetString()!, + protocolIds, + routePriority, + routeElement.GetProperty("generation").GetString(), + certificate); + var route = Route(priority); + var trust = new CultMeshAuthorityTrustPolicy(CultMeshAuthorityTrustMode.AuthenticatedRemote, new[] { odinRoot }); + var now = DateTimeOffset.FromUnixTimeMilliseconds(rootElement.GetProperty("nowUnixMilliseconds").GetInt64()); + var verseId = routeElement.GetProperty("verseId").GetString()!; + + protocolIds.Should().NotBeInAscendingOrder(StringComparer.Ordinal, "the vector must exercise the sort"); + trust.Validate(verseId, route, now); + Action tampered = () => trust.Validate(verseId, Route(priority + 1), now); + tampered.Should().Throw() + .Which.Failure.Message.Should().Be("The Odin route certificate signature is invalid."); + + var proofElement = rootElement.GetProperty("sessionProof"); + var requestElement = proofElement.GetProperty("request"); + var request = new GameCult.Networking.CultMeshSessionOpenMessage + { + MessageId = requestElement.GetProperty("messageId").GetString(), + SourceRuntimeId = requestElement.GetProperty("sourceRuntimeId").GetString(), + VerseId = requestElement.GetProperty("verseId").GetString(), + AuthorityRuntimeId = requestElement.GetProperty("authorityRuntimeId").GetString(), + ProtocolId = requestElement.GetProperty("protocolId").GetString(), + RouteGeneration = requestElement.GetProperty("routeGeneration").GetString(), + ClientNonce = requestElement.GetProperty("clientNonce").GetString() + }; + var accepted = Accepted(request, proofElement.GetProperty("providerSignature").GetString()!); + accepted.ProviderKeyId = proofElement.GetProperty("providerKeyId").GetString()!; + CultMeshAuthorityProof.VerifySessionProof(request, accepted, verseId, route, trust, now).Should().BeTrue(); + + var replayed = new GameCult.Networking.CultMeshSessionOpenMessage + { + MessageId = request.MessageId, + SourceRuntimeId = request.SourceRuntimeId, + VerseId = request.VerseId, + AuthorityRuntimeId = request.AuthorityRuntimeId, + ProtocolId = request.ProtocolId, + RouteGeneration = request.RouteGeneration, + ClientNonce = "replayed" + }; + var replayedAccepted = Accepted(replayed, accepted.ProviderSignature!); + replayedAccepted.ProviderKeyId = accepted.ProviderKeyId; + CultMeshAuthorityProof.VerifySessionProof(replayed, replayedAccepted, verseId, route, trust, now).Should().BeFalse(); + } + + private static CultMeshEcdsaP256PublicKey PublicKey(JsonElement element) => new( + element.GetProperty("keyId").GetString()!, + element.GetProperty("x").GetString()!, + element.GetProperty("y").GetString()!); + private static string RepoRoot() { var directory = new DirectoryInfo(TestContext.CurrentContext.TestDirectory); From cf1203a6077f96786ad260a77db9220294a3892c Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 16:28:29 +0200 Subject: [PATCH 0032/1002] Run the C# authority vector checks in CI `CultMeshAuthorityProofTests` verifies both vector files with the C# reference, but no workflow ran it. The portability workflow's reactive-and-resource-lifetime job is the one that already builds and runs `GameCult.Mesh.Tests` on every push to main and codex branches and on every pull request, on Windows and Ubuntu, so it gains one step: `dotnet test --filter FullyQualifiedName~AuthorityProof`. The interop workflow was not chosen: it runs on Windows only, on main pushes only, and runs no Mesh tests. It already covers the TypeScript direction through `npm test --workspace packages/cultnet-ts`. CULTMESH_WRITE_VECTORS stays unset in CI; the committed files are the contract. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/cultmesh-portability.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/cultmesh-portability.yml b/.github/workflows/cultmesh-portability.yml index ce361fc8..55d2bea8 100644 --- a/.github/workflows/cultmesh-portability.yml +++ b/.github/workflows/cultmesh-portability.yml @@ -95,3 +95,15 @@ jobs: dotnet test tests/GameCult.Mesh.Tests/GameCult.Mesh.Tests.csproj --filter FullyQualifiedName~Document_OneHundredThousandDistinctLeaseCyclesLeaveNoResourcesOrCallbacks --logger "console;verbosity=minimal" + + # Both directions of the CultMesh authority vectors: the C#-written + # file (contracts/cultmesh/authority-route-vectors.json) and the + # TypeScript-signed file (authority-route-vectors.ts-signed.json) are + # verified by the C# reference here; the TypeScript side verifies both + # in `npm test --workspace packages/cultnet-ts`. CULTMESH_WRITE_VECTORS + # is never set in CI: the committed files are the contract. + - name: Verify the CultMesh authority vectors with the C# reference + run: >- + dotnet test tests/GameCult.Mesh.Tests/GameCult.Mesh.Tests.csproj + --filter FullyQualifiedName~AuthorityProof + --logger "console;verbosity=minimal" From 0e4f479ac53f274fe2d8df45d88f72a18318867c Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 16:34:31 +0200 Subject: [PATCH 0033/1002] Make the mutation runner leave no mutant behind Every test run inside the runner rebuilds `packages/cultnet-ts/dist/` from the mutant under test, so after the final restore of the source the compiled module still carried the last mutant. The runner now rebuilds the package after the restore and asserts `dist/cultmesh-authority.js` contains a sentinel the last listed mutation removes, checked against the list itself so a reordering cannot make the assertion vacuous. The original bytes are also written to `.mutation-original` before the first write and removed after the verified restore. A run killed mid-mutation is repaired from that sidecar at the next run's start, instead of by whoever notices git status. Co-Authored-By: Claude Fable 5.1 --- scripts/mutate-cultmesh-authority.mjs | 45 ++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/scripts/mutate-cultmesh-authority.mjs b/scripts/mutate-cultmesh-authority.mjs index 3e093414..cb4cae16 100644 --- a/scripts/mutate-cultmesh-authority.mjs +++ b/scripts/mutate-cultmesh-authority.mjs @@ -7,18 +7,29 @@ // bytes with a digest check, never from git. A no-op control runs first through // the same write path so a false kill from the write itself cannot hide. // +// The original bytes also live in `.mutation-original` from the first +// write until a verified restore; a run killed mid-mutation is repaired from +// that sidecar by the next run, not by git. After the final restore the +// package is rebuilt so `dist/` never carries the last mutant. +// // node scripts/mutate-cultmesh-authority.mjs import { createHash } from "node:crypto"; import { execFileSync } from "node:child_process"; -import { readFileSync, writeFileSync } from "node:fs"; +import { existsSync, readFileSync, unlinkSync, writeFileSync } from "node:fs"; import { dirname, join, resolve } from "node:path"; import { fileURLToPath } from "node:url"; const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), ".."); const target = join(repoRoot, "packages", "cultnet-ts", "src", "cultmesh-authority.ts"); +const sidecar = `${target}.mutation-original`; +const dist = join(repoRoot, "packages", "cultnet-ts", "dist", "cultmesh-authority.js"); const npmCli = process.env.npm_execpath ?? join(dirname(process.execPath), "node_modules", "npm", "bin", "npm-cli.js"); +// Present in the restored source and compiled verbatim into dist/; the last +// mutation in the list removes it, which is what makes the post-rebuild check +// distinguish a rebuilt dist/ from one still carrying that mutant. +const sentinel = 'scheme === "https"'; const mutations = [ { @@ -136,6 +147,12 @@ const mutations = [ }, ]; +if (existsSync(sidecar)) { + writeFileSync(target, readFileSync(sidecar)); + unlinkSync(sidecar); + console.log(`repaired ${target} from ${sidecar}: a previous run stopped before restoring it`); +} + const original = readFileSync(target); const originalText = original.toString("utf8"); const originalDigest = digest(original); @@ -149,12 +166,16 @@ function digest(bytes) { return createHash("sha256").update(bytes).digest("hex"); } +function npm(...args) { + execFileSync(process.execPath, [npmCli, ...args, "--workspace", "packages/cultnet-ts"], { + cwd: repoRoot, + stdio: ["ignore", "pipe", "pipe"], + }); +} + function testsPass() { try { - execFileSync(process.execPath, [npmCli, "run", "test", "--workspace", "packages/cultnet-ts"], { - cwd: repoRoot, - stdio: ["ignore", "pipe", "pipe"], - }); + npm("run", "test"); return true; } catch { return false; @@ -176,6 +197,12 @@ function occurrences(text, needle) { const results = []; let failed = false; +const last = mutations[mutations.length - 1]; +if (!originalText.includes(sentinel) || originalText.replace(withEol(last.old), withEol(last.new)).includes(sentinel)) { + throw new Error(`the sentinel '${sentinel}' must be in the source and removed by the last mutation ('${last.rule}')`); +} + +writeFileSync(sidecar, original); try { writeFileSync(target, Buffer.from(originalText, "utf8")); const controlPass = testsPass(); @@ -198,7 +225,15 @@ try { } finally { restore(); } +unlinkSync(sidecar); + +// Every test run above rebuilt dist/ from a mutant; put the restored source back in it. +npm("run", "build"); +if (!readFileSync(dist, "utf8").includes(sentinel)) { + throw new Error(`${dist} does not contain '${sentinel}' after the rebuild; it still carries a mutant`); +} for (const result of results) console.log(`${result.outcome.padEnd(9)} ${result.rule}`); console.log(`restored ${target} sha256=${originalDigest}`); +console.log(`rebuilt ${dist}`); process.exit(failed ? 1 : 0); From e3f56c183f58b5bcc2248709fdf8c9372a1d3586 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 16:37:04 +0200 Subject: [PATCH 0034/1002] Record the Cut 1 fix batch Both parity directions are now pinned in the repo and run in CI, the public verifier copies its bytes, and the four edge rules match the C# reference, with the loopback set probed rather than assumed. One scar: the runner's multi-line anchors had never matched on a CRLF checkout, so two earlier kill claims rested on an LF-on-disk state. One browser-side divergence remains and is in Hands. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index b584b409..237965c0 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -51,6 +51,36 @@ a probe over adversarial inputs, which nothing in the repo yet pins. Found: ignores `exports`, so `cultnet-ts/authority` is unresolvable from that package until Cut 4 changes it; the root re-export covers it today. +**The Cut 1 fix batch landed** at `c2ffc32` (`verifyP256` copies its bytes; +empty or whitespace signature is unsigned; root lookup before the validity +window; duplicate root key ids refuse at first use; the loopback set is +C#'s, probed through the public policy: `127.0.0.0/8` in any spelling +`URL` normalises, `::1`, the IPv4-mapped `::ffff:7f00:1`, `localhost`, +`loopback`; `localhost.`, `0.0.0.0`, `::` and `::ffff:127.0.0.2` are not), +`1590145` (`scripts/sign-cultmesh-authority-vectors.mjs` writes +`contracts/cultmesh/authority-route-vectors.ts-signed.json` over adversarial +inputs and a C# test verifies it; a one-character change to the committed +signature fails that test), `cf1203a` (`cultmesh-portability.yml` runs +`dotnet test --filter AuthorityProof` on both OSes on every push; the +interop workflow was Windows-only and main-only) and `0e4f479` (the runner +rebuilds `dist/` after the final restore and asserts a sentinel from the +restored source; a sidecar of the original bytes is written first and +repaired from at the next start). Twenty mutations, twenty killed. Tests +74, 17, 10; closure smoke four tarballs. + +Scars from the batch: **the runner's two multi-line anchors matched nothing +on a CRLF checkout** (the tree is `autocrlf=true`, HEAD is LF, the anchors +were `\n`), so the runner would have thrown at those entries; the earlier +"killed" claims for the transcript-order and nonce mutations came from an +LF-on-disk state. Anchors are now normalised to the file's EOL. Fixes 1 and +2 share one commit because Hands had made both before committing. +**Still open after the batch:** the browser client's local-development +short-circuit at `packages/cultmesh-browser/src/index.ts:915` tests +`!route.certificate` where the shared verifier now treats an empty +signature as unsigned, so such a route passes the verifier and is then +asked for a provider proof, where C# would not ask. In Hands as a one-line +alignment through a shared predicate. + Anchor: repo `F:\Projects\CultLib`, branch `main`, HEAD `8d8ad568aa280bac34bf123503a9e38c175eb558`. The three commits since the original anchor `f2cd2eb4` (`bf9f6f7`, `3c29fc9`, `8d8ad56`) touch only this From a801e0a441573aa93bfb3f5776116dfd82e45fa0 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 16:43:09 +0200 Subject: [PATCH 0035/1002] Share one reading of an unsigned certificate between verifier and browser The browser's local-development session-proof short-circuit tested `!route.certificate`, while the shared verifier already treated an empty or whitespace signature as unsigned, matching C# `Verify` (`:120`). A loopback route carrying a blank-signature certificate therefore passed the verifier and was then refused for lacking a provider key, where C# returns `IsLocalDevelopment` and skips the session proof. `isUnsignedCertificate` in `cultnet-ts/authority` is now the one owner of that reading; the verifier and the browser both call it. A browser test pins the local-development loopback open without a provider proof, the signed loopback certificate still demanding it, and the remote counterpart refused in both trust modes. The mutation runner gains two predicate mutations (whitespace treated as signed; only a missing certificate treated as unsigned), both killed by the existing whitespace-signature test in cultnet-ts. Co-Authored-By: Claude Fable 5.1 --- packages/cultmesh-browser/src/index.ts | 7 ++++- .../test/cultmesh-browser.test.ts | 31 +++++++++++++++++++ packages/cultnet-ts/src/cultmesh-authority.ts | 17 +++++++--- packages/cultnet-ts/src/index.ts | 1 + scripts/mutate-cultmesh-authority.mjs | 11 +++++-- 5 files changed, 58 insertions(+), 9 deletions(-) diff --git a/packages/cultmesh-browser/src/index.ts b/packages/cultmesh-browser/src/index.ts index 86d933d1..0398d313 100644 --- a/packages/cultmesh-browser/src/index.ts +++ b/packages/cultmesh-browser/src/index.ts @@ -19,6 +19,7 @@ import { base64ToBytes, bytesToBase64, isLoopbackEndpoint, + isUnsignedCertificate, verifyAuthorityRoute, verifyProviderSessionProof, type CultMeshAuthorityIdentity, @@ -912,7 +913,11 @@ async function validateSessionAcceptance( `expected '${request.verseId}/${request.authorityRuntimeId}/${protocolId}/${route.generation}'.`, ); } - if (trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint) && !route.certificate) return undefined; + // `CultMeshVerifiedAuthorityRoute.IsLocalDevelopment` in C#: an unsigned + // loopback route under local-development needs no provider session proof. + if (trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint) && isUnsignedCertificate(route.certificate)) { + return undefined; + } const providerKey = route.certificate?.providerKey; if (!providerKey || message.providerKeyId !== providerKey.keyId || !message.providerSignature) { return new Error("CultMesh authority did not prove possession of the Odin-certified provider key."); diff --git a/packages/cultmesh-browser/test/cultmesh-browser.test.ts b/packages/cultmesh-browser/test/cultmesh-browser.test.ts index 6c169d93..77237bb9 100644 --- a/packages/cultmesh-browser/test/cultmesh-browser.test.ts +++ b/packages/cultmesh-browser/test/cultmesh-browser.test.ts @@ -236,6 +236,37 @@ test("browser client rejects a credential-free authority impersonator", async () ); }); +test("browser client opens an unsigned-certificate loopback session under local-development without a provider proof, as in C#", async () => { + const connect = (route: CultMeshBrowserRoute, trust: { mode: "local-development" | "authenticated-remote"; odinRoots: CultMeshBrowserP256PublicKey[] }) => + CultMeshBrowserClient.connect({ + ...route, + runtimeId: "browser-unsigned-certificate-test", + rendezvous: { resolve: async () => route }, + trust, + socketFactory: () => handshakeOnlySocket(route), + }); + const blank = (route: CultMeshBrowserRoute) => ({ ...route, certificate: { ...route.certificate!, signature: "" } }); + + const loopback = await createSignedRoute("ws://127.0.0.1:4501/mesh"); + const localTrust = { mode: "local-development" as const, odinRoots: [loopback.odinPublic] }; + const client = await connect(blank(loopback.route), localTrust); + assert.equal(client.state, "connected"); + await client.dispose(); + // A signed loopback certificate is an authenticated route even under + // local-development; the provider must still prove its key. + await assert.rejects(connect(loopback.route, localTrust), /did not prove possession/); + + const remote = await createSignedRoute("wss://provider.example/mesh"); + await assert.rejects( + connect(blank(remote.route), { mode: "local-development", odinRoots: [remote.odinPublic] }), + /Odin-signed authority certificate/, + ); + await assert.rejects( + connect(blank(remote.route), { mode: "authenticated-remote", odinRoots: [remote.odinPublic] }), + /Odin-signed authority certificate/, + ); +}); + test("browser client rejects a mutated or expired signed route before opening a provider socket", async () => { const fixture = await createSignedRoute("wss://provider.example/mesh"); let opened = false; diff --git a/packages/cultnet-ts/src/cultmesh-authority.ts b/packages/cultnet-ts/src/cultmesh-authority.ts index fd0fcce6..40bcff1a 100644 --- a/packages/cultnet-ts/src/cultmesh-authority.ts +++ b/packages/cultnet-ts/src/cultmesh-authority.ts @@ -44,23 +44,30 @@ export interface CultMeshAuthorityTrustPolicy { now?: () => number; } +// A missing certificate, or one whose signature is empty or whitespace, is an +// unsigned route (`CultMeshRouteCertificate` trims the signature; `Verify` +// treats a whitespace signature as no certificate). The verifier and the +// browser's session-proof short-circuit share this one reading, as the C# +// `Verify` and `IsLocalDevelopment` do. +export function isUnsignedCertificate(certificate: CultMeshAuthorityRouteCertificate | undefined): boolean { + return !certificate || certificate.signature.trim() === ""; +} + // Rule for rule, this is `CultMeshAuthorityTrustPolicy.Verify` in the C# // reference, in the same order: unsigned, channel protection, root lookup, // validity window, signature. The same input yields the same refusal on both -// sides. A certificate whose signature is empty or whitespace is unsigned -// (`CultMeshRouteCertificate` trims the signature; `Verify` treats a -// whitespace signature as no certificate). +// sides. export async function verifyAuthorityRoute( route: CultMeshAuthorityRouteView, trust: CultMeshAuthorityTrustPolicy, ): Promise { const roots = trustedOdinRoots(trust); const certificate = route.certificate; - const signature = certificate?.signature.trim() ?? ""; - if (!certificate || signature === "") { + if (!certificate || isUnsignedCertificate(certificate)) { if (trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint)) return; throw new Error("Remote CultMesh routes require an Odin-signed authority certificate."); } + const signature = certificate.signature.trim(); if (!isProtectedEndpoint(route.endpoint) && !(trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint))) { throw new Error("Authenticated remote CultMesh routes require TLS or QUIC channel protection."); } diff --git a/packages/cultnet-ts/src/index.ts b/packages/cultnet-ts/src/index.ts index e9260122..4987b177 100644 --- a/packages/cultnet-ts/src/index.ts +++ b/packages/cultnet-ts/src/index.ts @@ -70,6 +70,7 @@ export { canonicalSession, isLoopbackEndpoint, isProtectedEndpoint, + isUnsignedCertificate, verifyAuthorityRoute, verifyP256, verifyProviderSessionProof, diff --git a/scripts/mutate-cultmesh-authority.mjs b/scripts/mutate-cultmesh-authority.mjs index cb4cae16..6053cb14 100644 --- a/scripts/mutate-cultmesh-authority.mjs +++ b/scripts/mutate-cultmesh-authority.mjs @@ -58,9 +58,14 @@ const mutations = [ new: "const root = [...roots.values()][0];", }, { - rule: "empty or whitespace signature is an unsigned route", - old: 'if (!certificate || signature === "") {', - new: "if (!certificate) {", + rule: "isUnsignedCertificate treats a whitespace signature as unsigned", + old: 'return !certificate || certificate.signature.trim() === "";', + new: 'return !certificate || certificate.signature === "";', + }, + { + rule: "isUnsignedCertificate treats an empty signature as unsigned", + old: 'return !certificate || certificate.signature.trim() === "";', + new: "return !certificate;", }, { rule: "root lookup precedes the validity window", From 04087c6ab63905c8eccc036d241a88ed2edd3b29 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 16:45:00 +0200 Subject: [PATCH 0036/1002] Record the browser session alignment and widen the name grep The browser's local-development short-circuit reads "unsigned" through the shared predicate, so the two TypeScript sides cannot disagree with each other or with C#. The negative grep now names the two functions the fix batch added. The generated contracts file's line-ending churn is recorded where unassigned findings live. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 237965c0..2513e85c 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -78,8 +78,18 @@ LF-on-disk state. Anchors are now normalised to the file's EOL. Fixes 1 and short-circuit at `packages/cultmesh-browser/src/index.ts:915` tests `!route.certificate` where the shared verifier now treats an empty signature as unsigned, so such a route passes the verifier and is then -asked for a provider proof, where C# would not ask. In Hands as a one-line -alignment through a shared predicate. +asked for a provider proof, where C# would not ask. **Landed** at `a801e0a`: +`isUnsignedCertificate` is exported from the shared module and used by the +verifier and the browser's session check, with a browser test for the +blank-signature loopback route, the signed loopback route that still needs +a proof, and the blank-signature remote refused in both modes. Twenty-one +mutations, twenty-one killed. Tests 74, 18, 10. Second Soul pass in flight. + +Seen by Hands, recorded for section 15: `packages/cultnet-ts/src/generated/swarm-contracts.generated.ts` +is rewritten with LF by every build while the tree is `autocrlf=true`, so +it shows modified with zero content diff after any build; the generator's +line endings and the repo's normalisation disagree, and every pass discards +the churn by hand. Anchor: repo `F:\Projects\CultLib`, branch `main`, HEAD `8d8ad568aa280bac34bf123503a9e38c175eb558`. The three commits since the @@ -577,8 +587,12 @@ Verification: `cultmesh-browser` tarball must resolve `cultnet-ts/authority` from the registry-shaped install at `scripts/test-typescript-package-closure.mjs:63-72`). - Negative greps (must return nothing): - `rg -n "crypto\.subtle\.(verify|importKey)|function (verifyAuthorityRoute|canonicalRoute|canonicalSession|canonicalFields|verifyP256|isLoopbackEndpoint)" packages/cultmesh-browser/src packages/cultmesh-ts/src` + `rg -n "crypto\.subtle\.(verify|importKey)|function (verifyAuthorityRoute|canonicalRoute|canonicalSession|canonicalFields|verifyP256|isLoopbackEndpoint|isProtectedEndpoint|isUnsignedCertificate)" packages/cultmesh-browser/src packages/cultmesh-ts/src` and `rg -n "cultmesh-browser" packages/cultmesh-ts/package.json packages/cultnet-ts/package.json`. + *(The name list grew by two after the fix batch: `isProtectedEndpoint`, + written fresh as the C# rule, and `isUnsignedCertificate`, the shared + reading of "unsigned" the browser's session check now uses. Soul noted + the grep pins names, not structure; a shim under another name passes it.)* - Operator-only: none. ## 7. Cut 2 (behaviour, pure TypeScript): the realtime frame codec From b7bb483989382f15f62faece612612e5db7dbb20 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 17:02:03 +0200 Subject: [PATCH 0037/1002] Record Soul's second Cut 1 pass The cut closes on its invariants. What is left is the gap between the C# rules as written and as executed: the route is cleaned before the transcript on one side and transcribed raw on the other, whitespace and loopback are decided by different alphabets at the edges, and the browser guard is enforced by name only. All in a final Hands batch before Cut 4 makes a TypeScript signer real. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 42 +++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 2513e85c..69e94093 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -83,7 +83,47 @@ asked for a provider proof, where C# would not ask. **Landed** at `a801e0a`: verifier and the browser's session check, with a browser test for the blank-signature loopback route, the signed loopback route that still needs a proof, and the blank-signature remote refused in both modes. Twenty-one -mutations, twenty-one killed. Tests 74, 18, 10. Second Soul pass in flight. +mutations, twenty-one killed. Tests 74, 18, 10. + +**Second Soul pass, 2026-09-16.** Held: byte copy, root before window, duplicate +root ids refusing on the unsigned path in either insertion order, the sort +pinned, the U+001F separator on both sides, 33 of 39 field tampers failing the +C# test with the survivors explained, the runner repairing itself after a +SIGKILL and leaving `dist/` free of every mutant string, all 21 anchors +matching once on both LF and CRLF copies, and every test and grep. Cut 1 +closes on its stated invariants. Four edge divergences from the C# rules +remain, with one guard gap, to be fixed before Cut 4 makes a non-C# signer +real (in Hands): + +- **`isLoopbackEndpoint` is not `Uri.IsLoopback`**: 15 of 90 probed + endpoints disagree. Seven are reachable and TS-wider (a trailing dot on + the host, `ws:` without `//`, a backslash separator, fullwidth characters, + a tab), because `URL` normalises what C# refuses; eight are C#-wider and + unreachable in the browser (zone ids the `URL` parser throws on, + `file:`/`mailto:` schemes the filter drops). The doc comment claimed + equivalence. Low: local-development only. +- **`trim()` is not `char.IsWhiteSpace`** at U+0085 (C# whitespace, TS not) + and U+FEFF (TS trims, C# does not), so a signature of either is + "unsigned" on one side and "signed" on the other; both are carriable on + the rendezvous wire. Low, fail-open only where an absent certificate is + already accepted. +- **C# cleans the route before the transcript and TS transcribes raw**: + duplicate or padded protocol ids, padded generation and padded key ids + verify in C# and refuse in TS, and an absent protocol list gets a default + in TS and `""` in C#. Latent while every signer is C#; live at the first + TS signer. Low-medium. +- **Two C# refusals collapse into one TS message** (not base64; not P1363). + Low. +- **A local `=== ""` shim beside the shared call in the browser survives + every test**, because no browser test uses a whitespace signature; the + name grep is silent by construction. Low-medium. +- **No workflow runs the `cultnet-ts` tests on Linux**, and the interop + workflow is Windows-only and main-only; on a `codex/**` push only the C# + half of the vector check runs. Low. +- Recorded, not a defect: the TS-signed vector is not reproducible + byte-for-byte (random `k`); the C# test pins that the committed bytes + verify under current rules, and the TS test pins that the committed file + verifies under the current module. Seen by Hands, recorded for section 15: `packages/cultnet-ts/src/generated/swarm-contracts.generated.ts` is rewritten with LF by every build while the tree is `autocrlf=true`, so From e67e695a630f88b2ea81f560ffee1ad70d53fde9 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 17:09:48 +0200 Subject: [PATCH 0038/1002] Read whitespace and the signature refusals as C# does Two edge alignments that have to land together, because the test for the first asserts the messages of the second. `String.prototype.trim` is not `char.IsWhiteSpace`. JavaScript counts U+FEFF, which .NET does not; .NET counts U+0085, which JavaScript does not. Every `trim()` in the shared verifier stood in for a C# `IsNullOrWhiteSpace` or `Trim()`, so both were wrong at those two code points: a U+0085 signature was an unsigned route to C# and a bad signature to TypeScript, and a U+FEFF signature the other way round. `isCSharpWhiteSpace`, `trimCSharp` and `isNullOrWhiteSpaceCSharp` are that set, and `isUnsignedCertificate` and the signature trim now use it. The test pins all 34 code points Soul probed on both sides against the answers .NET 10 gave on 2026-09-16. The C# `Verify` also has three signature refusals, not one: a signature that is not base64, a decoded length that is not 64, and a signature that decodes but does not verify. TypeScript collapsed the first two into the third and lost the distinction the reference draws. Split, with each message pinned by its exact C# string. `verifyP256` keeps its own checks: it is the silent `VerifySession` path, which returns false for all three. Mutations: the whitespace-set site reverted to `String.prototype.trim`, U+0085 dropped from the set, and the two new messages merged back into "invalid" -- each killed by its test. Co-Authored-By: Claude Fable 5.1 --- packages/cultnet-ts/src/cultmesh-authority.ts | 51 +++++++++++++- packages/cultnet-ts/src/index.ts | 3 + .../test/cultmesh-authority.test.ts | 68 ++++++++++++++++++- scripts/mutate-cultmesh-authority.mjs | 25 ++++++- 4 files changed, 142 insertions(+), 5 deletions(-) diff --git a/packages/cultnet-ts/src/cultmesh-authority.ts b/packages/cultnet-ts/src/cultmesh-authority.ts index 40bcff1a..f3a9121d 100644 --- a/packages/cultnet-ts/src/cultmesh-authority.ts +++ b/packages/cultnet-ts/src/cultmesh-authority.ts @@ -44,13 +44,45 @@ export interface CultMeshAuthorityTrustPolicy { now?: () => number; } +/** + * `char.IsWhiteSpace` in .NET: Unicode Zs, plus Zl (U+2028), Zp (U+2029), + * U+0009-U+000D and U+0085. + * + * `String.prototype.trim` is a different set and cannot stand in for it: + * JavaScript counts U+FEFF, which .NET does not, and skips U+0085, which .NET + * counts. U+200B and U+180E are whitespace to neither (U+180E left Zs in + * Unicode 6.3). Wherever the C# reference writes `IsNullOrWhiteSpace` or + * `Trim()`, this is the set it means, so this is the set the TypeScript rules + * use. + */ +export function isCSharpWhiteSpace(character: string): boolean { + const code = character.charCodeAt(0); + return code === 0x20 || (code >= 0x09 && code <= 0x0d) || code === 0x85 || code === 0xa0 || + code === 0x1680 || (code >= 0x2000 && code <= 0x200a) || + code === 0x2028 || code === 0x2029 || code === 0x202f || code === 0x205f || code === 0x3000; +} + +/** `string.Trim()` in .NET, over `isCSharpWhiteSpace`. */ +export function trimCSharp(value: string): string { + let start = 0; + let end = value.length; + while (start < end && isCSharpWhiteSpace(value[start]!)) start += 1; + while (end > start && isCSharpWhiteSpace(value[end - 1]!)) end -= 1; + return value.slice(start, end); +} + +/** `string.IsNullOrWhiteSpace` in .NET, over `isCSharpWhiteSpace`. */ +export function isNullOrWhiteSpaceCSharp(value: string | undefined | null): boolean { + return value === undefined || value === null || trimCSharp(value).length === 0; +} + // A missing certificate, or one whose signature is empty or whitespace, is an // unsigned route (`CultMeshRouteCertificate` trims the signature; `Verify` // treats a whitespace signature as no certificate). The verifier and the // browser's session-proof short-circuit share this one reading, as the C# // `Verify` and `IsLocalDevelopment` do. export function isUnsignedCertificate(certificate: CultMeshAuthorityRouteCertificate | undefined): boolean { - return !certificate || certificate.signature.trim() === ""; + return !certificate || isNullOrWhiteSpaceCSharp(certificate.signature); } // Rule for rule, this is `CultMeshAuthorityTrustPolicy.Verify` in the C# @@ -67,7 +99,7 @@ export async function verifyAuthorityRoute( if (trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint)) return; throw new Error("Remote CultMesh routes require an Odin-signed authority certificate."); } - const signature = certificate.signature.trim(); + const signature = trimCSharp(certificate.signature); if (!isProtectedEndpoint(route.endpoint) && !(trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint))) { throw new Error("Authenticated remote CultMesh routes require TLS or QUIC channel protection."); } @@ -77,6 +109,21 @@ export async function verifyAuthorityRoute( if (now < certificate.issuedAtUnixMilliseconds || now >= certificate.expiresAtUnixMilliseconds) { throw new Error("The Odin route certificate is not currently valid."); } + // Three refusals, not one. `Verify` in the C# reference decodes the signature + // itself and names each failure separately: `Convert.FromBase64String` throwing + // is "not base64", a decoded length other than 64 is "not IEEE P1363 P-256", + // and only a decoded-but-wrong signature is "invalid". `VerifySession` is the + // silent path: it returns false for all three, which is why `verifyP256` keeps + // its own checks. + let signatureBytes: Uint8Array; + try { + signatureBytes = base64ToBytes(signature); + } catch { + throw new Error("The Odin route signature is not base64."); + } + if (signatureBytes.byteLength !== 64) { + throw new Error("The Odin route signature is not IEEE P1363 P-256."); + } if (!await verifyP256(root, canonicalRoute(route), signature)) { throw new Error("The Odin route certificate signature is invalid."); } diff --git a/packages/cultnet-ts/src/index.ts b/packages/cultnet-ts/src/index.ts index 4987b177..073d2587 100644 --- a/packages/cultnet-ts/src/index.ts +++ b/packages/cultnet-ts/src/index.ts @@ -68,9 +68,12 @@ export { canonicalFields, canonicalRoute, canonicalSession, + isCSharpWhiteSpace, isLoopbackEndpoint, + isNullOrWhiteSpaceCSharp, isProtectedEndpoint, isUnsignedCertificate, + trimCSharp, verifyAuthorityRoute, verifyP256, verifyProviderSessionProof, diff --git a/packages/cultnet-ts/test/cultmesh-authority.test.ts b/packages/cultnet-ts/test/cultmesh-authority.test.ts index 5cd47245..b8fc2509 100644 --- a/packages/cultnet-ts/test/cultmesh-authority.test.ts +++ b/packages/cultnet-ts/test/cultmesh-authority.test.ts @@ -20,8 +20,11 @@ import { canonicalFields, canonicalRoute, canonicalSession, + isCSharpWhiteSpace, isLoopbackEndpoint, isProtectedEndpoint, + isUnsignedCertificate, + trimCSharp, verifyAuthorityRoute, verifyP256, verifyProviderSessionProof, @@ -219,12 +222,32 @@ test("a signature that is not 64 P1363 bytes is refused", async () => { { ...route, certificate: { ...route.certificate!, signature: bytesToBase64(wrong) } }, remoteTrust(odin.publicKey), ), - /signature is invalid/, + /not IEEE P1363 P-256/, ); } assert.equal(await verifyP256(odin.publicKey, canonicalRoute(route), "not base64!"), false); }); +// The C# `Verify` has three signature refusals with three texts. Collapsing any +// two of them loses a distinction the reference draws, so each is pinned by its +// exact C# string, not by a fragment. +test("the three signature refusals carry the C# reference's exact messages", async () => { + const { route, odin } = signedRoute(); + const certificate = route.certificate!; + const cases: readonly (readonly [string, string])[] = [ + ["not base64!", "The Odin route signature is not base64."], + [bytesToBase64(base64ToBytes(certificate.signature).subarray(0, 63)), "The Odin route signature is not IEEE P1363 P-256."], + [bytesToBase64(new Uint8Array(64)), "The Odin route certificate signature is invalid."], + ]; + for (const [signature, message] of cases) { + await assert.rejects( + verifyAuthorityRoute({ ...route, certificate: { ...certificate, signature } }, remoteTrust(odin.publicKey)), + (error: Error) => error.message === message, + message, + ); + } +}); + test("verifyP256 reads exactly the viewed bytes: a Uint8Array, a pooled Buffer and a subarray of a large allocation verify alike", async () => { const { route, odin } = signedRoute(); const payload = canonicalRoute(route); @@ -306,6 +329,49 @@ test("isLoopbackEndpoint is the C# System.Uri.IsLoopback set", () => { } }); +// `char.IsWhiteSpace` as .NET 10 answered for each of these code points on +// 2026-09-16, through `CultMeshAuthorityTrustPolicy` over a signature of that +// one character. `String.prototype.trim` disagrees on two of them: U+0085, +// which .NET counts and JavaScript does not, and U+FEFF, which JavaScript +// counts and .NET does not. +const CSHARP_WHITESPACE_ANSWERS: readonly (readonly [number, boolean])[] = [ + [0x0000, false], [0x0009, true], [0x000a, true], [0x000b, true], [0x000c, true], [0x000d, true], + [0x001c, false], [0x001d, false], [0x001e, false], [0x001f, false], [0x0020, true], + [0x0085, true], [0x00a0, true], [0x1680, true], [0x180e, false], + [0x2000, true], [0x2001, true], [0x2002, true], [0x2003, true], [0x2004, true], [0x2005, true], + [0x2006, true], [0x2007, true], [0x2008, true], [0x2009, true], [0x200a, true], + [0x200b, false], [0x200c, false], [0x2028, true], [0x2029, true], + [0x202f, true], [0x205f, true], [0x3000, true], [0xfeff, false], +]; + +test("the whitespace set is C#'s char.IsWhiteSpace, not String.prototype.trim", async () => { + assert.equal(CSHARP_WHITESPACE_ANSWERS.length, 34); + const { route, odin } = signedRoute("ws://127.0.0.1:4050/mesh"); + for (const [code, csharp] of CSHARP_WHITESPACE_ANSWERS) { + const character = String.fromCharCode(code); + const label = `U+${code.toString(16).toUpperCase().padStart(4, "0")}`; + assert.equal(isCSharpWhiteSpace(character), csharp, label); + const padded = `${character}a${character}`; + assert.equal(trimCSharp(padded), csharp ? "a" : padded, label); + // The same answer where the rule is actually consumed: a certificate whose + // whole signature is this one character is unsigned exactly when C# says so. + const certificate = { ...route.certificate!, signature: character }; + assert.equal(isUnsignedCertificate(certificate), csharp, label); + const blank = { ...route, certificate }; + const trust = { ...remoteTrust(odin.publicKey), mode: "local-development" as const }; + if (csharp) { + await verifyAuthorityRoute(blank, trust); + } else { + await assert.rejects(verifyAuthorityRoute(blank, trust), /not base64|not IEEE P1363/, label); + } + } + // The two code points where `trim` would have answered differently. + assert.equal("…".trim().length, 1); + assert.equal(isCSharpWhiteSpace("…"), true); + assert.equal("".trim().length, 0); + assert.equal(isCSharpWhiteSpace(""), false); +}); + test("base64 helpers round-trip across the 32 KiB chunk boundary", () => { const bytes = new Uint8Array(70_000).map((_, index) => index % 251); assert.deepEqual(base64ToBytes(bytesToBase64(bytes)), bytes); diff --git a/scripts/mutate-cultmesh-authority.mjs b/scripts/mutate-cultmesh-authority.mjs index 6053cb14..176c7f7f 100644 --- a/scripts/mutate-cultmesh-authority.mjs +++ b/scripts/mutate-cultmesh-authority.mjs @@ -59,14 +59,35 @@ const mutations = [ }, { rule: "isUnsignedCertificate treats a whitespace signature as unsigned", - old: 'return !certificate || certificate.signature.trim() === "";', + old: "return !certificate || isNullOrWhiteSpaceCSharp(certificate.signature);", new: 'return !certificate || certificate.signature === "";', }, { rule: "isUnsignedCertificate treats an empty signature as unsigned", - old: 'return !certificate || certificate.signature.trim() === "";', + old: "return !certificate || isNullOrWhiteSpaceCSharp(certificate.signature);", new: "return !certificate;", }, + { + rule: "the whitespace set is C#'s char.IsWhiteSpace, not String.prototype.trim", + old: "return !certificate || isNullOrWhiteSpaceCSharp(certificate.signature);", + new: 'return !certificate || certificate.signature.trim() === "";', + }, + { + rule: "U+0085 is whitespace to C# (String.prototype.trim disagrees)", + old: "code === 0x85 || ", + new: "", + }, + { + rule: "the two non-verifying signature refusals keep their own C# messages", + old: ' throw new Error("The Odin route signature is not base64.");\n' + + " }\n" + + " if (signatureBytes.byteLength !== 64) {\n" + + ' throw new Error("The Odin route signature is not IEEE P1363 P-256.");\n', + new: ' throw new Error("The Odin route certificate signature is invalid.");\n' + + " }\n" + + " if (signatureBytes.byteLength !== 64) {\n" + + ' throw new Error("The Odin route certificate signature is invalid.");\n', + }, { rule: "root lookup precedes the validity window", old: " const root = roots.get(certificate.odinKeyId);\n" + From c4c23308054e90578f25f58b4bae28b802db499a Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 17:14:35 +0200 Subject: [PATCH 0039/1002] Clean the route fields before the transcript, as the C# constructors do The C# reference signs a transcript over a *constructed* route, and the constructors clean on the way in: `CultMeshAuthorityRoute.Clean` trims each protocol id, drops the blank ones, keeps one of each ordinally and sorts ordinally; `RequireNonEmpty` trims the runtime id and endpoint; `Require` trims the provider key id and coordinates; `CultMeshRouteCertificate` trims the Odin key id; a blank generation becomes the runtime id and endpoint joined by "@". TypeScript cleaned none of it and transcribed the caller's string, so a route C# signed and accepted was refused here the moment any field carried padding or a duplicate. Soul's tamper loop is the evidence: C# accepted a duplicated protocol id, a padded generation and a padded Odin key id against the committed vector's own signature, and TypeScript refused all three. The test now reruns those, plus a padded protocol id, a blank one, a reversed list, a padded endpoint and a padded provider key id, against the C#-written vector's signature. A padded Odin key id must also find its root, so the trust map keys on the trimmed id as the C# dictionary does. `verseId` is left alone on purpose: it is not a route field, and `CanonicalRoute` passes the caller's string into `Canonical` untrimmed. The test pins that too. `protocolId ?? "cultmesh.documents.v1"` is gone. A C# route with no protocol ids is `Array.Empty()` and transcribes as the empty string; reading the handshake's `protocolId` as a one-element list wrote bytes the reference never writes. `canonicalSession` matches its C# counterpart the other way: it cleans nothing on the request, because the handshake message is what the wire carried, and only the endpoint is cleaned, because the one C# passes is `Route.Endpoint`. Mutations: the dedupe removed, the blank-id filter removed, the generation trim removed, the provider key id trim removed, and the Odin key id trim removed from the lookup -- each killed by its test. Co-Authored-By: Claude Fable 5.1 --- packages/cultnet-ts/src/cultmesh-authority.ts | 96 +++++++++++++++---- .../test/cultmesh-authority.test.ts | 53 +++++++++- scripts/mutate-cultmesh-authority.mjs | 49 +++++++--- 3 files changed, 166 insertions(+), 32 deletions(-) diff --git a/packages/cultnet-ts/src/cultmesh-authority.ts b/packages/cultnet-ts/src/cultmesh-authority.ts index f3a9121d..9e28bad7 100644 --- a/packages/cultnet-ts/src/cultmesh-authority.ts +++ b/packages/cultnet-ts/src/cultmesh-authority.ts @@ -103,8 +103,9 @@ export async function verifyAuthorityRoute( if (!isProtectedEndpoint(route.endpoint) && !(trust.mode === "local-development" && isLoopbackEndpoint(route.endpoint))) { throw new Error("Authenticated remote CultMesh routes require TLS or QUIC channel protection."); } - const root = roots.get(certificate.odinKeyId); - if (!root) throw new Error(`Odin key '${certificate.odinKeyId}' is not trusted by this consumer.`); + const odinKeyId = certificateOdinKeyId(certificate); + const root = roots.get(odinKeyId); + if (!root) throw new Error(`Odin key '${odinKeyId}' is not trusted by this consumer.`); const now = trust.now?.() ?? Date.now(); if (now < certificate.issuedAtUnixMilliseconds || now >= certificate.expiresAtUnixMilliseconds) { throw new Error("The Odin route certificate is not currently valid."); @@ -132,11 +133,15 @@ export async function verifyAuthorityRoute( // The C# policy is a dictionary keyed by Odin key id and its constructor // throws on a duplicate. A TypeScript policy is a plain object, so the same // refusal happens at the first use of the policy, before any route is judged. +// The key is `CultMeshEcdsaP256PublicKey.KeyId`, which `Require` already +// trimmed, so two roots whose ids differ only in padding are one duplicate here +// too, and a padded certificate id still finds its root. function trustedOdinRoots(trust: CultMeshAuthorityTrustPolicy): Map { const roots = new Map(); for (const root of trust.odinRoots ?? []) { - if (roots.has(root.keyId)) throw new Error(`Odin root key id '${root.keyId}' is listed more than once in the trust policy.`); - roots.set(root.keyId, root); + const keyId = requireNonEmptyCSharp(root.keyId, "keyId"); + if (roots.has(keyId)) throw new Error(`Odin root key id '${keyId}' is listed more than once in the trust policy.`); + roots.set(keyId, root); } return roots; } @@ -151,36 +156,87 @@ export function verifyProviderSessionProof( return verifyP256(providerKey, canonicalSession(request, endpoint), signatureBase64); } +/** + * `CultMeshAuthorityRoute.Clean`: trim each protocol id, drop the blank ones, + * keep one of each ordinally, and sort ordinally. JavaScript's default sort is + * UTF-16 code-unit order, which is what `StringComparer.Ordinal` compares. + * + * A route that lists no protocol ids at all is `Array.Empty()` in C# + * and transcribes as the empty string, so there is no substitute id here: the + * TypeScript route view carries a separate `protocolId` for the handshake, and + * reading it as a one-element list would transcribe bytes the reference never + * writes. + */ +function cleanProtocolIds(values: readonly string[] | undefined): string[] { + return [...new Set((values ?? []).filter(value => !isNullOrWhiteSpaceCSharp(value)).map(trimCSharp))].sort(); +} + +/** `RequireNonEmpty` and `Require` in the C# reference: one refusal, one trimmed value. */ +function requireNonEmptyCSharp(value: string | undefined, parameterName: string): string { + if (isNullOrWhiteSpaceCSharp(value)) throw new Error(`Value must be non-empty. (Parameter '${parameterName}')`); + return trimCSharp(value!); +} + +/** `CultMeshRouteCertificate`: the Odin key identity is required, and trimmed. */ +function certificateOdinKeyId(certificate: CultMeshAuthorityRouteCertificate): string { + if (isNullOrWhiteSpaceCSharp(certificate.odinKeyId)) { + throw new Error("Odin key identity is required. (Parameter 'odinKeyId')"); + } + return trimCSharp(certificate.odinKeyId); +} + +/** + * The transcript the C# reference signs is over a *constructed* route, and the + * C# constructors clean every field on the way in. Cleaning at the transcript + * is where TypeScript gets the same bytes: a duplicated protocol id, a padded + * protocol id, a padded generation and a padded Odin key id all verify against + * a C#-written signature, because C# never saw the padding either. + * + * `verseId` is the exception. It is not a route field: `CanonicalRoute` passes + * the caller's string straight into `Canonical`, untrimmed, so padding it + * changes the bytes on both sides. + */ export function canonicalRoute(route: CultMeshAuthorityRouteView): Uint8Array { const certificate = route.certificate!; + const authorityRuntimeId = requireNonEmptyCSharp(route.authorityRuntimeId, "authorityRuntimeId"); + const endpoint = requireNonEmptyCSharp(route.endpoint, "endpoint"); return canonicalFields( "gamecult.cultmesh.route-certificate.v1", route.verseId, - route.authorityRuntimeId, - route.endpoint, - [...(route.protocolIds ?? [route.protocolId ?? "cultmesh.documents.v1"])].sort().join(""), + authorityRuntimeId, + endpoint, + cleanProtocolIds(route.protocolIds).join(""), String(route.priority ?? 0), - route.generation, - certificate.providerKey.keyId, - certificate.providerKey.x, - certificate.providerKey.y, - certificate.odinKeyId, + // A blank generation is not blank in C#: the route constructor substitutes + // the runtime id and endpoint, already cleaned, joined by "@". + isNullOrWhiteSpaceCSharp(route.generation) ? `${authorityRuntimeId}@${endpoint}` : trimCSharp(route.generation), + requireNonEmptyCSharp(certificate.providerKey.keyId, "keyId"), + requireNonEmptyCSharp(certificate.providerKey.x, "x"), + requireNonEmptyCSharp(certificate.providerKey.y, "y"), + certificateOdinKeyId(certificate), String(certificate.issuedAtUnixMilliseconds), String(certificate.expiresAtUnixMilliseconds), ); } +/** + * `CanonicalSession` cleans nothing on the request: it substitutes the empty + * string for a null field and trims none of them, because the handshake message + * is what the wire carried, not a constructed route. The endpoint is the only + * cleaned field, because the one C# passes is `Route.Endpoint`, which the route + * constructor already required non-empty and trimmed. + */ export function canonicalSession(request: CultMeshSessionOpenMessage, endpoint: string): Uint8Array { return canonicalFields( "gamecult.cultmesh.session-proof.v1", - request.clientNonce, - request.messageId, - request.sourceRuntimeId, - request.verseId, - request.authorityRuntimeId, - request.protocolId, - endpoint, - request.routeGeneration, + request.clientNonce ?? "", + request.messageId ?? "", + request.sourceRuntimeId ?? "", + request.verseId ?? "", + request.authorityRuntimeId ?? "", + request.protocolId ?? "", + requireNonEmptyCSharp(endpoint, "endpoint"), + request.routeGeneration ?? "", ); } diff --git a/packages/cultnet-ts/test/cultmesh-authority.test.ts b/packages/cultnet-ts/test/cultmesh-authority.test.ts index b8fc2509..a0820628 100644 --- a/packages/cultnet-ts/test/cultmesh-authority.test.ts +++ b/packages/cultnet-ts/test/cultmesh-authority.test.ts @@ -383,7 +383,9 @@ for (const [label, path] of [["C# reference", VECTORS_PATH], ["TypeScript-signed await verifyAuthorityRoute(vectors.route, trust); await assert.rejects(verifyAuthorityRoute({ ...vectors.route, priority: 8 }, trust), /signature is invalid/); await assert.rejects( - verifyAuthorityRoute({ ...vectors.route, protocolIds: [...vectors.route.protocolIds!, "cultmesh.realtime.v1"] }, trust), + // An id the vector does not already list: one it does list would be a + // duplicate, and the C# `Clean` drops duplicates before the transcript. + verifyAuthorityRoute({ ...vectors.route, protocolIds: [...vectors.route.protocolIds!, "cultmesh.telemetry.v1"] }, trust), /signature is invalid/, ); @@ -399,6 +401,55 @@ for (const [label, path] of [["C# reference", VECTORS_PATH], ["TypeScript-signed ); }); +// Soul ran each of these against the C# reference on 2026-09-16 by tampering +// with the committed vector and rerunning the C# test: C# accepted every one, +// because its constructors clean the field before `CanonicalRoute` sees it. +// TypeScript refused every one until it cleaned at the transcript too. The +// signature here is the C#-written one; nothing is re-signed. +test("padding and duplication the C# constructors clean still verify against the C#-written vector", async () => { + const vectors = JSON.parse(readFileSync(VECTORS_PATH, "utf8")) as Vectors; + const trust = { mode: "authenticated-remote" as const, odinRoots: [vectors.odinRoot], now: () => vectors.nowUnixMilliseconds }; + const route = vectors.route; + const certificate = route.certificate!; + const protocolIds = route.protocolIds!; + const accepted: readonly (readonly [string, CultMeshAuthorityRouteView])[] = [ + ["a duplicated protocol id", { ...route, protocolIds: [...protocolIds, protocolIds[0]!] }], + ["a padded protocol id", { ...route, protocolIds: [` ${protocolIds[0]!}…`, ...protocolIds.slice(1)] }], + ["a blank protocol id", { ...route, protocolIds: [...protocolIds, " "] }], + ["the protocol ids reversed", { ...route, protocolIds: [...protocolIds].reverse() }], + ["a padded generation", { ...route, generation: ` ${route.generation} ` }], + ["a padded endpoint", { ...route, endpoint: ` ${route.endpoint} ` }], + ["a padded Odin key id", { ...route, certificate: { ...certificate, odinKeyId: ` ${certificate.odinKeyId} ` } }], + ["a padded provider key id", { + ...route, + certificate: { ...certificate, providerKey: { ...certificate.providerKey, keyId: ` ${certificate.providerKey.keyId} ` } }, + }], + ]; + for (const [label, candidate] of accepted) { + await verifyAuthorityRoute(candidate, trust).catch((error: Error) => { + assert.fail(`${label} should verify as it does in C#, but: ${error.message}`); + }); + } + // A padded Odin key id also has to find its root, as it does in the C# + // dictionary, whose keys `Require` already trimmed. + await verifyAuthorityRoute( + { ...route, certificate: { ...certificate, odinKeyId: ` ${certificate.odinKeyId} ` } }, + { ...trust, odinRoots: [{ ...vectors.odinRoot, keyId: `\t${vectors.odinRoot.keyId}\t` }] }, + ); + + // `verseId` is not a route field and C# does not clean it, so padding it + // changes the bytes on both sides. + await assert.rejects(verifyAuthorityRoute({ ...route, verseId: ` ${route.verseId} ` }, trust), /signature is invalid/); + // A route with no protocol ids transcribes the empty string, as C#'s + // `Array.Empty()` does; there is no substituted default id. + await assert.rejects(verifyAuthorityRoute({ ...route, protocolIds: undefined }, trust), /signature is invalid/); + await assert.rejects(verifyAuthorityRoute({ ...route, protocolIds: [] }, trust), /signature is invalid/); + assert.deepEqual( + canonicalRoute({ ...route, protocolIds: undefined }), + canonicalRoute({ ...route, protocolIds: ["", " "] }), + ); +}); + test("the shared module keeps the browser-safe surface: no node: import", () => { const source = readFileSync(join(__dirname, "..", "..", "src", "cultmesh-authority.ts"), "utf8"); assert.doesNotMatch(source, /from "node:|require\("node:/); diff --git a/scripts/mutate-cultmesh-authority.mjs b/scripts/mutate-cultmesh-authority.mjs index 176c7f7f..1e86133a 100644 --- a/scripts/mutate-cultmesh-authority.mjs +++ b/scripts/mutate-cultmesh-authority.mjs @@ -54,7 +54,7 @@ const mutations = [ }, { rule: "Odin root lookup by key id", - old: "const root = roots.get(certificate.odinKeyId);", + old: "const root = roots.get(odinKeyId);", new: "const root = [...roots.values()][0];", }, { @@ -90,8 +90,9 @@ const mutations = [ }, { rule: "root lookup precedes the validity window", - old: " const root = roots.get(certificate.odinKeyId);\n" + - " if (!root) throw new Error(`Odin key '${certificate.odinKeyId}' is not trusted by this consumer.`);\n" + + old: " const odinKeyId = certificateOdinKeyId(certificate);\n" + + " const root = roots.get(odinKeyId);\n" + + " if (!root) throw new Error(`Odin key '${odinKeyId}' is not trusted by this consumer.`);\n" + " const now = trust.now?.() ?? Date.now();\n" + " if (now < certificate.issuedAtUnixMilliseconds || now >= certificate.expiresAtUnixMilliseconds) {\n" + ' throw new Error("The Odin route certificate is not currently valid.");\n' + @@ -100,18 +101,19 @@ const mutations = [ " if (now < certificate.issuedAtUnixMilliseconds || now >= certificate.expiresAtUnixMilliseconds) {\n" + ' throw new Error("The Odin route certificate is not currently valid.");\n' + " }\n" + - " const root = roots.get(certificate.odinKeyId);\n" + - " if (!root) throw new Error(`Odin key '${certificate.odinKeyId}' is not trusted by this consumer.`);\n", + " const odinKeyId = certificateOdinKeyId(certificate);\n" + + " const root = roots.get(odinKeyId);\n" + + " if (!root) throw new Error(`Odin key '${odinKeyId}' is not trusted by this consumer.`);\n", }, { rule: "duplicate Odin root key ids refuse the policy", - old: " if (roots.has(root.keyId)) throw new Error(`Odin root key id '${root.keyId}' is listed more than once in the trust policy.`);\n", + old: " if (roots.has(keyId)) throw new Error(`Odin root key id '${keyId}' is listed more than once in the trust policy.`);\n", new: "", }, { rule: "protocol ids are sorted into the transcript", - old: "].sort().join(", - new: "].join(", + old: ")].sort();", + new: ")];", }, { rule: "verifyP256 copies the viewed payload bytes, not the pool behind a Buffer", @@ -120,14 +122,39 @@ const mutations = [ }, { rule: "route transcript field order", - old: " route.verseId,\n route.authorityRuntimeId,\n", - new: " route.authorityRuntimeId,\n route.verseId,\n", + old: " route.verseId,\n authorityRuntimeId,\n", + new: " authorityRuntimeId,\n route.verseId,\n", }, { rule: "session transcript binds the nonce", - old: " request.clientNonce,\n", + old: ' request.clientNonce ?? "",\n', new: "", }, + { + rule: "protocol ids are deduplicated into the transcript", + old: " return [...new Set(", + new: " return [...(", + }, + { + rule: "the generation is trimmed into the transcript", + old: ": trimCSharp(route.generation),", + new: ": route.generation,", + }, + { + rule: "the provider key id is trimmed into the transcript", + old: ' requireNonEmptyCSharp(certificate.providerKey.keyId, "keyId"),', + new: " certificate.providerKey.keyId,", + }, + { + rule: "the Odin key id is trimmed before the root lookup", + old: " const odinKeyId = certificateOdinKeyId(certificate);", + new: " const odinKeyId = certificate.odinKeyId;", + }, + { + rule: "blank protocol ids are dropped from the transcript", + old: "(values ?? []).filter(value => !isNullOrWhiteSpaceCSharp(value)).map(trimCSharp)", + new: "(values ?? []).map(trimCSharp)", + }, { rule: "length-prefix framing is big-endian", old: "view.setUint32(offset, value.byteLength, false);", From 803ee12a7a050c890b52cf0d77712522d2ec79ca Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 17:22:06 +0200 Subject: [PATCH 0040/1002] Refuse the endpoint spellings WHATWG URL repairs and System.Uri does not `isLoopbackEndpoint` handed the raw endpoint to `URL` and read the host it got back. `URL` is a repairing parser and `System.Uri` is not, so seven spellings were loopback here and remote in C#: a trailing dot on the host, which `URL` drops; `ws:127.0.0.1`, `ws:/127.0.0.1` and `ws:///127.0.0.1`, whose authority `URL` infers; a backslash path separator, which `URL` reads as a separator; fullwidth digits and letters in the host, which `URL` folds to ASCII; and a tab in the host, which `URL` deletes. Each of those is a local-development bypass: a route the C# consumer would have demanded a certificate for opened unsigned here. `refusedByCSharpUriShape` refuses exactly those, on the raw string, before `URL` sees it. Leading and trailing C0 controls and spaces around the whole endpoint are stripped first, because both sides accept them. The spellings Hands probed earlier and C# accepts -- `127.1`, hex, decimal, `[::FFFF:7F00:1]`, userinfo, `localhost:8443` -- are untouched. The doc comment claimed equivalence with `System.Uri.IsLoopback`. It is not equivalent and now says so: two divergences remain, both unreachable from a browser CultMesh route, and both named. An IPv6 zone id throws in `URL` and is a host-local interface name no browser socket can dial; `file:` and `mailto:` have no `URL` host and are refused by `openSocket`, which takes `ws:` and `wss:` only. The test is Soul's endpoint list with the C# answer as the expectation: 82 of the 88 it probed, the six unreachable ones named in the doc comment instead. Mutations: the trailing-dot refusal dropped, the scheme-and-authority shape inverted, the backslash refusal dropped, and the non-ASCII host refusal dropped -- each killed by the table. Co-Authored-By: Claude Fable 5.1 --- packages/cultnet-ts/src/cultmesh-authority.ts | 47 +++++++ .../test/cultmesh-authority.test.ts | 127 +++++++++++++++--- scripts/mutate-cultmesh-authority.mjs | 20 +++ 3 files changed, 172 insertions(+), 22 deletions(-) diff --git a/packages/cultnet-ts/src/cultmesh-authority.ts b/packages/cultnet-ts/src/cultmesh-authority.ts index 9e28bad7..c5fd2c5b 100644 --- a/packages/cultnet-ts/src/cultmesh-authority.ts +++ b/packages/cultnet-ts/src/cultmesh-authority.ts @@ -296,6 +296,40 @@ function ownedBytes(view: Uint8Array): ArrayBuffer { return view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength) as ArrayBuffer; } +/** + * `System.Uri` refuses spellings that WHATWG `URL` repairs, and a repaired + * spelling would be loopback here and not in C#. This is that refusal, on the + * raw string, before `URL` sees it: the scheme must be followed by `//` and a + * non-empty authority, the string carries no backslash, and the host is ASCII, + * free of whitespace, and does not end in a dot. + * + * Each clause answers one spelling Soul found `System.Uri` refusing and `URL` + * accepting on 2026-09-16: `ws://127.0.0.1.` (the trailing dot, which `URL` + * drops), `ws:127.0.0.1`, `ws:/127.0.0.1` and `ws:///127.0.0.1` (the missing or + * empty authority, which `URL` infers), `ws://127.0.0.1\mesh` (the backslash, + * which `URL` reads as a path separator), `ws://127.0.0.1` and + * `ws://localhost` (fullwidth forms, which `URL` folds to ASCII), and + * `ws://localhost\t/mesh` (the tab, which `URL` deletes). + * + * Leading and trailing C0 control characters and spaces around the whole + * endpoint are stripped first, because `URL` strips them and `System.Uri` + * accepts them: " ws://127.0.0.1/mesh" is loopback to both. + */ +function refusedByCSharpUriShape(value: string): boolean { + const raw = value.replace(/^[- ]+|[- ]+$/g, ""); + if (raw.includes("\\")) return true; + const shape = /^[A-Za-z][A-Za-z0-9+\-.]*:\/\/([^/?#]+)/.exec(raw); + if (!shape) return true; + const authority = shape[1]!; + const afterUserInfo = authority.slice(authority.lastIndexOf("@") + 1); + const host = afterUserInfo.startsWith("[") + ? afterUserInfo.slice(0, afterUserInfo.indexOf("]") + 1) + : afterUserInfo.split(":")[0]!; + if (host.length === 0) return true; + // eslint-disable-next-line no-control-regex + return /[^!-~]/.test(host) || host.endsWith("."); +} + /** * The C# rule (`CultMeshAuthorityProof.cs`, `IsLoopback`): `System.Uri.IsLoopback`, * which is any `127.0.0.0/8` IPv4 host, `::1`, the IPv4-mapped `::ffff:127.0.0.1` @@ -303,8 +337,21 @@ function ownedBytes(view: Uint8Array): ArrayBuffer { * WHATWG `URL` already normalises `127.1`, `0x7f000001` and `2130706433` to * `127.0.0.1` and serialises the mapped form as `::ffff:7f00:1`, as `System.Uri` * does on its side. `localhost.` is not loopback on either side. + * + * This is not `System.Uri.IsLoopback`, and the spellings where it still differs + * are named rather than claimed away. `URL` repairs seven spellings `System.Uri` + * refuses, and `refusedByCSharpUriShape` refuses those first. Two divergences + * remain, both unreachable from a browser CultMesh route: + * + * - An IPv6 zone id (`ws://[::1%eth0]`, `%25`-escaped or not) is loopback to + * `System.Uri` and throws in `URL`, so this answers false. A zone id is a + * host-local interface name; it cannot be dialled from a browser socket. + * - `file://localhost/mesh` and `mailto:localhost` are loopback to `System.Uri` + * and have no host in `URL`, so this answers false. Neither is a CultMesh + * route: `openSocket` refuses any scheme but `ws:` and `wss:`. */ export function isLoopbackEndpoint(value: string): boolean { + if (refusedByCSharpUriShape(value)) return false; try { const host = new URL(value).hostname.replace(/^\[|\]$/g, "").toLowerCase(); return host === "localhost" || host === "loopback" || host === "::1" || host === "::ffff:7f00:1" || diff --git a/packages/cultnet-ts/test/cultmesh-authority.test.ts b/packages/cultnet-ts/test/cultmesh-authority.test.ts index a0820628..f5e61b80 100644 --- a/packages/cultnet-ts/test/cultmesh-authority.test.ts +++ b/packages/cultnet-ts/test/cultmesh-authority.test.ts @@ -311,22 +311,105 @@ test("isProtectedEndpoint is the C# rule: wss, https, or any scheme containing q } }); -// The accepted and refused hosts here are what `System.Uri.IsLoopback` answered -// through `CultMeshAuthorityTrustPolicy` on 2026-09-16; keep them in step. -test("isLoopbackEndpoint is the C# System.Uri.IsLoopback set", () => { - for (const loopback of [ - "ws://localhost:4050/mesh", "wss://LOCALHOST/mesh", "ws://loopback:4050/mesh", "ws://LoopBack:4050/mesh", - "ws://127.0.0.1:4050/mesh", "ws://127.0.0.2/mesh", "ws://127.255.255.254/mesh", "ws://127.1/mesh", "ws://0x7f000001/mesh", "ws://2130706433/mesh", - "ws://[::1]:4050/mesh", "ws://[0:0:0:0:0:0:0:1]:4050/mesh", "ws://[::ffff:127.0.0.1]/mesh", "ws://[::ffff:7f00:1]/mesh", - ]) { - assert.equal(isLoopbackEndpoint(loopback), true, loopback); - } - for (const remote of [ - "ws://192.0.2.10:4050/mesh", "wss://provider.example/mesh", "ws://[::ffff:127.0.0.2]/mesh", "ws://localhost./mesh", - "ws://localhost.localdomain/mesh", "ws://127.example/mesh", "ws://0.0.0.0/mesh", "ws://[::]/mesh", "not a url", - ]) { - assert.equal(isLoopbackEndpoint(remote), false, remote); +// Every endpoint Soul put to both sides on 2026-09-16, with the answer +// `System.Uri.IsLoopback` gave through `CultMeshAuthorityTrustPolicy` as the +// expectation. Six of the probe's 88 are left out and named in the doc comment +// on `isLoopbackEndpoint` instead, because they are unreachable as browser +// CultMesh routes: the four IPv6 zone-id spellings, `file://localhost/mesh` +// and `mailto:localhost`. +const CSHARP_LOOPBACK_ANSWERS: readonly (readonly [string, boolean])[] = [ + ["ws://127.0.0.1:4050/mesh", true], + ["ws://127.0.0.2:4050/mesh", true], + ["ws://127.255.255.254:4050/mesh", true], + ["ws://127.1:4050/mesh", true], + ["ws://0x7f000001:4050/mesh", true], + ["ws://2130706433:4050/mesh", true], + ["ws://[::1]:4050/mesh", true], + ["ws://[0:0:0:0:0:0:0:1]:4050/mesh", true], + ["ws://[::ffff:127.0.0.1]:4050/mesh", true], + ["ws://[::ffff:7f00:1]:4050/mesh", true], + ["ws://[::ffff:127.0.0.2]:4050/mesh", false], + ["ws://localhost:4050/mesh", true], + ["ws://LOCALHOST:4050/mesh", true], + ["ws://loopback:4050/mesh", true], + ["ws://LoopBack:4050/mesh", true], + ["ws://localhost.:4050/mesh", false], + ["ws://localhost.localdomain:4050/mesh", false], + ["ws://0.0.0.0:4050/mesh", false], + ["ws://[::]:4050/mesh", false], + ["ws://192.0.2.10:4050/mesh", false], + ["ws://provider.example:4050/mesh", false], + ["ws://127.0.0.1.:4050/mesh", false], + ["ws://127.0.0.1.", false], + ["ws://[::FFFF:127.0.0.1]:4050/mesh", true], + ["ws://[::FFFF:7F00:1]:4050/mesh", true], + ["ws://0177.0.0.1:4050/mesh", true], + ["ws://0177.0.0.1", true], + ["ws://127.0.0.1:0", true], + ["ws://127.0.0.1:0/mesh", true], + ["ws://LOCALHOST", true], + ["ws://localhost:8443", true], + ["ws://localhost:8443/", true], + ["ws://localhost:8443/mesh/path", true], + ["wss://[::1]/mesh", true], + ["wss://[fe80::1]/mesh", false], + ["wss://[::1]:8443", true], + ["ws://[::FFFF:7F00:1]", true], + ["ws://user:pw@127.0.0.1:4050/mesh", true], + ["ws://user@localhost/mesh", true], + ["ws://user:pw@provider.example/mesh", false], + ["ws://127.0.0.1@provider.example/mesh", false], + ["ws://provider.example@127.0.0.1/mesh", true], + ["ws://127.00.0.1/mesh", true], + ["ws://127.0.0.256/mesh", false], + ["ws://127.0.1/mesh", true], + ["ws://127/mesh", false], + ["ws://0x7F.0.0.1/mesh", true], + ["ws://127.0.0.01/mesh", true], + ["ws://LOCALHOST./mesh", false], + ["ws://[::0:1]/mesh", true], + ["ws://[0::1]/mesh", true], + ["ws://[::ffff:0:7f00:1]/mesh", false], + ["ws://[64:ff9b::7f00:1]/mesh", false], + ["ws://127.0.0.1%20/mesh", false], + ["ws://localhost%20/mesh", false], + ["ws://127.0.0.1 /mesh", false], + ["ws://loopback./mesh", false], + ["ws:127.0.0.1/mesh", false], + ["ws:/127.0.0.1/mesh", false], + ["ws:///127.0.0.1/mesh", false], + ["WS://127.0.0.1/mesh", true], + ["ws://127.0.0.1", true], + ["ws://127.0.0.1/", true], + ["ws://127.0.0.1?x=1", true], + ["ws://127.0.0.1#f", true], + ["ws://[::1]", true], + ["ws://[::1]/", true], + ["ws://localhost.localhost/mesh", false], + ["ws://localhost/../mesh", true], + ["ws://127.0.0.1\\mesh", false], + ["ws://127.0.0.1/mesh\n", true], + [" ws://127.0.0.1/mesh", true], + ["ws://127.0.0.1/mesh ", true], + ["ws://127.0.0.1/mesh", false], + ["ws://localhost/mesh", false], + ["ws://localhost\t/mesh", false], + ["ws://[::ffff:127.0.0.1]", true], + ["ws://[::ffff:7f00:0001]/mesh", true], + ["ws://[0:0:0:0:0:ffff:7f00:1]/mesh", true], + ["http://127.0.0.1/mesh", true], + ["cultmesh-state+quic://127.0.0.1:4433/", true], + ["ws://127.0.0.1:99999/mesh", false], +]; + +test("isLoopbackEndpoint answers as System.Uri.IsLoopback did, over every reachable endpoint Soul probed", () => { + assert.equal(CSHARP_LOOPBACK_ANSWERS.length, 82); + const disagreements: string[] = []; + for (const [endpoint, csharp] of CSHARP_LOOPBACK_ANSWERS) { + if (isLoopbackEndpoint(endpoint) !== csharp) disagreements.push(`${JSON.stringify(endpoint)} (C# said ${csharp})`); } + assert.deepEqual(disagreements, []); + assert.equal(isLoopbackEndpoint("not a url"), false); }); // `char.IsWhiteSpace` as .NET 10 answered for each of these code points on @@ -366,10 +449,10 @@ test("the whitespace set is C#'s char.IsWhiteSpace, not String.prototype.trim", } } // The two code points where `trim` would have answered differently. - assert.equal("…".trim().length, 1); - assert.equal(isCSharpWhiteSpace("…"), true); - assert.equal("".trim().length, 0); - assert.equal(isCSharpWhiteSpace(""), false); + assert.equal("\u0085".trim().length, 1); + assert.equal(isCSharpWhiteSpace("\u0085"), true); + assert.equal("\ufeff".trim().length, 0); + assert.equal(isCSharpWhiteSpace("\ufeff"), false); }); test("base64 helpers round-trip across the 32 KiB chunk boundary", () => { @@ -414,12 +497,12 @@ test("padding and duplication the C# constructors clean still verify against the const protocolIds = route.protocolIds!; const accepted: readonly (readonly [string, CultMeshAuthorityRouteView])[] = [ ["a duplicated protocol id", { ...route, protocolIds: [...protocolIds, protocolIds[0]!] }], - ["a padded protocol id", { ...route, protocolIds: [` ${protocolIds[0]!}…`, ...protocolIds.slice(1)] }], + ["a padded protocol id", { ...route, protocolIds: [` ${protocolIds[0]!}\u0085`, ...protocolIds.slice(1)] }], ["a blank protocol id", { ...route, protocolIds: [...protocolIds, " "] }], ["the protocol ids reversed", { ...route, protocolIds: [...protocolIds].reverse() }], - ["a padded generation", { ...route, generation: ` ${route.generation} ` }], + ["a padded generation", { ...route, generation: ` ${route.generation}\u3000` }], ["a padded endpoint", { ...route, endpoint: ` ${route.endpoint} ` }], - ["a padded Odin key id", { ...route, certificate: { ...certificate, odinKeyId: ` ${certificate.odinKeyId} ` } }], + ["a padded Odin key id", { ...route, certificate: { ...certificate, odinKeyId: `\u00a0${certificate.odinKeyId} ` } }], ["a padded provider key id", { ...route, certificate: { ...certificate, providerKey: { ...certificate.providerKey, keyId: ` ${certificate.providerKey.keyId} ` } }, diff --git a/scripts/mutate-cultmesh-authority.mjs b/scripts/mutate-cultmesh-authority.mjs index 1e86133a..25c289ab 100644 --- a/scripts/mutate-cultmesh-authority.mjs +++ b/scripts/mutate-cultmesh-authority.mjs @@ -188,6 +188,26 @@ const mutations = [ old: 'host === "::ffff:7f00:1" ||', new: "", }, + { + rule: "a trailing dot on the host is refused, as System.Uri refuses it", + old: ' || host.endsWith(".");', + new: ";", + }, + { + rule: "a scheme not followed by // and an authority is refused", + old: " if (!shape) return true;", + new: " if (!shape) return false;", + }, + { + rule: "a backslash in the endpoint is refused", + old: ' if (raw.includes("\\\\")) return true;\n', + new: "", + }, + { + rule: "a non-ASCII host is refused, so URL cannot fold a fullwidth form to ASCII", + old: " return /[^\\u0021-\\u007e]/.test(host)", + new: " return false", + }, { rule: "protected scheme: any scheme containing quic", old: 'scheme.includes("quic")', From dfe582edbc8f107b62d30238724327b25e32b25a Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 17:39:50 +0200 Subject: [PATCH 0041/1002] Kill the browser's local reading of "unsigned", and mutate the browser too Soul replaced the shared `isUnsignedCertificate` call in the browser's session-acceptance check with a local empty-string comparison and every one of the 18 browser tests still passed, because every test used an empty signature. A whitespace signature is where the two readings part: the shared route verifier accepts such a route as unsigned on a loopback local-development endpoint, and an inline comparison then demands a provider proof for the session the verifier just let through. The test now opens that session with three spaces, U+0085 and a no-break-space/tab/newline mix as well as the empty string, and asserts U+FEFF the other way, since it is whitespace to JavaScript and a signature to C#. The mutation runner grew a second target. `shared` is the one verifier, killed by the cultnet-ts tests; `browser` is `packages/cultmesh-browser/src/index.ts`, killed by the browser tests. A browser mutation cannot be killed by cultnet-ts tests, so the killer is the target's own workspace, and each target carries its own sidecar, control, sentinel and post-restore dist assertion. Two repairs this pass earned: - The sidecar is now removed inside the `finally`, right after the verified restore. A throw mid-run left it behind holding the pre-run bytes, and the next run "repaired" the file from them, silently reverting everything fixed in between. That happened here, twice, before it was noticed. - The NUL in the loopback pre-check's strip regex had been written as a literal byte rather than an escape. It read the same, but git classified the file as binary and stopped normalising its line endings, so the whole file diffed as rewritten. Escaped, along with the ASCII host range beside it. Co-Authored-By: Claude Fable 5.1 --- .../test/cultmesh-browser.test.ts | 45 ++-- packages/cultnet-ts/src/cultmesh-authority.ts | 4 +- scripts/mutate-cultmesh-authority.mjs | 201 +++++++++++------- 3 files changed, 156 insertions(+), 94 deletions(-) diff --git a/packages/cultmesh-browser/test/cultmesh-browser.test.ts b/packages/cultmesh-browser/test/cultmesh-browser.test.ts index 77237bb9..59f9fac1 100644 --- a/packages/cultmesh-browser/test/cultmesh-browser.test.ts +++ b/packages/cultmesh-browser/test/cultmesh-browser.test.ts @@ -245,26 +245,43 @@ test("browser client opens an unsigned-certificate loopback session under local- trust, socketFactory: () => handshakeOnlySocket(route), }); - const blank = (route: CultMeshBrowserRoute) => ({ ...route, certificate: { ...route.certificate!, signature: "" } }); + const blank = (route: CultMeshBrowserRoute, signature: string) => + ({ ...route, certificate: { ...route.certificate!, signature } }); const loopback = await createSignedRoute("ws://127.0.0.1:4501/mesh"); const localTrust = { mode: "local-development" as const, odinRoots: [loopback.odinPublic] }; - const client = await connect(blank(loopback.route), localTrust); - assert.equal(client.state, "connected"); - await client.dispose(); + const remote = await createSignedRoute("wss://provider.example/mesh"); + + // Empty is the easy case. The whitespace signatures are the ones that catch a + // local re-reading of "unsigned" here: an inline `signature === ""` passes + // every other test in this file and fails these, and U+0085 also separates + // `String.prototype.trim` from the C# `char.IsWhiteSpace` the shared + // `isUnsignedCertificate` uses. Both sides of the session check have to read + // "unsigned" the same way, or the route verifier accepts a session the + // acceptance check then demands a provider proof for. + for (const signature of ["", " ", "\u0085", "\u00a0\t\n"]) { + const label = JSON.stringify(signature); + const client = await connect(blank(loopback.route, signature), localTrust); + assert.equal(client.state, "connected", label); + await client.dispose(); + await assert.rejects( + connect(blank(remote.route, signature), { mode: "local-development", odinRoots: [remote.odinPublic] }), + /Odin-signed authority certificate/, + label, + ); + await assert.rejects( + connect(blank(remote.route, signature), { mode: "authenticated-remote", odinRoots: [remote.odinPublic] }), + /Odin-signed authority certificate/, + label, + ); + } + // U+FEFF is whitespace to JavaScript and not to C#, so it is a signature, not + // an unsigned route, and the loopback route is refused for its bytes. + await assert.rejects(connect(blank(loopback.route, "\ufeff"), localTrust), /not base64|not IEEE P1363/); + // A signed loopback certificate is an authenticated route even under // local-development; the provider must still prove its key. await assert.rejects(connect(loopback.route, localTrust), /did not prove possession/); - - const remote = await createSignedRoute("wss://provider.example/mesh"); - await assert.rejects( - connect(blank(remote.route), { mode: "local-development", odinRoots: [remote.odinPublic] }), - /Odin-signed authority certificate/, - ); - await assert.rejects( - connect(blank(remote.route), { mode: "authenticated-remote", odinRoots: [remote.odinPublic] }), - /Odin-signed authority certificate/, - ); }); test("browser client rejects a mutated or expired signed route before opening a provider socket", async () => { diff --git a/packages/cultnet-ts/src/cultmesh-authority.ts b/packages/cultnet-ts/src/cultmesh-authority.ts index c5fd2c5b..b9681c71 100644 --- a/packages/cultnet-ts/src/cultmesh-authority.ts +++ b/packages/cultnet-ts/src/cultmesh-authority.ts @@ -316,7 +316,7 @@ function ownedBytes(view: Uint8Array): ArrayBuffer { * accepts them: " ws://127.0.0.1/mesh" is loopback to both. */ function refusedByCSharpUriShape(value: string): boolean { - const raw = value.replace(/^[- ]+|[- ]+$/g, ""); + const raw = value.replace(/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g, ""); if (raw.includes("\\")) return true; const shape = /^[A-Za-z][A-Za-z0-9+\-.]*:\/\/([^/?#]+)/.exec(raw); if (!shape) return true; @@ -327,7 +327,7 @@ function refusedByCSharpUriShape(value: string): boolean { : afterUserInfo.split(":")[0]!; if (host.length === 0) return true; // eslint-disable-next-line no-control-regex - return /[^!-~]/.test(host) || host.endsWith("."); + return /[^\u0021-\u007e]/.test(host) || host.endsWith("."); } /** diff --git a/scripts/mutate-cultmesh-authority.mjs b/scripts/mutate-cultmesh-authority.mjs index 25c289ab..92e4bf53 100644 --- a/scripts/mutate-cultmesh-authority.mjs +++ b/scripts/mutate-cultmesh-authority.mjs @@ -1,15 +1,23 @@ -// Mutation check for the shared CultMesh route verifier. +// Mutation check for the CultMesh route verification rules. // -// Each rule the cut map names for `packages/cultnet-ts/src/cultmesh-authority.ts` -// gets one mutation. A mutation is killed when `npm run test --workspace -// packages/cultnet-ts` fails with it applied; a survivor means no test pins that -// rule. The file is rewritten as UTF-8 bytes and restored from the original -// bytes with a digest check, never from git. A no-op control runs first through -// the same write path so a false kill from the write itself cannot hide. +// Two files own those rules and each is one target here. `shared` is +// `packages/cultnet-ts/src/cultmesh-authority.ts`, the one verifier, killed by +// `npm run test --workspace packages/cultnet-ts`. `browser` is +// `packages/cultmesh-browser/src/index.ts`, which must *call* the shared rules +// rather than re-read them locally, killed by `npm run test --workspace +// packages/cultmesh-browser`. A browser mutation cannot be killed by the +// cultnet-ts tests and a shared one is not the browser's to pin, so the killer +// is the target's own workspace. // -// The original bytes also live in `.mutation-original` from the first +// Each rule the cut map names gets one mutation. A survivor means no test pins +// that rule. Each file is rewritten as UTF-8 bytes and restored from the +// original bytes with a digest check, never from git. A no-op control runs +// first per target through the same write path so a false kill from the write +// itself cannot hide. +// +// The original bytes also live in `.mutation-original` from the first // write until a verified restore; a run killed mid-mutation is repaired from -// that sidecar by the next run, not by git. After the final restore the +// that sidecar by the next run, not by git. After the final restore each // package is rebuilt so `dist/` never carries the last mutant. // // node scripts/mutate-cultmesh-authority.mjs @@ -21,15 +29,27 @@ import { dirname, join, resolve } from "node:path"; import { fileURLToPath } from "node:url"; const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), ".."); -const target = join(repoRoot, "packages", "cultnet-ts", "src", "cultmesh-authority.ts"); -const sidecar = `${target}.mutation-original`; -const dist = join(repoRoot, "packages", "cultnet-ts", "dist", "cultmesh-authority.js"); const npmCli = process.env.npm_execpath ?? join(dirname(process.execPath), "node_modules", "npm", "bin", "npm-cli.js"); -// Present in the restored source and compiled verbatim into dist/; the last -// mutation in the list removes it, which is what makes the post-rebuild check -// distinguish a rebuilt dist/ from one still carrying that mutant. -const sentinel = 'scheme === "https"'; + +// Each target's `sentinel` is present in its restored source and compiled +// verbatim into its dist/; that target's last mutation removes it, which is +// what makes the post-rebuild check distinguish a rebuilt dist/ from one still +// carrying that mutant. +const targets = { + shared: { + workspace: "packages/cultnet-ts", + file: join(repoRoot, "packages", "cultnet-ts", "src", "cultmesh-authority.ts"), + dist: join(repoRoot, "packages", "cultnet-ts", "dist", "cultmesh-authority.js"), + sentinel: 'scheme === "https"', + }, + browser: { + workspace: "packages/cultmesh-browser", + file: join(repoRoot, "packages", "cultmesh-browser", "src", "index.ts"), + dist: join(repoRoot, "packages", "cultmesh-browser", "dist", "index.js"), + sentinel: "isUnsignedCertificate(route.certificate)", + }, +}; const mutations = [ { @@ -218,51 +238,38 @@ const mutations = [ old: 'scheme === "https" || ', new: "", }, + // The browser target. Its session-acceptance short-circuit must ask the + // shared module what "unsigned" means; a local re-reading here and the route + // verifier's reading there can drift apart, and a browser route that the + // verifier let through unsigned would then be asked for a provider proof. + { + target: "browser", + rule: "the session short-circuit calls the shared isUnsignedCertificate, not a local reading", + old: "isUnsignedCertificate(route.certificate)", + new: '(route.certificate?.signature ?? "") === ""', + }, ]; -if (existsSync(sidecar)) { - writeFileSync(target, readFileSync(sidecar)); - unlinkSync(sidecar); - console.log(`repaired ${target} from ${sidecar}: a previous run stopped before restoring it`); -} - -const original = readFileSync(target); -const originalText = original.toString("utf8"); -const originalDigest = digest(original); - -// Anchors are written with "\n"; the checkout may be CRLF (autocrlf). Match -// the file's own line ending so a multi-line anchor cannot silently miss. -const eol = originalText.includes("\r\n") ? "\r\n" : "\n"; -const withEol = text => text.replace(/\r?\n/g, eol); - function digest(bytes) { return createHash("sha256").update(bytes).digest("hex"); } -function npm(...args) { - execFileSync(process.execPath, [npmCli, ...args, "--workspace", "packages/cultnet-ts"], { +function npm(workspace, ...args) { + execFileSync(process.execPath, [npmCli, ...args, "--workspace", workspace], { cwd: repoRoot, stdio: ["ignore", "pipe", "pipe"], }); } -function testsPass() { +function testsPass(workspace) { try { - npm("run", "test"); + npm(workspace, "run", "test"); return true; } catch { return false; } } -function restore() { - writeFileSync(target, original); - const restored = digest(readFileSync(target)); - if (restored !== originalDigest) { - throw new Error(`restore failed: ${target} digest ${restored} != ${originalDigest}`); - } -} - function occurrences(text, needle) { return text.split(needle).length - 1; } @@ -270,43 +277,81 @@ function occurrences(text, needle) { const results = []; let failed = false; -const last = mutations[mutations.length - 1]; -if (!originalText.includes(sentinel) || originalText.replace(withEol(last.old), withEol(last.new)).includes(sentinel)) { - throw new Error(`the sentinel '${sentinel}' must be in the source and removed by the last mutation ('${last.rule}')`); -} - -writeFileSync(sidecar, original); -try { - writeFileSync(target, Buffer.from(originalText, "utf8")); - const controlPass = testsPass(); - results.push({ rule: "control (no-op rewrite)", outcome: controlPass ? "green" : "RED" }); - if (!controlPass) failed = true; - else { - for (const mutation of mutations) { - const [old, replacement] = [withEol(mutation.old), withEol(mutation.new)]; - const count = occurrences(originalText, old); - if (count !== 1) { - throw new Error(`anchor for '${mutation.rule}' matched ${count} times, expected exactly 1`); - } - writeFileSync(target, Buffer.from(originalText.replace(old, replacement), "utf8")); - const pass = testsPass(); - restore(); - results.push({ rule: mutation.rule, outcome: pass ? "SURVIVED" : "killed" }); - if (pass) failed = true; - } +for (const [name, target] of Object.entries(targets)) { + const own = mutations.filter(mutation => (mutation.target ?? "shared") === name); + if (own.length === 0) throw new Error(`target '${name}' has no mutations`); + const sidecar = `${target.file}.mutation-original`; + if (existsSync(sidecar)) { + writeFileSync(target.file, readFileSync(sidecar)); + unlinkSync(sidecar); + console.log(`repaired ${target.file} from ${sidecar}: a previous run stopped before restoring it`); } -} finally { - restore(); -} -unlinkSync(sidecar); -// Every test run above rebuilt dist/ from a mutant; put the restored source back in it. -npm("run", "build"); -if (!readFileSync(dist, "utf8").includes(sentinel)) { - throw new Error(`${dist} does not contain '${sentinel}' after the rebuild; it still carries a mutant`); + const original = readFileSync(target.file); + const originalText = original.toString("utf8"); + const originalDigest = digest(original); + + // Anchors are written with "\n"; the checkout may be CRLF (autocrlf). Match + // the file's own line ending so a multi-line anchor cannot silently miss. + const eol = originalText.includes("\r\n") ? "\r\n" : "\n"; + const withEol = text => text.replace(/\r?\n/g, eol); + + const restore = () => { + writeFileSync(target.file, original); + const restored = digest(readFileSync(target.file)); + if (restored !== originalDigest) { + throw new Error(`restore failed: ${target.file} digest ${restored} != ${originalDigest}`); + } + }; + + const last = own[own.length - 1]; + if (!originalText.includes(target.sentinel) || + originalText.replace(withEol(last.old), withEol(last.new)).includes(target.sentinel)) { + throw new Error( + `the sentinel '${target.sentinel}' must be in ${target.file} and removed by its last mutation ('${last.rule}')`, + ); + } + + writeFileSync(sidecar, original); + try { + writeFileSync(target.file, Buffer.from(originalText, "utf8")); + const controlPass = testsPass(target.workspace); + results.push({ target: name, outcome: controlPass ? "green" : "RED", rule: "control (no-op rewrite)" }); + if (!controlPass) failed = true; + else { + for (const mutation of own) { + const [old, replacement] = [withEol(mutation.old), withEol(mutation.new)]; + const count = occurrences(originalText, old); + if (count !== 1) { + throw new Error(`anchor for '${mutation.rule}' matched ${count} times in ${target.file}, expected exactly 1`); + } + writeFileSync(target.file, Buffer.from(originalText.replace(old, replacement), "utf8")); + const pass = testsPass(target.workspace); + restore(); + results.push({ target: name, outcome: pass ? "SURVIVED" : "killed", rule: mutation.rule }); + if (pass) failed = true; + } + } + } finally { + // A verified restore is what the sidecar exists to guarantee, so it goes + // here and not after the try: a throw mid-run used to leave the sidecar + // behind, and the next run "repaired" the file from bytes that were already + // stale, silently undoing whatever had been fixed in between. + restore(); + unlinkSync(sidecar); + } + + // Every test run above rebuilt dist/ from a mutant; put the restored source back in it. + npm(target.workspace, "run", "build"); + if (!readFileSync(target.dist, "utf8").includes(target.sentinel)) { + throw new Error(`${target.dist} does not contain '${target.sentinel}' after the rebuild; it still carries a mutant`); + } + results.push({ + target: name, + outcome: "restored", + rule: `${target.file} sha256=${originalDigest}, rebuilt ${target.dist}`, + }); } -for (const result of results) console.log(`${result.outcome.padEnd(9)} ${result.rule}`); -console.log(`restored ${target} sha256=${originalDigest}`); -console.log(`rebuilt ${dist}`); +for (const result of results) console.log(`${result.outcome.padEnd(9)} [${result.target}] ${result.rule}`); process.exit(failed ? 1 : 0); From 0dfef0e5ebc4e785cad0e250df90fd151d02068d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 17:40:39 +0200 Subject: [PATCH 0042/1002] Run the TypeScript authority tests in CI, on both operating systems Nothing ran `npm run test --workspace packages/cultnet-ts` in CI. The shared route verifier's tests, which are the whole TypeScript side of the CultMesh authority contract, ran only on a developer's machine, and the browser client's tests ran nowhere. `cultnet-interop.yml` is windows-latest and triggers on main only, so even that would not have covered Linux or a pull request. Both now run in `cultmesh-portability.yml`'s `reactive-and-resource-lifetime` job, beside the step that verifies the same vectors with the C# reference. That job already matrixes windows-latest and ubuntu-latest, already triggers on main, codex/** and pull requests, and already installs the TypeScript workspace dependencies, so the steps cost two npm runs and no new setup. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/cultmesh-portability.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cultmesh-portability.yml b/.github/workflows/cultmesh-portability.yml index 55d2bea8..9f088e95 100644 --- a/.github/workflows/cultmesh-portability.yml +++ b/.github/workflows/cultmesh-portability.yml @@ -96,12 +96,25 @@ jobs: --filter FullyQualifiedName~Document_OneHundredThousandDistinctLeaseCyclesLeaveNoResourcesOrCallbacks --logger "console;verbosity=minimal" + # The TypeScript side of the CultMesh authority rules. This job is the + # only one that runs on both Windows and Linux for main, codex/** and + # pull requests: cultnet-interop.yml is windows-latest and main-only, so + # until these steps existed the shared verifier's tests never ran on + # Linux at all, and the browser client's never ran in CI on any OS. + # packages/cultnet-ts verifies both vector files; cultmesh-browser proves + # the browser client reads the shared rules rather than its own. + - name: Verify the CultMesh authority rules with the TypeScript verifier + run: npm run test --workspace packages/cultnet-ts + + - name: Verify the browser client against the shared TypeScript verifier + run: npm run test --workspace packages/cultmesh-browser + # Both directions of the CultMesh authority vectors: the C#-written # file (contracts/cultmesh/authority-route-vectors.json) and the # TypeScript-signed file (authority-route-vectors.ts-signed.json) are # verified by the C# reference here; the TypeScript side verifies both - # in `npm test --workspace packages/cultnet-ts`. CULTMESH_WRITE_VECTORS - # is never set in CI: the committed files are the contract. + # in the step above. CULTMESH_WRITE_VECTORS is never set in CI: the + # committed files are the contract. - name: Verify the CultMesh authority vectors with the C# reference run: >- dotnet test tests/GameCult.Mesh.Tests/GameCult.Mesh.Tests.csproj From 74fee16003942d3a1dcb1b03edc7a82dd7c6ef39 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 17:51:25 +0200 Subject: [PATCH 0043/1002] Record the Cut 1 edge-alignment batch TypeScript now cleans a route the way the C# constructors do, reads whitespace with C#'s alphabet, refuses the endpoint spellings the URL parser would otherwise repair, and names the two signature refusals as C# names them. Every probe reruns with zero reachable disagreements. Two scars kept for the postmortem: a sidecar that reverted fixes it was meant to protect, and a NUL byte that made git read source as binary. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 33 ++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 69e94093..0105e7de 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -125,6 +125,39 @@ real (in Hands): verify under current rules, and the TS test pins that the committed file verifies under the current module. +**The edge-alignment batch landed** (Opus) at `e67e695` (C#'s whitespace +set through three named helpers; the two signature refusals split to C#'s +texts), `c4c2330` (route fields cleaned before the transcript as the C# +constructors clean them: trim, drop blanks, distinct, sort; generation and +key ids trimmed; a null or empty protocol list transcribes as `""`, and the +TS default that wrote bytes the reference never writes is gone; `verseId` +deliberately raw, because `CanonicalRoute` passes it raw), `803ee12` (a +raw-endpoint pre-check refusing the spellings WHATWG `URL` repairs and +`System.Uri` does not; loopback disagreements 15 → 6, all six documented +unreachable), `dfe582e` (the browser's local reading of "unsigned" killed +by a whitespace-signature session test; the runner mutates the browser +target too, with per-target sidecar, control, sentinel and post-restore +assertion) and `0dfef0e` (the TypeScript authority tests in CI on both +operating systems). Soul's probes rerun: 88 endpoints, zero reachable +disagreements; 34 code points, zero; five signature shapes, byte-identical +messages; fifteen field tampers, zero mismatches against C#'s answers. +Tests 77, 18, 79, 10; closure smoke four tarballs; 33 shared and one +browser mutation killed. + +Two scars from the batch, both recorded because they are the kind a +postmortem should carry: **the runner's sidecar bit twice**, a throw inside +the mutation loop leaving it behind so the next run "repaired" from stale +bytes and silently reverted two fixes Hands had just made (the sidecar is +now removed in the `finally` immediately after the verified restore); and +**a literal NUL byte was committed inside a regex** at `803ee12`, which made +git classify the file as binary, stop normalising its line endings, and +diff the whole file as a rewrite, escaped at `dfe582e`. Residuals named, +not guessed at: `isProtectedEndpoint` did not get the pre-check and no +probe covers protected-scheme spellings; a negative priority throws in C# +and transcribes in TS, unreachable while only C# signs; two browser +mutations survive because the verifier refuses those routes first. Closing +Soul pass in flight. + Seen by Hands, recorded for section 15: `packages/cultnet-ts/src/generated/swarm-contracts.generated.ts` is rewritten with LF by every build while the tree is `autocrlf=true`, so it shows modified with zero content diff after any build; the generator's From 565ce79a4afb458f8acb08a44109ec7805969bda Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 18:21:52 +0200 Subject: [PATCH 0044/1002] Close Cut 1 and start Cut 2 Three Soul passes and three fix batches leave one verifier whose rules match the C# reference as executed, parity pinned both ways and run in CI on both operating systems. Three residuals ride with Cut 2. Two statements this map made about its own batch were overstated and are corrected: the NUL byte never caused a rewrite, and CI was not green throughout. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 41 ++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 0105e7de..4a76e87e 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -13,9 +13,9 @@ ledger are remapped under C (landed 2026-09-16, same day). Q8 is ruled: the built binaries are committed to the tree (section 11.2). No operator question is open. **Cut 1 landed** at `e234a64` (shared verifier, tests, C#-written vectors), `66286b9` (browser copy deleted, −143 net) and -`062a5c6` (mutation runner; twelve killed, one equivalent). Soul's pass -found the verifier and the C#-to-TypeScript bridge sound and proved the -other direction by probe; a fix batch is in Hands for the six findings below. +`062a5c6` (mutation runner; twelve killed, one equivalent), then three +Soul passes and three fix batches; **closed 2026-09-16**, three residuals +carried into Cut 2's Hands pass. **Cut 2 in Hands.** **Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative greps, all twelve mutations rerun and killed, the control catching a @@ -155,8 +155,39 @@ diff the whole file as a rewrite, escaped at `dfe582e`. Residuals named, not guessed at: `isProtectedEndpoint` did not get the pre-check and no probe covers protected-scheme spellings; a negative priority throws in C# and transcribes in TS, unreachable while only C# signs; two browser -mutations survive because the verifier refuses those routes first. Closing -Soul pass in flight. +mutations survive because the verifier refuses those routes first. + +**Third Soul pass, closing.** Held: all 34 whitespace code points in the +browser path too, with C#'s `VerifySessionProof` answer as the +expectation; the three signature refusals byte-identical; cleaning parity +in both directions with fresh keys (nine of nine each way, a padded +`verseId` refused cross-wise, C# confirmed not to trim it); 88 loopback +spellings with only the documented unreachable disagreements; the runner's +control writing through the same path as its mutations; CI's job, matrix, +triggers and setup order as promised; every suite, the closure smoke, both +greps. **Cut 1 is closed; Cut 2 may start.** Three residuals go with Cut 2's +Hands pass: + +- **`isProtectedEndpoint` lacks the raw-shape pre-check** that + `isLoopbackEndpoint` got, so eleven spellings C# refuses as unparseable + are accepted and dialled after repair by `URL`. A trusted signer would + have to emit a malformed endpoint, so security holds and the parity + invariant does not. Five lines. Low-medium. +- **A literal U+001F byte sits in the separator string** in source and + twice in the tests, where C# spells it ``; git does not treat it as + binary, but any editor that strips C0 controls changes every signature + with no visible diff. The NUL scar one rank lower. +- **The sidecar footgun is narrowed, not removed**: a SIGKILL still leaves + it, and an edit made before the next run is overwritten by the repair. + Repair must refuse when the file matches neither the sidecar nor the + mutant. + +Two corrections to this map's own record of the batch: **the NUL scar was +overstated**, since the byte sat past git's binary sniff and no whole-file +rewrite exists in history, only the normalisation path saw it and the blob +was LF-only anyway; and **CI was not green throughout the batch**, two of +its commits failing an unrelated Eve checkpoint job before the authority +steps existed, green from `0dfef0e`. Seen by Hands, recorded for section 15: `packages/cultnet-ts/src/generated/swarm-contracts.generated.ts` is rewritten with LF by every build while the tree is `autocrlf=true`, so From c64a2da81d65ddbbfa56ebaff62499416dc0f415 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 18:29:13 +0200 Subject: [PATCH 0045/1002] Refuse the URL-repaired spellings in the protection gate too `isLoopbackEndpoint` hands its endpoint to `refusedByCSharpUriShape` before `URL` sees it; `isProtectedEndpoint` did not, and `URL` repairs eleven spellings `System.Uri` refuses outright. Every one of them answered protected here and unprotected in the C# reference, which is the dangerous direction: the channel-protection gate opened on a route `IsProtected` would have closed. `wss:x`, `wss:host`, `wss:host:8443`, `wss:/host` and `wss:///host` have no authority for `System.Uri`; `wss://host\path` and `wss://host:8443\` carry a backslash; `wss://ho\tst/m`, `wss://host\t/m` and `quic://ho\tst` a tab, and `wss://host\r\n/m` a CR/LF, all of which `URL` deletes. Soul's 71 raw-shape spellings go in as a table with the answer the C# `IsProtected` gave for each on 2026-09-16, and the test asserts the invariant rather than equality: TypeScript may never call an endpoint protected that C# refuses. Eleven of the 71 now differ the safe way round, C# protected and this not, and they are pinned by name rather than excluded, so neither a twelfth joining them nor one of them flipping passes quietly. Two throw in `URL` before any rule of ours runs (an IPv6 zone id, a non-breaking-space host); the other nine are host repairs `refusedByCSharpUriShape` refuses on purpose, because the same repair would make `isLoopbackEndpoint` lie. None is dialable as a browser CultMesh route. The mutation that drops the pre-check from `isProtectedEndpoint` alone, leaving `isLoopbackEndpoint`'s in place, is killed by that test. Co-Authored-By: Claude Fable 5.1 --- packages/cultnet-ts/src/cultmesh-authority.ts | 22 +++- .../test/cultmesh-authority.test.ts | 118 ++++++++++++++++++ scripts/mutate-cultmesh-authority.mjs | 8 ++ 3 files changed, 147 insertions(+), 1 deletion(-) diff --git a/packages/cultnet-ts/src/cultmesh-authority.ts b/packages/cultnet-ts/src/cultmesh-authority.ts index b9681c71..10c9d187 100644 --- a/packages/cultnet-ts/src/cultmesh-authority.ts +++ b/packages/cultnet-ts/src/cultmesh-authority.ts @@ -361,8 +361,28 @@ export function isLoopbackEndpoint(value: string): boolean { } } -/** The C# rule (`CultMeshAuthorityProof.cs`, `IsProtected`): wss, https, or any scheme containing "quic". */ +/** + * The C# rule (`CultMeshAuthorityProof.cs`, `IsProtected`): wss, https, or any + * scheme containing "quic", over a string `System.Uri` parses at all. + * + * `refusedByCSharpUriShape` runs first here for the same reason it runs first in + * `isLoopbackEndpoint`, and it matters more: `URL` repairs eleven spellings + * `System.Uri` refuses outright, and every one of them would be *protected* here + * and unprotected in C#. `wss:x`, `wss:host`, `wss:host:8443`, `wss:/host` and + * `wss:///host` have no authority for `System.Uri` to accept; `wss://host\path` + * and `wss://host:8443\` carry a backslash; `wss://ho\tst/m`, `wss://host\t/m`, + * `quic://ho\tst` carry a tab and `wss://host\r\n/m` a CR/LF, which `URL` + * deletes. Letting any of them answer true would clear the channel-protection + * gate on a route C# refuses. + * + * Two spellings of Soul's 71 still disagree, both the safe way round: C# calls + * them protected and this answers false, so a route is refused rather than + * admitted. `wss://[::1%eth0]/m` (the IPv6 zone id) and `wss://host /m` + * (a non-breaking space in the host) both throw in `URL`, so they answered + * false before this pre-check existed too. Neither is dialable from a browser. + */ export function isProtectedEndpoint(value: string): boolean { + if (refusedByCSharpUriShape(value)) return false; let scheme: string; try { scheme = new URL(value).protocol.slice(0, -1).toLowerCase(); diff --git a/packages/cultnet-ts/test/cultmesh-authority.test.ts b/packages/cultnet-ts/test/cultmesh-authority.test.ts index f5e61b80..3017300f 100644 --- a/packages/cultnet-ts/test/cultmesh-authority.test.ts +++ b/packages/cultnet-ts/test/cultmesh-authority.test.ts @@ -311,6 +311,124 @@ test("isProtectedEndpoint is the C# rule: wss, https, or any scheme containing q } }); +// Every raw-shape spelling Soul put to both sides on 2026-09-16, with the answer +// `IsProtected` gave through `CultMeshAuthorityTrustPolicy` as the expectation. +// The list is Soul's 71 verbatim, duplicate included. +const CSHARP_PROTECTED_ANSWERS: readonly (readonly [string, boolean])[] = [ + ["ws:x", false], + ["wss:x", false], + ["wss:/host", false], + ["wss:///host", false], + ["wss://host:8443\\", false], + ["wss://host\\path", false], + ["wss:\\\\host/m", true], + ["wss://host./m", true], + ["wss://\uff48\uff4f\uff53\uff54/m", true], + ["QUIC://host/m", true], + ["Quic+x://host/m", true], + ["cultmesh-state+quic://h:4433/?c=1", true], + ["wss://ho\tst/m", false], + ["wss://host\t/m", false], + ["\twss://host/m", true], + [" wss://host/m", true], + ["wss://host/m ", true], + ["wss://host/m\n", true], + ["wss://host:99999/m", false], + ["wss://[::1%eth0]/m", true], + ["wss://user:pw@host/m", true], + ["https://host/m", true], + ["HTTPS://host", true], + ["ws://host/m", false], + ["WS://host/m", false], + ["http://host/m", false], + ["quic:host", true], + ["quic:", true], + ["wss:", false], + ["wss://", false], + ["wss:///", false], + ["quic+wss://host", true], + ["x-quic://host", true], + ["xquicx://host", true], + ["wss ://host/m", false], + ["w ss://host/m", false], + ["wss://host:abc/m", false], + ["wss://\uff11\uff12\uff17.0.0.1/m", true], + ["wss://127.0.0.1./m", true], + ["not a url", false], + ["", false], + [" ", false], + ["wss://host?x=1", true], + ["wss://host#f", true], + ["wss://[::1]/m", true], + ["wss://[::1", false], + ["wss://host/m\u0000", true], + ["wss://host/\u0085m", true], + ["\u0085wss://host/m", false], + ["\ufeffwss://host/m", false], + ["ws://127.0.0.1\\m", false], + ["ws:127.0.0.1", false], + ["ws:/127.0.0.1", false], + ["ws:///127.0.0.1", false], + ["ws://127.0.0.1./m", false], + ["ws://\uff4c\uff4f\uff43\uff41\uff4c\uff48\uff4f\uff53\uff54/m", false], + ["ws://localhost\t/m", false], + ["wss://host:8443\\", false], + ["wss:host", false], + ["wss:host:8443", false], + ["wss://host:8443/\\", true], + ["wss://ho st/m", false], + ["wss://host%20/m", false], + ["wss://host\u00a0/m", true], + ["wss://host\r\n/m", false], + ["wss:// host/m", false], + ["wss://host /m", false], + ["quic://ho\tst", false], + ["QUIC:\\\\host", true], + ["ws://127.0.0.1:1/m\t", false], + ["wss://xn--80ak6aa92e.com/m", true], +]; + +// The eleven of the 71 where the two sides still differ, every one of them the +// safe way round: C# calls the endpoint protected and TypeScript does not, so a +// route is refused rather than admitted. `refusedByCSharpUriShape` is stricter +// than `System.Uri.TryCreate` on purpose — it also refuses the host repairs that +// would make `isLoopbackEndpoint` lie — and a zone id and a non-breaking-space +// host throw in `URL` before any rule of ours runs. None of them is dialable as +// a browser CultMesh route. Pinned exactly, not merely excluded: if one of these +// starts answering true, or a twelfth spelling joins them, this fails. +const STRICTER_THAN_CSHARP: readonly string[] = [ + "wss:\\\\host/m", + "wss://host./m", + "wss://\uff48\uff4f\uff53\uff54/m", + "wss://[::1%eth0]/m", + "quic:host", + "quic:", + "wss://\uff11\uff12\uff17.0.0.1/m", + "wss://127.0.0.1./m", + "wss://host:8443/\\", + "wss://host\u00a0/m", + "QUIC:\\\\host", +]; + +test("isProtectedEndpoint is never more permissive than the C# IsProtected, over every raw-shape spelling Soul probed", () => { + assert.equal(CSHARP_PROTECTED_ANSWERS.length, 71); + const stricter = new Set(STRICTER_THAN_CSHARP); + // The invariant that matters: TypeScript must never call an endpoint protected + // that C# refuses, or the channel-protection gate opens on a route the + // reference would have closed. `URL` repairs eleven spellings `System.Uri` + // refuses outright, and every one of them used to land on the wrong side here. + const morePermissive: string[] = []; + const unexpectedlyStricter: string[] = []; + for (const [endpoint, csharp] of CSHARP_PROTECTED_ANSWERS) { + const ours = isProtectedEndpoint(endpoint); + if (ours && !csharp) morePermissive.push(JSON.stringify(endpoint)); + if (!ours && csharp && !stricter.has(endpoint)) unexpectedlyStricter.push(JSON.stringify(endpoint)); + if (stricter.has(endpoint)) assert.equal(ours, false, `${JSON.stringify(endpoint)} is listed as stricter`); + } + assert.deepEqual(morePermissive, []); + assert.deepEqual(unexpectedlyStricter, []); +}); + // Every endpoint Soul put to both sides on 2026-09-16, with the answer // `System.Uri.IsLoopback` gave through `CultMeshAuthorityTrustPolicy` as the // expectation. Six of the probe's 88 are left out and named in the doc comment diff --git a/scripts/mutate-cultmesh-authority.mjs b/scripts/mutate-cultmesh-authority.mjs index 92e4bf53..1e3e1b32 100644 --- a/scripts/mutate-cultmesh-authority.mjs +++ b/scripts/mutate-cultmesh-authority.mjs @@ -233,6 +233,14 @@ const mutations = [ old: 'scheme.includes("quic")', new: 'scheme === "quic"', }, + { + // Only `isProtectedEndpoint`'s copy: `isLoopbackEndpoint` keeps its own, so + // this pins that the protection gate refuses the spellings `URL` repairs + // rather than inheriting the answer from the loopback rule. + rule: "isProtectedEndpoint refuses the raw shapes System.Uri refuses", + old: " if (refusedByCSharpUriShape(value)) return false;\n let scheme: string;\n", + new: " let scheme: string;\n", + }, { rule: "protected scheme: https", old: 'scheme === "https" || ', From 6c933d034bf8df20991c38573a61a6f6355ffeef Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 18:31:52 +0200 Subject: [PATCH 0046/1002] Spell the transcript separator as an escape, not a raw byte The unit separator that joins protocol ids sat in the source as a literal U+001F: once in `cultmesh-authority.ts` and twice in its test. Every editor, every diff and every review renders it as nothing, so `join("")` reads as a join on the empty string and the transcript looks wrong to anyone checking it against the C# reference, which spells the same separator as an escape. The bytes were right, which is exactly why nothing caught it. The three become escapes. The bytes do not move: the C#-written and the TypeScript-written route vectors both still verify through the shared module, and the sorted-transcript test still builds the same expected bytes. A new test reads both files and refuses any byte below 0x20 that is not LF or CR, so the class recurs loudly rather than silently. It earned its keep on the first run by catching a literal U+001F in the comment introducing it. Co-Authored-By: Claude Fable 5.1 --- packages/cultnet-ts/src/cultmesh-authority.ts | 2 +- .../test/cultmesh-authority.test.ts | 21 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/packages/cultnet-ts/src/cultmesh-authority.ts b/packages/cultnet-ts/src/cultmesh-authority.ts index 10c9d187..d61f6072 100644 --- a/packages/cultnet-ts/src/cultmesh-authority.ts +++ b/packages/cultnet-ts/src/cultmesh-authority.ts @@ -205,7 +205,7 @@ export function canonicalRoute(route: CultMeshAuthorityRouteView): Uint8Array { route.verseId, authorityRuntimeId, endpoint, - cleanProtocolIds(route.protocolIds).join(""), + cleanProtocolIds(route.protocolIds).join("\u001f"), String(route.priority ?? 0), // A blank generation is not blank in C#: the route constructor substitutes // the runtime id and endpoint, already cleaned, joined by "@". diff --git a/packages/cultnet-ts/test/cultmesh-authority.test.ts b/packages/cultnet-ts/test/cultmesh-authority.test.ts index 3017300f..dbf5a8d7 100644 --- a/packages/cultnet-ts/test/cultmesh-authority.test.ts +++ b/packages/cultnet-ts/test/cultmesh-authority.test.ts @@ -278,7 +278,7 @@ test("protocol ids are sorted ordinally into the transcript, whatever order the route.verseId, route.authorityRuntimeId, route.endpoint, - "cultmesh.content.v1cultmesh.documents.v1cultmesh.realtime.v1", + "cultmesh.content.v1\u001fcultmesh.documents.v1\u001fcultmesh.realtime.v1", "0", route.generation, certificate.providerKey.keyId, @@ -655,3 +655,22 @@ test("the shared module keeps the browser-safe surface: no node: import", () => const source = readFileSync(join(__dirname, "..", "..", "src", "cultmesh-authority.ts"), "utf8"); assert.doesNotMatch(source, /from "node:|require\("node:/); }); + +// The transcript separator is U+001F, and it sat in these two files as a literal +// byte: invisible in every editor and diff, indistinguishable from the empty +// string in `join("")`. The bytes were right, which is why nothing caught it. +// Any control character in a string literal has the same problem, so none of +// them may be spelled literally here; a backslash-u escape is the only spelling. +for (const [label, path] of [ + ["the shared module", join(__dirname, "..", "..", "src", "cultmesh-authority.ts")], + ["this test", join(__dirname, "..", "..", "test", "cultmesh-authority.test.ts")], +] as const) test(`${label} spells control characters as escapes, never as literal bytes`, () => { + const bytes = readFileSync(path); + const offenders: string[] = []; + for (const [offset, byte] of bytes.entries()) { + if (byte >= 0x20 || byte === 0x0a || byte === 0x0d) continue; + const line = bytes.subarray(0, offset).toString("utf8").split("\n").length; + offenders.push(`0x${byte.toString(16).padStart(2, "0")} at byte ${offset} (line ${line})`); + } + assert.deepEqual(offenders, []); +}); From fe2555da6370626d51efb6145d1755de75bb72ca Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 18:35:44 +0200 Subject: [PATCH 0047/1002] Repair only the file states the mutation runner itself wrote A SIGKILL leaves the sidecar behind, and the next run wrote it over whatever the file then held. That is right after a kill and destructive after one: a fix written to the source between the kill and the next run was reverted to bytes from before the kill, with a line claiming a repair, and the run then reported mutation results for code nobody had written. The mutation table is the record of what a live run can leave behind: the original (which is the sidecar, and also what the no-op control writes) or the original with exactly one of that target's mutations applied. Repair now recognises those and nothing else. A file matching neither stops the run with its own digest and the sidecar's and changes nothing. Reproduced both halves against the shared target. Killed mid-mutation, then appended a line to the source: the rerun exits 1, prints both sha256s, and the hand-written line is still there afterwards. With the mutant put back and the sidecar unchanged, the rerun repairs as before and now names the mutation the dead run was inside. Co-Authored-By: Claude Fable 5.1 --- scripts/mutate-cultmesh-authority.mjs | 54 ++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/scripts/mutate-cultmesh-authority.mjs b/scripts/mutate-cultmesh-authority.mjs index 1e3e1b32..8aec4eee 100644 --- a/scripts/mutate-cultmesh-authority.mjs +++ b/scripts/mutate-cultmesh-authority.mjs @@ -282,6 +282,54 @@ function occurrences(text, needle) { return text.split(needle).length - 1; } +/** + * Repairs a file left mutated by a run that died before its `finally`, and only + * that. + * + * A SIGKILL leaves the sidecar behind. The repair used to write the sidecar over + * whatever the file now held, which is right after a kill and destructive after + * one: a fix made to the source between the kill and the next run was silently + * reverted to bytes from before the kill, and the run then reported on code + * nobody had written. + * + * So repair only what this script can prove it wrote. The mutation table is the + * record: every file state a live run can leave behind is either the original + * (the sidecar, also what the no-op control writes) or the original with exactly + * one of that target's mutations applied. Anything else — a hand edit, a + * half-written file, a different branch — is somebody else's, and the run stops + * with both digests rather than guessing. + */ +function repair(name, target, own, sidecar) { + const original = readFileSync(sidecar); + const originalText = original.toString("utf8"); + const eol = originalText.includes("\r\n") ? "\r\n" : "\n"; + const withEol = text => text.replace(/\r?\n/g, eol); + const current = readFileSync(target.file); + const currentDigest = digest(current); + const originalDigest = digest(original); + + if (currentDigest === originalDigest || currentDigest === digest(Buffer.from(originalText, "utf8"))) { + unlinkSync(sidecar); + console.log(`${target.file} is already the original; dropped the stale ${sidecar}`); + return; + } + + const currentText = current.toString("utf8"); + const mutant = own.find(mutation => + originalText.replace(withEol(mutation.old), withEol(mutation.new)) === currentText); + if (!mutant) { + throw new Error( + `${target.file} is neither the original nor any mutation of target '${name}', so a previous run did not write it.\n` + + ` ${target.file} sha256=${currentDigest}\n` + + ` ${sidecar} sha256=${originalDigest}\n` + + " Refusing to overwrite it. Reconcile the file by hand, then delete the sidecar.", + ); + } + writeFileSync(target.file, original); + unlinkSync(sidecar); + console.log(`repaired ${target.file} from ${sidecar}: a previous run stopped inside '${mutant.rule}'`); +} + const results = []; let failed = false; @@ -289,11 +337,7 @@ for (const [name, target] of Object.entries(targets)) { const own = mutations.filter(mutation => (mutation.target ?? "shared") === name); if (own.length === 0) throw new Error(`target '${name}' has no mutations`); const sidecar = `${target.file}.mutation-original`; - if (existsSync(sidecar)) { - writeFileSync(target.file, readFileSync(sidecar)); - unlinkSync(sidecar); - console.log(`repaired ${target.file} from ${sidecar}: a previous run stopped before restoring it`); - } + if (existsSync(sidecar)) repair(name, target, own, sidecar); const original = readFileSync(target.file); const originalText = original.toString("utf8"); From 6cbc73fb17bfe08259a0b61f658a1e324c56b665 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 19:20:41 +0200 Subject: [PATCH 0048/1002] Encode a CultMesh realtime frame in TypeScript One codec, `packages/cultmesh-ts/src/realtime-wire.ts`, rule for rule what `CultMeshRealtimeWireProtocol` does: the 37-byte little-endian fixed header with magic 0x31545343, the delivery byte as the C# enum ordinal, the i64 epoch and sequence, three u16 identity lengths, the i32 payload length, the stamped header size and wire version, then UTF-8 identities and the payload. It touches no socket; QUIC stream framing stays transport-owned. The blank reading in `Validate` is `IsNullOrWhiteSpace`, whose whitespace set is not `String.prototype.trim`'s, so it borrows `isNullOrWhiteSpaceCSharp` from `cultnet-ts` rather than growing a second reading of the same rule. Byte parity is proven in both directions and in two processes, which is what the authority vectors cost us to learn. `contracts/cultmesh/realtime-frame-vectors.json` is written by the new C# test under CULTMESH_WRITE_VECTORS=1 and decoded and re-encoded here; `realtime-frame-vectors.ts-written.json` is written by `scripts/write-cultmesh-realtime-frame-vectors.mjs` with this codec, over different identities and epochs, and decoded by the same C# test with the reference implementation alone. Both files share one field shape, so each side reads both with one reader. The two cases that would put megabytes into a committed contract file, identities at exactly 65,535 UTF-8 bytes and a 64 MiB payload, are recorded as a build rule plus the digest of the whole encoding; both sides build them the same way. Three things the C# reference gets from its type system and TypeScript does not, each refused rather than left to surface as a stray runtime error: a `bigint` outside the i64 range, a delivery string the union cannot spell, and a leading U+FEFF, which `TextDecoder` deletes by default and `Encoding.UTF8.GetString` keeps. The last one is a real divergence the test caught; the decoder now sets `ignoreBOM`. U+FEFF is not whitespace to .NET, so such an identity passes the transport contract and reaches the wire. There was no C# test for this codec before; this is also its first. Co-Authored-By: Claude Fable 5.1 --- .../cultmesh/realtime-frame-vectors.json | 177 +++++++++ .../realtime-frame-vectors.ts-written.json | 177 +++++++++ packages/cultmesh-ts/src/index.ts | 1 + packages/cultmesh-ts/src/realtime-wire.ts | 178 +++++++++ .../cultmesh-ts/test/realtime-wire.test.ts | 344 +++++++++++++++++ .../write-cultmesh-realtime-frame-vectors.mjs | 177 +++++++++ .../CultMeshRealtimeWireProtocolTests.cs | 361 ++++++++++++++++++ 7 files changed, 1415 insertions(+) create mode 100644 contracts/cultmesh/realtime-frame-vectors.json create mode 100644 contracts/cultmesh/realtime-frame-vectors.ts-written.json create mode 100644 packages/cultmesh-ts/src/realtime-wire.ts create mode 100644 packages/cultmesh-ts/test/realtime-wire.test.ts create mode 100644 scripts/write-cultmesh-realtime-frame-vectors.mjs create mode 100644 tests/GameCult.Mesh.Tests/CultMeshRealtimeWireProtocolTests.cs diff --git a/contracts/cultmesh/realtime-frame-vectors.json b/contracts/cultmesh/realtime-frame-vectors.json new file mode 100644 index 00000000..467c784d --- /dev/null +++ b/contracts/cultmesh/realtime-frame-vectors.json @@ -0,0 +1,177 @@ +{ + "frames": [ + { + "label": "reliable-ordered, small payload", + "fields": { + "channelId": "aetheria.zone-1", + "schemaId": "cultmesh.realtime.v1", + "bodyId": "body-7", + "producerEpoch": 1, + "sequence": 2, + "delivery": "reliable-ordered", + "payload": "AH+A/yo=" + }, + "encoding": "Q1NUMQABAAAAAAAAAAIAAAAAAAAADwAUAAYABQAAACUAAAABAGFldGhlcmlhLnpvbmUtMWN1bHRtZXNoLnJlYWx0aW1lLnYxYm9keS03AH+A/yo=", + "encodedLength": 83, + "sha256OfEncoding": "d04539b99790560e5e570208d92d3ac25f85909a36bfeb190c2080288cc9f1d4" + }, + { + "label": "latest-only, small payload", + "fields": { + "channelId": "aetheria.zone-1", + "schemaId": "cultmesh.realtime.v1", + "bodyId": "body-7", + "producerEpoch": 3, + "sequence": 4, + "delivery": "latest-only", + "payload": "AQID" + }, + "encoding": "Q1NUMQEDAAAAAAAAAAQAAAAAAAAADwAUAAYAAwAAACUAAAABAGFldGhlcmlhLnpvbmUtMWN1bHRtZXNoLnJlYWx0aW1lLnYxYm9keS03AQID", + "encodedLength": 81, + "sha256OfEncoding": "2c875718cf4968979f3cd4083ba2b279e8c03815ad3447c66037ee4530b2814a" + }, + { + "label": "unreliable, small payload", + "fields": { + "channelId": "aetheria.zone-1", + "schemaId": "cultmesh.realtime.v1", + "bodyId": "body-7", + "producerEpoch": 5, + "sequence": 6, + "delivery": "unreliable", + "payload": "/g==" + }, + "encoding": "Q1NUMQIFAAAAAAAAAAYAAAAAAAAADwAUAAYAAQAAACUAAAABAGFldGhlcmlhLnpvbmUtMWN1bHRtZXNoLnJlYWx0aW1lLnYxYm9keS03/g==", + "encodedLength": 79, + "sha256OfEncoding": "b932adf333a0ca73d3a9077e15cf9062070a3084a50a3a30c3baa53312d864b1" + }, + { + "label": "empty payload", + "fields": { + "channelId": "aetheria.zone-1", + "schemaId": "cultmesh.realtime.v1", + "bodyId": "body-7", + "producerEpoch": 0, + "sequence": 0, + "delivery": "reliable-ordered", + "payload": "" + }, + "encoding": "Q1NUMQAAAAAAAAAAAAAAAAAAAAAADwAUAAYAAAAAACUAAAABAGFldGhlcmlhLnpvbmUtMWN1bHRtZXNoLnJlYWx0aW1lLnYxYm9keS03", + "encodedLength": 78, + "sha256OfEncoding": "06c0362f2b395bf7855522190f6a59c45c46947ce7a9a4b8be115cf54a48f419" + }, + { + "label": "multi-byte identities", + "fields": { + "channelId": "aetheria.zöne-∞", + "schemaId": "cultmesh.realtime.€1", + "bodyId": "bødy-\uD83D\uDD25", + "producerEpoch": 11, + "sequence": 12, + "delivery": "latest-only", + "payload": "cGF5bG9hZC3iiJ4=" + }, + "encoding": "Q1NUMQELAAAAAAAAAAwAAAAAAAAAEgAWAAoACwAAACUAAAABAGFldGhlcmlhLnrDtm5lLeKInmN1bHRtZXNoLnJlYWx0aW1lLuKCrDFiw7hkeS3wn5SlcGF5bG9hZC3iiJ4=", + "encodedLength": 98, + "sha256OfEncoding": "90c6ae8f1362d9e000aa57682612bb1d7606cabe2cd0c0969fdd07b816f44b1c" + }, + { + "label": "epoch and sequence at long.MaxValue", + "fields": { + "channelId": "aetheria.zone-1", + "schemaId": "cultmesh.realtime.v1", + "bodyId": "body-7", + "producerEpoch": 9223372036854775807, + "sequence": 9223372036854775807, + "delivery": "unreliable", + "payload": "Wg==" + }, + "encoding": "Q1NUMQL/////////f/////////9/DwAUAAYAAQAAACUAAAABAGFldGhlcmlhLnpvbmUtMWN1bHRtZXNoLnJlYWx0aW1lLnYxYm9keS03Wg==", + "encodedLength": 79, + "sha256OfEncoding": "208068a668b48dc1abde9b3d7f025e7f7b6de6c480faea25c1383b6de9fd37ca" + }, + { + "label": "identities at exactly 65535 UTF-8 bytes", + "fields": { + "channelId": { + "repeat": "ä€", + "byteLength": 65535 + }, + "schemaId": { + "repeat": "€ä", + "byteLength": 65535 + }, + "bodyId": { + "repeat": "ñ€", + "byteLength": 65535 + }, + "producerEpoch": 13, + "sequence": 14, + "delivery": "reliable-ordered", + "payload": "ESI=" + }, + "encoding": null, + "encodedLength": 196644, + "sha256OfEncoding": "e3c1a353b606e86b35169efb875e76349dcfcb2d036973ee3bbe3c601fbda3e1" + }, + { + "label": "64 MiB payload", + "fields": { + "channelId": "aetheria.zone-1", + "schemaId": "cultmesh.realtime.v1", + "bodyId": "body-7", + "producerEpoch": 15, + "sequence": 16, + "delivery": "reliable-ordered", + "payload": { + "ramp": 67108864 + } + }, + "encoding": null, + "encodedLength": 67108942, + "sha256OfEncoding": "4d99183bdb450af854d87a81ba86a3a4c92ecc1b208675d916f1b75a9f1e7928" + } + ], + "malformed": [ + { + "label": "truncated header", + "encoding": "Q1NUMQABAAAAAAAAAAIAAAAAAAAADwAUAAYAAwAAACUAAAAB", + "message": "Realtime frame header is truncated." + }, + { + "label": "wrong magic", + "encoding": "vFNUMQABAAAAAAAAAAIAAAAAAAAADwAUAAYAAwAAACUAAAABAGFldGhlcmlhLnpvbmUtMWN1bHRtZXNoLnJlYWx0aW1lLnYxYm9keS03CQkJ", + "message": "Realtime frame magic is invalid." + }, + { + "label": "wire version 2", + "encoding": "Q1NUMQABAAAAAAAAAAIAAAAAAAAADwAUAAYAAwAAACUAAAACAGFldGhlcmlhLnpvbmUtMWN1bHRtZXNoLnJlYWx0aW1lLnYxYm9keS03CQkJ", + "message": "Realtime frame wire version is unsupported." + }, + { + "label": "header size 36", + "encoding": "Q1NUMQABAAAAAAAAAAIAAAAAAAAADwAUAAYAAwAAACQAAAABAGFldGhlcmlhLnpvbmUtMWN1bHRtZXNoLnJlYWx0aW1lLnYxYm9keS03CQkJ", + "message": "Realtime frame wire version is unsupported." + }, + { + "label": "delivery 3", + "encoding": "Q1NUMQMBAAAAAAAAAAIAAAAAAAAADwAUAAYAAwAAACUAAAABAGFldGhlcmlhLnpvbmUtMWN1bHRtZXNoLnJlYWx0aW1lLnYxYm9keS03CQkJ", + "message": "Realtime frame delivery mode is invalid." + }, + { + "label": "delivery 255", + "encoding": "Q1NUMf8BAAAAAAAAAAIAAAAAAAAADwAUAAYAAwAAACUAAAABAGFldGhlcmlhLnpvbmUtMWN1bHRtZXNoLnJlYWx0aW1lLnYxYm9keS03CQkJ", + "message": "Realtime frame delivery mode is invalid." + }, + { + "label": "payload length -1", + "encoding": "Q1NUMQABAAAAAAAAAAIAAAAAAAAADwAUAAYAAwAAgCUAAAABAGFldGhlcmlhLnpvbmUtMWN1bHRtZXNoLnJlYWx0aW1lLnYxYm9keS03CQkJ", + "message": "Realtime frame length is invalid." + }, + { + "label": "length sum off by one", + "encoding": "Q1NUMQABAAAAAAAAAAIAAAAAAAAADwAUAAYAAwAAACUAAAABAGFldGhlcmlhLnpvbmUtMWN1bHRtZXNoLnJlYWx0aW1lLnYxYm9keS03CQkJAA==", + "message": "Realtime frame length is invalid." + } + ] +} diff --git a/contracts/cultmesh/realtime-frame-vectors.ts-written.json b/contracts/cultmesh/realtime-frame-vectors.ts-written.json new file mode 100644 index 00000000..0b987722 --- /dev/null +++ b/contracts/cultmesh/realtime-frame-vectors.ts-written.json @@ -0,0 +1,177 @@ +{ + "frames": [ + { + "label": "ts reliable-ordered, small payload", + "fields": { + "channelId": "ts.zone-a", + "schemaId": "cultmesh.realtime.v1", + "bodyId": "ts-body-1", + "producerEpoch": 21, + "sequence": 22, + "delivery": "reliable-ordered", + "payload": "AAH+/w==" + }, + "encoding": "Q1NUMQAVAAAAAAAAABYAAAAAAAAACQAUAAkABAAAACUAAAABAHRzLnpvbmUtYWN1bHRtZXNoLnJlYWx0aW1lLnYxdHMtYm9keS0xAAH+/w==", + "encodedLength": 79, + "sha256OfEncoding": "68c264a42ce34e540e9dbee31dab5b73dec98c767f0b44591ce6a477cd17fc04" + }, + { + "label": "ts latest-only, small payload", + "fields": { + "channelId": "ts.zone-a", + "schemaId": "cultmesh.realtime.v1", + "bodyId": "ts-body-1", + "producerEpoch": 23, + "sequence": 24, + "delivery": "latest-only", + "payload": "f4A=" + }, + "encoding": "Q1NUMQEXAAAAAAAAABgAAAAAAAAACQAUAAkAAgAAACUAAAABAHRzLnpvbmUtYWN1bHRtZXNoLnJlYWx0aW1lLnYxdHMtYm9keS0xf4A=", + "encodedLength": 77, + "sha256OfEncoding": "3d4f49f4aa2c1f132c3a09ee83555c13e0bc036d636524a972e2829cf417b959" + }, + { + "label": "ts unreliable, small payload", + "fields": { + "channelId": "ts.zone-a", + "schemaId": "cultmesh.realtime.v1", + "bodyId": "ts-body-1", + "producerEpoch": 25, + "sequence": 26, + "delivery": "unreliable", + "payload": "pQ==" + }, + "encoding": "Q1NUMQIZAAAAAAAAABoAAAAAAAAACQAUAAkAAQAAACUAAAABAHRzLnpvbmUtYWN1bHRtZXNoLnJlYWx0aW1lLnYxdHMtYm9keS0xpQ==", + "encodedLength": 76, + "sha256OfEncoding": "2c2faec604850959d44ee65d87d2ea59462b667c5d0db8565a8c159d75301851" + }, + { + "label": "ts empty payload", + "fields": { + "channelId": "ts.zone-a", + "schemaId": "cultmesh.realtime.v1", + "bodyId": "ts-body-1", + "producerEpoch": 0, + "sequence": 0, + "delivery": "latest-only", + "payload": "" + }, + "encoding": "Q1NUMQEAAAAAAAAAAAAAAAAAAAAACQAUAAkAAAAAACUAAAABAHRzLnpvbmUtYWN1bHRtZXNoLnJlYWx0aW1lLnYxdHMtYm9keS0x", + "encodedLength": 75, + "sha256OfEncoding": "6d2a04b399f32db4086e728194249b0279330ffa5517cdd82228f691a0f10708" + }, + { + "label": "ts multi-byte identities", + "fields": { + "channelId": "ts.zøne-∂", + "schemaId": "cultmesh.realtime.µ1", + "bodyId": "ts-bödy-🧊", + "producerEpoch": 27, + "sequence": 28, + "delivery": "unreliable", + "payload": "dHMtcGF5bG9hZC3iiII=" + }, + "encoding": "Q1NUMQIbAAAAAAAAABwAAAAAAAAADAAVAA0ADgAAACUAAAABAHRzLnrDuG5lLeKIgmN1bHRtZXNoLnJlYWx0aW1lLsK1MXRzLWLDtmR5LfCfp4p0cy1wYXlsb2FkLeKIgg==", + "encodedLength": 97, + "sha256OfEncoding": "d5d22458bd50a446c7bdce4e2598fe8e5e7bfac3646d8fcd7215363c7c5c8ca1" + }, + { + "label": "ts epoch and sequence at long.MaxValue", + "fields": { + "channelId": "ts.zone-a", + "schemaId": "cultmesh.realtime.v1", + "bodyId": "ts-body-1", + "producerEpoch": 9223372036854775807, + "sequence": 9223372036854775807, + "delivery": "reliable-ordered", + "payload": "Bw==" + }, + "encoding": "Q1NUMQD/////////f/////////9/CQAUAAkAAQAAACUAAAABAHRzLnpvbmUtYWN1bHRtZXNoLnJlYWx0aW1lLnYxdHMtYm9keS0xBw==", + "encodedLength": 76, + "sha256OfEncoding": "2abb67a876dc4ed006f33708b4c4dda55a90a6f95da7352749225195b10d45ba" + }, + { + "label": "ts identities at exactly 65535 UTF-8 bytes", + "fields": { + "channelId": { + "repeat": "ü☃", + "byteLength": 65535 + }, + "schemaId": { + "repeat": "☃ü", + "byteLength": 65535 + }, + "bodyId": { + "repeat": "ç☃", + "byteLength": 65535 + }, + "producerEpoch": 29, + "sequence": 30, + "delivery": "latest-only", + "payload": "M0Q=" + }, + "encoding": null, + "encodedLength": 196644, + "sha256OfEncoding": "8bd4cd4c5232339f76b8e394eb93b66e8d14302398ecce2ae5bdb78070ef783a" + }, + { + "label": "ts 64 MiB payload", + "fields": { + "channelId": "ts.zone-a", + "schemaId": "cultmesh.realtime.v1", + "bodyId": "ts-body-1", + "producerEpoch": 31, + "sequence": 32, + "delivery": "unreliable", + "payload": { + "ramp": 67108864 + } + }, + "encoding": null, + "encodedLength": 67108939, + "sha256OfEncoding": "f2c20e0b47a7681fbaeff6fcba024363542805de4cd95eeb7fa9f125ba646af0" + } + ], + "malformed": [ + { + "label": "ts truncated header", + "encoding": "Q1NUMQAVAAAAAAAAABYAAAAAAAAACQAUAAkABAAAACUAAAAB", + "message": "Realtime frame header is truncated." + }, + { + "label": "ts wrong magic", + "encoding": "Q1OrMQAVAAAAAAAAABYAAAAAAAAACQAUAAkABAAAACUAAAABAHRzLnpvbmUtYWN1bHRtZXNoLnJlYWx0aW1lLnYxdHMtYm9keS0xAAH+/w==", + "message": "Realtime frame magic is invalid." + }, + { + "label": "ts wire version 2", + "encoding": "Q1NUMQAVAAAAAAAAABYAAAAAAAAACQAUAAkABAAAACUAAAACAHRzLnpvbmUtYWN1bHRtZXNoLnJlYWx0aW1lLnYxdHMtYm9keS0xAAH+/w==", + "message": "Realtime frame wire version is unsupported." + }, + { + "label": "ts header size 38", + "encoding": "Q1NUMQAVAAAAAAAAABYAAAAAAAAACQAUAAkABAAAACYAAAABAHRzLnpvbmUtYWN1bHRtZXNoLnJlYWx0aW1lLnYxdHMtYm9keS0xAAH+/w==", + "message": "Realtime frame wire version is unsupported." + }, + { + "label": "ts delivery 3", + "encoding": "Q1NUMQMVAAAAAAAAABYAAAAAAAAACQAUAAkABAAAACUAAAABAHRzLnpvbmUtYWN1bHRtZXNoLnJlYWx0aW1lLnYxdHMtYm9keS0xAAH+/w==", + "message": "Realtime frame delivery mode is invalid." + }, + { + "label": "ts delivery 128", + "encoding": "Q1NUMYAVAAAAAAAAABYAAAAAAAAACQAUAAkABAAAACUAAAABAHRzLnpvbmUtYWN1bHRtZXNoLnJlYWx0aW1lLnYxdHMtYm9keS0xAAH+/w==", + "message": "Realtime frame delivery mode is invalid." + }, + { + "label": "ts payload length -1", + "encoding": "Q1NUMQAVAAAAAAAAABYAAAAAAAAACQAUAAkABAAAgCUAAAABAHRzLnpvbmUtYWN1bHRtZXNoLnJlYWx0aW1lLnYxdHMtYm9keS0xAAH+/w==", + "message": "Realtime frame length is invalid." + }, + { + "label": "ts length sum off by one", + "encoding": "Q1NUMQAVAAAAAAAAABYAAAAAAAAACQAUAAkABAAAACUAAAABAHRzLnpvbmUtYWN1bHRtZXNoLnJlYWx0aW1lLnYxdHMtYm9keS0xAAH+/wA=", + "message": "Realtime frame length is invalid." + } + ] +} diff --git a/packages/cultmesh-ts/src/index.ts b/packages/cultmesh-ts/src/index.ts index e9fbb8be..ef532359 100644 --- a/packages/cultmesh-ts/src/index.ts +++ b/packages/cultmesh-ts/src/index.ts @@ -34,6 +34,7 @@ import { type CultNetWireContract, } from "cultnet-ts"; +export * from "./realtime-wire"; export * from "./provider-session"; export * from "./provider-session-wire"; export * from "./provider-rudp-transport"; diff --git a/packages/cultmesh-ts/src/realtime-wire.ts b/packages/cultmesh-ts/src/realtime-wire.ts new file mode 100644 index 00000000..091faf08 --- /dev/null +++ b/packages/cultmesh-ts/src/realtime-wire.ts @@ -0,0 +1,178 @@ +// The one TypeScript encoding of a CultMesh realtime frame. +// +// Rule for rule, this is `CultMeshRealtimeWireProtocol` in the C# reference +// (`src/GameCult.Mesh/CultMeshRealtimeWireProtocol.cs`), over the frame shape +// `CultMeshRealtimeTransports.cs` defines. QUIC stream framing stays +// transport-owned; this file owns only the typed frame bytes and never touches +// a socket. +// +// Byte parity is proven both ways, cross-process, by two committed vector files +// under `contracts/cultmesh/`: `realtime-frame-vectors.json`, which the C# test +// `CultMeshRealtimeWireProtocolTests` writes under CULTMESH_WRITE_VECTORS=1 and +// this package's test decodes and re-encodes, and +// `realtime-frame-vectors.ts-written.json`, which +// `scripts/write-cultmesh-realtime-frame-vectors.mjs` writes with this codec and +// the same C# test decodes. A fixture authored on one side alone would only +// agree with itself. + +import { isNullOrWhiteSpaceCSharp } from "cultnet-ts"; + +/** `CultMeshRealtimeWireProtocol.ApplicationProtocolName`: the QUIC ALPN. */ +export const CULTMESH_REALTIME_ALPN = "cultmesh-state-v1"; + +/** `ConnectionCloseCode`: ASCII "CULT". A QUIC error code is 62-bit, so bigint. */ +export const CULTMESH_REALTIME_CONNECTION_CLOSE_CODE = 0x43554c54n; + +/** `StreamAbortCode`: ASCII "STAT". */ +export const CULTMESH_REALTIME_STREAM_ABORT_CODE = 0x53544154n; + +/** `ReliableStream`: the stream kind carrying `reliable-ordered`. */ +export const CULTMESH_REALTIME_RELIABLE_STREAM = 1; + +/** `LatestOnlyStream`: the stream kind carrying `latest-only`. */ +export const CULTMESH_REALTIME_LATEST_ONLY_STREAM = 2; + +/** `MaximumFrameBytes`: the payload ceiling, 64 MiB. */ +export const CULTMESH_REALTIME_MAX_PAYLOAD_BYTES = 64 * 1024 * 1024; + +/** `MaximumEncodedFrameBytes`: the payload ceiling plus the header and three maximal identities. */ +export const CULTMESH_REALTIME_MAX_ENCODED_FRAME_BYTES = + CULTMESH_REALTIME_MAX_PAYLOAD_BYTES + 37 + 3 * 0xffff; + +/** + * `CultMeshRealtimeDelivery`. The wire byte is the C# enum's ordinal, so the + * order of these three is the wire contract, not a naming choice. + */ +export type CultMeshRealtimeDelivery = "reliable-ordered" | "latest-only" | "unreliable"; + +const DELIVERY_BYTES: readonly CultMeshRealtimeDelivery[] = ["reliable-ordered", "latest-only", "unreliable"]; + +/** `CultMeshRealtimeFrame`. `producerEpoch` and `sequence` are `long` in C#, which exceeds `Number.MAX_SAFE_INTEGER`. */ +export interface CultMeshRealtimeFrame { + channelId: string; + schemaId: string; + bodyId: string; + producerEpoch: bigint; + sequence: bigint; + delivery: CultMeshRealtimeDelivery; + payload: Uint8Array; +} + +const MAGIC = 0x31545343; +const FIXED_HEADER_BYTES = 37; +const WIRE_VERSION = 1; +const MAX_IDENTITY_BYTES = 0xffff; +const INT64_MIN = -(2n ** 63n); +const INT64_MAX = 2n ** 63n - 1n; + +/** + * `CultMeshRealtimeFrame.Validate`. The C# reading of "non-empty" is + * `string.IsNullOrWhiteSpace`, whose whitespace set is not + * `String.prototype.trim`'s, so this borrows the one TypeScript implementation + * of that set from `cultnet-ts` rather than keeping a second reading here. + * + * The range check has no C# counterpart because `long` gives it for free; a + * `bigint` does not, and a `DataView` would otherwise throw a bare `RangeError` + * from inside the encoder. + */ +function validateFrame(frame: CultMeshRealtimeFrame): void { + if (isNullOrWhiteSpaceCSharp(frame.channelId)) throw new Error("Realtime channel identity is required."); + if (isNullOrWhiteSpaceCSharp(frame.schemaId)) throw new Error("Realtime schema identity is required."); + if (isNullOrWhiteSpaceCSharp(frame.bodyId)) throw new Error("Realtime body identity is required."); + if (frame.producerEpoch < 0n || frame.sequence < 0n) { + throw new Error("Realtime epoch and sequence must be non-negative."); + } + if (frame.producerEpoch > INT64_MAX || frame.sequence > INT64_MAX || frame.producerEpoch < INT64_MIN || frame.sequence < INT64_MIN) { + throw new Error("Realtime epoch and sequence must fit a 64-bit signed integer."); + } +} + +/** `CultMeshRealtimeWireProtocol.EncodeFrame`. */ +export function encodeRealtimeFrame(frame: CultMeshRealtimeFrame): Uint8Array { + validateFrame(frame); + const deliveryByte = DELIVERY_BYTES.indexOf(frame.delivery); + // C# reads an enum, which holds any byte; a TypeScript union does not, so the + // unspellable value is refused here with the message decode gives it. + if (deliveryByte < 0) throw new Error("Realtime frame delivery mode is invalid."); + const encoder = new TextEncoder(); + const channel = encoder.encode(frame.channelId); + const schema = encoder.encode(frame.schemaId); + const body = encoder.encode(frame.bodyId); + if (channel.byteLength > MAX_IDENTITY_BYTES || schema.byteLength > MAX_IDENTITY_BYTES || body.byteLength > MAX_IDENTITY_BYTES) { + throw new Error("Realtime frame identity exceeds the QUIC wire limit."); + } + if (frame.payload.byteLength > CULTMESH_REALTIME_MAX_PAYLOAD_BYTES) { + throw new Error("Realtime frame payload exceeds the QUIC wire limit."); + } + + const result = new Uint8Array( + FIXED_HEADER_BYTES + channel.byteLength + schema.byteLength + body.byteLength + frame.payload.byteLength, + ); + const view = new DataView(result.buffer); + view.setUint32(0, MAGIC, true); + result[4] = deliveryByte; + view.setBigInt64(5, frame.producerEpoch, true); + view.setBigInt64(13, frame.sequence, true); + view.setUint16(21, channel.byteLength, true); + view.setUint16(23, schema.byteLength, true); + view.setUint16(25, body.byteLength, true); + view.setInt32(27, frame.payload.byteLength, true); + view.setInt32(31, FIXED_HEADER_BYTES, true); + view.setUint16(35, WIRE_VERSION, true); + let offset = FIXED_HEADER_BYTES; + result.set(channel, offset); offset += channel.byteLength; + result.set(schema, offset); offset += schema.byteLength; + result.set(body, offset); offset += body.byteLength; + result.set(frame.payload, offset); + return result; +} + +/** + * `CultMeshRealtimeWireProtocol.DecodeFrame`, refusal for refusal and in the + * same order. Like the reference, it does not call `validateFrame`: a frame + * whose identities are blank decodes here exactly as it does in C#, and only + * encoding refuses it. + * + * One corner has no C# counterpart. The reference sums the lengths under + * `checked`, so a payload length near `int.MaxValue` throws `OverflowException` + * there rather than its length refusal; JavaScript numbers do not overflow, so + * the sum simply fails to match and the length refusal covers that case too. + * No encoder on either side can produce such a frame. + */ +export function decodeRealtimeFrame(bytes: Uint8Array): CultMeshRealtimeFrame { + if (bytes.byteLength < FIXED_HEADER_BYTES) throw new Error("Realtime frame header is truncated."); + const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength); + if (view.getUint32(0, true) !== MAGIC) throw new Error("Realtime frame magic is invalid."); + if (view.getUint16(35, true) !== WIRE_VERSION || view.getInt32(31, true) !== FIXED_HEADER_BYTES) { + throw new Error("Realtime frame wire version is unsupported."); + } + const delivery = DELIVERY_BYTES[bytes[4]!]; + if (delivery === undefined) throw new Error("Realtime frame delivery mode is invalid."); + const channelLength = view.getUint16(21, true); + const schemaLength = view.getUint16(23, true); + const bodyLength = view.getUint16(25, true); + const payloadLength = view.getInt32(27, true); + const expected = FIXED_HEADER_BYTES + channelLength + schemaLength + bodyLength + payloadLength; + if (payloadLength < 0 || expected !== bytes.byteLength) throw new Error("Realtime frame length is invalid."); + // `Encoding.UTF8.GetString` substitutes U+FFFD for invalid bytes rather than + // throwing, which is what a non-fatal `TextDecoder` does. `ignoreBOM` is not + // cosmetic: by default `TextDecoder` *deletes* a leading U+FEFF, and + // `GetString` keeps it, so an identity starting with a byte-order mark would + // decode to a different string on the two sides. U+FEFF is not whitespace to + // .NET either, so such an identity passes the transport contract and reaches + // the wire. + const decoder = new TextDecoder("utf-8", { ignoreBOM: true }); + let offset = FIXED_HEADER_BYTES; + const channelId = decoder.decode(bytes.subarray(offset, offset + channelLength)); offset += channelLength; + const schemaId = decoder.decode(bytes.subarray(offset, offset + schemaLength)); offset += schemaLength; + const bodyId = decoder.decode(bytes.subarray(offset, offset + bodyLength)); offset += bodyLength; + return { + channelId, + schemaId, + bodyId, + producerEpoch: view.getBigInt64(5, true), + sequence: view.getBigInt64(13, true), + delivery, + payload: bytes.slice(offset, offset + payloadLength), + }; +} diff --git a/packages/cultmesh-ts/test/realtime-wire.test.ts b/packages/cultmesh-ts/test/realtime-wire.test.ts new file mode 100644 index 00000000..6a3c1a19 --- /dev/null +++ b/packages/cultmesh-ts/test/realtime-wire.test.ts @@ -0,0 +1,344 @@ +// The realtime frame codec, pinned rule by rule against the C# reference. +// +// The bytes themselves are pinned by two committed files under +// `contracts/cultmesh/`. `realtime-frame-vectors.json` is written by +// `CultMeshRealtimeWireProtocolTests.RealtimeFrameVectorsAreSharedWithTypeScript` +// under CULTMESH_WRITE_VECTORS=1: this side decodes it and re-encodes to the +// same bytes. `realtime-frame-vectors.ts-written.json` is written by +// `scripts/write-cultmesh-realtime-frame-vectors.mjs` with this codec and +// decoded by the C# reference, so parity is proven in both directions and in +// two processes. A fixture authored on one side alone would only agree with +// itself, which is what the authority vectors already taught. + +import test from "node:test"; +import assert from "node:assert/strict"; +import { createHash } from "node:crypto"; +import { readFileSync } from "node:fs"; +import { join } from "node:path"; + +import { + CULTMESH_REALTIME_ALPN, + CULTMESH_REALTIME_CONNECTION_CLOSE_CODE, + CULTMESH_REALTIME_LATEST_ONLY_STREAM, + CULTMESH_REALTIME_MAX_ENCODED_FRAME_BYTES, + CULTMESH_REALTIME_MAX_PAYLOAD_BYTES, + CULTMESH_REALTIME_RELIABLE_STREAM, + CULTMESH_REALTIME_STREAM_ABORT_CODE, + decodeRealtimeFrame, + encodeRealtimeFrame, + type CultMeshRealtimeDelivery, + type CultMeshRealtimeFrame, +} from "../src/realtime-wire"; + +const CONTRACTS = join(__dirname, "..", "..", "..", "..", "contracts", "cultmesh"); +const CSHARP_VECTORS = join(CONTRACTS, "realtime-frame-vectors.json"); +const TS_VECTORS = join(CONTRACTS, "realtime-frame-vectors.ts-written.json"); + +interface IdentityRule { repeat: string; byteLength: number } +interface RampRule { ramp: number } +interface VectorFields { + channelId: string | IdentityRule; + schemaId: string | IdentityRule; + bodyId: string | IdentityRule; + producerEpoch: number; + sequence: number; + delivery: CultMeshRealtimeDelivery; + payload: string | RampRule; +} +interface Vectors { + frames: { + label: string; + fields: VectorFields; + encoding: string | null; + encodedLength: number; + sha256OfEncoding: string; + }[]; + malformed: { label: string; encoding: string; message: string }[]; +} + +/** The repeat unit written whole until the UTF-8 byte length is exactly `byteLength`. */ +function repeatToByteLength(unit: string, byteLength: number): string { + const unitBytes = Buffer.byteLength(unit, "utf8"); + assert.equal(byteLength % unitBytes, 0, `'${unit}' is ${unitBytes} UTF-8 bytes and does not divide ${byteLength}`); + return unit.repeat(byteLength / unitBytes); +} + +/** The deterministic payload both runtimes build the same way. */ +function ramp(length: number): Uint8Array { + const bytes = new Uint8Array(length); + for (let index = 0; index < length; index += 1) bytes[index] = index % 251; + return bytes; +} + +function identity(value: string | IdentityRule): string { + return typeof value === "string" ? value : repeatToByteLength(value.repeat, value.byteLength); +} + +function payload(value: string | RampRule): Uint8Array { + return typeof value === "string" ? new Uint8Array(Buffer.from(value, "base64")) : ramp(value.ramp); +} + +function frameOf(fields: VectorFields): CultMeshRealtimeFrame { + return { + channelId: identity(fields.channelId), + schemaId: identity(fields.schemaId), + bodyId: identity(fields.bodyId), + // The C# `long` fields are written as JSON integers and can exceed the safe + // integer range, so they are read from the raw text, never through + // `JSON.parse`'s number. + producerEpoch: 0n, + sequence: 0n, + delivery: fields.delivery, + payload: payload(fields.payload), + }; +} + +// `JSON.parse` would round `long.MaxValue` to 9223372036854775808, which is not +// a valid i64 and not what either side encoded. The two i64 fields are lifted +// out of the raw text as bigints before the document is parsed. +function readVectors(path: string): { doc: Vectors; int64s: Map } { + const text = readFileSync(path, "utf8"); + const int64s = new Map(); + const pattern = /"label": "(?

+ /// The realtime frame codec, rule by rule, and the C# half of the + /// cross-runtime byte parity. contracts/cultmesh/realtime-frame-vectors.json + /// is written here under CULTMESH_WRITE_VECTORS=1 and decoded by + /// packages/cultmesh-ts/test/realtime-wire.test.ts; + /// realtime-frame-vectors.ts-written.json is written by + /// scripts/write-cultmesh-realtime-frame-vectors.mjs with the + /// TypeScript codec and judged here by the reference only. Both files carry + /// the same field shape: an identity is a string or a repeat rule, a payload + /// is base64 or a ramp rule, so one reader on each side serves both. + /// + [TestFixture] + public class CultMeshRealtimeWireProtocolTests + { + // The three identities that sit exactly on the u16 length prefix. Each + // repeat unit is five UTF-8 bytes over two characters, so 13,107 repeats + // are 65,535 bytes and 26,214 characters: byte length and character + // length differ, which is the point of the case. The vector records the + // rule and the digest of the whole encoding instead of 200 KB of literal + // identity text. + private const string WideChannelUnit = "\u00e4\u20ac"; + private const string WideSchemaUnit = "\u20ac\u00e4"; + private const string WideBodyUnit = "\u00f1\u20ac"; + private const int WideIdentityBytes = 65535; + + [Test] + public void RealtimeFrameVectorsAreSharedWithTypeScript() + { + var path = VectorPath("realtime-frame-vectors.json"); + if (Environment.GetEnvironmentVariable("CULTMESH_WRITE_VECTORS") == "1") + { + Directory.CreateDirectory(Path.GetDirectoryName(path)!); + File.WriteAllText(path, JsonSerializer.Serialize(new + { + frames = Frames().Select(Recorded).ToArray(), + malformed = Malformed().Select(entry => new + { + label = entry.Label, + encoding = Convert.ToBase64String(entry.Bytes), + message = Refusal(entry.Bytes) + }).ToArray() + }, new JsonSerializerOptions + { + WriteIndented = true, + Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping + }) + "\n"); + } + + using var vectors = JsonDocument.Parse(File.ReadAllText(path)); + var root = vectors.RootElement; + var expected = Frames().ToDictionary(entry => entry.Label); + root.GetProperty("frames").GetArrayLength().Should().Be(expected.Count); + foreach (var element in root.GetProperty("frames").EnumerateArray()) + { + var label = element.GetProperty("label").GetString()!; + expected.Should().ContainKey(label); + var frame = expected[label].Frame; + var encoded = CultMeshRealtimeWireProtocol.EncodeFrame(frame); + element.GetProperty("encodedLength").GetInt32().Should().Be(encoded.Length, label); + element.GetProperty("sha256OfEncoding").GetString().Should().Be(Sha256(encoded), label); + if (element.TryGetProperty("encoding", out var encoding) && encoding.ValueKind == JsonValueKind.String) + Convert.FromBase64String(encoding.GetString()!).Should().Equal(encoded, label); + + // The recorded fields rebuild the frame, and it round-trips. + Same(Read(element.GetProperty("fields")), frame, label); + var decoded = CultMeshRealtimeWireProtocol.DecodeFrame(encoded); + Same(decoded, frame, label); + CultMeshRealtimeWireProtocol.EncodeFrame(decoded).Should().Equal(encoded, label); + } + + var malformed = Malformed().ToDictionary(entry => entry.Label); + root.GetProperty("malformed").GetArrayLength().Should().Be(malformed.Count); + foreach (var element in root.GetProperty("malformed").EnumerateArray()) + { + var label = element.GetProperty("label").GetString()!; + malformed.Should().ContainKey(label); + var bytes = Convert.FromBase64String(element.GetProperty("encoding").GetString()!); + bytes.Should().Equal(malformed[label].Bytes, label); + Refusal(bytes).Should().Be(element.GetProperty("message").GetString(), label); + } + } + + // The other direction, cross-process: the TypeScript codec wrote these + // bytes and only the reference implementation judges them here. + [Test] + public void RealtimeFrameVectorsWrittenByTypeScriptDecodeHere() + { + var path = VectorPath("realtime-frame-vectors.ts-written.json"); + using var vectors = JsonDocument.Parse(File.ReadAllText(path)); + var frames = vectors.RootElement.GetProperty("frames"); + frames.GetArrayLength().Should().BeGreaterThan(0); + foreach (var element in frames.EnumerateArray()) + { + var label = element.GetProperty("label").GetString()!; + var frame = Read(element.GetProperty("fields")); + var mine = CultMeshRealtimeWireProtocol.EncodeFrame(frame); + + // What TypeScript wrote is what this side writes, byte for byte. + element.GetProperty("encodedLength").GetInt32().Should().Be(mine.Length, label); + element.GetProperty("sha256OfEncoding").GetString().Should().Be(Sha256(mine), label); + var theirs = element.TryGetProperty("encoding", out var encoding) && encoding.ValueKind == JsonValueKind.String + ? Convert.FromBase64String(encoding.GetString()!) + : mine; + theirs.Should().Equal(mine, label); + + // And it decodes here to the fields TypeScript claims it encoded. + Same(CultMeshRealtimeWireProtocol.DecodeFrame(theirs), frame, label); + } + + foreach (var element in vectors.RootElement.GetProperty("malformed").EnumerateArray()) + { + var label = element.GetProperty("label").GetString()!; + var bytes = Convert.FromBase64String(element.GetProperty("encoding").GetString()!); + Refusal(bytes).Should().Be(element.GetProperty("message").GetString(), label); + } + } + + [Test] + public void EncodeRefusesWhatTheTransportContractForbids() + { + Spoiled(frame => frame.ChannelId = " ").Should().Be("Realtime channel identity is required."); + Spoiled(frame => frame.SchemaId = "\t").Should().Be("Realtime schema identity is required."); + Spoiled(frame => frame.BodyId = "").Should().Be("Realtime body identity is required."); + Spoiled(frame => frame.ProducerEpoch = -1).Should().Be("Realtime epoch and sequence must be non-negative."); + Spoiled(frame => frame.Sequence = -1).Should().Be("Realtime epoch and sequence must be non-negative."); + Spoiled(frame => frame.ChannelId = new string('a', ushort.MaxValue + 1)) + .Should().Be("Realtime frame identity exceeds the QUIC wire limit."); + Spoiled(frame => frame.Payload = new byte[CultMeshRealtimeWireProtocol.MaximumFrameBytes + 1]) + .Should().Be("Realtime frame payload exceeds the QUIC wire limit."); + } + + [Test] + public void TheWireConstantsAreTheOnesTypeScriptMirrors() + { + CultMeshRealtimeWireProtocol.ApplicationProtocolName.Should().Be("cultmesh-state-v1"); + CultMeshRealtimeWireProtocol.ConnectionCloseCode.Should().Be(0x43554c54); + CultMeshRealtimeWireProtocol.StreamAbortCode.Should().Be(0x53544154); + CultMeshRealtimeWireProtocol.ReliableStream.Should().Be(1); + CultMeshRealtimeWireProtocol.LatestOnlyStream.Should().Be(2); + CultMeshRealtimeWireProtocol.MaximumFrameBytes.Should().Be(64 * 1024 * 1024); + CultMeshRealtimeWireProtocol.MaximumEncodedFrameBytes.Should().Be( + CultMeshRealtimeWireProtocol.MaximumFrameBytes + 37 + 3 * ushort.MaxValue); + ((int)CultMeshRealtimeDelivery.ReliableOrdered).Should().Be(0); + ((int)CultMeshRealtimeDelivery.LatestOnly).Should().Be(1); + ((int)CultMeshRealtimeDelivery.Unreliable).Should().Be(2); + } + + private static IEnumerable<(string Label, CultMeshRealtimeFrame Frame, bool Wide)> Frames() + { + yield return ("reliable-ordered, small payload", Frame( + "aetheria.zone-1", "cultmesh.realtime.v1", "body-7", 1, 2, + CultMeshRealtimeDelivery.ReliableOrdered, new byte[] { 0x00, 0x7f, 0x80, 0xff, 0x2a }), false); + yield return ("latest-only, small payload", Frame( + "aetheria.zone-1", "cultmesh.realtime.v1", "body-7", 3, 4, + CultMeshRealtimeDelivery.LatestOnly, new byte[] { 0x01, 0x02, 0x03 }), false); + yield return ("unreliable, small payload", Frame( + "aetheria.zone-1", "cultmesh.realtime.v1", "body-7", 5, 6, + CultMeshRealtimeDelivery.Unreliable, new byte[] { 0xfe }), false); + yield return ("empty payload", Frame( + "aetheria.zone-1", "cultmesh.realtime.v1", "body-7", 0, 0, + CultMeshRealtimeDelivery.ReliableOrdered, Array.Empty()), false); + yield return ("multi-byte identities", Frame( + "aetheria.z\u00f6ne-\u221e", "cultmesh.realtime.\u20ac1", "b\u00f8dy-\ud83d\udd25", 11, 12, + CultMeshRealtimeDelivery.LatestOnly, Encoding.UTF8.GetBytes("payload-\u221e")), false); + yield return ("epoch and sequence at long.MaxValue", Frame( + "aetheria.zone-1", "cultmesh.realtime.v1", "body-7", long.MaxValue, long.MaxValue, + CultMeshRealtimeDelivery.Unreliable, new byte[] { 0x5a }), false); + yield return ("identities at exactly 65535 UTF-8 bytes", Frame( + Repeat(WideChannelUnit, WideIdentityBytes), Repeat(WideSchemaUnit, WideIdentityBytes), + Repeat(WideBodyUnit, WideIdentityBytes), 13, 14, + CultMeshRealtimeDelivery.ReliableOrdered, new byte[] { 0x11, 0x22 }), true); + yield return ("64 MiB payload", Frame( + "aetheria.zone-1", "cultmesh.realtime.v1", "body-7", 15, 16, + CultMeshRealtimeDelivery.ReliableOrdered, Ramp(CultMeshRealtimeWireProtocol.MaximumFrameBytes)), false); + } + + private static IEnumerable<(string Label, byte[] Bytes)> Malformed() + { + var good = CultMeshRealtimeWireProtocol.EncodeFrame(Frame( + "aetheria.zone-1", "cultmesh.realtime.v1", "body-7", 1, 2, + CultMeshRealtimeDelivery.ReliableOrdered, new byte[] { 9, 9, 9 })); + yield return ("truncated header", good.Take(36).ToArray()); + yield return ("wrong magic", Spoil(good, bytes => bytes[0] ^= 0xff)); + yield return ("wire version 2", Spoil(good, bytes => bytes[35] = 2)); + yield return ("header size 36", Spoil(good, bytes => bytes[31] = 36)); + yield return ("delivery 3", Spoil(good, bytes => bytes[4] = 3)); + yield return ("delivery 255", Spoil(good, bytes => bytes[4] = 255)); + yield return ("payload length -1", Spoil(good, bytes => bytes[30] = 0x80)); + yield return ("length sum off by one", good.Concat(new byte[] { 0 }).ToArray()); + } + + private static object Recorded((string Label, CultMeshRealtimeFrame Frame, bool Wide) entry) + { + var encoded = CultMeshRealtimeWireProtocol.EncodeFrame(entry.Frame); + var frame = entry.Frame; + return new + { + label = entry.Label, + fields = new + { + channelId = entry.Wide ? Rule(WideChannelUnit, WideIdentityBytes) : frame.ChannelId, + schemaId = entry.Wide ? Rule(WideSchemaUnit, WideIdentityBytes) : frame.SchemaId, + bodyId = entry.Wide ? Rule(WideBodyUnit, WideIdentityBytes) : frame.BodyId, + producerEpoch = frame.ProducerEpoch, + sequence = frame.Sequence, + delivery = Name(frame.Delivery), + payload = frame.Payload.Length > 4096 + ? (object)new { ramp = frame.Payload.Length } + : Convert.ToBase64String(frame.Payload.ToArray()) + }, + // The two oversized cases would put megabytes into a committed + // contract file; both sides build them from the rules above and + // compare the digest of the whole encoding. + encoding = encoded.Length > 4096 ? null : Convert.ToBase64String(encoded), + encodedLength = encoded.Length, + sha256OfEncoding = Sha256(encoded) + }; + } + + private static object Rule(string unit, int byteLength) => new { repeat = unit, byteLength }; + + private static void Same(CultMeshRealtimeFrame actual, CultMeshRealtimeFrame expected, string label) + { + actual.ChannelId.Should().Be(expected.ChannelId, label); + actual.SchemaId.Should().Be(expected.SchemaId, label); + actual.BodyId.Should().Be(expected.BodyId, label); + actual.ProducerEpoch.Should().Be(expected.ProducerEpoch, label); + actual.Sequence.Should().Be(expected.Sequence, label); + actual.Delivery.Should().Be(expected.Delivery, label); + actual.Payload.Length.Should().Be(expected.Payload.Length, label); + actual.Payload.Span.SequenceEqual(expected.Payload.Span).Should().BeTrue(label); + } + + private static CultMeshRealtimeFrame Read(JsonElement fields) => new() + { + ChannelId = Identity(fields.GetProperty("channelId")), + SchemaId = Identity(fields.GetProperty("schemaId")), + BodyId = Identity(fields.GetProperty("bodyId")), + ProducerEpoch = fields.GetProperty("producerEpoch").GetInt64(), + Sequence = fields.GetProperty("sequence").GetInt64(), + Delivery = Delivery(fields.GetProperty("delivery").GetString()!), + Payload = Payload(fields.GetProperty("payload")) + }; + + private static string Identity(JsonElement element) => + element.ValueKind == JsonValueKind.String + ? element.GetString()! + : Repeat(element.GetProperty("repeat").GetString()!, element.GetProperty("byteLength").GetInt32()); + + private static byte[] Payload(JsonElement element) => + element.ValueKind == JsonValueKind.String + ? Convert.FromBase64String(element.GetString()!) + : Ramp(element.GetProperty("ramp").GetInt32()); + + /// The repeat unit written whole until the UTF-8 byte length is exactly . + private static string Repeat(string unit, int byteLength) + { + var unitBytes = Encoding.UTF8.GetByteCount(unit); + if (byteLength % unitBytes != 0) + throw new ArgumentException($"'{unit}' is {unitBytes} UTF-8 bytes and does not divide {byteLength}."); + return string.Concat(Enumerable.Repeat(unit, byteLength / unitBytes)); + } + + /// A deterministic payload both runtimes build the same way. + private static byte[] Ramp(int length) + { + var bytes = new byte[length]; + for (var index = 0; index < length; index++) bytes[index] = (byte)(index % 251); + return bytes; + } + + private static string Spoiled(Action spoil) + { + var frame = Frame("c", "s", "b", 1, 2, CultMeshRealtimeDelivery.ReliableOrdered, new byte[] { 1 }); + spoil(frame); + try + { + CultMeshRealtimeWireProtocol.EncodeFrame(frame); + return ""; + } + catch (Exception error) + { + return error.Message; + } + } + + private static string Refusal(byte[] bytes) + { + try + { + CultMeshRealtimeWireProtocol.DecodeFrame(bytes); + return ""; + } + catch (Exception error) + { + return error.Message; + } + } + + private static byte[] Spoil(byte[] bytes, Action spoil) + { + var copy = bytes.ToArray(); + spoil(copy); + return copy; + } + + private static CultMeshRealtimeFrame Frame( + string channelId, string schemaId, string bodyId, long producerEpoch, long sequence, + CultMeshRealtimeDelivery delivery, byte[] payload) => + new() + { + ChannelId = channelId, + SchemaId = schemaId, + BodyId = bodyId, + ProducerEpoch = producerEpoch, + Sequence = sequence, + Delivery = delivery, + Payload = payload + }; + + private static string Name(CultMeshRealtimeDelivery delivery) => delivery switch + { + CultMeshRealtimeDelivery.ReliableOrdered => "reliable-ordered", + CultMeshRealtimeDelivery.LatestOnly => "latest-only", + CultMeshRealtimeDelivery.Unreliable => "unreliable", + _ => throw new ArgumentOutOfRangeException(nameof(delivery)) + }; + + private static CultMeshRealtimeDelivery Delivery(string name) => name switch + { + "reliable-ordered" => CultMeshRealtimeDelivery.ReliableOrdered, + "latest-only" => CultMeshRealtimeDelivery.LatestOnly, + "unreliable" => CultMeshRealtimeDelivery.Unreliable, + _ => throw new ArgumentOutOfRangeException(nameof(name), name, "unknown delivery") + }; + + private static string Sha256(byte[] bytes) => Convert.ToHexString(SHA256.HashData(bytes)).ToLowerInvariant(); + + private static string VectorPath(string name) => Path.Combine(RepoRoot(), "contracts", "cultmesh", name); + + private static string RepoRoot() + { + var directory = new DirectoryInfo(TestContext.CurrentContext.TestDirectory); + while (directory != null && !File.Exists(Path.Combine(directory.FullName, "CultLib.sln"))) + directory = directory.Parent; + return directory?.FullName ?? throw new InvalidOperationException("CultLib.sln was not found above the test directory."); + } + } +} From ae29910b30281998560c377ec77ee70f900612b4 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 19:20:57 +0200 Subject: [PATCH 0049/1002] Mutate the realtime frame codec, one mutation per rule A third target in the committed runner, `realtime`, over `packages/cultmesh-ts/src/realtime-wire.ts`, killed by that package's own suite. It gets the machinery the other two already have: a no-op control through the same write path, the sidecar and its verified restore, and the post-restore rebuild that proves `dist/` no longer carries a mutant, with `0x31545343` as the sentinel its last mutation removes. Thirty-seven mutations, one per rule the codec owns: each header field's offset, width and endianness; the field order the reference fixed; the magic, the stamped header size and wire version; the delivery ordinal; UTF-8 identities and byte-counting length prefixes; the identity and payload ceilings; the ALPN, the two QUIC error codes and the two stream kinds; the four encode refusals from the transport contract; each decode refusal and the order they fire in; the byte-order mark; and the two aliasing rules, that decode reads only the viewed bytes of an offset view and that the decoded payload does not alias the frame. A mutation that changes the encoding symmetrically still dies, because the vector bytes were written on the other side. All seventy-two mutations across the three targets are killed and all three controls are green. One mutant is not listed and says why in the table, as the P1363 length guard already did: removing `payloadLength < 0` from the decoder's length refusal is equivalent. The clause mirrors the reference but cannot fire alone, because reaching it means the frame is already 37 bytes and a negative length can then never make the sum match. It survived when tried. Co-Authored-By: Claude Fable 5.1 --- scripts/mutate-cultmesh-authority.mjs | 55 +++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/scripts/mutate-cultmesh-authority.mjs b/scripts/mutate-cultmesh-authority.mjs index 8aec4eee..f7df540b 100644 --- a/scripts/mutate-cultmesh-authority.mjs +++ b/scripts/mutate-cultmesh-authority.mjs @@ -49,6 +49,12 @@ const targets = { dist: join(repoRoot, "packages", "cultmesh-browser", "dist", "index.js"), sentinel: "isUnsignedCertificate(route.certificate)", }, + realtime: { + workspace: "packages/cultmesh-ts", + file: join(repoRoot, "packages", "cultmesh-ts", "src", "realtime-wire.ts"), + dist: join(repoRoot, "packages", "cultmesh-ts", "dist", "realtime-wire.js"), + sentinel: "0x31545343", + }, }; const mutations = [ @@ -256,6 +262,55 @@ const mutations = [ old: "isUnsignedCertificate(route.certificate)", new: '(route.certificate?.signature ?? "") === ""', }, + // The realtime frame codec. Every rule the cut map names for it gets one + // mutation; the killer is `npm run test --workspace packages/cultmesh-ts`, + // whose vectors are written by the C# reference and by this codec in turn. + // A mutation that changes the encoding symmetrically (an endianness flip, a + // field swap) still dies, because the vector bytes came from the other side. + { target: "realtime", rule: "the header is little-endian", old: "view.setUint32(0, MAGIC, true);", new: "view.setUint32(0, MAGIC, false);" }, + { target: "realtime", rule: "the delivery byte sits at offset 4", old: " result[4] = deliveryByte;\n", new: " result[5] = deliveryByte;\n" }, + { target: "realtime", rule: "the producer epoch is written before the sequence", old: " view.setBigInt64(5, frame.producerEpoch, true);\n view.setBigInt64(13, frame.sequence, true);\n", new: " view.setBigInt64(5, frame.sequence, true);\n view.setBigInt64(13, frame.producerEpoch, true);\n" }, + { target: "realtime", rule: "the epoch and sequence are 64-bit, not 32-bit", old: " view.setBigInt64(5, frame.producerEpoch, true);", new: " view.setInt32(5, Number(frame.producerEpoch), true);" }, + { target: "realtime", rule: "the three identity lengths are written channel, schema, body", old: " view.setUint16(23, schema.byteLength, true);\n view.setUint16(25, body.byteLength, true);\n", new: " view.setUint16(23, body.byteLength, true);\n view.setUint16(25, schema.byteLength, true);\n" }, + { target: "realtime", rule: "the identity length prefixes are 16-bit, not 8-bit", old: " view.setUint16(21, channel.byteLength, true);", new: " view.setUint8(21, channel.byteLength);" }, + { target: "realtime", rule: "the identity length prefixes are little-endian", old: " view.setUint16(21, channel.byteLength, true);", new: " view.setUint16(21, channel.byteLength, false);" }, + { target: "realtime", rule: "the payload length prefix sits at offset 27", old: " view.setInt32(27, frame.payload.byteLength, true);", new: " view.setInt32(28, frame.payload.byteLength, true);" }, + { target: "realtime", rule: "the header size is stamped into the frame", old: " view.setInt32(31, FIXED_HEADER_BYTES, true);", new: " view.setInt32(31, FIXED_HEADER_BYTES + 1, true);" }, + { target: "realtime", rule: "the wire version is stamped into the frame", old: " view.setUint16(35, WIRE_VERSION, true);", new: " view.setUint16(35, WIRE_VERSION + 1, true);" }, + { target: "realtime", rule: "the identities are written channel, schema, body, then the payload", old: " result.set(channel, offset); offset += channel.byteLength;\n result.set(schema, offset); offset += schema.byteLength;\n", new: " result.set(schema, offset); offset += schema.byteLength;\n result.set(channel, offset); offset += channel.byteLength;\n" }, + { target: "realtime", rule: "the fixed header is 37 bytes", old: "const FIXED_HEADER_BYTES = 37;", new: "const FIXED_HEADER_BYTES = 38;" }, + { target: "realtime", rule: "delivery encodes as the C# enum ordinal, reliable-ordered first", old: 'const DELIVERY_BYTES: readonly CultMeshRealtimeDelivery[] = ["reliable-ordered", "latest-only", "unreliable"];', new: 'const DELIVERY_BYTES: readonly CultMeshRealtimeDelivery[] = ["latest-only", "reliable-ordered", "unreliable"];' }, + { target: "realtime", rule: "an identity the delivery union cannot spell is refused", old: ' if (deliveryByte < 0) throw new Error("Realtime frame delivery mode is invalid.");\n', new: "" }, + { target: "realtime", rule: "identities are UTF-8, and the prefix counts bytes not characters", old: " const channel = encoder.encode(frame.channelId);", new: " const channel = Uint8Array.from(frame.channelId, c => c.charCodeAt(0) & 0xff);" }, + { target: "realtime", rule: "an identity over 65535 bytes is refused", old: " if (channel.byteLength > MAX_IDENTITY_BYTES || schema.byteLength > MAX_IDENTITY_BYTES || body.byteLength > MAX_IDENTITY_BYTES) {\n throw new Error(\"Realtime frame identity exceeds the QUIC wire limit.\");\n }\n", new: "" }, + { target: "realtime", rule: "a payload over the 64 MiB ceiling is refused", old: " if (frame.payload.byteLength > CULTMESH_REALTIME_MAX_PAYLOAD_BYTES) {\n throw new Error(\"Realtime frame payload exceeds the QUIC wire limit.\");\n }\n", new: "" }, + { target: "realtime", rule: "the payload ceiling is 64 MiB", old: "export const CULTMESH_REALTIME_MAX_PAYLOAD_BYTES = 64 * 1024 * 1024;", new: "export const CULTMESH_REALTIME_MAX_PAYLOAD_BYTES = 32 * 1024 * 1024;" }, + { target: "realtime", rule: "the encoded ceiling covers the header and three maximal identities", old: " CULTMESH_REALTIME_MAX_PAYLOAD_BYTES + 37 + 3 * 0xffff;", new: " CULTMESH_REALTIME_MAX_PAYLOAD_BYTES + 37 + 0xffff;" }, + { target: "realtime", rule: "the ALPN is cultmesh-state-v1", old: 'export const CULTMESH_REALTIME_ALPN = "cultmesh-state-v1";', new: 'export const CULTMESH_REALTIME_ALPN = "cultmesh-state-v2";' }, + { target: "realtime", rule: "the QUIC connection close and stream abort codes", old: "export const CULTMESH_REALTIME_CONNECTION_CLOSE_CODE = 0x43554c54n;", new: "export const CULTMESH_REALTIME_CONNECTION_CLOSE_CODE = 0x53544154n;" }, + { target: "realtime", rule: "the two stream kinds are 1 and 2", old: "export const CULTMESH_REALTIME_RELIABLE_STREAM = 1;", new: "export const CULTMESH_REALTIME_RELIABLE_STREAM = 2;" }, + { target: "realtime", rule: "a blank channel identity is refused, on C#'s whitespace set", old: ' if (isNullOrWhiteSpaceCSharp(frame.channelId)) throw new Error("Realtime channel identity is required.");\n', new: "" }, + { target: "realtime", rule: "the blank reading is C#'s IsNullOrWhiteSpace, not String.prototype.trim", old: " if (isNullOrWhiteSpaceCSharp(frame.schemaId)) throw new Error", new: ' if (frame.schemaId.trim() === "") throw new Error' }, + { target: "realtime", rule: "a blank body identity is refused", old: ' if (isNullOrWhiteSpaceCSharp(frame.bodyId)) throw new Error("Realtime body identity is required.");\n', new: "" }, + { target: "realtime", rule: "a negative epoch or sequence is refused", old: " if (frame.producerEpoch < 0n || frame.sequence < 0n) {", new: " if (false) {" }, + { target: "realtime", rule: "an epoch or sequence outside the i64 range is refused", old: " if (frame.producerEpoch > INT64_MAX || frame.sequence > INT64_MAX || frame.producerEpoch < INT64_MIN || frame.sequence < INT64_MIN) {", new: " if (false) {" }, + { target: "realtime", rule: "decode refuses a truncated header", old: ' if (bytes.byteLength < FIXED_HEADER_BYTES) throw new Error("Realtime frame header is truncated.");\n', new: "" }, + { target: "realtime", rule: "decode checks the magic", old: ' if (view.getUint32(0, true) !== MAGIC) throw new Error("Realtime frame magic is invalid.");\n', new: "" }, + { target: "realtime", rule: "decode checks the wire version", old: " if (view.getUint16(35, true) !== WIRE_VERSION || view.getInt32(31, true) !== FIXED_HEADER_BYTES) {", new: " if (view.getInt32(31, true) !== FIXED_HEADER_BYTES) {" }, + { target: "realtime", rule: "decode checks the stamped header size", old: " if (view.getUint16(35, true) !== WIRE_VERSION || view.getInt32(31, true) !== FIXED_HEADER_BYTES) {", new: " if (view.getUint16(35, true) !== WIRE_VERSION) {" }, + { target: "realtime", rule: "decode refuses a delivery byte outside the three modes", old: ' if (delivery === undefined) throw new Error("Realtime frame delivery mode is invalid.");\n', new: ' if (delivery === undefined) return { channelId: "", schemaId: "", bodyId: "", producerEpoch: 0n, sequence: 0n, delivery: "unreliable", payload: new Uint8Array(0) };\n' }, + // Not listed: removing `payloadLength < 0` from the decoder's length refusal. + // The clause mirrors the reference but cannot fire on its own: a negative + // payload length makes the sum smaller than the frame, and reaching the sum + // check at all means the frame is already at least 37 bytes, so the sum can + // never match while the length is negative. The mutant is equivalent, and it + // survived when tried. + { target: "realtime", rule: "decode refuses a length sum that misses the frame", old: " if (payloadLength < 0 || expected !== bytes.byteLength) throw", new: " if (payloadLength < 0) throw" }, + { target: "realtime", rule: "decode keeps a leading byte-order mark, as Encoding.UTF8.GetString does", old: 'const decoder = new TextDecoder("utf-8", { ignoreBOM: true });', new: "const decoder = new TextDecoder();" }, + { target: "realtime", rule: "decode reads exactly the viewed bytes of an offset view", old: " const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);", new: " const view = new DataView(bytes.buffer);" }, + { target: "realtime", rule: "the decoded payload does not alias the frame it came from", old: " payload: bytes.slice(offset, offset + payloadLength),", new: " payload: bytes.subarray(offset, offset + payloadLength)," }, + // Last, because it removes this target's sentinel. + { target: "realtime", rule: "the frame magic is 0x31545343", old: "const MAGIC = 0x31545343;", new: "const MAGIC = 0x31545344;" }, ]; function digest(bytes) { From fef767d34a4687a2ca5e4eb6fc040878a7a6d05d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 19:24:11 +0200 Subject: [PATCH 0050/1002] Record Cut 2's landing The frame codec exists with parity proven both ways from its first commit, and its test found a real divergence before any consumer could: the JavaScript decoder deletes a leading byte-order mark the .NET decoder keeps. Two housekeeping rulings taken: the aggregate TypeScript scripts have been broken by a rename for two days and get their one-word fix, and the mutation runner is renamed for what it now covers. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 31 +++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 4a76e87e..d0ca96d2 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -15,7 +15,36 @@ question is open. **Cut 1 landed** at `e234a64` (shared verifier, tests, C#-written vectors), `66286b9` (browser copy deleted, −143 net) and `062a5c6` (mutation runner; twelve killed, one equivalent), then three Soul passes and three fix batches; **closed 2026-09-16**, three residuals -carried into Cut 2's Hands pass. **Cut 2 in Hands.** +landed at `c64a2da`, `6c933d0`, `fe2555d`. + +**Cut 2 landed** at `6cbc73f` (the codec, 178 lines; C#-written and +TypeScript-written frame vectors, each decoded by the other side, the C# +test reading both with the reference alone) and `ae29910` (37 entries as a +third runner target; 72 of 72 across the three targets killed, one +equivalent named). Soul in flight. Hands' discrepancies, kept: the +65,535-byte identity and 64 MiB payload ceilings recorded as a build rule +plus the digest of the whole encoding rather than half a megabyte of +literal text; the Body has five refusal messages where the spec listed six +(negative length and length-sum mismatch share one); three refusals added +that C#'s type system gives free, among them **a real divergence found by +the test: `TextDecoder` deletes a leading U+FEFF where +`Encoding.UTF8.GetString` keeps it, and U+FEFF is not .NET whitespace, so +such an identity passes `Validate` and reaches the wire**, closed with +`ignoreBOM`; C# sums lengths under `checked` and TS covers the overflow +with its length refusal, unreachable from either encoder. Residual 1's +exact-equality verification could not hold as written: applying the +pre-check leaves eleven stricter-than-C# spellings, all the safe direction, +pinned by name, because exact agreement needs .NET's registered-scheme +table. The no-control-byte test caught a literal U+001F the Write tool put +into its own introducing comment. + +Two items for Self's ruling, both taken: **`npm run test:ts` and `build:ts` +have been broken since `8dd5a45` (2026-09-14)** because +`scripts/run-typescript-workspaces.mjs:9` names the old unscoped +`cultcache-ts`; one-word fix, lands in Cut 2's fix batch. **The runner is +still named `mutate-cultmesh-authority.mjs`** while carrying a codec +target; it is renamed `scripts/mutate-cultmesh.mjs` in the same batch and +this map's references follow. **Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative greps, all twelve mutations rerun and killed, the control catching a From 343dffc1de82cb41d34e449330183aee190a3a37 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 19:58:50 +0200 Subject: [PATCH 0051/1002] Record Soul's Cut 2 pass and correct one attribution Byte parity held both ways under Soul's own frames. Three small things did not: a mutant declared equivalent was not, the payload copy is a view for a Node buffer, and the frame parity has no CI executor. The breakage of the aggregate scripts dates from the scoped rename, not the version bump this map first named. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 43 ++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index d0ca96d2..f8fa0d0c 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -39,12 +39,43 @@ table. The no-control-byte test caught a literal U+001F the Write tool put into its own introducing comment. Two items for Self's ruling, both taken: **`npm run test:ts` and `build:ts` -have been broken since `8dd5a45` (2026-09-14)** because -`scripts/run-typescript-workspaces.mjs:9` names the old unscoped -`cultcache-ts`; one-word fix, lands in Cut 2's fix batch. **The runner is -still named `mutate-cultmesh-authority.mjs`** while carrying a codec -target; it is renamed `scripts/mutate-cultmesh.mjs` in the same batch and -this map's references follow. +have been broken since `8cb3b72`** (the scoped rename; Hands first +attributed it to `8dd5a45`, which only bumped a version, and Soul +corrected it) because `scripts/run-typescript-workspaces.mjs:9` names the +old unscoped `cultcache-ts`; one-word fix, lands in Cut 2's fix batch. +**The runner is still named `mutate-cultmesh-authority.mjs`** while +carrying a codec target; it is renamed `scripts/mutate-cultmesh.mjs` in +the same batch and this map's references follow. + +**Soul's pass on Cut 2** (Fable; probes `probe-cs/`, `parity.mjs`, +`symmetric.mjs` and others in the session scratchpad) held byte parity in +both directions over its own thirty-nine encode specs and thirty +hand-built byte strings: identical digests, identical refusal messages, +identical U+FFFD counts on invalid UTF-8, the byte-order mark round trip, +all four digest ceilings regenerated from their build rules on both sides, +the five decode refusals in the same order, and every symmetric two-site +mutant dead. **Cut 2 does not close as promised**, on three small findings +in the fix batch: + +- **The mutant Hands called equivalent is not.** A 37-byte frame whose + identity lengths cancel a negative payload length sums to exactly 37 and + decodes to blank identities where C# refuses. The clause is right; nothing + defended it. Medium. +- **The decoded payload aliases the frame when the input is a Node + `Buffer`**, because `Buffer.prototype.slice` is a view; the test used only + a `Uint8Array`. The same trap the repo recorded for `verifyP256`. Medium + for the bridge, nil today. +- **Neither half of the frame parity runs in CI**; a C# codec change leaves + everything green. The Cut 1 scar, repeated. Medium. + +Recorded, not defects: the reference encoder writes delivery values its +own decoder refuses (a cast on the enum), where TypeScript refuses at +encode, the stricter side; an overflow near `int.MaxValue` is reachable +from hostile bytes and refused on both sides with different words; the +runner's sentinel detects only the last mutant by design, and the sidecar +repair names the mutation a dead run was inside. **Cut 3 may start in +parallel**, provided the first two land before the bridge hands the codec +a `Buffer`; both are in the same Hands pass ahead of it. **Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative greps, all twelve mutations rerun and killed, the control catching a From 65f2b666ef2196fc3c3373f8546cf84aee879d07 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 20:19:49 +0200 Subject: [PATCH 0052/1002] Run the TypeScript workspaces by the name cultcache-ts actually has MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `npm run build:ts` and `test:ts` have been dead since 8cb3b72, not 8dd5a45 as first recorded. That commit renamed the package to @gamecult/cultcache-ts and left `run-typescript-workspaces.mjs` asking npm for a workspace called `cultcache-ts`, which no longer exists; npm refused at the first entry in the list, so neither script reached any workspace at all. npm resolves a workspace by manifest name, not directory, so the list moves whenever a package is scoped — said out loud in the source now, since nothing else will say it. The mutation runner is renamed `scripts/mutate-cultmesh.mjs`. It stopped being about the route verifier alone when cut 2 gave it a third target, the realtime frame codec, and a file named for one of its three targets invites the reader to assume the other two are somebody else's problem. `docs/typescript-quic-realtime-cut.md:46-47` names the old path; the map is Self's and is updated separately. Co-Authored-By: Claude Fable 5.1 --- ...tate-cultmesh-authority.mjs => mutate-cultmesh.mjs} | 10 +++++++--- scripts/run-typescript-workspaces.mjs | 6 +++++- 2 files changed, 12 insertions(+), 4 deletions(-) rename scripts/{mutate-cultmesh-authority.mjs => mutate-cultmesh.mjs} (98%) diff --git a/scripts/mutate-cultmesh-authority.mjs b/scripts/mutate-cultmesh.mjs similarity index 98% rename from scripts/mutate-cultmesh-authority.mjs rename to scripts/mutate-cultmesh.mjs index f7df540b..1752c657 100644 --- a/scripts/mutate-cultmesh-authority.mjs +++ b/scripts/mutate-cultmesh.mjs @@ -1,6 +1,7 @@ -// Mutation check for the CultMesh route verification rules. +// Mutation check for the CultMesh rules TypeScript owns: route verification and +// the realtime frame codec. // -// Two files own those rules and each is one target here. `shared` is +// Two files own the route rules and each is one target here. `shared` is // `packages/cultnet-ts/src/cultmesh-authority.ts`, the one verifier, killed by // `npm run test --workspace packages/cultnet-ts`. `browser` is // `packages/cultmesh-browser/src/index.ts`, which must *call* the shared rules @@ -20,7 +21,10 @@ // that sidecar by the next run, not by git. After the final restore each // package is rebuilt so `dist/` never carries the last mutant. // -// node scripts/mutate-cultmesh-authority.mjs +// `realtime` is `packages/cultmesh-ts/src/realtime-wire.ts`, the frame codec, +// killed by `npm run test --workspace packages/cultmesh-ts`. +// +// node scripts/mutate-cultmesh.mjs import { createHash } from "node:crypto"; import { execFileSync } from "node:child_process"; diff --git a/scripts/run-typescript-workspaces.mjs b/scripts/run-typescript-workspaces.mjs index 933079da..da881464 100644 --- a/scripts/run-typescript-workspaces.mjs +++ b/scripts/run-typescript-workspaces.mjs @@ -6,7 +6,11 @@ if (!command) throw new Error("Usage: node scripts/run-typescript-workspaces.mjs const npmCli = process.env.npm_execpath ?? join(dirname(process.execPath), "node_modules", "npm", "bin", "npm-cli.js"); -const workspaces = ["cultcache-ts", "cultnet-ts", "cultmesh-ts", "cultmesh-browser"]; +// npm resolves a workspace by its manifest name, not its directory, so this list +// moves when a package is scoped: `8cb3b72` renamed `cultcache-ts` to +// `@gamecult/cultcache-ts` and left this entry behind, which broke `build:ts` and +// `test:ts` for every workspace from that commit on. +const workspaces = ["@gamecult/cultcache-ts", "cultnet-ts", "cultmesh-ts", "cultmesh-browser"]; const childEnv = process.platform === "win32" ? { ...process.env, From 9a4c9396b431307f77139f8e9eba3eaa51b588cd Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 20:20:16 +0200 Subject: [PATCH 0053/1002] Stop the realtime decoder handing back a view of its own frame MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two mutants the cut-2 pass recorded as equivalent were not. Both notes were reasoning, and both were wrong in the same way: they argued from the shape of the code instead of trying the input that breaks it. The decoder's length refusal reads `payloadLength < 0 || expected !== length`. The note said the first clause could never fire on its own, because a negative payload length makes the sum smaller than the frame. It does not: the sum also carries the three identity lengths, and a negative payload cancels against them. A 37-byte frame declaring `channelLength=65535, payloadLength=-65535` sums to exactly 37, matches its own byte length, and without the clause decodes to three blank identities and an empty payload where `CultMeshRealtimeWireProtocol` refuses it. Two smaller spellings do the same, `ch=1, pl=-1` over 37 bytes and `ch=2, pl=-1` over 38. No test covered that shape; one does now, and the mutation is listed and killed rather than excused. The payload copy was worse, because the fix and the bug looked identical. The decoder used `bytes.slice(...)`, which copies a `Uint8Array` — and the existing test passes one, so it was green — but Node's `Buffer` overrides `slice` with an alias of `subarray`. A `Buffer` is what a socket read hands a Node caller, which is exactly how the QUIC plane in cut 4 will reach this function, so every decoded payload would have been a live view of a frame buffer the transport is free to reuse. `Uint8Array.prototype.slice.call(bytes, ...)` was the obvious repair and does copy, but `%TypedArray%.prototype.slice` takes its result constructor from `@@species`, and `Buffer`'s is `FastBuffer`: the payload then comes back a `Buffer` from a `Buffer` frame and a `Uint8Array` from a `Uint8Array` one, so the same frame compares equal or unequal under `deepStrictEqual` depending on how it arrived. `new Uint8Array(bytes.subarray(...))` copies and is one type on both. Three mutations now guard the line — return a view, return a `Buffer` view, return a species-typed copy — and the first two die only on their own input type. Mutation runner: 75 mutations, 75 killed, 0 survivors, three green controls. Co-Authored-By: Claude Fable 5.1 --- packages/cultmesh-ts/src/realtime-wire.ts | 15 +++++- .../cultmesh-ts/test/realtime-wire.test.ts | 53 +++++++++++++++++++ scripts/mutate-cultmesh.mjs | 24 ++++++--- 3 files changed, 84 insertions(+), 8 deletions(-) diff --git a/packages/cultmesh-ts/src/realtime-wire.ts b/packages/cultmesh-ts/src/realtime-wire.ts index 091faf08..fa647133 100644 --- a/packages/cultmesh-ts/src/realtime-wire.ts +++ b/packages/cultmesh-ts/src/realtime-wire.ts @@ -173,6 +173,19 @@ export function decodeRealtimeFrame(bytes: Uint8Array): CultMeshRealtimeFrame { producerEpoch: view.getBigInt64(5, true), sequence: view.getBigInt64(13, true), delivery, - payload: bytes.slice(offset, offset + payloadLength), + // Not `bytes.slice(...)`. Node's `Buffer` overrides `slice` with an alias of + // `subarray`, so on a `Buffer` — which is what every socket read hands a Node + // caller — that spelling returns a *view* of the frame, and a decoded payload + // that changes when the frame buffer is reused. + // + // Nor `Uint8Array.prototype.slice.call(bytes, ...)`, which does bypass the + // override and copy, but takes its result constructor from `@@species`: on a + // `Buffer` that is `FastBuffer`, so the payload comes back a `Buffer` from a + // `Buffer` frame and a `Uint8Array` from a `Uint8Array` one. The declared + // type holds either way, but `deepStrictEqual` does not, so the same frame + // would compare equal or not depending on how it reached the decoder. + // + // The constructor copies and is the one type on both inputs. + payload: new Uint8Array(bytes.subarray(offset, offset + payloadLength)), }; } diff --git a/packages/cultmesh-ts/test/realtime-wire.test.ts b/packages/cultmesh-ts/test/realtime-wire.test.ts index 6a3c1a19..93f23365 100644 --- a/packages/cultmesh-ts/test/realtime-wire.test.ts +++ b/packages/cultmesh-ts/test/realtime-wire.test.ts @@ -325,6 +325,43 @@ test("decode refuses every malformed frame the reference refuses, in the referen assert.equal(decodeRealtimeFrame(blank).channelId, " ".repeat(15)); }); +// The `payloadLength < 0` clause in the length refusal is not redundant with the +// sum check beside it, which is what a surviving mutant that dropped it claimed. +// A negative payload length cancels against the identity lengths, so a frame can +// be crafted whose sum lands exactly on its own byte length. Without the clause +// each of these decodes to blank identities and an empty payload where the C# +// reference (`CultMeshRealtimeWireProtocol.cs:74-76`, same clause) refuses. +test("decode refuses a negative payload length that the length sum cancels out", () => { + const good = encodeRealtimeFrame(sample()); + // A valid magic, wire version, header size and delivery byte, then the three + // identity lengths and the payload length written by hand. + const crafted = (channelLength: number, payloadLength: number, totalBytes: number) => { + const bytes = new Uint8Array(totalBytes); + bytes.set(good.subarray(0, 37), 0); + const view = new DataView(bytes.buffer); + view.setUint16(21, channelLength, true); + view.setUint16(23, 0, true); + view.setUint16(25, 0, true); + view.setInt32(27, payloadLength, true); + // The sum the decoder computes must land exactly on the frame's own length, + // or the check beside the clause would refuse it and prove nothing. + assert.equal(37 + channelLength + 0 + 0 + payloadLength, totalBytes, "the crafted sum must match"); + return bytes; + }; + const cases: readonly (readonly [string, Uint8Array])[] = [ + ["a maximal channel length cancelled by -65535, summing to 37", crafted(0xffff, -0xffff, 37)], + ["a channel length of 1 cancelled by -1, summing to 37", crafted(1, -1, 37)], + ["a channel length of 2 cancelled by -1, summing to 38", crafted(2, -1, 38)], + ]; + for (const [label, bytes] of cases) { + assert.throws( + () => decodeRealtimeFrame(bytes), + (error: Error) => error.message === "Realtime frame length is invalid.", + label, + ); + } +}); + test("decode reads exactly the viewed bytes of an offset view, not the buffer behind it", () => { const good = encodeRealtimeFrame(sample({ payload: Uint8Array.from([9, 8, 7]) })); const pool = new Uint8Array(good.byteLength + 64).fill(0xa5); @@ -338,6 +375,22 @@ test("decode reads exactly the viewed bytes of an offset view, not the buffer be assert.deepEqual(decoded.payload, Uint8Array.from([9, 8, 7])); }); +// The `Uint8Array` case above passes with a plain `bytes.slice(...)`; this one +// does not. Node's `Buffer` overrides `slice` with an alias of `subarray`, and a +// `Buffer` is what a socket read hands a Node caller, so the aliasing bug this +// pins is the one that would actually reach a consumer. +test("the decoded payload copies out of a Node Buffer too, which overrides slice", () => { + const frame = Buffer.from(encodeRealtimeFrame(sample({ payload: Uint8Array.from([9, 8, 7]) }))); + const decoded = decodeRealtimeFrame(frame); + frame[frame.byteLength - 1] = 0; + assert.deepEqual(decoded.payload, Uint8Array.from([9, 8, 7]), "payload unchanged by a later write to the frame"); + assert.equal(Buffer.isBuffer(decoded.payload), false, "the copy is a plain Uint8Array, not a Buffer"); + assert.notEqual(decoded.payload.buffer, frame.buffer, "the copy has its own backing store"); + // The three identities need no such check: `TextDecoder` returns strings, which + // hold no reference to the bytes they were decoded from. + assert.equal(decoded.channelId, "aetheria.zone-1"); +}); + test("the codec touches no socket: no node: import in the source", () => { const source = readFileSync(join(__dirname, "..", "..", "src", "realtime-wire.ts"), "utf8"); assert.doesNotMatch(source, /from "node:|require\("node:/); diff --git a/scripts/mutate-cultmesh.mjs b/scripts/mutate-cultmesh.mjs index 1752c657..d3d3f7e9 100644 --- a/scripts/mutate-cultmesh.mjs +++ b/scripts/mutate-cultmesh.mjs @@ -303,16 +303,26 @@ const mutations = [ { target: "realtime", rule: "decode checks the wire version", old: " if (view.getUint16(35, true) !== WIRE_VERSION || view.getInt32(31, true) !== FIXED_HEADER_BYTES) {", new: " if (view.getInt32(31, true) !== FIXED_HEADER_BYTES) {" }, { target: "realtime", rule: "decode checks the stamped header size", old: " if (view.getUint16(35, true) !== WIRE_VERSION || view.getInt32(31, true) !== FIXED_HEADER_BYTES) {", new: " if (view.getUint16(35, true) !== WIRE_VERSION) {" }, { target: "realtime", rule: "decode refuses a delivery byte outside the three modes", old: ' if (delivery === undefined) throw new Error("Realtime frame delivery mode is invalid.");\n', new: ' if (delivery === undefined) return { channelId: "", schemaId: "", bodyId: "", producerEpoch: 0n, sequence: 0n, delivery: "unreliable", payload: new Uint8Array(0) };\n' }, - // Not listed: removing `payloadLength < 0` from the decoder's length refusal. - // The clause mirrors the reference but cannot fire on its own: a negative - // payload length makes the sum smaller than the frame, and reaching the sum - // check at all means the frame is already at least 37 bytes, so the sum can - // never match while the length is negative. The mutant is equivalent, and it - // survived when tried. { target: "realtime", rule: "decode refuses a length sum that misses the frame", old: " if (payloadLength < 0 || expected !== bytes.byteLength) throw", new: " if (payloadLength < 0) throw" }, + // This one was first listed as equivalent — "a negative payload length makes + // the sum smaller than the frame, so the sum check covers it" — and it did + // survive. The reasoning was wrong: a negative payload length cancels against + // the identity lengths, so a 37-byte frame with channelLength 65535 and + // payloadLength -65535 sums to exactly 37 and decoded to blank identities + // while the reference refused it. No test covered that shape; one does now. + { target: "realtime", rule: "decode refuses a negative payload length the sum cancels out", old: " if (payloadLength < 0 || expected !== bytes.byteLength) throw", new: " if (expected !== bytes.byteLength) throw" }, { target: "realtime", rule: "decode keeps a leading byte-order mark, as Encoding.UTF8.GetString does", old: 'const decoder = new TextDecoder("utf-8", { ignoreBOM: true });', new: "const decoder = new TextDecoder();" }, { target: "realtime", rule: "decode reads exactly the viewed bytes of an offset view", old: " const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);", new: " const view = new DataView(bytes.buffer);" }, - { target: "realtime", rule: "the decoded payload does not alias the frame it came from", old: " payload: bytes.slice(offset, offset + payloadLength),", new: " payload: bytes.subarray(offset, offset + payloadLength)," }, + { target: "realtime", rule: "the decoded payload does not alias the frame it came from", old: " payload: new Uint8Array(bytes.subarray(offset, offset + payloadLength)),", new: " payload: bytes.subarray(offset, offset + payloadLength)," }, + // The narrower half of the same rule, and the one that shipped broken: a plain + // `bytes.slice` copies a `Uint8Array` but aliases a `Buffer`, whose own `slice` + // is an alias of `subarray`. The mutation above dies on the `Uint8Array` test; + // this one survives it and dies only on the `Buffer` test. + { target: "realtime", rule: "the decoded payload copies out of a Buffer, whose own slice is a view", old: " payload: new Uint8Array(bytes.subarray(offset, offset + payloadLength)),", new: " payload: bytes.slice(offset, offset + payloadLength)," }, + // And the payload's type does not follow the frame's. This spelling copies, so + // both mutations above are dead to it, but `@@species` hands a `Buffer` frame a + // `Buffer` payload; only the `Buffer.isBuffer` assertion kills it. + { target: "realtime", rule: "the decoded payload is a plain Uint8Array whatever the frame was", old: " payload: new Uint8Array(bytes.subarray(offset, offset + payloadLength)),", new: " payload: Uint8Array.prototype.slice.call(bytes, offset, offset + payloadLength)," }, // Last, because it removes this target's sentinel. { target: "realtime", rule: "the frame magic is 0x31545343", old: "const MAGIC = 0x31545343;", new: "const MAGIC = 0x31545344;" }, ]; From 6ed0ff75af5ecd8daa6e563a8fd3a97180e7b7b3 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 20:21:27 +0200 Subject: [PATCH 0054/1002] Run both halves of the realtime frame parity in CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The codec's byte parity rests on two vector files written from opposite sides: `realtime-frame-vectors.json` by the C# reference and decoded by TypeScript, and `realtime-frame-vectors.ts-written.json` by the TypeScript codec and decoded by C#. Neither half ran in CI. The TypeScript suite ran nowhere — cultmesh-ts was not in any job — and the C# test ran nowhere either, because `cultnet-interop.yml` is windows-latest and main-only and does not filter for it. A codec that agreed only with itself would have gone green on every push, which is the exact failure the two-file scheme exists to prevent. Both now run in the `reactive-and-resource-lifetime` job beside the authority steps, on windows-latest and ubuntu-latest, for main, codex/** and pull requests. That job was already the one place the TypeScript side of CultMesh gets exercised on Linux at all. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/cultmesh-portability.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.github/workflows/cultmesh-portability.yml b/.github/workflows/cultmesh-portability.yml index 9f088e95..520a4836 100644 --- a/.github/workflows/cultmesh-portability.yml +++ b/.github/workflows/cultmesh-portability.yml @@ -109,6 +109,15 @@ jobs: - name: Verify the browser client against the shared TypeScript verifier run: npm run test --workspace packages/cultmesh-browser + # The realtime frame codec. Its byte parity rests on two vector files, + # contracts/cultmesh/realtime-frame-vectors.json written by the C# + # reference and decoded by this step, and realtime-frame-vectors.ts-written.json + # written by this codec and decoded by the C# step below. Neither half ran + # in CI on any OS until these two steps existed, so a codec that agreed + # only with itself would have gone green. + - name: Verify the realtime frame codec with the TypeScript codec + run: npm run test --workspace packages/cultmesh-ts + # Both directions of the CultMesh authority vectors: the C#-written # file (contracts/cultmesh/authority-route-vectors.json) and the # TypeScript-signed file (authority-route-vectors.ts-signed.json) are @@ -120,3 +129,12 @@ jobs: dotnet test tests/GameCult.Mesh.Tests/GameCult.Mesh.Tests.csproj --filter FullyQualifiedName~AuthorityProof --logger "console;verbosity=minimal" + + # The other half of the frame parity: the C# reference decodes and + # re-encodes the vector file the TypeScript codec wrote. A fixture + # authored on one side alone would only agree with itself. + - name: Verify the realtime frame vectors with the C# reference + run: >- + dotnet test tests/GameCult.Mesh.Tests/GameCult.Mesh.Tests.csproj + --filter FullyQualifiedName~RealtimeWireProtocol + --logger "console;verbosity=minimal" From 7a0749b8e2004f364bd44cbc8e14278895e39d30 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 20:21:42 +0200 Subject: [PATCH 0055/1002] Say what the eleven stricter endpoint spellings actually are MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both comments around `STRICTER_THAN_CSHARP` called the divergences host repairs. Most are not. Of the eleven, three carry a backslash and two have no authority for `System.Uri` to accept; `refusedByCSharpUriShape` refuses those five on the raw string, before there is a host to repair. Four are genuine host repairs `URL` would make and C# would not — two trailing dots, two fullwidth hosts — and the last two throw in `URL` before any rule of ours runs. The same slip sits in `isProtectedEndpoint`'s own doc comment, over a different eleven: it says `URL` repairs eleven spellings `System.Uri` refuses, when only the four carrying a tab or CR/LF are rewritten and the other seven are admitted as written. Wording only; no rule changes. It matters because the next reader deciding whether the pre-check earns its keep will reach for the reason the comment gives, and "host repairs" points at the wrong half of the list. Co-Authored-By: Claude Fable 5.1 --- packages/cultnet-ts/src/cultmesh-authority.ts | 16 +++++++++------- .../cultnet-ts/test/cultmesh-authority.test.ts | 18 ++++++++++++------ 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/packages/cultnet-ts/src/cultmesh-authority.ts b/packages/cultnet-ts/src/cultmesh-authority.ts index d61f6072..31cbcb61 100644 --- a/packages/cultnet-ts/src/cultmesh-authority.ts +++ b/packages/cultnet-ts/src/cultmesh-authority.ts @@ -366,14 +366,16 @@ export function isLoopbackEndpoint(value: string): boolean { * scheme containing "quic", over a string `System.Uri` parses at all. * * `refusedByCSharpUriShape` runs first here for the same reason it runs first in - * `isLoopbackEndpoint`, and it matters more: `URL` repairs eleven spellings + * `isLoopbackEndpoint`, and it matters more: `URL` accepts eleven spellings * `System.Uri` refuses outright, and every one of them would be *protected* here - * and unprotected in C#. `wss:x`, `wss:host`, `wss:host:8443`, `wss:/host` and - * `wss:///host` have no authority for `System.Uri` to accept; `wss://host\path` - * and `wss://host:8443\` carry a backslash; `wss://ho\tst/m`, `wss://host\t/m`, - * `quic://ho\tst` carry a tab and `wss://host\r\n/m` a CR/LF, which `URL` - * deletes. Letting any of them answer true would clear the channel-protection - * gate on a route C# refuses. + * and unprotected in C#. Only four of the eleven are repairs in the sense of + * `URL` rewriting the host: `wss://ho\tst/m`, `wss://host\t/m` and + * `quic://ho\tst` carry a tab and `wss://host\r\n/m` a CR/LF, all of which `URL` + * deletes. The other seven `URL` simply admits as written: `wss:x`, `wss:host`, + * `wss:host:8443`, `wss:/host` and `wss:///host` have no authority for + * `System.Uri` to accept, and `wss://host\path` and `wss://host:8443\` carry a + * backslash. Letting any of the eleven answer true would clear the + * channel-protection gate on a route C# refuses. * * Two spellings of Soul's 71 still disagree, both the safe way round: C# calls * them protected and this answers false, so a route is refused rather than diff --git a/packages/cultnet-ts/test/cultmesh-authority.test.ts b/packages/cultnet-ts/test/cultmesh-authority.test.ts index dbf5a8d7..e0c47234 100644 --- a/packages/cultnet-ts/test/cultmesh-authority.test.ts +++ b/packages/cultnet-ts/test/cultmesh-authority.test.ts @@ -390,12 +390,18 @@ const CSHARP_PROTECTED_ANSWERS: readonly (readonly [string, boolean])[] = [ // The eleven of the 71 where the two sides still differ, every one of them the // safe way round: C# calls the endpoint protected and TypeScript does not, so a -// route is refused rather than admitted. `refusedByCSharpUriShape` is stricter -// than `System.Uri.TryCreate` on purpose — it also refuses the host repairs that -// would make `isLoopbackEndpoint` lie — and a zone id and a non-breaking-space -// host throw in `URL` before any rule of ours runs. None of them is dialable as -// a browser CultMesh route. Pinned exactly, not merely excluded: if one of these -// starts answering true, or a twelfth spelling joins them, this fails. +// route is refused rather than admitted. They are not one shape. Three carry a +// backslash (`wss:\\host/m`, `wss://host:8443/\`, `QUIC:\\host`) and two have no +// authority for `System.Uri` to accept (`quic:host`, `quic:`); those five +// `refusedByCSharpUriShape` refuses on the raw string, before any host exists to +// repair. Four are host repairs `URL` would make and C# would not — a trailing +// dot on `wss://host./m` and `wss://127.0.0.1./m`, a fullwidth host on the other +// two — which is the same reason that pre-check runs first in +// `isLoopbackEndpoint`. The last two throw in `URL` before any rule of ours +// runs: an IPv6 zone id and a non-breaking space in the host. None of the eleven +// is dialable as a browser CultMesh route. Pinned exactly, not merely excluded: +// if one of these starts answering true, or a twelfth spelling joins them, this +// fails. const STRICTER_THAN_CSHARP: readonly string[] = [ "wss:\\\\host/m", "wss://host./m", From 6a091ef65c62c721733b95e37b55fbe240ce0e59 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 21:03:01 +0200 Subject: [PATCH 0056/1002] Make the MsQuic bridge a two-role event queue instead of a Unity client MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The bridge was one platform, one role and one host: Windows by construction (`windows.h`, `__declspec`, `CryptHashCertificate2`), client-only, and shaped around the managed connector that polls it every 2 ms. Nothing about MsQuic required that; the shape came from having exactly one caller. It now carries a C ABI v2 of twelve exports over a single per-runtime event queue: open a runtime, open listeners and connections on it, open streams and send frames, and take typed events out of one blocking wait. The event struct is 64 bytes described by layout rather than by a shared header, so a host declares it in its own FFI and no header travels with the ABI. `next_event` keeps the v1 two-phase convention — return 2, leave the event at the head, report the size the caller needs — because that is the one part of v1 that was already host-agnostic. The rule that shapes everything else is that nothing calls out. MsQuic's worker threads only push onto the queue and wake that wait, so no host runtime is entered from a thread it does not own, and the bridge needs to know nothing about what is on the other side. That is what makes one binary serve both a Node process through FFI and a Unity player through P/Invoke. Trust moved out. A v2 client connection defers validation, emits the DER as event 3 and answers MsQuic only when the host calls `connection_certificate_complete`; if the host never answers, MsQuic's handshake timeout closes the connection and event 4 says so. The C code no longer has an opinion about certificates — except in the v1 shim, where it must. The five v1 exports are unchanged in signature and behaviour and are now `#ifdef _WIN32`, matching `CanConnect`'s own Windows gate. A v1 client is a private v2 runtime holding one connection, and the pin comparison is the single thing it still decides in C, because that is the contract the shipped Unity package was built against. `windows.h`, `wincrypt.h` and `CryptHashCertificate2` appear nowhere outside that block. Two things the rewrite had to get right that the old shape never exercised. The v1 pin must be attached before `ConnectionStart`, not after it returns: the handshake runs on an MsQuic worker thread and reaches the certificate event immediately on loopback, so a pin applied afterwards loses the race and the connection silently takes the host path nobody is listening on. And teardown must close the connection handles itself — `RegistrationClose` blocks until the app has closed every child handle, and a silent shutdown delivers no shutdown events at all, so leaning on the callbacks to do it deadlocks the caller forever. Both were found by the tests hanging, and both now have a mutation that reproduces them. Verified: the four v1 tests in tests/GameCult.Mesh.Quic.Native.Tests pass unchanged (3 passed, 1 skipped for want of an external endpoint), including the wrong-pin refusal and the departed-client broadcast test. A 15-check FFI smoke drives the whole v2 path — listener, deferred certificate, both sides connected, latest-only stream, one frame with FIN, identical bytes out — and passes on Windows x64 and on Linux x64. Ten source mutations, ten killed, two green no-op controls. One open fork, reported separately and not decided here: the pinned Windows MsQuic is the Schannel build, which refuses QUIC_CREDENTIAL_TYPE_CERTIFICATE_PKCS12 with QUIC_STATUS_NOT_SUPPORTED, so `listener_open` cannot open a provider against it. The map assumed PKCS12 was "one credential type for Schannel and OpenSSL"; the header declares it but the Schannel provider does not implement it. The identical bridge binary passes the full provider smoke against OpenSSL MsQuic 2.5.9, so this is a question about which flavour Windows pins, not about the bridge. Co-Authored-By: Claude Fable 5.1 --- .../GameCult.Mesh.Quic.Native/CMakeLists.txt | 51 +- .../cultmesh_quic_native.cpp | 1380 +++++++++++++---- 2 files changed, 1092 insertions(+), 339 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/CMakeLists.txt b/native/GameCult.Mesh.Quic.Native/CMakeLists.txt index dcb3014c..da92ffb1 100644 --- a/native/GameCult.Mesh.Quic.Native/CMakeLists.txt +++ b/native/GameCult.Mesh.Quic.Native/CMakeLists.txt @@ -1,23 +1,48 @@ cmake_minimum_required(VERSION 3.24) project(gamecult_mesh_quic_native LANGUAGES CXX) -if(NOT WIN32) - message(FATAL_ERROR "The current CultMesh native QUIC connector supports Windows desktop only") -endif() -if(NOT DEFINED MSQUIC_ROOT) - message(FATAL_ERROR "MSQUIC_ROOT must point at the extracted Microsoft.Native.Quic.MsQuic.Schannel package build/native directory") +# Two platforms, one source. Windows takes MsQuic from the pinned Schannel NuGet +# layout (MSQUIC_ROOT); Linux takes it from the extracted libmsquic deb, whose +# headers and library land in unrelated places, so they are named separately. +if(NOT WIN32 AND NOT (CMAKE_SYSTEM_NAME STREQUAL "Linux")) + message(FATAL_ERROR "The CultMesh native QUIC bridge supports Windows x64 and Linux x64") endif() add_library(gamecult_mesh_quic_native SHARED cultmesh_quic_native.cpp) target_compile_features(gamecult_mesh_quic_native PRIVATE cxx_std_20) -target_compile_definitions(gamecult_mesh_quic_native PRIVATE GAMECULT_MESH_QUIC_NATIVE_EXPORTS WIN32_LEAN_AND_MEAN NOMINMAX) -target_include_directories(gamecult_mesh_quic_native PRIVATE "${MSQUIC_ROOT}/include") -target_link_directories(gamecult_mesh_quic_native PRIVATE "${MSQUIC_ROOT}/lib/x64") -target_link_libraries(gamecult_mesh_quic_native PRIVATE msquic crypt32 bcrypt) -# The DLL is committed beside its source, so a rebuild must reproduce it: /Brepro drops the link timestamps. -target_compile_options(gamecult_mesh_quic_native PRIVATE /Brepro) -target_link_options(gamecult_mesh_quic_native PRIVATE /Brepro) + +if(WIN32) + if(NOT DEFINED MSQUIC_ROOT) + message(FATAL_ERROR "MSQUIC_ROOT must point at the extracted Microsoft.Native.Quic.MsQuic.Schannel package build/native directory") + endif() + target_compile_definitions(gamecult_mesh_quic_native PRIVATE WIN32_LEAN_AND_MEAN NOMINMAX) + target_include_directories(gamecult_mesh_quic_native PRIVATE "${MSQUIC_ROOT}/include") + target_link_directories(gamecult_mesh_quic_native PRIVATE "${MSQUIC_ROOT}/lib/x64") + # crypt32 and bcrypt belong to the v1 shim alone: CryptHashCertificate2 + # compares the Unity pin. Nothing in the v2 path needs them. ntdll carries + # RtlIpv4/6StringToAddressEx, which msquic_winuser.h's inline QuicAddrFromString + # calls to parse the listener host; the Linux header parses it in-tree instead. + target_link_libraries(gamecult_mesh_quic_native PRIVATE msquic crypt32 bcrypt ntdll) + # The DLL is committed beside its source, so a rebuild must reproduce it: /Brepro drops the link timestamps. + target_compile_options(gamecult_mesh_quic_native PRIVATE /Brepro) + target_link_options(gamecult_mesh_quic_native PRIVATE /Brepro) +else() + if(NOT DEFINED MSQUIC_INCLUDE_DIR OR NOT DEFINED MSQUIC_LIB_DIR) + message(FATAL_ERROR "MSQUIC_INCLUDE_DIR and MSQUIC_LIB_DIR must point at the msquic v2.5.9 headers and the extracted libmsquic library directory") + endif() + target_include_directories(gamecult_mesh_quic_native PRIVATE "${MSQUIC_INCLUDE_DIR}") + target_link_directories(gamecult_mesh_quic_native PRIVATE "${MSQUIC_LIB_DIR}") + target_link_libraries(gamecult_mesh_quic_native PRIVATE msquic pthread) + # Only the CULTMESH_API exports leave the .so; everything else stays internal. + target_compile_options(gamecult_mesh_quic_native PRIVATE -fvisibility=hidden -fvisibility-inlines-hidden) + # libmsquic.so.2 ships beside the bridge rather than being installed + # system-wide, so the loader is pointed at the bridge's own directory. + set_target_properties(gamecult_mesh_quic_native PROPERTIES + BUILD_WITH_INSTALL_RPATH TRUE + INSTALL_RPATH "$ORIGIN") +endif() set_target_properties(gamecult_mesh_quic_native PROPERTIES OUTPUT_NAME "gamecult_mesh_quic_native" - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") diff --git a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp index bbb6e193..8c2e8884 100644 --- a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp +++ b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp @@ -1,8 +1,29 @@ -#include -#include -#include +// The CultMesh MsQuic bridge: one MsQuic body, two roles, two platforms. +// +// This file owns MsQuic registration, configuration, listener, connection and +// stream handles, TLS credential loading, the 1-byte-kind plus 4-byte-LE-length +// QUIC stream framing, and a single event queue per runtime. It owns transport +// only. It never decodes a CultMesh frame, never decides delivery semantics, +// never coalesces, never reconnects, and in the v2 path never accepts a +// certificate on its own: the host answers, through +// `cultmesh_quic_connection_certificate_complete`. +// +// No host callbacks. Every crossing is the host calling in, including the one +// blocking wait (`cultmesh_quic_next_event`). MsQuic's worker threads only ever +// push onto the queue and wake that wait, so the bridge is runtime-neutral: it +// includes no Node headers, no Unity headers, and nothing platform-specific +// outside the `_WIN32` block at the bottom of this file. +// +// Two ABIs live here. v2 is the queue API above, for any host. v1 is the five +// exports the Unity managed connector already imports by name +// (`CultMeshNativeQuicRealtimeTransport.cs`, `NativeMethods`), kept Windows-only +// and implemented on top of a private v2 runtime. v1 is the only place a +// certificate pin is compared in C, because that is the contract Unity was +// shipped with; it delegates everything else and decides nothing new. + #include +#include #include #include #include @@ -13,14 +34,31 @@ #include #include #include +#include #include -#if defined(GAMECULT_MESH_QUIC_NATIVE_EXPORTS) +#if defined(_WIN32) #define CULTMESH_API extern "C" __declspec(dllexport) #else -#define CULTMESH_API extern "C" __declspec(dllimport) +#define CULTMESH_API extern "C" __attribute__((visibility("default"))) #endif +// The event struct crosses the ABI by layout, not by header: hosts describe it +// in their own FFI. Keep it exactly 64 bytes with no implicit padding. +extern "C" struct cultmesh_quic_event { + uint32_t type; + uint32_t stream_kind; + uint64_t listener_id; + uint64_t connection_id; + uint64_t stream_id; + uint64_t code; + int32_t status; + int32_t payload_length; + uint8_t reserved[16]; +}; +static_assert(sizeof(cultmesh_quic_event) == 64, "the event struct is a 64-byte ABI contract"); +static_assert(offsetof(cultmesh_quic_event, payload_length) == 44, "event field offsets are an ABI contract"); + namespace { constexpr uint32_t kApiVersion = 2; @@ -31,6 +69,903 @@ constexpr uint8_t kLatestOnlyStream = 2; constexpr uint32_t kMaximumEncodedFrameBytes = (64u * 1024u * 1024u) + 37u + (3u * 65535u); constexpr char kAlpn[] = "cultmesh-state-v1"; +// Mirrors the C# server and connector: CultMeshQuicRealtimeTransport.cs:77,:202 +// for the stream ceiling, and the idle/keep-alive pair the v1 bridge already +// used (:335-338). +constexpr uint32_t kIdleTimeoutMs = 30000; +constexpr uint32_t kKeepAliveIntervalMs = 5000; +constexpr uint16_t kPeerUnidiStreamCount = 1024; +// If the host never answers the certificate event, this is what closes the +// connection instead of leaking it: MsQuic's own handshake timeout fires and +// the shutdown arrives as event 4. +constexpr uint32_t kHandshakeIdleTimeoutMs = 10000; + +enum EventType : uint32_t { + kEventListenerNewConnection = 1, + kEventConnectionConnected = 2, + kEventConnectionCertificateReceived = 3, + kEventConnectionShutdown = 4, + kEventStreamStarted = 5, + kEventStreamFrame = 6, + kEventStreamSendComplete = 7, + kEventStreamShutdown = 8, + kEventListenerStopped = 9, +}; + +struct Runtime; +struct Connection; + +struct QueuedEvent { + cultmesh_quic_event header{}; + std::vector payload; +}; + +struct Stream { + Runtime* runtime = nullptr; + Connection* owner = nullptr; + HQUIC handle = nullptr; + uint64_t id = 0; + uint8_t kind = 0; + bool inbound = false; + bool has_kind = false; + // Inbound reassembly only. MsQuic delivers stream bytes in arbitrary + // chunks, so the length prefix and the frame it introduces can arrive in + // separate receives. + std::vector buffered; +}; + +struct Connection { + Runtime* runtime = nullptr; + HQUIC handle = nullptr; + uint64_t id = 0; + uint64_t listener_id = 0; + bool inbound = false; + bool closing = false; + // Two paths can reach `ConnectionClose`: the shutdown-complete callback and + // `cultmesh_quic_runtime_close`, which cannot lean on the callback because a + // silent shutdown produces none. Whoever gets here first closes; the other + // does nothing. MsQuic treats a second close of the same handle as a bug. + std::atomic handle_closed{false}; + // v1 only. A connection carrying a pin has its certificate answered in C + // against that pin; a v2 connection never sets this and is always answered + // by the host. Nothing outside the `_WIN32` block below ever sets it. + bool has_pin = false; + std::array pin{}; + // v1 diagnostics: the MsQuic event sequence, which the v1 error string + // reports and nothing in v2 reads. + std::string trace; +}; + +struct Listener { + Runtime* runtime = nullptr; + HQUIC handle = nullptr; + HQUIC configuration = nullptr; + uint64_t id = 0; + bool stopped = false; +}; + +struct Runtime { + const QUIC_API_TABLE* api = nullptr; + HQUIC registration = nullptr; + // One client configuration serves every outbound connection: the ALPN, + // settings and credential flags are identical for all of them. + HQUIC client_configuration = nullptr; + + std::mutex gate; + std::condition_variable signal; + std::deque events; + std::unordered_map> listeners; + std::unordered_map> connections; + std::unordered_map> streams; + uint64_t next_id = 1; + std::string error; + bool closing = false; +}; + +// Every send buffer outlives its `StreamSend` call: MsQuic reads the bytes +// asynchronously and only releases them at SEND_COMPLETE, where this is freed. +struct SendRequest { + QUIC_BUFFER buffer{}; + std::vector bytes; +}; + +std::string Hex(uint64_t value) { + std::ostringstream text; + text << "0x" << std::hex << std::uppercase << value; + return text.str(); +} + +void SetError(Runtime* runtime, const std::string& message) { + if (runtime == nullptr) return; + std::lock_guard lock(runtime->gate); + runtime->error = message; +} + +// The only way anything reaches the host. Callers must not hold `gate`. +void Publish(Runtime* runtime, const cultmesh_quic_event& header, const uint8_t* payload, size_t payload_length) { + QueuedEvent queued; + queued.header = header; + queued.header.payload_length = static_cast(payload_length); + if (payload != nullptr && payload_length > 0) + queued.payload.assign(payload, payload + payload_length); + { + std::lock_guard lock(runtime->gate); + if (runtime->closing) return; + runtime->events.push_back(std::move(queued)); + } + runtime->signal.notify_all(); +} + +void PublishSimple(Runtime* runtime, uint32_t type, uint64_t listener_id, uint64_t connection_id, + uint64_t stream_id, uint64_t code, int32_t status, uint32_t stream_kind = 0) { + cultmesh_quic_event header{}; + header.type = type; + header.stream_kind = stream_kind; + header.listener_id = listener_id; + header.connection_id = connection_id; + header.stream_id = stream_id; + header.code = code; + header.status = status; + Publish(runtime, header, nullptr, 0); +} + +void AppendTrace(Connection* connection, const std::string& event) { + if (connection == nullptr) return; + std::lock_guard lock(connection->runtime->gate); + if (!connection->trace.empty()) connection->trace += ","; + connection->trace += event; +} + +uint32_t ReadUInt32LittleEndian(const uint8_t* value) { + return static_cast(value[0]) | + (static_cast(value[1]) << 8) | + (static_cast(value[2]) << 16) | + (static_cast(value[3]) << 24); +} + +void WriteUInt32LittleEndian(uint8_t* destination, uint32_t value) { + destination[0] = static_cast(value & 0xff); + destination[1] = static_cast((value >> 8) & 0xff); + destination[2] = static_cast((value >> 16) & 0xff); + destination[3] = static_cast((value >> 24) & 0xff); +} + +uint64_t NextId(Runtime* runtime) { + std::lock_guard lock(runtime->gate); + return runtime->next_id++; +} + +Listener* FindListener(Runtime* runtime, uint64_t id) { + std::lock_guard lock(runtime->gate); + const auto found = runtime->listeners.find(id); + return found == runtime->listeners.end() ? nullptr : found->second.get(); +} + +Connection* FindConnection(Runtime* runtime, uint64_t id) { + std::lock_guard lock(runtime->gate); + const auto found = runtime->connections.find(id); + return found == runtime->connections.end() ? nullptr : found->second.get(); +} + +Stream* FindStream(Runtime* runtime, uint64_t id) { + std::lock_guard lock(runtime->gate); + const auto found = runtime->streams.find(id); + return found == runtime->streams.end() ? nullptr : found->second.get(); +} + +void ShutdownConnectionForProtocolFault(Connection* connection, const std::string& message) { + if (connection == nullptr) return; + SetError(connection->runtime, message); + if (connection->runtime->api != nullptr && connection->handle != nullptr) + connection->runtime->api->ConnectionShutdown( + connection->handle, QUIC_CONNECTION_SHUTDOWN_FLAG_NONE, kStreamAbortCode); +} + +// Reassembles whole encoded frames out of the stream byte sequence and +// publishes one event 6 per frame, length prefix stripped. The first byte of an +// inbound stream is its kind, which becomes event 5. +bool ConsumeFrames(Stream* stream) { + Runtime* runtime = stream->runtime; + auto& bytes = stream->buffered; + if (!stream->has_kind) { + if (bytes.empty()) return true; + stream->kind = bytes.front(); + bytes.erase(bytes.begin()); + stream->has_kind = true; + if (stream->kind != kReliableStream && stream->kind != kLatestOnlyStream) { + ShutdownConnectionForProtocolFault(stream->owner, "CultMesh QUIC stream kind is invalid."); + return false; + } + PublishSimple(runtime, kEventStreamStarted, stream->owner->listener_id, stream->owner->id, + stream->id, 0, 0, stream->kind); + } + + while (bytes.size() >= sizeof(uint32_t)) { + const uint32_t length = ReadUInt32LittleEndian(bytes.data()); + if (length == 0 || length > kMaximumEncodedFrameBytes) { + ShutdownConnectionForProtocolFault(stream->owner, "CultMesh QUIC frame length is invalid."); + return false; + } + const size_t framed_length = sizeof(uint32_t) + static_cast(length); + if (bytes.size() < framed_length) return true; + + cultmesh_quic_event header{}; + header.type = kEventStreamFrame; + header.stream_kind = stream->kind; + header.listener_id = stream->owner->listener_id; + header.connection_id = stream->owner->id; + header.stream_id = stream->id; + Publish(runtime, header, bytes.data() + sizeof(uint32_t), length); + + bytes.erase(bytes.begin(), bytes.begin() + static_cast(framed_length)); + } + return true; +} + +void DestroyStream(Runtime* runtime, uint64_t stream_id) { + std::lock_guard lock(runtime->gate); + runtime->streams.erase(stream_id); +} + +QUIC_STATUS QUIC_API StreamCallback(HQUIC handle, void* context, QUIC_STREAM_EVENT* event) { + auto* stream = static_cast(context); + Runtime* runtime = stream->runtime; + switch (event->Type) { + case QUIC_STREAM_EVENT_RECEIVE: + for (uint32_t index = 0; index < event->RECEIVE.BufferCount; ++index) { + const auto& buffer = event->RECEIVE.Buffers[index]; + stream->buffered.insert(stream->buffered.end(), buffer.Buffer, buffer.Buffer + buffer.Length); + } + ConsumeFrames(stream); + break; + case QUIC_STREAM_EVENT_SEND_COMPLETE: + delete static_cast(event->SEND_COMPLETE.ClientContext); + PublishSimple(runtime, kEventStreamSendComplete, stream->owner->listener_id, stream->owner->id, + stream->id, 0, 0, stream->kind); + break; + case QUIC_STREAM_EVENT_PEER_SEND_SHUTDOWN: + if (!stream->buffered.empty()) + ShutdownConnectionForProtocolFault(stream->owner, "CultMesh QUIC stream ended with a truncated frame."); + break; + case QUIC_STREAM_EVENT_SHUTDOWN_COMPLETE: { + const uint64_t stream_id = stream->id; + const uint64_t connection_id = stream->owner->id; + const uint64_t listener_id = stream->owner->listener_id; + const uint32_t kind = stream->kind; + if (!event->SHUTDOWN_COMPLETE.AppCloseInProgress) runtime->api->StreamClose(handle); + DestroyStream(runtime, stream_id); + PublishSimple(runtime, kEventStreamShutdown, listener_id, connection_id, stream_id, 0, 0, kind); + break; + } + default: + break; + } + return QUIC_STATUS_SUCCESS; +} + +void DestroyConnection(Runtime* runtime, uint64_t connection_id) { + std::lock_guard lock(runtime->gate); + for (auto it = runtime->streams.begin(); it != runtime->streams.end();) + it = it->second->owner != nullptr && it->second->owner->id == connection_id + ? runtime->streams.erase(it) + : std::next(it); + runtime->connections.erase(connection_id); +} + +#if defined(_WIN32) +// Declared here, defined in the v1 block at the bottom: the pin comparison is +// the one piece of the certificate path that is Windows-only and v1-only. +bool CertificateMatchesPin(Connection* connection, QUIC_CERTIFICATE* certificate); +#endif + +QUIC_STATUS QUIC_API ConnectionCallback(HQUIC handle, void* context, QUIC_CONNECTION_EVENT* event) { + auto* connection = static_cast(context); + Runtime* runtime = connection->runtime; + AppendTrace(connection, "event=" + std::to_string(static_cast(event->Type))); + switch (event->Type) { + case QUIC_CONNECTION_EVENT_CONNECTED: + PublishSimple(runtime, kEventConnectionConnected, connection->listener_id, connection->id, 0, 0, 0); + break; + case QUIC_CONNECTION_EVENT_PEER_STREAM_STARTED: { + auto stream = std::make_unique(); + stream->runtime = runtime; + stream->owner = connection; + stream->handle = event->PEER_STREAM_STARTED.Stream; + stream->inbound = true; + stream->id = NextId(runtime); + Stream* raw = stream.get(); + { + std::lock_guard lock(runtime->gate); + runtime->streams.emplace(raw->id, std::move(stream)); + } + runtime->api->SetCallbackHandler( + event->PEER_STREAM_STARTED.Stream, reinterpret_cast(StreamCallback), raw); + break; + } + case QUIC_CONNECTION_EVENT_PEER_CERTIFICATE_RECEIVED: { + const auto* encoded = reinterpret_cast(event->PEER_CERTIFICATE_RECEIVED.Certificate); + AppendTrace(connection, "certificate-status=" + + Hex(static_cast(event->PEER_CERTIFICATE_RECEIVED.DeferredStatus))); +#if defined(_WIN32) + if (connection->has_pin) { + // The v1 contract: the pin decision is made here, in C, and the host + // is never asked. Only `cultmesh_quic_open` sets `has_pin`. + const bool matches = CertificateMatchesPin( + connection, event->PEER_CERTIFICATE_RECEIVED.Certificate); + if (!matches) + SetError(runtime, + "CultMesh QUIC provider certificate does not match the advertised SHA-256 pin."); + const auto completion = runtime->api->ConnectionCertificateValidationComplete( + handle, + matches ? static_cast(1) : static_cast(0), + matches ? QUIC_TLS_ALERT_CODE_SUCCESS : QUIC_TLS_ALERT_CODE_BAD_CERTIFICATE); + if (QUIC_FAILED(completion)) { + SetError(runtime, "CultMesh QUIC certificate validation completion failed (status=" + + Hex(static_cast(completion)) + ")."); + return completion; + } + return QUIC_STATUS_PENDING; + } +#endif + // v2: the DER goes to the host and the handshake waits. Nothing here + // decides trust. If the host never answers, MsQuic's handshake timeout + // closes the connection and event 4 reports it. + cultmesh_quic_event header{}; + header.type = kEventConnectionCertificateReceived; + header.listener_id = connection->listener_id; + header.connection_id = connection->id; + header.status = static_cast(event->PEER_CERTIFICATE_RECEIVED.DeferredStatus); + const uint8_t* der = (encoded != nullptr) ? encoded->Buffer : nullptr; + const size_t der_length = (encoded != nullptr) ? encoded->Length : 0; + Publish(runtime, header, der, der_length); + return QUIC_STATUS_PENDING; + } + case QUIC_CONNECTION_EVENT_SHUTDOWN_INITIATED_BY_TRANSPORT: { + const std::string reason = "CultMesh QUIC connection was shut down by the transport (status=" + + Hex(static_cast(event->SHUTDOWN_INITIATED_BY_TRANSPORT.Status)) + ", error=" + + Hex(event->SHUTDOWN_INITIATED_BY_TRANSPORT.ErrorCode) + ")."; + cultmesh_quic_event header{}; + header.type = kEventConnectionShutdown; + header.listener_id = connection->listener_id; + header.connection_id = connection->id; + header.code = event->SHUTDOWN_INITIATED_BY_TRANSPORT.ErrorCode; + header.status = static_cast(event->SHUTDOWN_INITIATED_BY_TRANSPORT.Status); + Publish(runtime, header, reinterpret_cast(reason.data()), reason.size()); + break; + } + case QUIC_CONNECTION_EVENT_SHUTDOWN_INITIATED_BY_PEER: { + const std::string reason = "CultMesh QUIC connection was shut down by the peer."; + cultmesh_quic_event header{}; + header.type = kEventConnectionShutdown; + header.listener_id = connection->listener_id; + header.connection_id = connection->id; + header.code = event->SHUTDOWN_INITIATED_BY_PEER.ErrorCode; + Publish(runtime, header, reinterpret_cast(reason.data()), reason.size()); + break; + } + case QUIC_CONNECTION_EVENT_SHUTDOWN_COMPLETE: { + const uint64_t connection_id = connection->id; + if (!event->SHUTDOWN_COMPLETE.AppCloseInProgress && !connection->handle_closed.exchange(true)) + runtime->api->ConnectionClose(handle); + DestroyConnection(runtime, connection_id); + break; + } + default: + break; + } + return QUIC_STATUS_SUCCESS; +} + +QUIC_STATUS QUIC_API ListenerCallback(HQUIC, void* context, QUIC_LISTENER_EVENT* event) { + auto* listener = static_cast(context); + Runtime* runtime = listener->runtime; + switch (event->Type) { + case QUIC_LISTENER_EVENT_NEW_CONNECTION: { + auto connection = std::make_unique(); + connection->runtime = runtime; + connection->handle = event->NEW_CONNECTION.Connection; + connection->inbound = true; + connection->listener_id = listener->id; + connection->id = NextId(runtime); + Connection* raw = connection.get(); + { + std::lock_guard lock(runtime->gate); + runtime->connections.emplace(raw->id, std::move(connection)); + } + runtime->api->SetCallbackHandler( + event->NEW_CONNECTION.Connection, reinterpret_cast(ConnectionCallback), raw); + const auto status = runtime->api->ConnectionSetConfiguration( + event->NEW_CONNECTION.Connection, listener->configuration); + if (QUIC_FAILED(status)) { + SetError(runtime, "CultMesh QUIC inbound connection configuration failed (status=" + + Hex(static_cast(status)) + ")."); + return status; + } + PublishSimple(runtime, kEventListenerNewConnection, listener->id, raw->id, 0, 0, 0); + break; + } + case QUIC_LISTENER_EVENT_STOP_COMPLETE: + PublishSimple(runtime, kEventListenerStopped, listener->id, 0, 0, 0, 0); + break; + default: + break; + } + return QUIC_STATUS_SUCCESS; +} + +void FillSettings(QUIC_SETTINGS& settings) { + settings.IdleTimeoutMs = kIdleTimeoutMs; + settings.IsSet.IdleTimeoutMs = 1; + settings.KeepAliveIntervalMs = kKeepAliveIntervalMs; + settings.IsSet.KeepAliveIntervalMs = 1; + settings.PeerUnidiStreamCount = kPeerUnidiStreamCount; + settings.IsSet.PeerUnidiStreamCount = 1; + settings.HandshakeIdleTimeoutMs = kHandshakeIdleTimeoutMs; + settings.IsSet.HandshakeIdleTimeoutMs = 1; +} + +QUIC_BUFFER AlpnBuffer() { + return QUIC_BUFFER{ + static_cast(sizeof(kAlpn) - 1), + reinterpret_cast(const_cast(kAlpn)) + }; +} + +// Opened once per runtime, on first outbound connection. +QUIC_STATUS EnsureClientConfiguration(Runtime* runtime) { + if (runtime->client_configuration != nullptr) return QUIC_STATUS_SUCCESS; + + QUIC_SETTINGS settings{}; + FillSettings(settings); + QUIC_BUFFER alpn = AlpnBuffer(); + HQUIC configuration = nullptr; + auto status = runtime->api->ConfigurationOpen( + runtime->registration, &alpn, 1, &settings, sizeof(settings), nullptr, &configuration); + if (QUIC_FAILED(status)) return status; + + QUIC_CREDENTIAL_CONFIG credentials{}; + credentials.Type = QUIC_CREDENTIAL_TYPE_NONE; + credentials.Flags = static_cast( + QUIC_CREDENTIAL_FLAG_CLIENT | + QUIC_CREDENTIAL_FLAG_INDICATE_CERTIFICATE_RECEIVED | + QUIC_CREDENTIAL_FLAG_DEFER_CERTIFICATE_VALIDATION | + QUIC_CREDENTIAL_FLAG_USE_PORTABLE_CERTIFICATES); + status = runtime->api->ConfigurationLoadCredential(configuration, &credentials); + if (QUIC_FAILED(status)) { + runtime->api->ConfigurationClose(configuration); + return status; + } + runtime->client_configuration = configuration; + return QUIC_STATUS_SUCCESS; +} + +// `pin` is the v1 shim's and nothing else passes it. It must be attached before +// `ConnectionStart`, not after it returns: the handshake runs on an MsQuic +// worker thread and reaches the certificate event immediately on loopback, so a +// pin applied afterwards loses the race, the connection takes the v2 path, and +// the handshake stalls waiting for an answer from a host that was never told to +// give one. +int32_t OpenConnection(Runtime* runtime, const char* host, uint16_t port, uint64_t* out_connection_id, + Connection** out_connection, const std::array* pin) { + if (runtime == nullptr || host == nullptr || *host == '\0' || port == 0 || out_connection_id == nullptr) + return -1; + *out_connection_id = 0; + + auto status = EnsureClientConfiguration(runtime); + if (QUIC_FAILED(status)) { + SetError(runtime, "CultMesh QUIC client configuration failed (status=" + + Hex(static_cast(status)) + ")."); + return static_cast(status); + } + + auto connection = std::make_unique(); + connection->runtime = runtime; + connection->id = NextId(runtime); + if (pin != nullptr) { + connection->has_pin = true; + connection->pin = *pin; + } + Connection* raw = connection.get(); + + status = runtime->api->ConnectionOpen(runtime->registration, ConnectionCallback, raw, &raw->handle); + if (QUIC_FAILED(status)) { + SetError(runtime, "CultMesh QUIC connection open failed (status=" + + Hex(static_cast(status)) + ")."); + return static_cast(status); + } + { + std::lock_guard lock(runtime->gate); + runtime->connections.emplace(raw->id, std::move(connection)); + } + + status = runtime->api->ConnectionStart( + raw->handle, runtime->client_configuration, QUIC_ADDRESS_FAMILY_UNSPEC, host, port); + if (QUIC_FAILED(status)) { + SetError(runtime, "CultMesh QUIC connection start failed (status=" + + Hex(static_cast(status)) + ")."); + runtime->api->ConnectionClose(raw->handle); + DestroyConnection(runtime, raw->id); + return static_cast(status); + } + + *out_connection_id = raw->id; + if (out_connection != nullptr) *out_connection = raw; + return 0; +} + +} // namespace + +// --------------------------------------------------------------------------- +// C ABI v2: the runtime-neutral bridge. +// --------------------------------------------------------------------------- + +CULTMESH_API int32_t cultmesh_quic_runtime_open(const char* app_name, void** out_runtime) { + if (out_runtime == nullptr) return -1; + *out_runtime = nullptr; + auto runtime = std::make_unique(); + + auto status = MsQuicOpenVersion(kApiVersion, reinterpret_cast(&runtime->api)); + if (QUIC_FAILED(status)) return static_cast(status); + + const QUIC_REGISTRATION_CONFIG registration_config = { + (app_name != nullptr && *app_name != '\0') ? app_name : "GameCult.Mesh.Quic.Native", + QUIC_EXECUTION_PROFILE_TYPE_REAL_TIME + }; + status = runtime->api->RegistrationOpen(®istration_config, &runtime->registration); + if (QUIC_FAILED(status)) { + MsQuicClose(runtime->api); + return static_cast(status); + } + + *out_runtime = runtime.release(); + return 0; +} + +CULTMESH_API void cultmesh_quic_runtime_close(void* handle) { + auto* runtime = static_cast(handle); + if (runtime == nullptr) return; + { + std::lock_guard lock(runtime->gate); + runtime->closing = true; + } + runtime->signal.notify_all(); + + // Bottom-up, and by the app's own hand. `RegistrationClose` blocks until + // every child handle the app opened has been closed *by the app*, and a + // silent shutdown delivers no shutdown events at all, so leaning on the + // callbacks to do the closing deadlocks the caller forever. Connections are + // closed here; MsQuic cascades that to their streams, which arrive at + // `StreamCallback` with `AppCloseInProgress` set. + // + // The handles are copied out from under the lock and closed without it: a + // callback running concurrently takes the same lock, and `ConnectionClose` + // does not return until those callbacks have finished. + std::vector connections; + std::vector listeners; + std::vector configurations; + { + std::lock_guard lock(runtime->gate); + for (auto& entry : runtime->connections) + if (entry.second->handle != nullptr && !entry.second->handle_closed.exchange(true)) + connections.push_back(entry.second->handle); + for (auto& entry : runtime->listeners) { + if (entry.second->handle != nullptr) listeners.push_back(entry.second->handle); + if (entry.second->configuration != nullptr) configurations.push_back(entry.second->configuration); + } + } + for (HQUIC connection : connections) { + runtime->api->ConnectionShutdown(connection, QUIC_CONNECTION_SHUTDOWN_FLAG_SILENT, kConnectionCloseCode); + runtime->api->ConnectionClose(connection); + } + for (HQUIC listener : listeners) runtime->api->ListenerClose(listener); + for (HQUIC configuration : configurations) runtime->api->ConfigurationClose(configuration); + if (runtime->client_configuration != nullptr) { + runtime->api->ConfigurationClose(runtime->client_configuration); + runtime->client_configuration = nullptr; + } + + // No callback can be running past this point, so the tracking maps are safe + // to drop. + if (runtime->registration != nullptr) { + runtime->api->RegistrationClose(runtime->registration); + runtime->registration = nullptr; + } + runtime->streams.clear(); + runtime->connections.clear(); + runtime->listeners.clear(); + if (runtime->api != nullptr) { + MsQuicClose(runtime->api); + runtime->api = nullptr; + } + delete runtime; +} + +CULTMESH_API int32_t cultmesh_quic_listener_open( + void* handle, const char* host, uint16_t port, + const uint8_t* pkcs12, int32_t pkcs12_len, const char* password, + uint64_t* out_listener_id, uint16_t* out_bound_port) { + auto* runtime = static_cast(handle); + if (runtime == nullptr || pkcs12 == nullptr || pkcs12_len <= 0 || out_listener_id == nullptr) + return -1; + *out_listener_id = 0; + if (out_bound_port != nullptr) *out_bound_port = 0; + + auto listener = std::make_unique(); + listener->runtime = runtime; + listener->id = NextId(runtime); + + QUIC_SETTINGS settings{}; + FillSettings(settings); + QUIC_BUFFER alpn = AlpnBuffer(); + auto status = runtime->api->ConfigurationOpen( + runtime->registration, &alpn, 1, &settings, sizeof(settings), nullptr, &listener->configuration); + if (QUIC_FAILED(status)) { + SetError(runtime, "CultMesh QUIC listener configuration failed (status=" + + Hex(static_cast(status)) + ")."); + return static_cast(status); + } + + // PKCS12 is the one credential type Schannel and OpenSSL both take, which + // is why the provider ships a PKCS12 rather than a platform store handle. + QUIC_CERTIFICATE_PKCS12 pkcs12_certificate{}; + pkcs12_certificate.Asn1Blob = pkcs12; + pkcs12_certificate.Asn1BlobLength = static_cast(pkcs12_len); + pkcs12_certificate.PrivateKeyPassword = (password != nullptr && *password != '\0') ? password : nullptr; + + QUIC_CREDENTIAL_CONFIG credentials{}; + credentials.Type = QUIC_CREDENTIAL_TYPE_CERTIFICATE_PKCS12; + credentials.CertificatePkcs12 = &pkcs12_certificate; + credentials.Flags = QUIC_CREDENTIAL_FLAG_NONE; + status = runtime->api->ConfigurationLoadCredential(listener->configuration, &credentials); + if (QUIC_FAILED(status)) { + SetError(runtime, "CultMesh QUIC listener certificate could not be loaded (status=" + + Hex(static_cast(status)) + ")."); + runtime->api->ConfigurationClose(listener->configuration); + return static_cast(status); + } + + Listener* raw = listener.get(); + status = runtime->api->ListenerOpen(runtime->registration, ListenerCallback, raw, &raw->handle); + if (QUIC_FAILED(status)) { + SetError(runtime, "CultMesh QUIC listener open failed (status=" + + Hex(static_cast(status)) + ")."); + runtime->api->ConfigurationClose(listener->configuration); + return static_cast(status); + } + { + std::lock_guard lock(runtime->gate); + runtime->listeners.emplace(raw->id, std::move(listener)); + } + + QUIC_ADDR address{}; + QuicAddrSetFamily(&address, QUIC_ADDRESS_FAMILY_UNSPEC); + QuicAddrSetPort(&address, port); + if (host != nullptr && *host != '\0' && !QuicAddrFromString(host, port, &address)) { + SetError(runtime, "CultMesh QUIC listener host is not an IP address."); + return -2; + } + + QUIC_BUFFER listener_alpn = AlpnBuffer(); + status = runtime->api->ListenerStart(raw->handle, &listener_alpn, 1, &address); + if (QUIC_FAILED(status)) { + SetError(runtime, "CultMesh QUIC listener start failed (status=" + + Hex(static_cast(status)) + ")."); + return static_cast(status); + } + + // Port 0 means "pick one"; the host needs the chosen port to advertise it. + QUIC_ADDR bound{}; + uint32_t bound_size = sizeof(bound); + status = runtime->api->GetParam(raw->handle, QUIC_PARAM_LISTENER_LOCAL_ADDRESS, &bound_size, &bound); + if (QUIC_FAILED(status)) { + SetError(runtime, "CultMesh QUIC listener address could not be read (status=" + + Hex(static_cast(status)) + ")."); + return static_cast(status); + } + if (out_bound_port != nullptr) *out_bound_port = QuicAddrGetPort(&bound); + *out_listener_id = raw->id; + return 0; +} + +CULTMESH_API void cultmesh_quic_listener_close(void* handle, uint64_t listener_id) { + auto* runtime = static_cast(handle); + if (runtime == nullptr) return; + Listener* listener = FindListener(runtime, listener_id); + if (listener == nullptr || listener->stopped) return; + listener->stopped = true; + if (listener->handle != nullptr) runtime->api->ListenerClose(listener->handle); + if (listener->configuration != nullptr) runtime->api->ConfigurationClose(listener->configuration); + std::lock_guard lock(runtime->gate); + runtime->listeners.erase(listener_id); +} + +CULTMESH_API int32_t cultmesh_quic_connection_open( + void* handle, const char* host, uint16_t port, uint64_t* out_connection_id) { + return OpenConnection(static_cast(handle), host, port, out_connection_id, nullptr, nullptr); +} + +CULTMESH_API int32_t cultmesh_quic_connection_certificate_complete( + void* handle, uint64_t connection_id, int32_t accept) { + auto* runtime = static_cast(handle); + if (runtime == nullptr) return -1; + Connection* connection = FindConnection(runtime, connection_id); + if (connection == nullptr) return -1; + const auto status = runtime->api->ConnectionCertificateValidationComplete( + connection->handle, + accept != 0 ? static_cast(1) : static_cast(0), + accept != 0 ? QUIC_TLS_ALERT_CODE_SUCCESS : QUIC_TLS_ALERT_CODE_BAD_CERTIFICATE); + if (QUIC_FAILED(status)) { + SetError(runtime, "CultMesh QUIC certificate validation completion failed (status=" + + Hex(static_cast(status)) + ")."); + return static_cast(status); + } + return 0; +} + +CULTMESH_API void cultmesh_quic_connection_shutdown(void* handle, uint64_t connection_id, uint64_t code) { + auto* runtime = static_cast(handle); + if (runtime == nullptr) return; + Connection* connection = FindConnection(runtime, connection_id); + if (connection == nullptr || connection->closing) return; + connection->closing = true; + if (connection->handle != nullptr) + runtime->api->ConnectionShutdown(connection->handle, QUIC_CONNECTION_SHUTDOWN_FLAG_NONE, code); +} + +CULTMESH_API int32_t cultmesh_quic_stream_open( + void* handle, uint64_t connection_id, uint8_t kind, uint64_t* out_stream_id) { + auto* runtime = static_cast(handle); + if (runtime == nullptr || out_stream_id == nullptr) return -1; + *out_stream_id = 0; + if (kind != kReliableStream && kind != kLatestOnlyStream) return -2; + Connection* connection = FindConnection(runtime, connection_id); + if (connection == nullptr) return -1; + + auto stream = std::make_unique(); + stream->runtime = runtime; + stream->owner = connection; + stream->kind = kind; + stream->has_kind = true; + stream->id = NextId(runtime); + Stream* raw = stream.get(); + + auto status = runtime->api->StreamOpen( + connection->handle, QUIC_STREAM_OPEN_FLAG_UNIDIRECTIONAL, + StreamCallback, raw, &raw->handle); + if (QUIC_FAILED(status)) { + SetError(runtime, "CultMesh QUIC stream open failed (status=" + + Hex(static_cast(status)) + ")."); + return static_cast(status); + } + status = runtime->api->StreamStart(raw->handle, QUIC_STREAM_START_FLAG_IMMEDIATE); + if (QUIC_FAILED(status)) { + SetError(runtime, "CultMesh QUIC stream start failed (status=" + + Hex(static_cast(status)) + ")."); + runtime->api->StreamClose(raw->handle); + return static_cast(status); + } + { + std::lock_guard lock(runtime->gate); + runtime->streams.emplace(raw->id, std::move(stream)); + } + + // The kind byte is the first thing on the stream, which is what the peer's + // reassembly reads before any length prefix. + auto* request = new SendRequest(); + request->bytes.assign(1, kind); + request->buffer.Buffer = request->bytes.data(); + request->buffer.Length = 1; + status = runtime->api->StreamSend(raw->handle, &request->buffer, 1, QUIC_SEND_FLAG_NONE, request); + if (QUIC_FAILED(status)) { + delete request; + SetError(runtime, "CultMesh QUIC stream kind could not be sent (status=" + + Hex(static_cast(status)) + ")."); + return static_cast(status); + } + + *out_stream_id = raw->id; + return 0; +} + +CULTMESH_API int32_t cultmesh_quic_stream_send_frame( + void* handle, uint64_t stream_id, const uint8_t* encoded_frame, int32_t length, int32_t fin) { + auto* runtime = static_cast(handle); + if (runtime == nullptr || encoded_frame == nullptr || length <= 0) return -1; + if (static_cast(length) > kMaximumEncodedFrameBytes) return -2; + Stream* stream = FindStream(runtime, stream_id); + if (stream == nullptr || stream->handle == nullptr) return -1; + + // The bytes are copied because MsQuic reads them after this returns; the + // 4-byte LE length prefix is the QUIC stream framing, and it is added here + // so that framing lives in one place for both directions. + auto* request = new SendRequest(); + request->bytes.resize(sizeof(uint32_t) + static_cast(length)); + WriteUInt32LittleEndian(request->bytes.data(), static_cast(length)); + std::memcpy(request->bytes.data() + sizeof(uint32_t), encoded_frame, static_cast(length)); + request->buffer.Buffer = request->bytes.data(); + request->buffer.Length = static_cast(request->bytes.size()); + + const auto flags = (fin != 0) ? QUIC_SEND_FLAG_FIN : QUIC_SEND_FLAG_NONE; + const auto status = runtime->api->StreamSend(stream->handle, &request->buffer, 1, flags, request); + if (QUIC_FAILED(status)) { + delete request; + SetError(runtime, "CultMesh QUIC frame send failed (status=" + + Hex(static_cast(status)) + ")."); + return static_cast(status); + } + return 0; +} + +CULTMESH_API void cultmesh_quic_stream_shutdown(void* handle, uint64_t stream_id, uint64_t code) { + auto* runtime = static_cast(handle); + if (runtime == nullptr) return; + Stream* stream = FindStream(runtime, stream_id); + if (stream == nullptr || stream->handle == nullptr) return; + runtime->api->StreamShutdown(stream->handle, QUIC_STREAM_SHUTDOWN_FLAG_ABORT, code); +} + +// The one blocking crossing. Returns 0 on timeout, 1 with the event filled and +// its payload copied, 2 when `payload_capacity` is too small (the event stays at +// the head of the queue and `out_required` is set), negative on a bad call. This +// is the v1 two-phase poll convention applied to a queue of typed events. +CULTMESH_API int32_t cultmesh_quic_next_event( + void* handle, int32_t timeout_ms, cultmesh_quic_event* out_event, + uint8_t* payload, int32_t payload_capacity, int32_t* out_required) { + auto* runtime = static_cast(handle); + if (runtime == nullptr || out_event == nullptr || out_required == nullptr || payload_capacity < 0) + return -1; + *out_required = 0; + + std::unique_lock lock(runtime->gate); + if (runtime->events.empty() && timeout_ms > 0) { + runtime->signal.wait_for(lock, std::chrono::milliseconds(timeout_ms), + [runtime] { return !runtime->events.empty() || runtime->closing; }); + } + if (runtime->events.empty()) return 0; + + const QueuedEvent& queued = runtime->events.front(); + const auto required = static_cast(queued.payload.size()); + if (required > payload_capacity) { + *out_required = required; + return 2; + } + *out_event = queued.header; + if (required > 0 && payload != nullptr) + std::memcpy(payload, queued.payload.data(), static_cast(required)); + *out_required = required; + runtime->events.pop_front(); + return 1; +} + +CULTMESH_API int32_t cultmesh_quic_last_error(void* handle, char* destination, int32_t capacity) { + auto* runtime = static_cast(handle); + if (runtime == nullptr || destination == nullptr || capacity <= 0) return -1; + std::lock_guard lock(runtime->gate); + const size_t count = (std::min)(runtime->error.size(), static_cast(capacity - 1)); + std::memcpy(destination, runtime->error.data(), count); + destination[count] = '\0'; + return static_cast(count); +} + +// --------------------------------------------------------------------------- +// C ABI v1: the Unity shim. Windows only, by the same construction as its only +// caller (`CultMeshNativeQuicRealtimeTransport.CanConnect` is Windows-gated). +// +// These five exports are the contract the shipped Unity package imports by +// name. They are preserved byte for byte in signature and behaviour, and they +// decide nothing the v2 path does not: a v1 client is a private runtime with one +// connection. The single exception is the pin, which v1 compares here in C +// because that is what the managed connector was built against. +// --------------------------------------------------------------------------- + +#if defined(_WIN32) + +#include +#include +#include + +namespace { + enum class ClientState : int32_t { Connecting = 0, Connected = 1, @@ -38,50 +973,34 @@ enum class ClientState : int32_t { Closed = 3, }; -struct Client; - -struct StreamContext { - explicit StreamContext(Client* client) : owner(client) {} - Client* owner; - std::vector buffered; - uint8_t kind = 0; - bool has_kind = false; -}; - -struct Client { - const QUIC_API_TABLE* api = nullptr; - HQUIC registration = nullptr; - HQUIC configuration = nullptr; - HQUIC connection = nullptr; - std::array certificate_pin{}; - std::atomic state{ClientState::Connecting}; - std::atomic closing{false}; - std::mutex gate; - std::deque> received; +struct V1Client { + Runtime* runtime = nullptr; + Connection* connection = nullptr; + uint64_t connection_id = 0; + ClientState state = ClientState::Connecting; + std::deque> frames; std::string error; - std::string trace; + bool closing = false; + // The managed connector polls `state` and `poll` from its own loop and may + // read `error` from the caller's thread, so the drain and everything it + // mutates sit behind one lock. Held only around `Pump` and the fields; it is + // always taken before the runtime's, never after. + std::mutex gate; }; -void AppendTrace(Client* client, const std::string& event) { - if (client == nullptr || client->state.load() == ClientState::Connected) return; - std::lock_guard lock(client->gate); - if (!client->trace.empty()) client->trace += ","; - client->trace += event; -} - -std::string TraceSnapshot(Client* client) { - if (client == nullptr) return "none"; - std::lock_guard lock(client->gate); - return client->trace.empty() ? "none" : client->trace; -} - -void SetFailure(Client* client, const std::string& message) { - if (client == nullptr || client->closing.load()) return; - { - std::lock_guard lock(client->gate); - if (client->error.empty()) client->error = message; - } - client->state.store(ClientState::Failed); +std::string LoadedMsQuicPath() { + const auto module = GetModuleHandleW(L"msquic.dll"); + if (module == nullptr) return "unresolved"; + std::array path{}; + const auto length = GetModuleFileNameW(module, path.data(), static_cast(path.size())); + if (length == 0 || length >= path.size()) return "unresolved"; + const auto required = WideCharToMultiByte( + CP_UTF8, 0, path.data(), static_cast(length), nullptr, 0, nullptr, nullptr); + if (required <= 0) return "unresolved"; + std::string utf8(static_cast(required), '\0'); + WideCharToMultiByte( + CP_UTF8, 0, path.data(), static_cast(length), utf8.data(), required, nullptr, nullptr); + return utf8; } bool ParseHexNibble(char value, uint8_t& nibble) { @@ -104,337 +1023,146 @@ bool ParsePin(const char* value, std::array& pin) { return true; } -uint32_t ReadUInt32LittleEndian(const uint8_t* value) { - return static_cast(value[0]) | - (static_cast(value[1]) << 8) | - (static_cast(value[2]) << 16) | - (static_cast(value[3]) << 24); -} +// Drains the runtime's event queue into the v1 client's own shape: frames for +// `poll`, a state for `state`, an error string for `error`. This is where the +// v1 contract is reconstructed from v2 events, and the only place it is. +void Pump(V1Client* client) { + cultmesh_quic_event header{}; + std::vector payload; + for (;;) { + int32_t required = 0; + auto result = cultmesh_quic_next_event( + client->runtime, 0, &header, + payload.empty() ? nullptr : payload.data(), + static_cast(payload.size()), &required); + if (result == 2) { + payload.resize(static_cast(required)); + continue; + } + if (result != 1) break; -void FailStream(StreamContext* stream, const char* message) { - SetFailure(stream->owner, message); - if (stream->owner != nullptr && stream->owner->api != nullptr && stream->owner->connection != nullptr) - stream->owner->api->ConnectionShutdown( - stream->owner->connection, - QUIC_CONNECTION_SHUTDOWN_FLAG_SILENT, - kStreamAbortCode); -} - -bool ConsumeFrames(StreamContext* stream) { - auto& bytes = stream->buffered; - if (!stream->has_kind) { - if (bytes.empty()) return true; - stream->kind = bytes.front(); - bytes.erase(bytes.begin()); - stream->has_kind = true; - if (stream->kind != kReliableStream && stream->kind != kLatestOnlyStream) { - FailStream(stream, "CultMesh QUIC stream kind is invalid."); - return false; + switch (header.type) { + case kEventConnectionConnected: + if (client->state == ClientState::Connecting) client->state = ClientState::Connected; + break; + case kEventStreamFrame: + client->frames.emplace_back(payload.begin(), payload.begin() + header.payload_length); + break; + case kEventConnectionShutdown: + if (client->closing) { + client->state = ClientState::Closed; + } else if (client->state != ClientState::Failed) { + client->state = ClientState::Failed; + if (client->error.empty()) { + char runtime_error[1024]{}; + cultmesh_quic_last_error(client->runtime, runtime_error, sizeof(runtime_error)); + // The pin refusal is the runtime's, and the managed + // connector matches on its wording; anything else is the + // transport's own reason plus where msquic came from. + client->error = runtime_error[0] != '\0' + ? std::string(runtime_error) + : std::string(reinterpret_cast(payload.data()), + static_cast(header.payload_length)); + client->error += " (msquic=" + LoadedMsQuicPath() + ")"; + } + } + break; + default: + break; } } - - while (bytes.size() >= sizeof(uint32_t)) { - const uint32_t length = ReadUInt32LittleEndian(bytes.data()); - if (length == 0 || length > kMaximumEncodedFrameBytes) { - FailStream(stream, "CultMesh QUIC frame length is invalid."); - return false; - } - const size_t framed_length = sizeof(uint32_t) + static_cast(length); - if (bytes.size() < framed_length) return true; - std::vector frame(length); - std::memcpy(frame.data(), bytes.data() + sizeof(uint32_t), length); - { - std::lock_guard lock(stream->owner->gate); - stream->owner->received.emplace_back(std::move(frame)); - } - bytes.erase(bytes.begin(), bytes.begin() + static_cast(framed_length)); - if (stream->kind == kLatestOnlyStream && !bytes.empty()) { - FailStream(stream, "CultMesh latest-only QUIC stream carried multiple frames."); - return false; - } - } - return true; } -QUIC_STATUS QUIC_API StreamCallback(HQUIC stream_handle, void* context, QUIC_STREAM_EVENT* event) { - auto* stream = static_cast(context); - switch (event->Type) { - case QUIC_STREAM_EVENT_RECEIVE: - for (uint32_t index = 0; index < event->RECEIVE.BufferCount; ++index) { - const auto& buffer = event->RECEIVE.Buffers[index]; - stream->buffered.insert(stream->buffered.end(), buffer.Buffer, buffer.Buffer + buffer.Length); - } - ConsumeFrames(stream); - break; - case QUIC_STREAM_EVENT_PEER_SEND_SHUTDOWN: - if (!stream->buffered.empty()) - FailStream(stream, "CultMesh QUIC stream ended with a truncated frame."); - break; - case QUIC_STREAM_EVENT_SHUTDOWN_COMPLETE: - if (!event->SHUTDOWN_COMPLETE.AppCloseInProgress) - stream->owner->api->StreamClose(stream_handle); - delete stream; - break; - default: - break; - } - return QUIC_STATUS_SUCCESS; -} - -bool CertificateMatchesPin(Client* client, QUIC_CERTIFICATE* certificate) { +bool CertificateMatchesPin(Connection* connection, QUIC_CERTIFICATE* certificate) { if (certificate == nullptr) return false; const auto* encoded = reinterpret_cast(certificate); if (encoded->Buffer == nullptr || encoded->Length == 0) return false; BYTE digest[32]{}; DWORD digest_length = sizeof(digest); if (!CryptHashCertificate2( - BCRYPT_SHA256_ALGORITHM, - 0, - nullptr, - encoded->Buffer, - encoded->Length, - digest, - &digest_length) || digest_length != sizeof(digest)) + BCRYPT_SHA256_ALGORITHM, 0, nullptr, + encoded->Buffer, encoded->Length, digest, &digest_length) || + digest_length != sizeof(digest)) return false; - return std::memcmp(digest, client->certificate_pin.data(), sizeof(digest)) == 0; -} - -std::string Hex(uint64_t value) { - std::ostringstream text; - text << "0x" << std::hex << std::uppercase << value; - return text.str(); -} - -std::string LoadedMsQuicPath() { - const auto module = GetModuleHandleW(L"msquic.dll"); - if (module == nullptr) return "unresolved"; - std::array path{}; - const auto length = GetModuleFileNameW(module, path.data(), static_cast(path.size())); - if (length == 0 || length >= path.size()) return "unresolved"; - const auto required = WideCharToMultiByte( - CP_UTF8, 0, path.data(), static_cast(length), nullptr, 0, nullptr, nullptr); - if (required <= 0) return "unresolved"; - std::string utf8(static_cast(required), '\0'); - WideCharToMultiByte( - CP_UTF8, 0, path.data(), static_cast(length), utf8.data(), required, nullptr, nullptr); - return utf8; -} - -QUIC_STATUS QUIC_API ConnectionCallback(HQUIC connection, void* context, QUIC_CONNECTION_EVENT* event) { - auto* client = static_cast(context); - AppendTrace(client, "event=" + std::to_string(static_cast(event->Type))); - switch (event->Type) { - case QUIC_CONNECTION_EVENT_CONNECTED: - client->state.store(ClientState::Connected); - break; - case QUIC_CONNECTION_EVENT_PEER_STREAM_STARTED: { - auto* stream = new (std::nothrow) StreamContext(client); - if (stream == nullptr) return QUIC_STATUS_OUT_OF_MEMORY; - client->api->SetCallbackHandler( - event->PEER_STREAM_STARTED.Stream, - reinterpret_cast(StreamCallback), - stream); - break; - } - case QUIC_CONNECTION_EVENT_PEER_CERTIFICATE_RECEIVED: - { - AppendTrace( - client, - "certificate-status=" + - Hex(static_cast(event->PEER_CERTIFICATE_RECEIVED.DeferredStatus))); - const auto matches = CertificateMatchesPin( - client, - event->PEER_CERTIFICATE_RECEIVED.Certificate); - if (!matches) { - SetFailure(client, "CultMesh QUIC provider certificate does not match the advertised SHA-256 pin."); - } - const auto completion = client->api->ConnectionCertificateValidationComplete( - connection, - matches ? TRUE : FALSE, - matches ? QUIC_TLS_ALERT_CODE_SUCCESS : QUIC_TLS_ALERT_CODE_BAD_CERTIFICATE); - if (QUIC_FAILED(completion)) { - SetFailure( - client, - "CultMesh QUIC certificate validation completion failed (status=" + - Hex(static_cast(completion)) + ")."); - return completion; - } - return QUIC_STATUS_PENDING; - } - case QUIC_CONNECTION_EVENT_SHUTDOWN_INITIATED_BY_TRANSPORT: - if (!client->closing.load()) { - SetFailure( - client, - "CultMesh QUIC connection was shut down by the transport " - "(status=" + Hex(static_cast(event->SHUTDOWN_INITIATED_BY_TRANSPORT.Status)) + - ", error=" + Hex(event->SHUTDOWN_INITIATED_BY_TRANSPORT.ErrorCode) + - ", msquic=" + LoadedMsQuicPath() + - ", events=" + TraceSnapshot(client) + ")."); - } - break; - case QUIC_CONNECTION_EVENT_SHUTDOWN_INITIATED_BY_PEER: - if (!client->closing.load()) - SetFailure(client, "CultMesh QUIC connection was shut down by the provider."); - break; - case QUIC_CONNECTION_EVENT_SHUTDOWN_COMPLETE: - if (client->closing.load()) client->state.store(ClientState::Closed); - break; - default: - break; - } - return QUIC_STATUS_SUCCESS; -} - -void CloseHandles(Client* client) { - if (client->connection != nullptr) { - client->api->ConnectionClose(client->connection); - client->connection = nullptr; - } - if (client->configuration != nullptr) { - client->api->ConfigurationClose(client->configuration); - client->configuration = nullptr; - } - if (client->registration != nullptr) { - client->api->RegistrationClose(client->registration); - client->registration = nullptr; - } - if (client->api != nullptr) { - MsQuicClose(client->api); - client->api = nullptr; - } + return std::memcmp(digest, connection->pin.data(), sizeof(digest)) == 0; } } // namespace CULTMESH_API int32_t cultmesh_quic_open( - const char* host, - uint16_t port, - const char* certificate_sha256, - Client** result) { + const char* host, uint16_t port, const char* certificate_sha256, V1Client** result) { if (host == nullptr || *host == '\0' || port == 0 || result == nullptr) return -1; *result = nullptr; - auto client = std::make_unique(); - if (!ParsePin(certificate_sha256, client->certificate_pin)) return -2; - QUIC_STATUS status = MsQuicOpenVersion( - kApiVersion, - reinterpret_cast(&client->api)); - if (QUIC_FAILED(status)) return status; + std::array pin{}; + if (!ParsePin(certificate_sha256, pin)) return -2; - const QUIC_REGISTRATION_CONFIG registration_config = { - "GameCult.Mesh.Quic.Native", - QUIC_EXECUTION_PROFILE_TYPE_REAL_TIME - }; - status = client->api->RegistrationOpen(®istration_config, &client->registration); - if (QUIC_FAILED(status)) { - CloseHandles(client.get()); - return status; - } - - QUIC_SETTINGS settings{}; - settings.IdleTimeoutMs = 30000; - settings.IsSet.IdleTimeoutMs = TRUE; - settings.KeepAliveIntervalMs = 5000; - settings.IsSet.KeepAliveIntervalMs = TRUE; - settings.PeerUnidiStreamCount = 1024; - settings.IsSet.PeerUnidiStreamCount = TRUE; - const QUIC_BUFFER alpn = { - static_cast(sizeof(kAlpn) - 1), - reinterpret_cast(const_cast(kAlpn)) - }; - status = client->api->ConfigurationOpen( - client->registration, - &alpn, - 1, - &settings, - sizeof(settings), - nullptr, - &client->configuration); - if (QUIC_FAILED(status)) { - CloseHandles(client.get()); - return status; - } - - QUIC_CREDENTIAL_CONFIG credentials{}; - credentials.Type = QUIC_CREDENTIAL_TYPE_NONE; - credentials.Flags = static_cast( - QUIC_CREDENTIAL_FLAG_CLIENT | - QUIC_CREDENTIAL_FLAG_INDICATE_CERTIFICATE_RECEIVED | - QUIC_CREDENTIAL_FLAG_DEFER_CERTIFICATE_VALIDATION | - QUIC_CREDENTIAL_FLAG_USE_PORTABLE_CERTIFICATES); - status = client->api->ConfigurationLoadCredential(client->configuration, &credentials); - if (QUIC_FAILED(status)) { - CloseHandles(client.get()); - return status; - } - - status = client->api->ConnectionOpen( - client->registration, - ConnectionCallback, - client.get(), - &client->connection); - if (QUIC_FAILED(status)) { - CloseHandles(client.get()); - return status; - } - status = client->api->ConnectionStart( - client->connection, - client->configuration, - QUIC_ADDRESS_FAMILY_UNSPEC, - host, - port); - if (QUIC_FAILED(status)) { - CloseHandles(client.get()); + auto client = std::make_unique(); + void* runtime_handle = nullptr; + const auto opened = cultmesh_quic_runtime_open("GameCult.Mesh.Quic.Native", &runtime_handle); + if (opened != 0) return opened; + client->runtime = static_cast(runtime_handle); + + // The pin goes in before the connection starts; see OpenConnection. + Connection* connection = nullptr; + const auto status = OpenConnection(client->runtime, host, port, &client->connection_id, &connection, &pin); + if (status != 0) { + cultmesh_quic_runtime_close(client->runtime); return status; } + client->connection = connection; *result = client.release(); return 0; } -CULTMESH_API int32_t cultmesh_quic_state(Client* client) { +CULTMESH_API int32_t cultmesh_quic_state(V1Client* client) { if (client == nullptr) return static_cast(ClientState::Failed); - return static_cast(client->state.load()); + std::lock_guard lock(client->gate); + Pump(client); + return static_cast(client->state); } CULTMESH_API int32_t cultmesh_quic_poll( - Client* client, - uint8_t* destination, - int32_t destination_length, - int32_t* required_length) { + V1Client* client, uint8_t* destination, int32_t destination_length, int32_t* required_length) { if (client == nullptr || required_length == nullptr || destination_length < 0) return -1; std::lock_guard lock(client->gate); - if (client->received.empty()) { + Pump(client); + if (client->frames.empty()) { *required_length = 0; - return client->state.load() == ClientState::Failed ? -2 : 0; + return client->state == ClientState::Failed ? -2 : 0; } - const auto& frame = client->received.front(); + const auto& frame = client->frames.front(); if (frame.size() > static_cast(INT32_MAX)) return -3; *required_length = static_cast(frame.size()); if (destination == nullptr || destination_length < *required_length) return 2; std::memcpy(destination, frame.data(), frame.size()); - client->received.pop_front(); + client->frames.pop_front(); return 1; } -CULTMESH_API int32_t cultmesh_quic_error( - Client* client, - char* destination, - int32_t destination_length) { +CULTMESH_API int32_t cultmesh_quic_error(V1Client* client, char* destination, int32_t destination_length) { if (client == nullptr || destination == nullptr || destination_length <= 0) return -1; std::lock_guard lock(client->gate); + Pump(client); const size_t count = (std::min)(client->error.size(), static_cast(destination_length - 1)); std::memcpy(destination, client->error.data(), count); destination[count] = '\0'; return static_cast(count); } -CULTMESH_API void cultmesh_quic_close(Client* client) { +CULTMESH_API void cultmesh_quic_close(V1Client* client) { if (client == nullptr) return; - client->closing.store(true); - if (client->connection != nullptr && client->api != nullptr) - client->api->ConnectionShutdown(client->connection, QUIC_CONNECTION_SHUTDOWN_FLAG_SILENT, kConnectionCloseCode); - CloseHandles(client); - client->state.store(ClientState::Closed); + { + std::lock_guard lock(client->gate); + client->closing = true; + } + // `runtime_close` already shuts the connection down silently with the same + // CULT close code and then closes the handle, which is what v1 did before + // it delegated. Shutting it down here as well would only race that. + cultmesh_quic_runtime_close(client->runtime); + client->state = ClientState::Closed; delete client; } + +#endif // _WIN32 From 23dc0939e0e4a528d475d20c6af8b9cd245edb8f Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 21:04:14 +0200 Subject: [PATCH 0057/1002] Give the bridge a Linux build the deploy host's own distribution can produce MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no Linux MsQuic binary in any NuGet package, and the v2.5.9 GitHub release carries only test bundles, so the Windows script's approach does not transfer. What does exist is Microsoft's Debian 13 pool, which is the same distribution Yggdrasil runs, and the msquic source tree at the matching tag for the POSIX headers the NuGet omits. `scripts/build-quic-native.sh` fetches the pinned `libmsquic_2.5.9_amd64.deb` and the three headers `msquic.h`, `msquic_posix.h` and `quic_sal_stub.h`, and verifies all four by SHA-256 the same way `build-quic-native.ps1:14` verifies the NuGet. A digest that stops matching is a changed dependency, not a warning. Two details the deb forced. It carries three library files and no licence text, so the MIT licence is copied from the one this repo already committed for the Windows plugin — the same text for both platforms. And it ships only `libmsquic.so.2.5.9`, with no `libmsquic.so` for `-lmsquic` to resolve against, so the script makes that link in the extracted tree rather than in the image. The Linux CMake branch links `-fvisibility=hidden`, so only the twelve v2 exports leave the `.so` and the Windows-only v1 five are absent by construction rather than by discipline, and sets `RPATH $ORIGIN` so the `libmsquic.so.2` shipped beside the bridge resolves without being installed system-wide. `build-quic-native.ps1`'s default output directory becomes `artifacts/quic-native/win32-x64` so the two platforms' outputs sit beside each other instead of on top of each other. Both existing callers — `build-unity-package.ps1:80-82` and the Native.Tests csproj `:20-22` — pass an explicit `-OutputDirectory`, so neither is affected. Built and smoked in the workstation's Docker `debian:13` engine pinned by digest: g++ 14.2.0, glibc 2.41, `libgamecult_mesh_quic_native.so` 85,456 bytes with `NEEDED libmsquic.so.2` and `RUNPATH $ORIGIN`, and the same 15-check v2 FFI smoke that runs on Windows passes under Node 24 on that image. That is a Linux build on a Linux host and nothing more: Q6 ruled the release artifact comes from the Actions job, and this one is the development loop. A Linux host still needs MsQuic's own runtime dependencies present — libssl3t64, libnuma1, libxdp1, libnl-route-3-200 — which is now written down, because the first smoke run failed on a missing libxdp.so.1 and the reason was not obvious from the error. Co-Authored-By: Claude Fable 5.1 --- native/GameCult.Mesh.Quic.Native/README.md | 94 ++++++++++++++++-- scripts/build-quic-native.ps1 | 5 +- scripts/build-quic-native.sh | 109 +++++++++++++++++++++ 3 files changed, 200 insertions(+), 8 deletions(-) create mode 100755 scripts/build-quic-native.sh diff --git a/native/GameCult.Mesh.Quic.Native/README.md b/native/GameCult.Mesh.Quic.Native/README.md index 875ebb3b..b2a2ba23 100644 --- a/native/GameCult.Mesh.Quic.Native/README.md +++ b/native/GameCult.Mesh.Quic.Native/README.md @@ -1,10 +1,90 @@ # GameCult.Mesh.Quic.Native -This Windows desktop bridge keeps MsQuic's callback-heavy C API below the -managed runtime boundary. It accepts a discovery-authorized SHA-256 certificate -pin, negotiates `cultmesh-state-v1`, and emits complete CultMesh realtime frame -payloads. It owns transport only; frame meaning remains in `GameCult.Mesh`. +One MsQuic body for every CultMesh host that is not .NET: two roles (provider +and consumer), two platforms (Windows x64 and Linux x64), and no callbacks +across the host boundary. -The build consumes Microsoft's pinned -`Microsoft.Native.Quic.MsQuic.Schannel` package. It does not contain -Aetheria-specific code. +The bridge owns MsQuic registration, configuration, listener, connection and +stream handles, TLS credential loading, the `cultmesh-state-v1` ALPN, the +1-byte-kind plus 4-byte-LE-length QUIC stream framing, and one event queue per +runtime. It owns transport and nothing else: it never decodes a CultMesh frame, +never decides delivery semantics, never coalesces, never reconnects, and in the +v2 path never decides whether to trust a certificate. Frame meaning stays in +`GameCult.Mesh` and in the TypeScript codec; trust stays with the host. + +## No host callbacks + +Every crossing is the host calling in, including the one blocking wait. MsQuic's +worker threads only ever push onto the queue and wake that wait, so no host +runtime is called from a thread it does not own. That is what lets one binary +serve a Node process through FFI and a Unity player through P/Invoke without +either one's threading rules leaking into the other. + +It is also why nothing here includes a Node header, a Unity header, or a +JavaScript engine: the bridge does not know what is on the other side. + +## Two ABIs + +**v2** is the runtime-neutral queue API, and the one new hosts should use: + + cultmesh_quic_runtime_open / runtime_close + cultmesh_quic_listener_open / listener_close + cultmesh_quic_connection_open / connection_certificate_complete / connection_shutdown + cultmesh_quic_stream_open / stream_send_frame / stream_shutdown + cultmesh_quic_next_event + cultmesh_quic_last_error + +`cultmesh_quic_event` is a fixed 64-byte struct described by layout rather than +by a shared header, so a host declares it in its own FFI. Its `type` is one of: +1 `listener_new_connection`, 2 `connection_connected`, 3 +`connection_certificate_received` (payload: the DER certificate), 4 +`connection_shutdown` (payload: a UTF-8 reason), 5 `stream_started` +(`stream_kind` taken from the stream's first byte), 6 `stream_frame` (payload: +one whole encoded frame, length prefix stripped), 7 `stream_send_complete`, 8 +`stream_shutdown`, 9 `listener_stopped`. + +`cultmesh_quic_next_event` returns 0 on timeout, 1 with the event filled and its +payload copied, 2 when the payload buffer is too small — the event stays at the +head of the queue and `out_required` is set, so the host can allocate and ask +again — and negative on a bad call. + +A client connection defers certificate validation: the bridge indicates the +certificate, emits event 3 carrying the DER, and answers MsQuic only when the +host calls `cultmesh_quic_connection_certificate_complete`. If the host never +answers, MsQuic's 10-second handshake timeout closes the connection and event 4 +reports it. Providers load their certificate as PKCS12; the advertised +`cert-sha256` pin is computed by the host from that same PKCS12, not here. + +**v1** is the five exports the shipped Unity package imports by name +(`cultmesh_quic_open`, `_state`, `_poll`, `_error`, `_close`). They are Windows +only, matching `CultMeshNativeQuicRealtimeTransport.CanConnect`, and are +implemented on top of a private v2 runtime holding one connection. They decide +nothing the v2 path does not, with one exception: a v1 connection carries a +SHA-256 pin that is compared here, in C, because that is the contract the +managed connector was built against. A v2 connection never carries one. + +## Building + +Windows x64, from the repo root: + + powershell -File scripts/build-quic-native.ps1 + +MsQuic comes from a pinned NuGet package verified by SHA-256, and the build uses +MSVC with `/Brepro` so a rebuild reproduces the committed Unity plugin DLL. + +Linux x64, on a Debian 13 host: + + scripts/build-quic-native.sh + +MsQuic comes from Microsoft's Debian 13 pool as a pinned `.deb`, and the POSIX +headers from the msquic source tree at the matching tag; all four downloads are +verified by SHA-256. The bridge is linked with `-fvisibility=hidden` so only the +v2 exports leave the `.so`, and with `RPATH $ORIGIN` so the `libmsquic.so.2` +shipped beside it resolves without being installed system-wide. + +A Linux host still needs MsQuic's own runtime dependencies present: +`libssl3t64`, `libnuma1`, `libxdp1`, `libnl-route-3-200`. + +Where an artifact was built is part of what it is. The Linux binary is linked +against Debian 13's glibc, so a build from anywhere else is a different artifact +whatever the file name says. diff --git a/scripts/build-quic-native.ps1 b/scripts/build-quic-native.ps1 index 68496180..f1b35787 100644 --- a/scripts/build-quic-native.ps1 +++ b/scripts/build-quic-native.ps1 @@ -1,7 +1,10 @@ param( [string] $Configuration = "Release", [string] $Architecture = "x64", - [string] $OutputDirectory = "artifacts\quic-native" + # Per-platform, so the Linux script's output sits beside this one's rather + # than on top of it. build-unity-package.ps1 and the Native.Tests csproj both + # pass an explicit -OutputDirectory, so neither is affected by this moving. + [string] $OutputDirectory = "artifacts\quic-native\win32-x64" ) $ErrorActionPreference = "Stop" diff --git a/scripts/build-quic-native.sh b/scripts/build-quic-native.sh new file mode 100755 index 00000000..1864caf3 --- /dev/null +++ b/scripts/build-quic-native.sh @@ -0,0 +1,109 @@ +#!/usr/bin/env bash +# Builds the CultMesh native QUIC bridge for Linux x64. +# +# The Windows counterpart (build-quic-native.ps1) takes MsQuic from a pinned +# NuGet package. There is no Linux binary in any MsQuic NuGet and the GitHub +# releases for v2.5.9 carry only test bundles, so the runtime here comes from +# Microsoft's Debian 13 pool and the headers come from the msquic source tree at +# the matching tag. Both are pinned by SHA-256 the same way the NuGet is: a +# digest that stops matching is a changed dependency, not a warning. +# +# This must run on a Debian 13 host (the container in .github/workflows, or the +# workstation's Docker engine for the development loop). The artifact is linked +# against that distribution's glibc, so where it was built is part of what it is. +# +# scripts/build-quic-native.sh [output-directory] +# +# Default output: artifacts/quic-native/linux-x64, which is git-ignored build +# output and never delivery. + +set -euo pipefail + +repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +version="2.5.9" +output_directory="${1:-${repo_root}/artifacts/quic-native/linux-x64}" +case "${output_directory}" in + /*) ;; + *) output_directory="${repo_root}/${output_directory}" ;; +esac + +cache_root="${repo_root}/artifacts/dependencies/msquic-linux-${version}" +deb_path="${cache_root}/libmsquic_${version}_amd64.deb" +extract_root="${cache_root}/package" +include_root="${cache_root}/include" +build_root="${repo_root}/artifacts/quic-native-build/linux-x64/Release" + +deb_url="https://packages.microsoft.com/debian/13/prod/pool/main/libm/libmsquic/libmsquic_${version}_amd64.deb" +deb_sha256="1baa61ade0b7b4a99f6dcb6b00d9aedb12b5566d00918a325be7425e878e51ba" +header_base="https://raw.githubusercontent.com/microsoft/msquic/v${version}/src/inc" + +# The three headers the POSIX build needs. msquic.h includes msquic_posix.h, +# which includes quic_sal_stub.h; the NuGet ships only the Windows trio. +header_names=("msquic.h" "msquic_posix.h" "quic_sal_stub.h") +header_sha256s=( + "c9abfdd02c45910649dd335d6bd82718e4ddd2fdb35fe550567c78f032551e0c" + "b285fa66b9c9bdc886c30ef92910da472692b25f5c6192416fb40f08f64e22ec" + "9b13328d9aec8807a754b2bc391b31b5d09b1c5f6cec064012051683ed169055" +) + +verify_sha256() { + local path="$1" expected="$2" + local actual + actual="$(sha256sum "${path}" | cut -d' ' -f1)" + if [[ "${actual}" != "${expected}" ]]; then + echo "Digest mismatch for ${path}" >&2 + echo " expected ${expected}" >&2 + echo " actual ${actual}" >&2 + exit 1 + fi +} + +mkdir -p "${cache_root}" "${include_root}" + +if [[ ! -f "${deb_path}" ]]; then + echo "Fetching ${deb_url}" + curl -fsSL -o "${deb_path}" "${deb_url}" +fi +verify_sha256 "${deb_path}" "${deb_sha256}" + +if [[ ! -f "${extract_root}/usr/lib/x86_64-linux-gnu/libmsquic.so.${version}" ]]; then + rm -rf "${extract_root}" + mkdir -p "${extract_root}" + dpkg-deb -x "${deb_path}" "${extract_root}" +fi + +for index in "${!header_names[@]}"; do + header="${header_names[${index}]}" + target="${include_root}/${header}" + if [[ ! -f "${target}" ]]; then + echo "Fetching ${header_base}/${header}" + curl -fsSL -o "${target}" "${header_base}/${header}" + fi + verify_sha256 "${target}" "${header_sha256s[${index}]}" +done + +library_directory="${extract_root}/usr/lib/x86_64-linux-gnu" +# CMake links `-lmsquic`, which wants a plain `libmsquic.so` to resolve against; +# the deb ships only the versioned file and its SONAME symlink. +ln -sf "libmsquic.so.${version}" "${library_directory}/libmsquic.so" + +cmake -S "${repo_root}/native/GameCult.Mesh.Quic.Native" -B "${build_root}" -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DMSQUIC_INCLUDE_DIR="${include_root}" \ + -DMSQUIC_LIB_DIR="${library_directory}" +cmake --build "${build_root}" + +mkdir -p "${output_directory}" +cp "${build_root}/bin/libgamecult_mesh_quic_native.so" "${output_directory}/" +# The real file under the SONAME the bridge records, not the symlink: what ships +# beside the bridge has to be a file, because the package directory is copied. +cp "${library_directory}/libmsquic.so.${version}" "${output_directory}/libmsquic.so.2" +# The deb carries three library files and no licence text, so the MIT licence +# comes from the copy this repo already committed for the Windows plugin. It is +# the same text for both platforms. +cp "${repo_root}/unity/org.gamecult.cultlib/Third Party Notices/MSQUIC-LICENSE.txt" \ + "${output_directory}/MSQUIC-LICENSE.txt" + +echo "CultMesh native QUIC runtime: ${output_directory}" +ls -l "${output_directory}" +sha256sum "${output_directory}"/* | sed "s|${output_directory}/||" From aa22b6141a2db944099231a1b7a0f0c46b9bc207 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 21:07:55 +0200 Subject: [PATCH 0058/1002] Record the Cut 2 fixes and Cut 3's landing, and raise Q9 The bridge is a runtime-neutral two-role event queue, built and smoked on both platforms with the Linux artifact named as development-loop only. Two hangs the old shape never exercised are pinned. One fork stops the Windows provider: the pinned Schannel flavour does not implement the PKCS12 credential the spec assumed was one type everywhere, while the same bridge passes beside the OpenSSL flavour. Recommended: pin OpenSSL on Windows and pay the tree size. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 69 +++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 6 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index f8fa0d0c..4d291849 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -43,9 +43,9 @@ have been broken since `8cb3b72`** (the scoped rename; Hands first attributed it to `8dd5a45`, which only bumped a version, and Soul corrected it) because `scripts/run-typescript-workspaces.mjs:9` names the old unscoped `cultcache-ts`; one-word fix, lands in Cut 2's fix batch. -**The runner is still named `mutate-cultmesh-authority.mjs`** while -carrying a codec target; it is renamed `scripts/mutate-cultmesh.mjs` in -the same batch and this map's references follow. +**The runner is `scripts/mutate-cultmesh.mjs`** since `65f2b66`'s batch +(renamed from `mutate-cultmesh-authority.mjs` once it carried a codec +target); every reference below that names the old path is history. **Soul's pass on Cut 2** (Fable; probes `probe-cs/`, `parity.mjs`, `symmetric.mjs` and others in the session scratchpad) held byte parity in @@ -73,9 +73,66 @@ own decoder refuses (a cast on the enum), where TypeScript refuses at encode, the stricter side; an overflow near `int.MaxValue` is reachable from hostile bytes and refused on both sides with different words; the runner's sentinel detects only the last mutant by design, and the sidecar -repair names the mutation a dead run was inside. **Cut 3 may start in -parallel**, provided the first two land before the bridge hands the codec -a `Buffer`; both are in the same Hands pass ahead of it. +repair names the mutation a dead run was inside. + +**The Cut 2 fix batch landed** (Opus) at `65f2b66` (the aggregate scripts +reach every workspace again; breakage confirmed at `8cb3b72`), `9a4c939` +(the payload copy is `new Uint8Array(bytes.subarray(…))`, because Soul's +prescribed `Uint8Array.prototype.slice.call` returns a `Buffer` from a +`Buffer` through `@@species` and fails Soul's own assertion; three crafted +negative-length frames refused; the false equivalence note gone), +`6ed0ff7` (both halves of the frame parity in CI on both OSes) and +`7a0749b` (the eleven stricter spellings named for what they are: three +backslash, two missing-authority, four host repairs, two `URL` throws; the +same slip in `isProtectedEndpoint`'s own comment fixed). 75 of 75 +mutations killed across three targets. Gap, not a workaround: `npm run +test:ts` still cannot go green on the workstation because one +`cultcache-ts` test spawns `python`, the Store alias stub here; `py -3` +has msgpack; pre-existing since `8cb3b72` and outside every cut. + +**Cut 3 landed** (Opus) at `6a091ef` (the bridge: 440 → 1,168 lines of +C++, a two-role event-queue C ABI v2 with twelve exports, the five v1 +exports kept as a Windows-only Unity shim) and `23dc093` (CMake for both +platforms, `scripts/build-quic-native.sh`, README). Host and target: +win32-x64 built and smoked on the workstation (MSVC 14.44, CMake 4.3.2); +linux-x64 built and smoked in the workstation's Docker `debian:13`, which +is the development loop and **not release-grade**; its release build is +Cut 6's Actions job. Fifteen-check FFI smoke 15 of 15 on both; the v1 gate +3 passed, 1 skipped by design; ten native mutations killed under two green +controls; exports 17 on Windows and exactly 12 on Linux with hidden +visibility; the deb digest and header sizes match the probe ledger; +manifests with SHA-256s beside every binary. Two bugs the old shape never +exercised, found by hanging tests and now mutation-pinned: the v1 +certificate pin must be attached before `ConnectionStart` (the handshake +reaches the certificate event on a worker thread at once on loopback), and +teardown must close connection handles itself because `RegistrationClose` +blocks until every child is closed. Spec discrepancies kept: `ntdll` on the +Windows link list; the deb carries no licence text, so the script copies +the committed MIT text; the deb ships no unversioned `.so` symlink, so the +script creates one; four Linux runtime libraries are load-bearing and now +in the README. Soul in flight. + +**Q9, the one fork Cut 3 hit, undecided until the operator rules.** The +pinned Windows MsQuic is the Schannel flavour, and Schannel does not +implement `QUIC_CREDENTIAL_TYPE_CERTIFICATE_PKCS12`: `ConfigurationLoadCredential` +returns `QUIC_STATUS_NOT_SUPPORTED`, so the provider role cannot open a +listener on Windows under it. The identical bridge DLL passes the full +smoke beside the OpenSSL 2.5.9 `msquic.dll` (SHA-256 `FEE9A664…`, +4,181,856 bytes). Linux is unaffected: Microsoft ships only the OpenSSL +build for Debian. +- **A. Pin OpenSSL on Windows.** One credential type on both platforms, + provider role works, ABI unchanged. Costs: the package URL and digest in + `build-quic-native.ps1`; the committed Windows `msquic.dll` grows from + 537 KB to 4.18 MB, so Q8's tree price becomes about 11.6 MB; the Unity + plugin's `msquic.dll` diverges until the operator's unscheduled rebuild. + The v1 client path works under either flavour. +- **B. Keep Schannel and convert PKCS12 to a certificate context via + `PFXImportCertStore`.** Keeps the pin and the Unity DLL; puts about + forty lines of Windows crypto in the shared provider path, breaking + "runtime-neutral" and the cut's own negative grep. +- **C. Providers Linux-only.** Cheapest; kills the Windows FFI smoke the + cut requires and the Windows provider lanes Cuts 4 and 5 need. +**Recommended: A.** **Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative greps, all twelve mutations rerun and killed, the control catching a From 27446e7761a917d9eec63b8148146df536322b68 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 21:29:57 +0200 Subject: [PATCH 0059/1002] Rule Q9: pin the OpenSSL MsQuic on Windows One credential type on both platforms, the provider role works, the ABI is unchanged. The tree pays four megabytes more and the Unity plugin's copy diverges until its rebuild. The map's claim that PKCS12 was one type for both providers is withdrawn. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 4d291849..272a50ce 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -132,7 +132,14 @@ build for Debian. "runtime-neutral" and the cut's own negative grep. - **C. Providers Linux-only.** Cheapest; kills the Windows FFI smoke the cut requires and the Windows provider lanes Cuts 4 and 5 need. -**Recommended: A.** +**Recommended: A. Ruled A, 2026-09-16** ("A"). The Windows pin moves to +`Microsoft.Native.Quic.MsQuic.OpenSSL` 2.5.9 in `build-quic-native.ps1` +with its digest; Q8's committed tree price is restated at about 11.6 MB; +the Unity plugin's `msquic.dll` stays Schannel until the operator's +rebuild, recorded in section 15, and the v1 client path is verified under +both flavours. The spec's "one credential type for Schannel and OpenSSL" +sentence in section 8 is withdrawn: the header declares the type and only +the OpenSSL provider implements it. **Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative greps, all twelve mutations rerun and killed, the control catching a From 7badce1e4e1d263fd114b96aaae6dcb2c0fa8d19 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 21:34:24 +0200 Subject: [PATCH 0060/1002] Record Soul's Cut 3 pass The bridge's lifetimes are wrong: a lookup hands the host a pointer the worker can free before the next call. Release crashes on both platforms under an ordinary stream teardown. Three ABI gaps ride with it, and the return-code contract inverts between Windows and POSIX. One digest in this map was the zip's, not the DLL's. All in a fix batch before Cut 4. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 42 +++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 272a50ce..5832bd94 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -139,7 +139,47 @@ the Unity plugin's `msquic.dll` stays Schannel until the operator's rebuild, recorded in section 15, and the v1 client path is verified under both flavours. The spec's "one credential type for Schannel and OpenSSL" sentence in section 8 is withdrawn: the header declares the type and only -the OpenSSL provider implements it. +the OpenSSL provider implements it. *(Digest correction, Soul: `FEE9A664…` +is the NuGet zip, 19,179,817 bytes; the DLL is `c17c6581…`, 4,181,856 +bytes. Hands' report and this map's first record had the zip's digest on +the DLL.)* + +**Soul's pass on Cut 3** (Fable; `soul3-*` in the session scratchpad, +including a C consumer of the ABI that is not koffi and an ASan build of +the bridge) held the Cut 2 fixes entire, the export counts, the greps, the +clean-container Linux rebuild byte-identical to the manifest, the four +load-bearing Linux runtime libraries, the stress at 16,384 frames with +zero lost or reordered on both targets, both hang mutations dying by +timeout, and both of Q9's load-bearing claims (Schannel refuses the PKCS12 +credential with not-supported; the identical bridge passes 15 of 15 beside +the OpenSSL DLL; the v1 gate passes beside either). **Cut 3 does not +close.** Found, in a fix batch (Opus): + +- **A use-after-free between the host thread and MsQuic's worker** (high): + the id lookups drop the lock and return a raw pointer, the worker frees + the object on shutdown-complete, and the host's next send dereferences + it. One in three release runs crashes on each target under an ordinary + peer-driven stream teardown; three of three under ASan. The fix is an + object kept alive across the call, not a guard. +- **Event 7 is not one per frame send**: the kind-byte send completes as + its own event with nothing to tell it apart, six events for five frames. +- **The initiator of a shutdown never learns its connection is gone**: + MsQuic gives it only shutdown-complete, which the bridge swallows. +- **Return codes invert by platform**: `QUIC_STATUS` is a negative HRESULT + on Windows and a positive errno on POSIX, so a Linux host checking for a + negative code misses every failure; the README promised negative. +- **`runtime_close` wakes a blocked poller into freed memory**; the wake + makes the pattern look supported. Close must quiesce. +- **No host-facing header**: the struct layout and the twelve signatures + live in the `.cpp` and the spec; Soul wrote its C consumer from the spec. +- Smaller: an unbounded per-connection trace string from the v1 + diagnostics; a listener config failure leaving a dead handle in the map; + a stream emplaced after start; a partial listener open leaving an entry; + a null-payload poll consuming the event; the DLL importing the VC + runtime with the README silent. + +The Q9 pin change and the manifest's stale commit line ride in the same +batch. **Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative greps, all twelve mutations rerun and killed, the control catching a From 9a01321a8a3f70c4b17df43801f9af83d8d0a584 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 21:43:01 +0200 Subject: [PATCH 0061/1002] Give the QUIC bridge a host-facing header Soul wrote a C consumer of this ABI from the spec text, because there was nothing to include. The struct layout, the exports and the conventions lived in the .cpp and in prose, which is three places for one contract and no way to notice when they part. include/cultmesh_quic_native.h is now the contract: the 64-byte event with every field offset asserted, the exports with their signatures, the id and return-code conventions, the object lifetime rules, and the threading rules. The .cpp includes it and keeps none of its own copy. The README points at it rather than restating it. The lifetime and return-code sections describe where the bridge is going, not where it is; the two commits after this one make them true. Co-Authored-By: Claude Opus 5 (1M context) --- .../GameCult.Mesh.Quic.Native/CMakeLists.txt | 3 + native/GameCult.Mesh.Quic.Native/README.md | 38 +-- .../cultmesh_quic_native.cpp | 54 ++-- .../include/cultmesh_quic_native.h | 302 ++++++++++++++++++ 4 files changed, 344 insertions(+), 53 deletions(-) create mode 100644 native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h diff --git a/native/GameCult.Mesh.Quic.Native/CMakeLists.txt b/native/GameCult.Mesh.Quic.Native/CMakeLists.txt index da92ffb1..f08b2f4a 100644 --- a/native/GameCult.Mesh.Quic.Native/CMakeLists.txt +++ b/native/GameCult.Mesh.Quic.Native/CMakeLists.txt @@ -10,6 +10,9 @@ endif() add_library(gamecult_mesh_quic_native SHARED cultmesh_quic_native.cpp) target_compile_features(gamecult_mesh_quic_native PRIVATE cxx_std_20) +# include/cultmesh_quic_native.h is the host-facing contract, not an internal +# detail: the bridge includes it, and so does any consumer that can. +target_include_directories(gamecult_mesh_quic_native PUBLIC include) if(WIN32) if(NOT DEFINED MSQUIC_ROOT) diff --git a/native/GameCult.Mesh.Quic.Native/README.md b/native/GameCult.Mesh.Quic.Native/README.md index b2a2ba23..4f6fa498 100644 --- a/native/GameCult.Mesh.Quic.Native/README.md +++ b/native/GameCult.Mesh.Quic.Native/README.md @@ -25,28 +25,28 @@ JavaScript engine: the bridge does not know what is on the other side. ## Two ABIs -**v2** is the runtime-neutral queue API, and the one new hosts should use: +**v2** is the runtime-neutral queue API, and the one new hosts should use. It is +stated once, in [`include/cultmesh_quic_native.h`](include/cultmesh_quic_native.h): +the 64-byte event struct with its field order and asserted offsets, the thirteen +exports with their signatures, the id and return-code conventions, the object +lifetime rules and the threading rules. That file is the contract. This README +does not restate it, and where the two ever disagree the header is right. - cultmesh_quic_runtime_open / runtime_close - cultmesh_quic_listener_open / listener_close - cultmesh_quic_connection_open / connection_certificate_complete / connection_shutdown - cultmesh_quic_stream_open / stream_send_frame / stream_shutdown - cultmesh_quic_next_event - cultmesh_quic_last_error +A host that can include it should. A host that cannot — koffi, Unity's +P/Invoke — declares the same thing in its own FFI and is checked against the +header by a test rather than by eye. -`cultmesh_quic_event` is a fixed 64-byte struct described by layout rather than -by a shared header, so a host declares it in its own FFI. Its `type` is one of: -1 `listener_new_connection`, 2 `connection_connected`, 3 -`connection_certificate_received` (payload: the DER certificate), 4 -`connection_shutdown` (payload: a UTF-8 reason), 5 `stream_started` -(`stream_kind` taken from the stream's first byte), 6 `stream_frame` (payload: -one whole encoded frame, length prefix stripped), 7 `stream_send_complete`, 8 -`stream_shutdown`, 9 `listener_stopped`. +Two things worth reading before writing a host, because they are easy to get +wrong from the outside: -`cultmesh_quic_next_event` returns 0 on timeout, 1 with the event filled and its -payload copied, 2 when the payload buffer is too small — the event stays at the -head of the queue and `out_required` is set, so the host can allocate and ask -again — and negative on a bad call. +- **Return codes are negative on a bad call, on every platform.** `-1` is a bad + call, `-2` a rejected argument, `<= -1000` a MsQuic refusal. `QUIC_STATUS` + itself is not portable — a negative HRESULT on Windows, a positive errno on + POSIX — so it never reaches a host; `cultmesh_quic_last_status` hands over the + raw value for diagnostics and nothing else. +- **`cultmesh_quic_runtime_close` quiesces.** It marks the runtime closing, wakes + every blocked `cultmesh_quic_next_event`, and waits for every in-flight call to + return before it frees anything. No host call may begin after it starts. A client connection defers certificate validation: the bridge indicates the certificate, emits event 3 carrying the DER, and answers MsQuic only when the diff --git a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp index 8c2e8884..582888eb 100644 --- a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp +++ b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp @@ -21,6 +21,13 @@ // certificate pin is compared in C, because that is the contract Unity was // shipped with; it delegates everything else and decides nothing new. +// The host-facing contract lives in include/cultmesh_quic_native.h and is +// included here so this file cannot drift from it: the event layout, the +// exports, the return codes, the lifetime rules and the threading rules are +// stated there once and asserted at compile time. +#define CULTMESH_QUIC_BUILD 1 +#include + #include #include @@ -37,35 +44,15 @@ #include #include -#if defined(_WIN32) -#define CULTMESH_API extern "C" __declspec(dllexport) -#else -#define CULTMESH_API extern "C" __attribute__((visibility("default"))) -#endif - -// The event struct crosses the ABI by layout, not by header: hosts describe it -// in their own FFI. Keep it exactly 64 bytes with no implicit padding. -extern "C" struct cultmesh_quic_event { - uint32_t type; - uint32_t stream_kind; - uint64_t listener_id; - uint64_t connection_id; - uint64_t stream_id; - uint64_t code; - int32_t status; - int32_t payload_length; - uint8_t reserved[16]; -}; -static_assert(sizeof(cultmesh_quic_event) == 64, "the event struct is a 64-byte ABI contract"); -static_assert(offsetof(cultmesh_quic_event, payload_length) == 44, "event field offsets are an ABI contract"); +#define CULTMESH_API extern "C" CULTMESH_QUIC_API namespace { constexpr uint32_t kApiVersion = 2; constexpr uint64_t kConnectionCloseCode = 0x43554c54; constexpr uint64_t kStreamAbortCode = 0x53544154; -constexpr uint8_t kReliableStream = 1; -constexpr uint8_t kLatestOnlyStream = 2; +constexpr uint8_t kReliableStream = CULTMESH_QUIC_STREAM_RELIABLE; +constexpr uint8_t kLatestOnlyStream = CULTMESH_QUIC_STREAM_LATEST_ONLY; constexpr uint32_t kMaximumEncodedFrameBytes = (64u * 1024u * 1024u) + 37u + (3u * 65535u); constexpr char kAlpn[] = "cultmesh-state-v1"; @@ -80,17 +67,16 @@ constexpr uint16_t kPeerUnidiStreamCount = 1024; // the shutdown arrives as event 4. constexpr uint32_t kHandshakeIdleTimeoutMs = 10000; -enum EventType : uint32_t { - kEventListenerNewConnection = 1, - kEventConnectionConnected = 2, - kEventConnectionCertificateReceived = 3, - kEventConnectionShutdown = 4, - kEventStreamStarted = 5, - kEventStreamFrame = 6, - kEventStreamSendComplete = 7, - kEventStreamShutdown = 8, - kEventListenerStopped = 9, -}; +// Short names for the header's event codes; the header is the contract. +constexpr uint32_t kEventListenerNewConnection = CULTMESH_QUIC_EVENT_LISTENER_NEW_CONNECTION; +constexpr uint32_t kEventConnectionConnected = CULTMESH_QUIC_EVENT_CONNECTION_CONNECTED; +constexpr uint32_t kEventConnectionCertificateReceived = CULTMESH_QUIC_EVENT_CONNECTION_CERTIFICATE_RECEIVED; +constexpr uint32_t kEventConnectionShutdown = CULTMESH_QUIC_EVENT_CONNECTION_SHUTDOWN; +constexpr uint32_t kEventStreamStarted = CULTMESH_QUIC_EVENT_STREAM_STARTED; +constexpr uint32_t kEventStreamFrame = CULTMESH_QUIC_EVENT_STREAM_FRAME; +constexpr uint32_t kEventStreamSendComplete = CULTMESH_QUIC_EVENT_STREAM_SEND_COMPLETE; +constexpr uint32_t kEventStreamShutdown = CULTMESH_QUIC_EVENT_STREAM_SHUTDOWN; +constexpr uint32_t kEventListenerStopped = CULTMESH_QUIC_EVENT_LISTENER_STOPPED; struct Runtime; struct Connection; diff --git a/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h b/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h new file mode 100644 index 00000000..bfe4f41f --- /dev/null +++ b/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h @@ -0,0 +1,302 @@ +/* GameCult.Mesh.Quic.Native — C ABI v2, the runtime-neutral CultMesh QUIC bridge. + * + * This header is the contract. It is the single place the event layout, the + * exports, the id and return-code conventions, the object lifetime rules and the + * threading rules are stated; `cultmesh_quic_native.cpp` includes it, the README + * points at it, and a host that cannot include it (koffi, P/Invoke) declares the + * same thing in its own FFI and is checked against this file by a test. + * + * It is C. It includes nothing of MsQuic, nothing of Node, nothing of Unity, and + * nothing platform-specific: a host binds these twelve queue exports plus + * `cultmesh_quic_last_status` and needs no other build input. + * + * The v1 Unity exports (`cultmesh_quic_open`, `_state`, `_poll`, `_error`, + * `_close`) are deliberately not here. They are a Windows-only shim for a + * shipped managed connector, not a contract offered to new hosts. + */ + +#ifndef CULTMESH_QUIC_NATIVE_H +#define CULTMESH_QUIC_NATIVE_H + +#include +#include + +#if defined(__cplusplus) +#define CULTMESH_QUIC_STATIC_ASSERT(condition, message) static_assert(condition, message) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +#define CULTMESH_QUIC_STATIC_ASSERT(condition, message) _Static_assert(condition, message) +#else +#define CULTMESH_QUIC_STATIC_ASSERT(condition, message) +#endif + +/* `CULTMESH_QUIC_BUILD` is defined by the bridge's own translation unit and by + * nothing else. A consumer gets plain declarations and links by name, which is + * what every host here does: all three load the library at runtime. */ +#if defined(CULTMESH_QUIC_BUILD) +# if defined(_WIN32) +# define CULTMESH_QUIC_API __declspec(dllexport) +# else +# define CULTMESH_QUIC_API __attribute__((visibility("default"))) +# endif +#else +# define CULTMESH_QUIC_API +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + +/* --------------------------------------------------------------------------- + * 1. The event + * + * Exactly 64 bytes, no implicit padding, field order below is the ABI. A host + * that reorders a field reads a different struct; the offsets are asserted here + * so a compiler that pads differently fails the build rather than the wire. + * --------------------------------------------------------------------------- */ + +struct cultmesh_quic_event { + uint32_t type; /* offset 0 — one of the cultmesh_quic_event_type values */ + uint32_t stream_kind; /* offset 4 — 1 reliable, 2 latest-only; 0 when not a stream event */ + uint64_t listener_id; /* offset 8 — 0 for an outbound connection */ + uint64_t connection_id; /* offset 16 */ + uint64_t stream_id; /* offset 24 */ + uint64_t code; /* offset 32 — meaning depends on `type`; see below */ + int32_t status; /* offset 40 — the raw platform QUIC status, diagnostics only */ + int32_t payload_length; /* offset 44 — bytes written into the caller's payload buffer */ + uint8_t reserved[16]; /* offset 48 — zero today; do not read meaning into it */ +}; + +CULTMESH_QUIC_STATIC_ASSERT(sizeof(struct cultmesh_quic_event) == 64, + "the event struct is a 64-byte ABI contract"); +CULTMESH_QUIC_STATIC_ASSERT(offsetof(struct cultmesh_quic_event, type) == 0, + "event field offsets are an ABI contract"); +CULTMESH_QUIC_STATIC_ASSERT(offsetof(struct cultmesh_quic_event, stream_kind) == 4, + "event field offsets are an ABI contract"); +CULTMESH_QUIC_STATIC_ASSERT(offsetof(struct cultmesh_quic_event, listener_id) == 8, + "event field offsets are an ABI contract"); +CULTMESH_QUIC_STATIC_ASSERT(offsetof(struct cultmesh_quic_event, connection_id) == 16, + "event field offsets are an ABI contract"); +CULTMESH_QUIC_STATIC_ASSERT(offsetof(struct cultmesh_quic_event, stream_id) == 24, + "event field offsets are an ABI contract"); +CULTMESH_QUIC_STATIC_ASSERT(offsetof(struct cultmesh_quic_event, code) == 32, + "event field offsets are an ABI contract"); +CULTMESH_QUIC_STATIC_ASSERT(offsetof(struct cultmesh_quic_event, status) == 40, + "event field offsets are an ABI contract"); +CULTMESH_QUIC_STATIC_ASSERT(offsetof(struct cultmesh_quic_event, payload_length) == 44, + "event field offsets are an ABI contract"); +CULTMESH_QUIC_STATIC_ASSERT(offsetof(struct cultmesh_quic_event, reserved) == 48, + "event field offsets are an ABI contract"); + +enum cultmesh_quic_event_type { + /* A listener accepted an inbound connection. `listener_id`, `connection_id`. */ + CULTMESH_QUIC_EVENT_LISTENER_NEW_CONNECTION = 1, + /* The handshake completed. `connection_id`. */ + CULTMESH_QUIC_EVENT_CONNECTION_CONNECTED = 2, + /* Payload: the peer's DER certificate. The handshake is blocked until the + * host answers with `cultmesh_quic_connection_certificate_complete`. */ + CULTMESH_QUIC_EVENT_CONNECTION_CERTIFICATE_RECEIVED = 3, + /* The connection is gone, whoever ended it. Payload: a UTF-8 reason. + * `code` is the QUIC application error code — the peer's when the peer + * ended it, and the code the host passed to `cultmesh_quic_connection_shutdown` + * when the host did. Emitted exactly once per connection id, including for + * the initiator of a local shutdown: every connection id's end is observable. */ + CULTMESH_QUIC_EVENT_CONNECTION_SHUTDOWN = 4, + /* An inbound stream's first byte named its kind. `stream_id`, `stream_kind`. */ + CULTMESH_QUIC_EVENT_STREAM_STARTED = 5, + /* Payload: one whole encoded frame, the 4-byte length prefix stripped. */ + CULTMESH_QUIC_EVENT_STREAM_FRAME = 6, + /* One per `cultmesh_quic_stream_send_frame` call that returned 0, and never + * for the bridge's own kind byte. `code` is a cultmesh_quic_send_result. */ + CULTMESH_QUIC_EVENT_STREAM_SEND_COMPLETE = 7, + /* The stream is gone. `stream_id`, `stream_kind`. */ + CULTMESH_QUIC_EVENT_STREAM_SHUTDOWN = 8, + /* The listener stopped. `listener_id`. */ + CULTMESH_QUIC_EVENT_LISTENER_STOPPED = 9 +}; + +/* The `code` of event 7. A canceled send is a send MsQuic released without + * putting on the wire — the stream was aborted or the connection ended under it. + * It is reported, not silently dropped. */ +enum cultmesh_quic_send_result { + CULTMESH_QUIC_SEND_COMPLETED = 0, + CULTMESH_QUIC_SEND_CANCELED = 1 +}; + +/* The first byte of every CultMesh QUIC stream. */ +enum cultmesh_quic_stream_kind { + CULTMESH_QUIC_STREAM_RELIABLE = 1, + CULTMESH_QUIC_STREAM_LATEST_ONLY = 2 +}; + +/* --------------------------------------------------------------------------- + * 2. Ids + * + * Listeners, connections and streams are named by `uint64_t` ids drawn from one + * per-runtime counter that starts at 1 and never repeats. 0 is never a valid id + * and is what an out parameter holds when a call fails. An id is the only thing + * a host ever holds: there is no host-visible pointer to a connection or stream, + * so a host cannot outlive an object it is naming. An id whose object is gone is + * a bad call (-1), not undefined behaviour. + * --------------------------------------------------------------------------- */ + +/* --------------------------------------------------------------------------- + * 3. Return codes — negative on a bad call, on every platform + * + * Every int32_t-returning export returns: + * + * 0 the call succeeded + * 1, 2 `cultmesh_quic_next_event` only; see its comment + * -1 a bad call: a null handle, a null out parameter, + * or an id whose object is gone + * -2 an argument the bridge rejects on its own terms: + * an unknown stream kind, an oversized frame, a + * listener host that is not an IP literal + * <= -1000 MsQuic refused. The bridge code is + * -(1000 + (raw_status & 0xffff)); the raw + * platform status is available from + * `cultmesh_quic_last_status` and a sentence about + * it from `cultmesh_quic_last_error`. + * + * This mapping exists because `QUIC_STATUS` itself is not portable: it is a + * negative HRESULT on Windows and a positive errno on POSIX, so a host that + * checked for a negative value saw every Linux failure as success. The mapping + * is one-way by construction — a bridge code is always negative and always + * outside the raw status space — and diagnostics go through `last_status`. + * --------------------------------------------------------------------------- */ + +#define CULTMESH_QUIC_RESULT_BAD_CALL (-1) +#define CULTMESH_QUIC_RESULT_BAD_ARGUMENT (-2) +#define CULTMESH_QUIC_RESULT_MSQUIC_BASE (-1000) + +/* --------------------------------------------------------------------------- + * 4. Object lifetime — resolved from an id, kept alive across the call + * + * The bridge's objects are shared-owned. The runtime's maps hold one reference + * each; an export that names an id takes its own reference under the lock and + * holds it for the whole MsQuic call, so an object cannot be freed under a host + * thread that is using it. MsQuic's worker, on shutdown-complete, removes the + * map entry and drops the map's reference only — it never frees an object a host + * call is inside. + * + * The MsQuic handle follows the object: it is closed exactly once, by whichever + * holder drops the last reference (or by `cultmesh_quic_runtime_close`), under a + * one-shot exchange guard. A handle is therefore valid for as long as any holder + * has a reference to its object, which is the property the host thread needs. A + * stream holds a reference to its connection, so stream handles are always + * closed before the connection handle they belong to. + * + * `cultmesh_quic_runtime_close` quiesces before it tears anything down. It marks + * the runtime closing, wakes every blocked `cultmesh_quic_next_event`, and waits + * for every in-flight export to return before it closes a handle or frees a + * byte. No host call may begin after `cultmesh_quic_runtime_close` starts: a + * call that arrives during or after it is refused with -1 and touches nothing. + * The host is responsible for that ordering; the refusal is a guard rail, not a + * licence to race. + * --------------------------------------------------------------------------- */ + +/* --------------------------------------------------------------------------- + * 5. Threading + * + * There are no host callbacks. Every crossing is the host calling in. + * + * - MsQuic's worker threads run inside this library only. They push events onto + * the runtime's queue and wake the one blocking wait. No host code is ever + * called from a thread the host does not own. + * - `cultmesh_quic_next_event` is called from host threads, one or many. It is + * the only blocking export. Concurrent callers each get a distinct event. + * - Every other export may be called from any host thread at any time, except + * during or after `cultmesh_quic_runtime_close`. + * - `cultmesh_quic_runtime_close` is called once, from one thread, and + * quiesces as described above. + * --------------------------------------------------------------------------- */ + +/* --------------------------------------------------------------------------- + * 6. The exports + * --------------------------------------------------------------------------- */ + +/* Opens a runtime: one MsQuic registration, one event queue. `app_name` may be + * null. `*out_runtime` is the opaque handle every other export takes. */ +CULTMESH_QUIC_API int32_t cultmesh_quic_runtime_open( + const char* app_name, void** out_runtime); + +/* Quiesces, tears down and frees the runtime. Safe to call with null. After it + * returns, the handle is dead; see section 4 for the ordering rule. */ +CULTMESH_QUIC_API void cultmesh_quic_runtime_close(void* runtime); + +/* Opens a provider listener on `host`:`port` with a PKCS12 credential. `host` + * may be null or empty for any address, otherwise it must be an IP literal. + * `port` 0 binds an ephemeral port, which `*out_bound_port` reports. A failure + * leaves no listener behind and no id allocated to the host. */ +CULTMESH_QUIC_API int32_t cultmesh_quic_listener_open( + void* runtime, const char* host, uint16_t port, + const uint8_t* pkcs12, int32_t pkcs12_length, const char* password, + uint64_t* out_listener_id, uint16_t* out_bound_port); + +/* Stops and closes a listener. Its accepted connections are not affected. + * Emits event 9. Unknown ids are ignored. */ +CULTMESH_QUIC_API void cultmesh_quic_listener_close( + void* runtime, uint64_t listener_id); + +/* Starts an outbound connection. Certificate validation is deferred: the host + * gets event 3 and must answer. */ +CULTMESH_QUIC_API int32_t cultmesh_quic_connection_open( + void* runtime, const char* host, uint16_t port, uint64_t* out_connection_id); + +/* Answers event 3. `accept` non-zero continues the handshake; zero fails it with + * a bad-certificate alert. */ +CULTMESH_QUIC_API int32_t cultmesh_quic_connection_certificate_complete( + void* runtime, uint64_t connection_id, int32_t accept); + +/* Ends a connection with a QUIC application error code. The initiator gets its + * own event 4 carrying `code`, as the peer does. Unknown ids are ignored. */ +CULTMESH_QUIC_API void cultmesh_quic_connection_shutdown( + void* runtime, uint64_t connection_id, uint64_t code); + +/* Opens an outbound unidirectional stream and puts `kind` on the wire as its + * first byte. That byte is the bridge's own and never produces an event 7. */ +CULTMESH_QUIC_API int32_t cultmesh_quic_stream_open( + void* runtime, uint64_t connection_id, uint8_t kind, uint64_t* out_stream_id); + +/* Queues one whole encoded frame, length-prefixed by the bridge. A call that + * returns 0 produces exactly one event 7 later, completed or canceled. */ +CULTMESH_QUIC_API int32_t cultmesh_quic_stream_send_frame( + void* runtime, uint64_t stream_id, + const uint8_t* encoded_frame, int32_t length, int32_t fin); + +/* Aborts a stream with a QUIC application error code. Unknown ids are ignored. */ +CULTMESH_QUIC_API void cultmesh_quic_stream_shutdown( + void* runtime, uint64_t stream_id, uint64_t code); + +/* The one blocking crossing. + * + * 0 nothing within `timeout_ms` (or the runtime is closing) + * 1 `*out_event` filled and up to `payload_capacity` payload bytes copied; + * `*out_required` is the payload size + * 2 `payload_capacity` is too small. Nothing is consumed and nothing is + * written to `*out_event`; `*out_required` is the size to allocate. Ask + * again with a big enough buffer and the same event is delivered. + * -1 a bad call, including a null `payload` with a non-zero + * `payload_capacity`, which is a lie about the buffer and is refused + * rather than treated as a discard. + * + * `payload` may be null when `payload_capacity` is 0: that is the two-phase + * poll's first ask. */ +CULTMESH_QUIC_API int32_t cultmesh_quic_next_event( + void* runtime, int32_t timeout_ms, struct cultmesh_quic_event* out_event, + uint8_t* payload, int32_t payload_capacity, int32_t* out_required); + +/* The last error sentence, NUL-terminated, truncated to `capacity`. Returns the + * number of bytes written, or -1 on a bad call. */ +CULTMESH_QUIC_API int32_t cultmesh_quic_last_error( + void* runtime, char* destination, int32_t capacity); + +/* The raw platform `QUIC_STATUS` behind the last <= -1000 return, as its own + * bits: a negative HRESULT on Windows, a positive errno on POSIX. Diagnostics + * only — the portable answer is the return code. 0 when nothing has failed. */ +CULTMESH_QUIC_API int32_t cultmesh_quic_last_status(void* runtime); + +#if defined(__cplusplus) +} +#endif + +#endif /* CULTMESH_QUIC_NATIVE_H */ From 47aa7b668bb58d6ff52666d97c941436a95553c7 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 21:50:48 +0200 Subject: [PATCH 0062/1002] Keep bridge objects alive across the call that names them FindStream, FindConnection and FindListener took the lock, dropped it, and handed back a raw pointer. MsQuic's worker freed the object on shutdown-complete and the host thread dereferenced it on its next send. One release run in three crashed on each target under an ordinary peer-driven stream teardown; ASan caught it three times out of three, with the free inside DestroyStream on a worker and the read inside stream_send_frame on the host thread. A null check cannot fix that: the pointer is not null, it is dead. The maps hold shared_ptr now and a lookup returns a reference the caller owns for the length of its call. The worker's destroy takes the object out of its map and drops the map's reference only. The MsQuic handle follows the object: the destructor closes it exactly once, under the exchange guard, so the handle is alive for as long as any holder is. A stream holds its connection, which orders every stream handle's close before its connection's without a rule anywhere saying so. runtime_close quiesces. It marks the runtime closing, wakes every blocked poller, and waits for every in-flight call to return before it closes a handle or frees a byte; a call that arrives after that is refused with -1. Waking a poller without waiting for it was how close returned a poller into freed memory while looking like it supported the pattern. Two things fall out of the model rather than being fixed on top of it: a listener that fails partway through opening leaves no map entry and no handle, because every failure path just drops the local reference, and a stream is in the map before StreamStart, because the shutdown-complete that StreamStart can reach on a worker has to find it. Cut with it: Listener::stopped, V1Client::connection (an unread raw pointer into the same hazard), and FindListener. Event 7 is still one too many and the shutdown initiator still learns nothing; that is the next commit. The rest of Soul's C consumer passes on win32-x64, including race at 400 streams, which crashed before. Co-Authored-By: Claude Opus 5 (1M context) --- .../cultmesh_quic_native.cpp | 334 ++++++++++++------ 1 file changed, 226 insertions(+), 108 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp index 582888eb..4a2d06ff 100644 --- a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp +++ b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp @@ -86,31 +86,42 @@ struct QueuedEvent { std::vector payload; }; +// Objects are shared-owned, and that is the whole lifetime model. The runtime's +// maps hold one reference each; an export that names an id takes its own +// reference under the lock and holds it for the entire MsQuic call. MsQuic's +// worker, on shutdown-complete, drops the map's reference only. The handle +// follows the object: it is closed exactly once, in the destructor, by whichever +// holder drops last, under a one-shot exchange guard. See section 4 of +// include/cultmesh_quic_native.h, which is where this is promised to hosts. + struct Stream { Runtime* runtime = nullptr; - Connection* owner = nullptr; + // Shared, not raw: this is what keeps a connection's handle open for as long + // as any of its streams still exist, so stream handles always close first. + std::shared_ptr owner; HQUIC handle = nullptr; uint64_t id = 0; uint8_t kind = 0; bool inbound = false; bool has_kind = false; + std::atomic handle_closed{false}; // Inbound reassembly only. MsQuic delivers stream bytes in arbitrary // chunks, so the length prefix and the frame it introduces can arrive in // separate receives. std::vector buffered; + + ~Stream(); }; -struct Connection { +struct Connection : std::enable_shared_from_this { Runtime* runtime = nullptr; HQUIC handle = nullptr; uint64_t id = 0; uint64_t listener_id = 0; bool inbound = false; bool closing = false; - // Two paths can reach `ConnectionClose`: the shutdown-complete callback and - // `cultmesh_quic_runtime_close`, which cannot lean on the callback because a - // silent shutdown produces none. Whoever gets here first closes; the other - // does nothing. MsQuic treats a second close of the same handle as a bug. + // Set when MsQuic is closing the handle itself (an app close already in + // progress), so the destructor's one-shot close stands down. std::atomic handle_closed{false}; // v1 only. A connection carrying a pin has its certificate answered in C // against that pin; a v2 connection never sets this and is always answered @@ -120,6 +131,8 @@ struct Connection { // v1 diagnostics: the MsQuic event sequence, which the v1 error string // reports and nothing in v2 reads. std::string trace; + + ~Connection(); }; struct Listener { @@ -127,7 +140,9 @@ struct Listener { HQUIC handle = nullptr; HQUIC configuration = nullptr; uint64_t id = 0; - bool stopped = false; + std::atomic handle_closed{false}; + + ~Listener(); }; struct Runtime { @@ -140,14 +155,64 @@ struct Runtime { std::mutex gate; std::condition_variable signal; std::deque events; - std::unordered_map> listeners; - std::unordered_map> connections; - std::unordered_map> streams; + std::unordered_map> listeners; + std::unordered_map> connections; + std::unordered_map> streams; uint64_t next_id = 1; std::string error; bool closing = false; + // Host calls currently inside the library. `cultmesh_quic_runtime_close` + // waits for this to reach zero before it touches a handle. + int active_calls = 0; }; +// Every host-facing export enters through this. It refuses once +// `cultmesh_quic_runtime_close` has started, and otherwise holds the runtime +// open for the length of the call. +class CallScope { +public: + explicit CallScope(Runtime* runtime) : runtime_(runtime) { + if (runtime_ == nullptr) return; + std::lock_guard lock(runtime_->gate); + if (runtime_->closing) return; + ++runtime_->active_calls; + entered_ = true; + } + ~CallScope() { + if (!entered_) return; + { + std::lock_guard lock(runtime_->gate); + --runtime_->active_calls; + } + runtime_->signal.notify_all(); + } + CallScope(const CallScope&) = delete; + CallScope& operator=(const CallScope&) = delete; + bool entered() const { return entered_; } + +private: + Runtime* runtime_ = nullptr; + bool entered_ = false; +}; + +Stream::~Stream() { + if (handle != nullptr && runtime != nullptr && runtime->api != nullptr && + !handle_closed.exchange(true)) + runtime->api->StreamClose(handle); +} + +Connection::~Connection() { + if (handle != nullptr && runtime != nullptr && runtime->api != nullptr && + !handle_closed.exchange(true)) + runtime->api->ConnectionClose(handle); +} + +Listener::~Listener() { + if (runtime == nullptr || runtime->api == nullptr) return; + if (handle != nullptr && !handle_closed.exchange(true)) runtime->api->ListenerClose(handle); + if (configuration != nullptr) runtime->api->ConfigurationClose(configuration); +} + // Every send buffer outlives its `StreamSend` call: MsQuic reads the bytes // asynchronously and only releases them at SEND_COMPLETE, where this is freed. struct SendRequest { @@ -221,25 +286,35 @@ uint64_t NextId(Runtime* runtime) { return runtime->next_id++; } -Listener* FindListener(Runtime* runtime, uint64_t id) { - std::lock_guard lock(runtime->gate); - const auto found = runtime->listeners.find(id); - return found == runtime->listeners.end() ? nullptr : found->second.get(); -} - -Connection* FindConnection(Runtime* runtime, uint64_t id) { +// The three lookups. Each returns a reference the caller owns for as long as it +// holds it, taken under the lock, so nothing the caller then names can be freed +// under it. A raw pointer here was the use-after-free. +std::shared_ptr FindConnection(Runtime* runtime, uint64_t id) { std::lock_guard lock(runtime->gate); const auto found = runtime->connections.find(id); - return found == runtime->connections.end() ? nullptr : found->second.get(); + return found == runtime->connections.end() ? nullptr : found->second; } -Stream* FindStream(Runtime* runtime, uint64_t id) { +std::shared_ptr FindStream(Runtime* runtime, uint64_t id) { std::lock_guard lock(runtime->gate); const auto found = runtime->streams.find(id); - return found == runtime->streams.end() ? nullptr : found->second.get(); + return found == runtime->streams.end() ? nullptr : found->second; } -void ShutdownConnectionForProtocolFault(Connection* connection, const std::string& message) { +// Takes the object out of its map and returns it, so the caller's reference — +// and any destructor it ends up running — lives outside the lock. +template +auto Detach(std::mutex& gate, Map& map, uint64_t id) { + typename Map::mapped_type detached; + std::lock_guard lock(gate); + const auto found = map.find(id); + if (found == map.end()) return detached; + detached = std::move(found->second); + map.erase(found); + return detached; +} + +void ShutdownConnectionForProtocolFault(const std::shared_ptr& connection, const std::string& message) { if (connection == nullptr) return; SetError(connection->runtime, message); if (connection->runtime->api != nullptr && connection->handle != nullptr) @@ -288,12 +363,14 @@ bool ConsumeFrames(Stream* stream) { return true; } +// Drops the map's reference and nothing else. If the map was the last holder the +// object dies here, outside the lock, and its destructor closes the handle; if a +// host call is still inside, the object outlives this by exactly that long. void DestroyStream(Runtime* runtime, uint64_t stream_id) { - std::lock_guard lock(runtime->gate); - runtime->streams.erase(stream_id); + [[maybe_unused]] const auto detached = Detach(runtime->gate, runtime->streams, stream_id); } -QUIC_STATUS QUIC_API StreamCallback(HQUIC handle, void* context, QUIC_STREAM_EVENT* event) { +QUIC_STATUS QUIC_API StreamCallback(HQUIC, void* context, QUIC_STREAM_EVENT* event) { auto* stream = static_cast(context); Runtime* runtime = stream->runtime; switch (event->Type) { @@ -314,11 +391,16 @@ QUIC_STATUS QUIC_API StreamCallback(HQUIC handle, void* context, QUIC_STREAM_EVE ShutdownConnectionForProtocolFault(stream->owner, "CultMesh QUIC stream ended with a truncated frame."); break; case QUIC_STREAM_EVENT_SHUTDOWN_COMPLETE: { + // Everything this event reports is read before the map's reference goes, + // because that reference may be the last one and `stream` may not + // survive `DestroyStream`. const uint64_t stream_id = stream->id; const uint64_t connection_id = stream->owner->id; const uint64_t listener_id = stream->owner->listener_id; const uint32_t kind = stream->kind; - if (!event->SHUTDOWN_COMPLETE.AppCloseInProgress) runtime->api->StreamClose(handle); + // An app close already in progress means MsQuic closes this handle + // itself; anything else leaves it to the last holder's destructor. + if (event->SHUTDOWN_COMPLETE.AppCloseInProgress) stream->handle_closed.store(true); DestroyStream(runtime, stream_id); PublishSimple(runtime, kEventStreamShutdown, listener_id, connection_id, stream_id, 0, 0, kind); break; @@ -330,12 +412,27 @@ QUIC_STATUS QUIC_API StreamCallback(HQUIC handle, void* context, QUIC_STREAM_EVE } void DestroyConnection(Runtime* runtime, uint64_t connection_id) { - std::lock_guard lock(runtime->gate); - for (auto it = runtime->streams.begin(); it != runtime->streams.end();) - it = it->second->owner != nullptr && it->second->owner->id == connection_id - ? runtime->streams.erase(it) - : std::next(it); - runtime->connections.erase(connection_id); + // Declared first so it dies last: whatever order these drop in, a stream + // holds its connection, so every stream handle closes before the connection + // handle does. + std::shared_ptr connection; + std::vector> streams; + { + std::lock_guard lock(runtime->gate); + for (auto it = runtime->streams.begin(); it != runtime->streams.end();) { + if (it->second->owner != nullptr && it->second->owner->id == connection_id) { + streams.push_back(std::move(it->second)); + it = runtime->streams.erase(it); + } else { + ++it; + } + } + const auto found = runtime->connections.find(connection_id); + if (found != runtime->connections.end()) { + connection = std::move(found->second); + runtime->connections.erase(found); + } + } } #if defined(_WIN32) @@ -353,9 +450,9 @@ QUIC_STATUS QUIC_API ConnectionCallback(HQUIC handle, void* context, QUIC_CONNEC PublishSimple(runtime, kEventConnectionConnected, connection->listener_id, connection->id, 0, 0, 0); break; case QUIC_CONNECTION_EVENT_PEER_STREAM_STARTED: { - auto stream = std::make_unique(); + auto stream = std::make_shared(); stream->runtime = runtime; - stream->owner = connection; + stream->owner = connection->shared_from_this(); stream->handle = event->PEER_STREAM_STARTED.Stream; stream->inbound = true; stream->id = NextId(runtime); @@ -431,8 +528,7 @@ QUIC_STATUS QUIC_API ConnectionCallback(HQUIC handle, void* context, QUIC_CONNEC } case QUIC_CONNECTION_EVENT_SHUTDOWN_COMPLETE: { const uint64_t connection_id = connection->id; - if (!event->SHUTDOWN_COMPLETE.AppCloseInProgress && !connection->handle_closed.exchange(true)) - runtime->api->ConnectionClose(handle); + if (event->SHUTDOWN_COMPLETE.AppCloseInProgress) connection->handle_closed.store(true); DestroyConnection(runtime, connection_id); break; } @@ -447,7 +543,7 @@ QUIC_STATUS QUIC_API ListenerCallback(HQUIC, void* context, QUIC_LISTENER_EVENT* Runtime* runtime = listener->runtime; switch (event->Type) { case QUIC_LISTENER_EVENT_NEW_CONNECTION: { - auto connection = std::make_unique(); + auto connection = std::make_shared(); connection->runtime = runtime; connection->handle = event->NEW_CONNECTION.Connection; connection->inbound = true; @@ -532,7 +628,7 @@ QUIC_STATUS EnsureClientConfiguration(Runtime* runtime) { // the handshake stalls waiting for an answer from a host that was never told to // give one. int32_t OpenConnection(Runtime* runtime, const char* host, uint16_t port, uint64_t* out_connection_id, - Connection** out_connection, const std::array* pin) { + const std::array* pin) { if (runtime == nullptr || host == nullptr || *host == '\0' || port == 0 || out_connection_id == nullptr) return -1; *out_connection_id = 0; @@ -544,7 +640,7 @@ int32_t OpenConnection(Runtime* runtime, const char* host, uint16_t port, uint64 return static_cast(status); } - auto connection = std::make_unique(); + auto connection = std::make_shared(); connection->runtime = runtime; connection->id = NextId(runtime); if (pin != nullptr) { @@ -561,7 +657,7 @@ int32_t OpenConnection(Runtime* runtime, const char* host, uint16_t port, uint64 } { std::lock_guard lock(runtime->gate); - runtime->connections.emplace(raw->id, std::move(connection)); + runtime->connections.emplace(raw->id, connection); } status = runtime->api->ConnectionStart( @@ -569,13 +665,13 @@ int32_t OpenConnection(Runtime* runtime, const char* host, uint16_t port, uint64 if (QUIC_FAILED(status)) { SetError(runtime, "CultMesh QUIC connection start failed (status=" + Hex(static_cast(status)) + ")."); - runtime->api->ConnectionClose(raw->handle); + // The map's reference goes and this local one goes with the scope; the + // handle is closed by whichever of the two drops last, exactly once. DestroyConnection(runtime, raw->id); return static_cast(status); } *out_connection_id = raw->id; - if (out_connection != nullptr) *out_connection = raw; return 0; } @@ -610,55 +706,52 @@ CULTMESH_API int32_t cultmesh_quic_runtime_open(const char* app_name, void** out CULTMESH_API void cultmesh_quic_runtime_close(void* handle) { auto* runtime = static_cast(handle); if (runtime == nullptr) return; + + // Quiesce before anything is closed or freed. Marking the runtime closing + // refuses every call that has not started; waking the pollers gets the + // blocked ones out of `next_event`; waiting for `active_calls` to reach zero + // is what makes the teardown below safe at all. A wake without the wait is + // how a poller returns into freed memory, so the wait is the contract, not + // the wake. Objects are taken out of the maps here and released after the + // lock, so their destructors run on this thread and close their handles. + std::vector> streams; + std::vector> connections; + std::vector> listeners; { - std::lock_guard lock(runtime->gate); + std::unique_lock lock(runtime->gate); + if (runtime->closing) return; runtime->closing = true; + runtime->signal.notify_all(); + runtime->signal.wait(lock, [runtime] { return runtime->active_calls == 0; }); + for (auto& entry : runtime->streams) streams.push_back(std::move(entry.second)); + for (auto& entry : runtime->connections) connections.push_back(std::move(entry.second)); + for (auto& entry : runtime->listeners) listeners.push_back(std::move(entry.second)); + runtime->streams.clear(); + runtime->connections.clear(); + runtime->listeners.clear(); } - runtime->signal.notify_all(); // Bottom-up, and by the app's own hand. `RegistrationClose` blocks until // every child handle the app opened has been closed *by the app*, and a // silent shutdown delivers no shutdown events at all, so leaning on the - // callbacks to do the closing deadlocks the caller forever. Connections are - // closed here; MsQuic cascades that to their streams, which arrive at - // `StreamCallback` with `AppCloseInProgress` set. - // - // The handles are copied out from under the lock and closed without it: a - // callback running concurrently takes the same lock, and `ConnectionClose` - // does not return until those callbacks have finished. - std::vector connections; - std::vector listeners; - std::vector configurations; - { - std::lock_guard lock(runtime->gate); - for (auto& entry : runtime->connections) - if (entry.second->handle != nullptr && !entry.second->handle_closed.exchange(true)) - connections.push_back(entry.second->handle); - for (auto& entry : runtime->listeners) { - if (entry.second->handle != nullptr) listeners.push_back(entry.second->handle); - if (entry.second->configuration != nullptr) configurations.push_back(entry.second->configuration); - } - } - for (HQUIC connection : connections) { - runtime->api->ConnectionShutdown(connection, QUIC_CONNECTION_SHUTDOWN_FLAG_SILENT, kConnectionCloseCode); - runtime->api->ConnectionClose(connection); - } - for (HQUIC listener : listeners) runtime->api->ListenerClose(listener); - for (HQUIC configuration : configurations) runtime->api->ConfigurationClose(configuration); + // callbacks to do the closing deadlocks the caller forever. + streams.clear(); + for (auto& connection : connections) + if (connection->handle != nullptr && !connection->handle_closed.load()) + runtime->api->ConnectionShutdown( + connection->handle, QUIC_CONNECTION_SHUTDOWN_FLAG_SILENT, kConnectionCloseCode); + connections.clear(); + listeners.clear(); if (runtime->client_configuration != nullptr) { runtime->api->ConfigurationClose(runtime->client_configuration); runtime->client_configuration = nullptr; } - // No callback can be running past this point, so the tracking maps are safe - // to drop. + // No callback can be running past this point. if (runtime->registration != nullptr) { runtime->api->RegistrationClose(runtime->registration); runtime->registration = nullptr; } - runtime->streams.clear(); - runtime->connections.clear(); - runtime->listeners.clear(); if (runtime->api != nullptr) { MsQuicClose(runtime->api); runtime->api = nullptr; @@ -673,10 +766,15 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( auto* runtime = static_cast(handle); if (runtime == nullptr || pkcs12 == nullptr || pkcs12_len <= 0 || out_listener_id == nullptr) return -1; + CallScope scope(runtime); + if (!scope.entered()) return -1; *out_listener_id = 0; if (out_bound_port != nullptr) *out_bound_port = 0; - auto listener = std::make_unique(); + // Held here until the listener is fully started. Every failure path below + // simply returns: the destructor closes whatever was opened, and a partial + // open therefore leaves neither a handle nor a map entry behind. + auto listener = std::make_shared(); listener->runtime = runtime; listener->id = NextId(runtime); @@ -706,7 +804,6 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( if (QUIC_FAILED(status)) { SetError(runtime, "CultMesh QUIC listener certificate could not be loaded (status=" + Hex(static_cast(status)) + ")."); - runtime->api->ConfigurationClose(listener->configuration); return static_cast(status); } @@ -715,13 +812,8 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( if (QUIC_FAILED(status)) { SetError(runtime, "CultMesh QUIC listener open failed (status=" + Hex(static_cast(status)) + ")."); - runtime->api->ConfigurationClose(listener->configuration); return static_cast(status); } - { - std::lock_guard lock(runtime->gate); - runtime->listeners.emplace(raw->id, std::move(listener)); - } QUIC_ADDR address{}; QuicAddrSetFamily(&address, QUIC_ADDRESS_FAMILY_UNSPEC); @@ -731,11 +823,19 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( return -2; } + // In the map before it starts accepting, because the callback that accepts + // an inbound connection reads the listener through it. + { + std::lock_guard lock(runtime->gate); + runtime->listeners.emplace(raw->id, listener); + } + QUIC_BUFFER listener_alpn = AlpnBuffer(); status = runtime->api->ListenerStart(raw->handle, &listener_alpn, 1, &address); if (QUIC_FAILED(status)) { SetError(runtime, "CultMesh QUIC listener start failed (status=" + Hex(static_cast(status)) + ")."); + Detach(runtime->gate, runtime->listeners, raw->id); return static_cast(status); } @@ -746,6 +846,7 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( if (QUIC_FAILED(status)) { SetError(runtime, "CultMesh QUIC listener address could not be read (status=" + Hex(static_cast(status)) + ")."); + Detach(runtime->gate, runtime->listeners, raw->id); return static_cast(status); } if (out_bound_port != nullptr) *out_bound_port = QuicAddrGetPort(&bound); @@ -756,25 +857,29 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( CULTMESH_API void cultmesh_quic_listener_close(void* handle, uint64_t listener_id) { auto* runtime = static_cast(handle); if (runtime == nullptr) return; - Listener* listener = FindListener(runtime, listener_id); - if (listener == nullptr || listener->stopped) return; - listener->stopped = true; - if (listener->handle != nullptr) runtime->api->ListenerClose(listener->handle); - if (listener->configuration != nullptr) runtime->api->ConfigurationClose(listener->configuration); - std::lock_guard lock(runtime->gate); - runtime->listeners.erase(listener_id); + CallScope scope(runtime); + if (!scope.entered()) return; + // Taken out of the map, then released here: ~Listener closes the handle + // (which is what produces event 9) and its configuration, exactly once. + [[maybe_unused]] const auto detached = Detach(runtime->gate, runtime->listeners, listener_id); } CULTMESH_API int32_t cultmesh_quic_connection_open( void* handle, const char* host, uint16_t port, uint64_t* out_connection_id) { - return OpenConnection(static_cast(handle), host, port, out_connection_id, nullptr, nullptr); + auto* runtime = static_cast(handle); + if (runtime == nullptr) return -1; + CallScope scope(runtime); + if (!scope.entered()) return -1; + return OpenConnection(runtime, host, port, out_connection_id, nullptr); } CULTMESH_API int32_t cultmesh_quic_connection_certificate_complete( void* handle, uint64_t connection_id, int32_t accept) { auto* runtime = static_cast(handle); if (runtime == nullptr) return -1; - Connection* connection = FindConnection(runtime, connection_id); + CallScope scope(runtime); + if (!scope.entered()) return -1; + const auto connection = FindConnection(runtime, connection_id); if (connection == nullptr) return -1; const auto status = runtime->api->ConnectionCertificateValidationComplete( connection->handle, @@ -791,7 +896,9 @@ CULTMESH_API int32_t cultmesh_quic_connection_certificate_complete( CULTMESH_API void cultmesh_quic_connection_shutdown(void* handle, uint64_t connection_id, uint64_t code) { auto* runtime = static_cast(handle); if (runtime == nullptr) return; - Connection* connection = FindConnection(runtime, connection_id); + CallScope scope(runtime); + if (!scope.entered()) return; + const auto connection = FindConnection(runtime, connection_id); if (connection == nullptr || connection->closing) return; connection->closing = true; if (connection->handle != nullptr) @@ -802,12 +909,14 @@ CULTMESH_API int32_t cultmesh_quic_stream_open( void* handle, uint64_t connection_id, uint8_t kind, uint64_t* out_stream_id) { auto* runtime = static_cast(handle); if (runtime == nullptr || out_stream_id == nullptr) return -1; + CallScope scope(runtime); + if (!scope.entered()) return -1; *out_stream_id = 0; if (kind != kReliableStream && kind != kLatestOnlyStream) return -2; - Connection* connection = FindConnection(runtime, connection_id); + const auto connection = FindConnection(runtime, connection_id); if (connection == nullptr) return -1; - auto stream = std::make_unique(); + auto stream = std::make_shared(); stream->runtime = runtime; stream->owner = connection; stream->kind = kind; @@ -823,17 +932,20 @@ CULTMESH_API int32_t cultmesh_quic_stream_open( Hex(static_cast(status)) + ")."); return static_cast(status); } + // In the map before it starts. `StreamStart` can reach shutdown-complete on + // an MsQuic worker before it returns here, and that callback has to find the + // stream to report it and to drop the map's reference. + { + std::lock_guard lock(runtime->gate); + runtime->streams.emplace(raw->id, stream); + } status = runtime->api->StreamStart(raw->handle, QUIC_STREAM_START_FLAG_IMMEDIATE); if (QUIC_FAILED(status)) { SetError(runtime, "CultMesh QUIC stream start failed (status=" + Hex(static_cast(status)) + ")."); - runtime->api->StreamClose(raw->handle); + DestroyStream(runtime, raw->id); return static_cast(status); } - { - std::lock_guard lock(runtime->gate); - runtime->streams.emplace(raw->id, std::move(stream)); - } // The kind byte is the first thing on the stream, which is what the peer's // reassembly reads before any length prefix. @@ -857,8 +969,12 @@ CULTMESH_API int32_t cultmesh_quic_stream_send_frame( void* handle, uint64_t stream_id, const uint8_t* encoded_frame, int32_t length, int32_t fin) { auto* runtime = static_cast(handle); if (runtime == nullptr || encoded_frame == nullptr || length <= 0) return -1; + CallScope scope(runtime); + if (!scope.entered()) return -1; if (static_cast(length) > kMaximumEncodedFrameBytes) return -2; - Stream* stream = FindStream(runtime, stream_id); + // The reference is held for the whole `StreamSend` below, so the worker + // cannot free the stream or close its handle underneath this call. + const auto stream = FindStream(runtime, stream_id); if (stream == nullptr || stream->handle == nullptr) return -1; // The bytes are copied because MsQuic reads them after this returns; the @@ -885,21 +1001,24 @@ CULTMESH_API int32_t cultmesh_quic_stream_send_frame( CULTMESH_API void cultmesh_quic_stream_shutdown(void* handle, uint64_t stream_id, uint64_t code) { auto* runtime = static_cast(handle); if (runtime == nullptr) return; - Stream* stream = FindStream(runtime, stream_id); + CallScope scope(runtime); + if (!scope.entered()) return; + const auto stream = FindStream(runtime, stream_id); if (stream == nullptr || stream->handle == nullptr) return; runtime->api->StreamShutdown(stream->handle, QUIC_STREAM_SHUTDOWN_FLAG_ABORT, code); } -// The one blocking crossing. Returns 0 on timeout, 1 with the event filled and -// its payload copied, 2 when `payload_capacity` is too small (the event stays at -// the head of the queue and `out_required` is set), negative on a bad call. This -// is the v1 two-phase poll convention applied to a queue of typed events. +// The one blocking crossing; see section 6 of the header for its returns. The +// call scope is what `cultmesh_quic_runtime_close` waits on: a poller blocked +// here is woken by `closing` and counted out before anything is freed. CULTMESH_API int32_t cultmesh_quic_next_event( void* handle, int32_t timeout_ms, cultmesh_quic_event* out_event, uint8_t* payload, int32_t payload_capacity, int32_t* out_required) { auto* runtime = static_cast(handle); if (runtime == nullptr || out_event == nullptr || out_required == nullptr || payload_capacity < 0) return -1; + CallScope scope(runtime); + if (!scope.entered()) return -1; *out_required = 0; std::unique_lock lock(runtime->gate); @@ -926,6 +1045,8 @@ CULTMESH_API int32_t cultmesh_quic_next_event( CULTMESH_API int32_t cultmesh_quic_last_error(void* handle, char* destination, int32_t capacity) { auto* runtime = static_cast(handle); if (runtime == nullptr || destination == nullptr || capacity <= 0) return -1; + CallScope scope(runtime); + if (!scope.entered()) return -1; std::lock_guard lock(runtime->gate); const size_t count = (std::min)(runtime->error.size(), static_cast(capacity - 1)); std::memcpy(destination, runtime->error.data(), count); @@ -961,7 +1082,6 @@ enum class ClientState : int32_t { struct V1Client { Runtime* runtime = nullptr; - Connection* connection = nullptr; uint64_t connection_id = 0; ClientState state = ClientState::Connecting; std::deque> frames; @@ -1090,13 +1210,11 @@ CULTMESH_API int32_t cultmesh_quic_open( client->runtime = static_cast(runtime_handle); // The pin goes in before the connection starts; see OpenConnection. - Connection* connection = nullptr; - const auto status = OpenConnection(client->runtime, host, port, &client->connection_id, &connection, &pin); + const auto status = OpenConnection(client->runtime, host, port, &client->connection_id, &pin); if (status != 0) { cultmesh_quic_runtime_close(client->runtime); return status; } - client->connection = connection; *result = client.release(); return 0; From 8c418961c45b9c12df9987af0a70b298006bfb2e Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 22:00:06 +0200 Subject: [PATCH 0063/1002] Close the three ABI gaps the bridge left open MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Event 7 was not one per frame. The bridge writes the stream's kind byte itself, that send completed as an anonymous event 7, and a host counting completions saw six for five frames with nothing to tell them apart. The send request now says which send it was; the kind byte's completion is the bridge's own business and is dropped. A send MsQuic released without putting on the wire reports it: event 7 carries a send result in `code`, completed or canceled, so an aborted send is accounted for rather than silently missing. Measured: 32 sends queued under an abort, 32 event 7, 28 canceled and 4 completed. The initiator of a shutdown learned nothing. MsQuic gives it only shutdown-complete, and the bridge swallowed that, so a host could end its own connection and never see the id end. Event 4 now has one emitter — shutdown-complete — and the two initiated-by callbacks record why rather than announcing it. Each connection id gets exactly one event 4, whoever ended it, with the code its side passed, and it is emitted after the id has stopped resolving, so a host told a connection is gone cannot still resolve it on the next line. Return codes inverted by platform. QUIC_STATUS is a negative HRESULT on Windows and a positive errno on POSIX, so a Linux host checking for a negative code saw every failure as success, against a README that promised negative. A MsQuic refusal is now -(1000 + (status & 0xffff)) on both, and cultmesh_quic_last_status hands over the raw bits for diagnostics. On win32-x64 a garbage PKCS12 returns -12032 with last_status 0x80072B18. The v1 exports move with it; the managed connector tests the value against zero and formats it, so the contract it was shipped with holds. Smaller ones, from the same pass: AppendTrace is v1-only and bounded, because a long-lived v2 connection grew that string once per MsQuic event for nothing to read; a listener configuration failure takes the connection out of the map instead of leaving it naming a handle MsQuic is about to close; and next_event refuses a null payload with a non-zero capacity rather than treating the lie as a discard. Soul's C consumer now compiles against the header and asserts its own struct and its eleven bound prototypes against it, and the koffi smoke checks its declarations and the thirteen exports the same way: 20 of 20, seq clean, cancel clean, the v1 gate 3 passed 1 skipped as before. Co-Authored-By: Claude Opus 5 (1M context) --- .../cultmesh_quic_native.cpp | 185 ++++++++++++------ .../include/cultmesh_quic_native.h | 15 +- 2 files changed, 135 insertions(+), 65 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp index 4a2d06ff..a7326e68 100644 --- a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp +++ b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp @@ -119,7 +119,16 @@ struct Connection : std::enable_shared_from_this { uint64_t id = 0; uint64_t listener_id = 0; bool inbound = false; - bool closing = false; + // Written by the host thread in `cultmesh_quic_connection_shutdown`, read on + // an MsQuic worker when the shutdown completes: the code the host passed is + // what its own event 4 has to carry. + std::atomic closing{false}; + std::atomic shutdown_code{0}; + // Why it ended, recorded by whichever initiated-by callback saw it and read + // by shutdown-complete, which is the single emitter of event 4. Both run on + // this connection's own worker, serialized. + std::string shutdown_reason; + int32_t shutdown_status = 0; // Set when MsQuic is closing the handle itself (an app close already in // progress), so the destructor's one-shot close stands down. std::atomic handle_closed{false}; @@ -160,6 +169,9 @@ struct Runtime { std::unordered_map> streams; uint64_t next_id = 1; std::string error; + // The raw platform status behind the last MsQuic refusal, kept because the + // portable return code deliberately throws its bits away. + int32_t last_status = 0; bool closing = false; // Host calls currently inside the library. `cultmesh_quic_runtime_close` // waits for this to reach zero before it touches a handle. @@ -218,6 +230,10 @@ Listener::~Listener() { struct SendRequest { QUIC_BUFFER buffer{}; std::vector bytes; + // Which send this was. The bridge writes the stream's kind byte itself, and + // that completion is not the host's to hear about; event 7 is one per + // `cultmesh_quic_stream_send_frame` and nothing else. + bool is_frame = false; }; std::string Hex(uint64_t value) { @@ -232,6 +248,24 @@ void SetError(Runtime* runtime, const std::string& message) { runtime->error = message; } +// `QUIC_STATUS` never reaches a host. It is a negative HRESULT on Windows and a +// positive errno on POSIX, so a host that checked for a negative value saw every +// Linux failure as success. One negative space on both platforms instead; the +// raw bits go to `cultmesh_quic_last_status`. See section 3 of the header. +int32_t MsQuicCode(QUIC_STATUS status) { + return CULTMESH_QUIC_RESULT_MSQUIC_BASE - + static_cast(static_cast(status) & 0xffffu); +} + +int32_t Refuse(Runtime* runtime, QUIC_STATUS status, const std::string& message) { + if (runtime != nullptr) { + std::lock_guard lock(runtime->gate); + runtime->error = message; + runtime->last_status = static_cast(status); + } + return MsQuicCode(status); +} + // The only way anything reaches the host. Callers must not hold `gate`. void Publish(Runtime* runtime, const cultmesh_quic_event& header, const uint8_t* payload, size_t payload_length) { QueuedEvent queued; @@ -260,9 +294,14 @@ void PublishSimple(Runtime* runtime, uint32_t type, uint64_t listener_id, uint64 Publish(runtime, header, nullptr, 0); } +// v1 diagnostics only, and bounded. A v2 connection has no reader for this, and +// a long-lived one appended to it once per MsQuic event for as long as it lived. +constexpr size_t kMaximumTraceBytes = 512; + void AppendTrace(Connection* connection, const std::string& event) { - if (connection == nullptr) return; + if (connection == nullptr || !connection->has_pin) return; std::lock_guard lock(connection->runtime->gate); + if (connection->trace.size() >= kMaximumTraceBytes) return; if (!connection->trace.empty()) connection->trace += ","; connection->trace += event; } @@ -381,11 +420,22 @@ QUIC_STATUS QUIC_API StreamCallback(HQUIC, void* context, QUIC_STREAM_EVENT* eve } ConsumeFrames(stream); break; - case QUIC_STREAM_EVENT_SEND_COMPLETE: - delete static_cast(event->SEND_COMPLETE.ClientContext); - PublishSimple(runtime, kEventStreamSendComplete, stream->owner->listener_id, stream->owner->id, - stream->id, 0, 0, stream->kind); + case QUIC_STREAM_EVENT_SEND_COMPLETE: { + // Which send finished is the client context's job to say. Without it the + // bridge's own kind byte completed as an anonymous event 7 and the host + // counted six completions for five frames. + auto* request = static_cast(event->SEND_COMPLETE.ClientContext); + const bool is_frame = request != nullptr && request->is_frame; + delete request; + if (is_frame) + PublishSimple(runtime, kEventStreamSendComplete, stream->owner->listener_id, stream->owner->id, + stream->id, + event->SEND_COMPLETE.Canceled + ? CULTMESH_QUIC_SEND_CANCELED + : CULTMESH_QUIC_SEND_COMPLETED, + 0, stream->kind); break; + } case QUIC_STREAM_EVENT_PEER_SEND_SHUTDOWN: if (!stream->buffered.empty()) ShutdownConnectionForProtocolFault(stream->owner, "CultMesh QUIC stream ended with a truncated frame."); @@ -503,33 +553,41 @@ QUIC_STATUS QUIC_API ConnectionCallback(HQUIC handle, void* context, QUIC_CONNEC Publish(runtime, header, der, der_length); return QUIC_STATUS_PENDING; } - case QUIC_CONNECTION_EVENT_SHUTDOWN_INITIATED_BY_TRANSPORT: { - const std::string reason = "CultMesh QUIC connection was shut down by the transport (status=" + + // The two initiated-by events say why a connection is ending, not that it + // has ended; the object and its id are still live here. They record the + // reason and the code, and shutdown-complete below is the one place event 4 + // is emitted, once per connection id, after the id has stopped resolving. + // All three of these run on the connection's own MsQuic worker, serialized, + // which is what lets these fields be plain members. + case QUIC_CONNECTION_EVENT_SHUTDOWN_INITIATED_BY_TRANSPORT: + connection->shutdown_reason = "CultMesh QUIC connection was shut down by the transport (status=" + Hex(static_cast(event->SHUTDOWN_INITIATED_BY_TRANSPORT.Status)) + ", error=" + Hex(event->SHUTDOWN_INITIATED_BY_TRANSPORT.ErrorCode) + ")."; - cultmesh_quic_event header{}; - header.type = kEventConnectionShutdown; - header.listener_id = connection->listener_id; - header.connection_id = connection->id; - header.code = event->SHUTDOWN_INITIATED_BY_TRANSPORT.ErrorCode; - header.status = static_cast(event->SHUTDOWN_INITIATED_BY_TRANSPORT.Status); - Publish(runtime, header, reinterpret_cast(reason.data()), reason.size()); + connection->shutdown_code.store(event->SHUTDOWN_INITIATED_BY_TRANSPORT.ErrorCode); + connection->shutdown_status = static_cast(event->SHUTDOWN_INITIATED_BY_TRANSPORT.Status); break; - } - case QUIC_CONNECTION_EVENT_SHUTDOWN_INITIATED_BY_PEER: { - const std::string reason = "CultMesh QUIC connection was shut down by the peer."; - cultmesh_quic_event header{}; - header.type = kEventConnectionShutdown; - header.listener_id = connection->listener_id; - header.connection_id = connection->id; - header.code = event->SHUTDOWN_INITIATED_BY_PEER.ErrorCode; - Publish(runtime, header, reinterpret_cast(reason.data()), reason.size()); + case QUIC_CONNECTION_EVENT_SHUTDOWN_INITIATED_BY_PEER: + connection->shutdown_reason = "CultMesh QUIC connection was shut down by the peer."; + connection->shutdown_code.store(event->SHUTDOWN_INITIATED_BY_PEER.ErrorCode); break; - } case QUIC_CONNECTION_EVENT_SHUTDOWN_COMPLETE: { const uint64_t connection_id = connection->id; if (event->SHUTDOWN_COMPLETE.AppCloseInProgress) connection->handle_closed.store(true); + // A host that ended the connection itself gets nothing else from MsQuic + // — no initiated-by-peer, no initiated-by-transport — so without this + // its own connection id simply stopped existing and the end of a + // connection was observable only from the other side. + cultmesh_quic_event header{}; + header.type = kEventConnectionShutdown; + header.listener_id = connection->listener_id; + header.connection_id = connection_id; + header.code = connection->shutdown_code.load(); + header.status = connection->shutdown_status; + const std::string reason = connection->shutdown_reason.empty() + ? std::string("CultMesh QUIC connection was shut down by the host.") + : connection->shutdown_reason; DestroyConnection(runtime, connection_id); + Publish(runtime, header, reinterpret_cast(reason.data()), reason.size()); break; } default: @@ -561,6 +619,11 @@ QUIC_STATUS QUIC_API ListenerCallback(HQUIC, void* context, QUIC_LISTENER_EVENT* if (QUIC_FAILED(status)) { SetError(runtime, "CultMesh QUIC inbound connection configuration failed (status=" + Hex(static_cast(status)) + ")."); + // Returning a failure here is MsQuic's signal to reject and close + // this connection itself, so the entry made a moment ago has to go + // with it rather than sitting in the map naming a dead handle. + raw->handle_closed.store(true); + DestroyConnection(runtime, raw->id); return status; } PublishSimple(runtime, kEventListenerNewConnection, listener->id, raw->id, 0, 0, 0); @@ -635,9 +698,8 @@ int32_t OpenConnection(Runtime* runtime, const char* host, uint16_t port, uint64 auto status = EnsureClientConfiguration(runtime); if (QUIC_FAILED(status)) { - SetError(runtime, "CultMesh QUIC client configuration failed (status=" + + return Refuse(runtime, status, "CultMesh QUIC client configuration failed (status=" + Hex(static_cast(status)) + ")."); - return static_cast(status); } auto connection = std::make_shared(); @@ -651,9 +713,8 @@ int32_t OpenConnection(Runtime* runtime, const char* host, uint16_t port, uint64 status = runtime->api->ConnectionOpen(runtime->registration, ConnectionCallback, raw, &raw->handle); if (QUIC_FAILED(status)) { - SetError(runtime, "CultMesh QUIC connection open failed (status=" + + return Refuse(runtime, status, "CultMesh QUIC connection open failed (status=" + Hex(static_cast(status)) + ")."); - return static_cast(status); } { std::lock_guard lock(runtime->gate); @@ -663,12 +724,11 @@ int32_t OpenConnection(Runtime* runtime, const char* host, uint16_t port, uint64 status = runtime->api->ConnectionStart( raw->handle, runtime->client_configuration, QUIC_ADDRESS_FAMILY_UNSPEC, host, port); if (QUIC_FAILED(status)) { - SetError(runtime, "CultMesh QUIC connection start failed (status=" + - Hex(static_cast(status)) + ")."); // The map's reference goes and this local one goes with the scope; the // handle is closed by whichever of the two drops last, exactly once. DestroyConnection(runtime, raw->id); - return static_cast(status); + return Refuse(runtime, status, "CultMesh QUIC connection start failed (status=" + + Hex(static_cast(status)) + ")."); } *out_connection_id = raw->id; @@ -686,8 +746,10 @@ CULTMESH_API int32_t cultmesh_quic_runtime_open(const char* app_name, void** out *out_runtime = nullptr; auto runtime = std::make_unique(); + // No runtime yet to hang `last_status` on, so these two refusals lose the + // raw bits. Everything after this point keeps them. auto status = MsQuicOpenVersion(kApiVersion, reinterpret_cast(&runtime->api)); - if (QUIC_FAILED(status)) return static_cast(status); + if (QUIC_FAILED(status)) return MsQuicCode(status); const QUIC_REGISTRATION_CONFIG registration_config = { (app_name != nullptr && *app_name != '\0') ? app_name : "GameCult.Mesh.Quic.Native", @@ -696,7 +758,7 @@ CULTMESH_API int32_t cultmesh_quic_runtime_open(const char* app_name, void** out status = runtime->api->RegistrationOpen(®istration_config, &runtime->registration); if (QUIC_FAILED(status)) { MsQuicClose(runtime->api); - return static_cast(status); + return MsQuicCode(status); } *out_runtime = runtime.release(); @@ -784,9 +846,8 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( auto status = runtime->api->ConfigurationOpen( runtime->registration, &alpn, 1, &settings, sizeof(settings), nullptr, &listener->configuration); if (QUIC_FAILED(status)) { - SetError(runtime, "CultMesh QUIC listener configuration failed (status=" + + return Refuse(runtime, status, "CultMesh QUIC listener configuration failed (status=" + Hex(static_cast(status)) + ")."); - return static_cast(status); } // PKCS12 is the one credential type Schannel and OpenSSL both take, which @@ -802,17 +863,15 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( credentials.Flags = QUIC_CREDENTIAL_FLAG_NONE; status = runtime->api->ConfigurationLoadCredential(listener->configuration, &credentials); if (QUIC_FAILED(status)) { - SetError(runtime, "CultMesh QUIC listener certificate could not be loaded (status=" + + return Refuse(runtime, status, "CultMesh QUIC listener certificate could not be loaded (status=" + Hex(static_cast(status)) + ")."); - return static_cast(status); } Listener* raw = listener.get(); status = runtime->api->ListenerOpen(runtime->registration, ListenerCallback, raw, &raw->handle); if (QUIC_FAILED(status)) { - SetError(runtime, "CultMesh QUIC listener open failed (status=" + + return Refuse(runtime, status, "CultMesh QUIC listener open failed (status=" + Hex(static_cast(status)) + ")."); - return static_cast(status); } QUIC_ADDR address{}; @@ -833,10 +892,9 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( QUIC_BUFFER listener_alpn = AlpnBuffer(); status = runtime->api->ListenerStart(raw->handle, &listener_alpn, 1, &address); if (QUIC_FAILED(status)) { - SetError(runtime, "CultMesh QUIC listener start failed (status=" + - Hex(static_cast(status)) + ")."); Detach(runtime->gate, runtime->listeners, raw->id); - return static_cast(status); + return Refuse(runtime, status, "CultMesh QUIC listener start failed (status=" + + Hex(static_cast(status)) + ")."); } // Port 0 means "pick one"; the host needs the chosen port to advertise it. @@ -844,10 +902,9 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( uint32_t bound_size = sizeof(bound); status = runtime->api->GetParam(raw->handle, QUIC_PARAM_LISTENER_LOCAL_ADDRESS, &bound_size, &bound); if (QUIC_FAILED(status)) { - SetError(runtime, "CultMesh QUIC listener address could not be read (status=" + - Hex(static_cast(status)) + ")."); Detach(runtime->gate, runtime->listeners, raw->id); - return static_cast(status); + return Refuse(runtime, status, "CultMesh QUIC listener address could not be read (status=" + + Hex(static_cast(status)) + ")."); } if (out_bound_port != nullptr) *out_bound_port = QuicAddrGetPort(&bound); *out_listener_id = raw->id; @@ -886,9 +943,8 @@ CULTMESH_API int32_t cultmesh_quic_connection_certificate_complete( accept != 0 ? static_cast(1) : static_cast(0), accept != 0 ? QUIC_TLS_ALERT_CODE_SUCCESS : QUIC_TLS_ALERT_CODE_BAD_CERTIFICATE); if (QUIC_FAILED(status)) { - SetError(runtime, "CultMesh QUIC certificate validation completion failed (status=" + + return Refuse(runtime, status, "CultMesh QUIC certificate validation completion failed (status=" + Hex(static_cast(status)) + ")."); - return static_cast(status); } return 0; } @@ -899,8 +955,10 @@ CULTMESH_API void cultmesh_quic_connection_shutdown(void* handle, uint64_t conne CallScope scope(runtime); if (!scope.entered()) return; const auto connection = FindConnection(runtime, connection_id); - if (connection == nullptr || connection->closing) return; - connection->closing = true; + if (connection == nullptr || connection->closing.exchange(true)) return; + // Kept for the shutdown-complete callback: this is the code the initiator's + // own event 4 carries, matching the one the peer sees. + connection->shutdown_code.store(code); if (connection->handle != nullptr) runtime->api->ConnectionShutdown(connection->handle, QUIC_CONNECTION_SHUTDOWN_FLAG_NONE, code); } @@ -928,9 +986,8 @@ CULTMESH_API int32_t cultmesh_quic_stream_open( connection->handle, QUIC_STREAM_OPEN_FLAG_UNIDIRECTIONAL, StreamCallback, raw, &raw->handle); if (QUIC_FAILED(status)) { - SetError(runtime, "CultMesh QUIC stream open failed (status=" + + return Refuse(runtime, status, "CultMesh QUIC stream open failed (status=" + Hex(static_cast(status)) + ")."); - return static_cast(status); } // In the map before it starts. `StreamStart` can reach shutdown-complete on // an MsQuic worker before it returns here, and that callback has to find the @@ -941,10 +998,9 @@ CULTMESH_API int32_t cultmesh_quic_stream_open( } status = runtime->api->StreamStart(raw->handle, QUIC_STREAM_START_FLAG_IMMEDIATE); if (QUIC_FAILED(status)) { - SetError(runtime, "CultMesh QUIC stream start failed (status=" + - Hex(static_cast(status)) + ")."); DestroyStream(runtime, raw->id); - return static_cast(status); + return Refuse(runtime, status, "CultMesh QUIC stream start failed (status=" + + Hex(static_cast(status)) + ")."); } // The kind byte is the first thing on the stream, which is what the peer's @@ -956,9 +1012,8 @@ CULTMESH_API int32_t cultmesh_quic_stream_open( status = runtime->api->StreamSend(raw->handle, &request->buffer, 1, QUIC_SEND_FLAG_NONE, request); if (QUIC_FAILED(status)) { delete request; - SetError(runtime, "CultMesh QUIC stream kind could not be sent (status=" + + return Refuse(runtime, status, "CultMesh QUIC stream kind could not be sent (status=" + Hex(static_cast(status)) + ")."); - return static_cast(status); } *out_stream_id = raw->id; @@ -981,6 +1036,7 @@ CULTMESH_API int32_t cultmesh_quic_stream_send_frame( // 4-byte LE length prefix is the QUIC stream framing, and it is added here // so that framing lives in one place for both directions. auto* request = new SendRequest(); + request->is_frame = true; request->bytes.resize(sizeof(uint32_t) + static_cast(length)); WriteUInt32LittleEndian(request->bytes.data(), static_cast(length)); std::memcpy(request->bytes.data() + sizeof(uint32_t), encoded_frame, static_cast(length)); @@ -991,9 +1047,8 @@ CULTMESH_API int32_t cultmesh_quic_stream_send_frame( const auto status = runtime->api->StreamSend(stream->handle, &request->buffer, 1, flags, request); if (QUIC_FAILED(status)) { delete request; - SetError(runtime, "CultMesh QUIC frame send failed (status=" + + return Refuse(runtime, status, "CultMesh QUIC frame send failed (status=" + Hex(static_cast(status)) + ")."); - return static_cast(status); } return 0; } @@ -1017,6 +1072,9 @@ CULTMESH_API int32_t cultmesh_quic_next_event( auto* runtime = static_cast(handle); if (runtime == nullptr || out_event == nullptr || out_required == nullptr || payload_capacity < 0) return -1; + // A null buffer with a non-zero capacity is a lie about the buffer. Taking + // it meant the event was consumed and its payload silently dropped. + if (payload == nullptr && payload_capacity > 0) return -1; CallScope scope(runtime); if (!scope.entered()) return -1; *out_required = 0; @@ -1054,6 +1112,15 @@ CULTMESH_API int32_t cultmesh_quic_last_error(void* handle, char* destination, i return static_cast(count); } +CULTMESH_API int32_t cultmesh_quic_last_status(void* handle) { + auto* runtime = static_cast(handle); + if (runtime == nullptr) return 0; + CallScope scope(runtime); + if (!scope.entered()) return 0; + std::lock_guard lock(runtime->gate); + return runtime->last_status; +} + // --------------------------------------------------------------------------- // C ABI v1: the Unity shim. Windows only, by the same construction as its only // caller (`CultMeshNativeQuicRealtimeTransport.CanConnect` is Windows-gated). diff --git a/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h b/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h index bfe4f41f..1d984a97 100644 --- a/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h +++ b/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h @@ -95,11 +95,12 @@ enum cultmesh_quic_event_type { /* Payload: the peer's DER certificate. The handshake is blocked until the * host answers with `cultmesh_quic_connection_certificate_complete`. */ CULTMESH_QUIC_EVENT_CONNECTION_CERTIFICATE_RECEIVED = 3, - /* The connection is gone, whoever ended it. Payload: a UTF-8 reason. - * `code` is the QUIC application error code — the peer's when the peer - * ended it, and the code the host passed to `cultmesh_quic_connection_shutdown` - * when the host did. Emitted exactly once per connection id, including for - * the initiator of a local shutdown: every connection id's end is observable. */ + /* The connection is gone, whoever ended it, and its id no longer resolves. + * Payload: a UTF-8 reason. `code` is the QUIC application error code — the + * peer's when the peer ended it, and the code the host passed to + * `cultmesh_quic_connection_shutdown` when the host did. Emitted exactly + * once per connection id, including for the initiator of a local shutdown: + * every connection id's end is observable from the host that owns it. */ CULTMESH_QUIC_EVENT_CONNECTION_SHUTDOWN = 4, /* An inbound stream's first byte named its kind. `stream_id`, `stream_kind`. */ CULTMESH_QUIC_EVENT_STREAM_STARTED = 5, @@ -269,7 +270,9 @@ CULTMESH_QUIC_API void cultmesh_quic_stream_shutdown( /* The one blocking crossing. * - * 0 nothing within `timeout_ms` (or the runtime is closing) + * 0 nothing within `timeout_ms`. A poller already blocked here when + * `cultmesh_quic_runtime_close` starts is woken and returns 0; one that + * arrives after it starts is refused with -1 like any other call. * 1 `*out_event` filled and up to `payload_capacity` payload bytes copied; * `*out_required` is the payload size * 2 `payload_capacity` is too small. Nothing is consumed and nothing is From c729dff2ee82a2a87ad5a9c65ec8a006d1b6f637 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 22:04:27 +0200 Subject: [PATCH 0064/1002] Pin the Windows MsQuic to the OpenSSL build, and both of its digests Q9 ruled A. The Schannel MsQuic refuses QUIC_CREDENTIAL_TYPE_CERTIFICATE_PKCS12 with QUIC_STATUS_NOT_SUPPORTED, and PKCS12 is the only credential type a provider has on both platforms, so a Windows provider could not open a listener against the runtime this repo was shipping. The same bridge binary passes all twenty smoke checks and the v1 gate against the OpenSSL build, which is what Soul verified and what this now downloads. Two digests, not one. The zip is pinned by FEE9A664 and 19,179,817 bytes; the msquic.dll inside it by C17C6581 and 4,181,856 bytes. The earlier report and the cut map's first record put the zip's digest on the DLL, which is a pin that checks the archive and then ships a file nobody looked at. Sizes ride along with both, because a digest that fails tells you less than a digest and a length that fail together. The CRT is linked statically. A Node or Unity host without the Visual C++ redistributable cannot load a DLL that imports vcruntime140.dll, and Windows reports that as "the specified module could not be found" while naming the module that was found. Confirmed on the rebuild: msquic.dll, CRYPT32, ntdll, KERNEL32, and no CRT import at all. The DLL goes from 83,456 to 302,080 bytes, which is the price of the host not needing anything installed. The Unity plugin's committed msquic.dll is still the Schannel one and this does not touch it; the next build-unity-package.ps1 run is what replaces it, and that is not in this batch. Co-Authored-By: Claude Opus 5 (1M context) --- .../GameCult.Mesh.Quic.Native/CMakeLists.txt | 9 +++- native/GameCult.Mesh.Quic.Native/README.md | 13 ++++- scripts/build-quic-native.ps1 | 49 +++++++++++++------ scripts/build-unity-package.ps1 | 2 +- 4 files changed, 54 insertions(+), 19 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/CMakeLists.txt b/native/GameCult.Mesh.Quic.Native/CMakeLists.txt index f08b2f4a..936002cc 100644 --- a/native/GameCult.Mesh.Quic.Native/CMakeLists.txt +++ b/native/GameCult.Mesh.Quic.Native/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.24) project(gamecult_mesh_quic_native LANGUAGES CXX) -# Two platforms, one source. Windows takes MsQuic from the pinned Schannel NuGet +# Two platforms, one source. Windows takes MsQuic from the pinned OpenSSL NuGet # layout (MSQUIC_ROOT); Linux takes it from the extracted libmsquic deb, whose # headers and library land in unrelated places, so they are named separately. if(NOT WIN32 AND NOT (CMAKE_SYSTEM_NAME STREQUAL "Linux")) @@ -16,8 +16,13 @@ target_include_directories(gamecult_mesh_quic_native PUBLIC include) if(WIN32) if(NOT DEFINED MSQUIC_ROOT) - message(FATAL_ERROR "MSQUIC_ROOT must point at the extracted Microsoft.Native.Quic.MsQuic.Schannel package build/native directory") + message(FATAL_ERROR "MSQUIC_ROOT must point at the extracted Microsoft.Native.Quic.MsQuic.OpenSSL package build/native directory") endif() + # Static CRT. A Node or Unity host without the Visual C++ redistributable + # installed cannot load a DLL that imports vcruntime140.dll, and the failure + # arrives as "the specified module could not be found" with nothing naming the + # missing runtime. The bridge carries its own instead. + set_property(TARGET gamecult_mesh_quic_native PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded") target_compile_definitions(gamecult_mesh_quic_native PRIVATE WIN32_LEAN_AND_MEAN NOMINMAX) target_include_directories(gamecult_mesh_quic_native PRIVATE "${MSQUIC_ROOT}/include") target_link_directories(gamecult_mesh_quic_native PRIVATE "${MSQUIC_ROOT}/lib/x64") diff --git a/native/GameCult.Mesh.Quic.Native/README.md b/native/GameCult.Mesh.Quic.Native/README.md index 4f6fa498..adc256a0 100644 --- a/native/GameCult.Mesh.Quic.Native/README.md +++ b/native/GameCult.Mesh.Quic.Native/README.md @@ -69,8 +69,17 @@ Windows x64, from the repo root: powershell -File scripts/build-quic-native.ps1 -MsQuic comes from a pinned NuGet package verified by SHA-256, and the build uses -MSVC with `/Brepro` so a rebuild reproduces the committed Unity plugin DLL. +MsQuic comes from `Microsoft.Native.Quic.MsQuic.OpenSSL` 2.5.9, pinned twice: the +NuGet zip by digest and size, and the `msquic.dll` inside it by digest and size, +because the archive is what the download is checked against and the DLL is what +actually ships beside the bridge. The OpenSSL flavour rather than Schannel +because Schannel's MsQuic refuses `QUIC_CREDENTIAL_TYPE_CERTIFICATE_PKCS12`, +which is the only credential type a provider has on both platforms. + +The build uses MSVC with `/Brepro` so a rebuild reproduces the committed Unity +plugin DLL, and links the CRT statically (`/MT`). A Node or Unity host without +the Visual C++ redistributable cannot load a DLL that imports `vcruntime140.dll`, +and the failure it reports names no missing runtime; the bridge carries its own. Linux x64, on a Debian 13 host: diff --git a/scripts/build-quic-native.ps1 b/scripts/build-quic-native.ps1 index f1b35787..553152d0 100644 --- a/scripts/build-quic-native.ps1 +++ b/scripts/build-quic-native.ps1 @@ -14,9 +14,21 @@ if ($Architecture -ne "x64") { $repoRoot = Split-Path -Parent $PSScriptRoot $version = "2.5.9" -$expectedPackageSha256 = "9877A919E1AA73AA4800F1E8A06B6539021F376228910138EB04540CD956617B" -$cacheRoot = Join-Path $repoRoot "artifacts\dependencies\msquic-schannel-$version" -$packagePath = Join-Path $cacheRoot "Microsoft.Native.Quic.MsQuic.Schannel.$version.zip" +# OpenSSL, not Schannel (Q9 ruled A). The Schannel build of MsQuic refuses +# QUIC_CREDENTIAL_TYPE_CERTIFICATE_PKCS12 with QUIC_STATUS_NOT_SUPPORTED, which +# is the only credential type a provider has on both platforms, so a Windows +# provider could not open a listener at all. The identical bridge binary passes +# the whole v2 smoke and the v1 gate against this runtime. +# +# Two digests, because they answer different questions. The zip is what the +# download is pinned to; the DLL is what actually ships beside the bridge, and +# pinning only the archive leaves the file nobody checked. +$expectedPackageSha256 = "FEE9A664C0052DEEE66D40CED2E19BFE20BC423DE5AE5234CFC0CEBC22CA3F5E" +$expectedPackageBytes = 19179817 +$expectedRuntimeSha256 = "C17C65813FE007EB486A5270D244F3659261355795B27ABB99BD19FF77539263" +$expectedRuntimeBytes = 4181856 +$cacheRoot = Join-Path $repoRoot "artifacts\dependencies\msquic-openssl-$version" +$packagePath = Join-Path $cacheRoot "Microsoft.Native.Quic.MsQuic.OpenSSL.$version.zip" $extractRoot = Join-Path $cacheRoot "package" $nativeRoot = Join-Path $extractRoot "build\native" $buildRoot = Join-Path $repoRoot "artifacts\quic-native-build\$Architecture\$Configuration" @@ -26,27 +38,36 @@ $outputRoot = if ([IO.Path]::IsPathRooted($OutputDirectory)) { Join-Path $repoRoot $OutputDirectory } +function Assert-Pinned { + param([string] $Path, [string] $ExpectedSha256, [long] $ExpectedBytes, [string] $What) + $actualBytes = (Get-Item -LiteralPath $Path).Length + $sha256 = [Security.Cryptography.SHA256]::Create() + try { + $stream = [IO.File]::OpenRead($Path) + try { $actualSha256 = [BitConverter]::ToString($sha256.ComputeHash($stream)).Replace("-", "") } + finally { $stream.Dispose() } + } finally { $sha256.Dispose() } + if ($actualSha256 -ne $ExpectedSha256 -or $actualBytes -ne $ExpectedBytes) { + throw ("$What does not match the pinned release: " + + "expected $ExpectedSha256 ($ExpectedBytes bytes), got $actualSha256 ($actualBytes bytes).") + } +} + New-Item -ItemType Directory -Force -Path $cacheRoot | Out-Null if (-not (Test-Path -LiteralPath $packagePath)) { & curl.exe -L --fail --silent --show-error ` -o $packagePath ` - "https://www.nuget.org/api/v2/package/Microsoft.Native.Quic.MsQuic.Schannel/$version" + "https://www.nuget.org/api/v2/package/Microsoft.Native.Quic.MsQuic.OpenSSL/$version" if ($LASTEXITCODE -ne 0) { throw "MsQuic package download failed with exit code $LASTEXITCODE" } } -$sha256 = [Security.Cryptography.SHA256]::Create() -try { - $packageBytes = [IO.File]::ReadAllBytes($packagePath) - $packageSha256 = [BitConverter]::ToString($sha256.ComputeHash($packageBytes)).Replace("-", "") -} finally { - $sha256.Dispose() -} -if ($packageSha256 -ne $expectedPackageSha256) { - throw "MsQuic package digest does not match the pinned release." -} +Assert-Pinned -Path $packagePath -ExpectedSha256 $expectedPackageSha256 ` + -ExpectedBytes $expectedPackageBytes -What "The MsQuic NuGet package" if (-not (Test-Path -LiteralPath (Join-Path $nativeRoot "include\msquic.h"))) { if (Test-Path -LiteralPath $extractRoot) { Remove-Item -LiteralPath $extractRoot -Recurse -Force } Expand-Archive -LiteralPath $packagePath -DestinationPath $extractRoot } +Assert-Pinned -Path (Join-Path $nativeRoot "bin\x64\msquic.dll") ` + -ExpectedSha256 $expectedRuntimeSha256 -ExpectedBytes $expectedRuntimeBytes -What "The MsQuic runtime DLL" cmake -S (Join-Path $repoRoot "native\GameCult.Mesh.Quic.Native") -B $buildRoot -A x64 ` "-DMSQUIC_ROOT=$($nativeRoot.Replace('\', '/'))" diff --git a/scripts/build-unity-package.ps1 b/scripts/build-unity-package.ps1 index 8e425066..377a1586 100644 --- a/scripts/build-unity-package.ps1 +++ b/scripts/build-unity-package.ps1 @@ -193,4 +193,4 @@ $manifest = Get-Content -LiteralPath (Join-Path $outputRoot "package.json") -Raw Write-Host "CultLib Unity package: $outputRoot" Write-Host "Package: $($manifest.name)@$($manifest.version)" Write-Host "Managed assemblies: $($expectedAssemblies.Count)" -Write-Host "Native realtime: MsQuic Schannel 2.5.9 (Windows x64)" +Write-Host "Native realtime: MsQuic OpenSSL 2.5.9 (Windows x64)" From e1ce4915b6f2b4aee573f6e79023fa722f82b6e0 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 22:24:51 +0200 Subject: [PATCH 0065/1002] Record the Cut 3 fix batch The bridge keeps an object alive across the call that names it, closes each handle exactly once, and quiesces before it frees. The contract is a header hosts and tests are checked against. Return codes are negative on every platform, one completion per frame, and every connection's end is observable. One mutation survived by construction and is handed to Soul to rule on. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 34 ++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 5832bd94..ff37affa 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -181,6 +181,40 @@ close.** Found, in a fix batch (Opus): The Q9 pin change and the manifest's stale commit line ride in the same batch. +**The Cut 3 fix batch landed** (Opus; its commits are signed Opus 5, which +is what ran) at `9a01321` (`include/cultmesh_quic_native.h`, 305 lines: +the event struct with offsets static-asserted, every export, the id and +return-code conventions, the lifetime and threading rules; the koffi smoke +and Soul's C consumer are checked against it), `47aa7b6` (objects kept +alive across the call that names them: one `shared_ptr` per map entry, a +lookup returns a reference the caller holds for the whole MsQuic call, the +worker drops only the map's reference, the handle closes exactly once in +the destructor under the exchange guard, a stream owns its connection so +close order is structural; `runtime_close` marks closing, wakes pollers, +waits for `active_calls == 0`, and refuses any later call), `8c41896` (the +ABI gaps: one event 7 per frame send with `Canceled` distinct; event 4 +uniform at completion for every path, the initiator included, published +after the id stops resolving; return codes mapped negative on every +platform with `cultmesh_quic_last_status` for the raw status, thirteen v2 +exports now; a null payload with capacity refused; a stream in the map +before start; failed listeners leaving nothing) and `c729dff` (the OpenSSL +pin with both digests, `/MT` so the DLL imports no CRT, manifests with a +real commit line). Host and target: win32-x64 on the workstation, 20 of 20 +smoke checks, the C consumer's seq, cancel, stress (16,384 frames, zero +lost or reordered), race 400×20 with zero crashes, closerace 20×512, the v1 +gate 3 passed 1 skipped, 18 exports; linux-x64 in the workstation's Docker +`debian:13`, development loop only, the same set plus ASan clean on every +mode, 13 exports. 22 of 23 mutations killed under two green controls. +**L3 survived**: deleting the quiesce wait cannot be caught, because the +wake happens under the lock and every poller drains before teardown; right +by construction and by reading, unfalsifiable by this harness. Soul rules +whether that stands or a dev-only probe asserts the invariant. Open after +the batch: the Unity plugin's `msquic.dll` is still Schannel until the +package build runs; the Schannel dependency cache is orphaned; the v1 +return-code values changed while the zero-versus-nonzero contract held. +Bridge 302,080 bytes / `f4c5f644…` (win32-x64, static CRT), 108,128 / +`61d5b96e…` (linux-x64). Soul rerun in flight. + **Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative greps, all twelve mutations rerun and killed, the control catching a truncated write, the equivalent mutant confirmed (Node 24 WebCrypto refuses From 27ae3cb292ca88a0a9b82f2f4395dab99a34987d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 22:58:15 +0200 Subject: [PATCH 0066/1002] Record Soul's second pass, and rule the surviving mutation killable The cut does not close. The lifetime model was right in shape and wrong by one line: the last call notifies after it has released the lock, so the runtime can be destroyed in between and the wake lands on freed memory. A sanitizer found it on the unmutated bridge. The mutation that survived by construction is ruled killable rather than accepted. Under a sanitizer with pollers blocked mid-copy it fails four times in forty-eight, so a dev-only assertion makes it fail every time instead. Two further mutations are honest only on the sanitizer target and the table must say so, because a mutation whose kill depends on the target is not killed until it runs there. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 55 ++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index ff37affa..257998bc 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -21,7 +21,8 @@ landed at `c64a2da`, `6c933d0`, `fe2555d`. TypeScript-written frame vectors, each decoded by the other side, the C# test reading both with the reference alone) and `ae29910` (37 entries as a third runner target; 72 of 72 across the three targets killed, one -equivalent named). Soul in flight. Hands' discrepancies, kept: the +equivalent named). Closed 2026-09-16 after Soul's pass and one fix batch. +Hands' discrepancies, kept: the 65,535-byte identity and 64 MiB payload ceilings recorded as a build rule plus the digest of the whole encoding rather than half a megabyte of literal text; the Body has five refusal messages where the spec listed six @@ -112,7 +113,7 @@ the committed MIT text; the deb ships no unversioned `.so` symlink, so the script creates one; four Linux runtime libraries are load-bearing and now in the README. Soul in flight. -**Q9, the one fork Cut 3 hit, undecided until the operator rules.** The +**Q9, the one fork Cut 3 hit, ruled A on 2026-09-16 (detail below).** The pinned Windows MsQuic is the Schannel flavour, and Schannel does not implement `QUIC_CREDENTIAL_TYPE_CERTIFICATE_PKCS12`: `ConfigurationLoadCredential` returns `QUIC_STATUS_NOT_SUPPORTED`, so the provider role cannot open a @@ -213,7 +214,55 @@ the batch: the Unity plugin's `msquic.dll` is still Schannel until the package build runs; the Schannel dependency cache is orphaned; the v1 return-code values changed while the zero-versus-nonzero contract held. Bridge 302,080 bytes / `f4c5f644…` (win32-x64, static CRT), 108,128 / -`61d5b96e…` (linux-x64). Soul rerun in flight. +`61d5b96e…` (linux-x64). + +**Soul's second pass on the fix batch** (Fable; `soul3b-*` in the session +scratchpad, its C consumer extended with close, re-entry and completion-race +scenarios, ThreadSanitizer and AddressSanitizer on linux-x64 in the +workstation's Docker `debian:13`). Held: the lifetime model, race 400×20 with +zero crashes on both targets and ASan clean on every mode; 16,384 of 16,384 +frames under stress with none lost or reordered; one completion event per +frame with cancellation distinct; the completion event uniform at the end of +every connection, with its mutant killed on both targets; negative return +codes everywhere; the null-payload refusal; the header compiling clean as +both C and C++ under maximum warnings on two compilers with no padding and +no implicit conversion; no C runtime import; the OpenSSL pin re-downloaded +and both digests equal; the version-one gate green beside either flavour of +the library. **The cut does not close at `c729dff`.** Findings: + +- **The quiesce is one line short, and it is a use-after-free.** `~CallScope` + decrements the call count under the lock, releases it, and only then + notifies. The closer's predicate is already true, so if that last poller is + preempted in between, the runtime is destroyed and the notify lands on a + freed condition variable. ThreadSanitizer caught it on the **unmutated** + bridge, so the previous batch's model was right in shape and wrong by one + line. Confirmed, medium, and the blocker. +- **The header oversells the return code.** It is portably negative, not + portably meaningful: the same failure is −12032 on Windows and −1126 on + Linux, and the Windows mask collides two distinct statuses onto −1002. The + sign is the contract; the magnitude is diagnostic. Low, wording. +- **The previous batch's own README claims a rebuild reproduces the committed + Unity plugin.** It does not: that plugin is the older Schannel build at + 40,448 bytes with a C runtime import, against 302,080 bytes without one + today. Low, and exactly the stale-artifact trap. The current build does + reproduce itself. +- **A Windows status sign-extends in diagnostics**, printing sixteen hex + digits. Trivial. + +**L3 is ruled: it becomes killable, it is not accepted as unfalsifiable.** +Soul established the survival was a harness limit rather than a proof of +correctness. Under AddressSanitizer with pollers blocked mid-copy of large +frames, deleting the quiesce wait hit use-after-free four times in +forty-eight attempts, while the release scenario never observed it. So a +dev-only assertion now aborts when the call count is non-zero after the +quiesce block, which fires deterministically with enough blocked pollers and +makes the mutation die by the existing scenario; the sanitizer run stays as +the second check. That assertion does not cover the defect above, where the +count has already reached zero. **Two mutations are honest only on the +sanitizer target:** the pop-then-copy one and the closed-handle one survive +on Windows release and kill three times of three under AddressSanitizer, so +the entries table must say which target each is honest on. A mutation whose +kill depends on the target is not killed until it runs there. **Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative greps, all twelve mutations rerun and killed, the control catching a From a4753f4e9fd35ca0326512d9999cc81c0ff3e103 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 23:18:26 +0200 Subject: [PATCH 0067/1002] Notify the closer while still holding the gate A call scope used to drop the lock after decrementing the in-flight count and notify afterwards. That left a window: the closer's predicate is already true once the count reaches zero, so a scope preempted between the unlock and the notify could come back to find the runtime torn down and signal a condition variable that no longer exists. ThreadSanitizer reports it as a broadcast racing the destroy. The decrement and the notify now happen under one lock guard. The closer cannot return from its wait until the scope releases the gate, so the condition variable is alive for as long as anything can signal it. Co-Authored-By: Claude Opus 5 --- .../cultmesh_quic_native.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp index a7326e68..14ebc344 100644 --- a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp +++ b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp @@ -190,12 +190,16 @@ public: ++runtime_->active_calls; entered_ = true; } + // The notify stays under `gate`, and that is the whole point of it. Released + // first, the closer's predicate is already true, so it can return from its + // wait, run the teardown and destroy the runtime — condition variable + // included — before this thread reaches the notify. Holding the lock across + // both means the closer cannot leave `signal.wait` until this scope has let + // go, so the condition variable is still alive when it is signalled. ~CallScope() { if (!entered_) return; - { - std::lock_guard lock(runtime_->gate); - --runtime_->active_calls; - } + std::lock_guard lock(runtime_->gate); + --runtime_->active_calls; runtime_->signal.notify_all(); } CallScope(const CallScope&) = delete; From dc9e12cd38106591443a20f3fbbc857e951013a7 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 23:20:55 +0200 Subject: [PATCH 0068/1002] Print a Windows status without sign-extending it Every error sentence widened its QUIC_STATUS straight to uint64_t. On Windows that status is a signed HRESULT, so the sentence carried 0xFFFFFFFF80072B18 where the status is 0x80072B18. The status is 32 bits on both platforms and now goes through uint32_t on its way in. Diagnostics only: the v1 managed connector matches on the wording of these sentences, not on the hex. Co-Authored-By: Claude Opus 5 --- .../cultmesh_quic_native.cpp | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp index 14ebc344..b5aacb16 100644 --- a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp +++ b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp @@ -240,6 +240,10 @@ struct SendRequest { bool is_frame = false; }; +// A `QUIC_STATUS` reaches this through `uint32_t`, never straight to `uint64_t`: +// it is a signed HRESULT on Windows, and widening it signed printed every +// Windows failure as `0xFFFFFFFF80072B18`. The status is 32 bits on both +// platforms and is read as 32 bits here. std::string Hex(uint64_t value) { std::ostringstream text; text << "0x" << std::hex << std::uppercase << value; @@ -522,7 +526,7 @@ QUIC_STATUS QUIC_API ConnectionCallback(HQUIC handle, void* context, QUIC_CONNEC case QUIC_CONNECTION_EVENT_PEER_CERTIFICATE_RECEIVED: { const auto* encoded = reinterpret_cast(event->PEER_CERTIFICATE_RECEIVED.Certificate); AppendTrace(connection, "certificate-status=" + - Hex(static_cast(event->PEER_CERTIFICATE_RECEIVED.DeferredStatus))); + Hex(static_cast(event->PEER_CERTIFICATE_RECEIVED.DeferredStatus))); #if defined(_WIN32) if (connection->has_pin) { // The v1 contract: the pin decision is made here, in C, and the host @@ -538,7 +542,7 @@ QUIC_STATUS QUIC_API ConnectionCallback(HQUIC handle, void* context, QUIC_CONNEC matches ? QUIC_TLS_ALERT_CODE_SUCCESS : QUIC_TLS_ALERT_CODE_BAD_CERTIFICATE); if (QUIC_FAILED(completion)) { SetError(runtime, "CultMesh QUIC certificate validation completion failed (status=" + - Hex(static_cast(completion)) + ")."); + Hex(static_cast(completion)) + ")."); return completion; } return QUIC_STATUS_PENDING; @@ -565,7 +569,7 @@ QUIC_STATUS QUIC_API ConnectionCallback(HQUIC handle, void* context, QUIC_CONNEC // which is what lets these fields be plain members. case QUIC_CONNECTION_EVENT_SHUTDOWN_INITIATED_BY_TRANSPORT: connection->shutdown_reason = "CultMesh QUIC connection was shut down by the transport (status=" + - Hex(static_cast(event->SHUTDOWN_INITIATED_BY_TRANSPORT.Status)) + ", error=" + + Hex(static_cast(event->SHUTDOWN_INITIATED_BY_TRANSPORT.Status)) + ", error=" + Hex(event->SHUTDOWN_INITIATED_BY_TRANSPORT.ErrorCode) + ")."; connection->shutdown_code.store(event->SHUTDOWN_INITIATED_BY_TRANSPORT.ErrorCode); connection->shutdown_status = static_cast(event->SHUTDOWN_INITIATED_BY_TRANSPORT.Status); @@ -622,7 +626,7 @@ QUIC_STATUS QUIC_API ListenerCallback(HQUIC, void* context, QUIC_LISTENER_EVENT* event->NEW_CONNECTION.Connection, listener->configuration); if (QUIC_FAILED(status)) { SetError(runtime, "CultMesh QUIC inbound connection configuration failed (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); // Returning a failure here is MsQuic's signal to reject and close // this connection itself, so the entry made a moment ago has to go // with it rather than sitting in the map naming a dead handle. @@ -703,7 +707,7 @@ int32_t OpenConnection(Runtime* runtime, const char* host, uint16_t port, uint64 auto status = EnsureClientConfiguration(runtime); if (QUIC_FAILED(status)) { return Refuse(runtime, status, "CultMesh QUIC client configuration failed (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } auto connection = std::make_shared(); @@ -718,7 +722,7 @@ int32_t OpenConnection(Runtime* runtime, const char* host, uint16_t port, uint64 status = runtime->api->ConnectionOpen(runtime->registration, ConnectionCallback, raw, &raw->handle); if (QUIC_FAILED(status)) { return Refuse(runtime, status, "CultMesh QUIC connection open failed (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } { std::lock_guard lock(runtime->gate); @@ -732,7 +736,7 @@ int32_t OpenConnection(Runtime* runtime, const char* host, uint16_t port, uint64 // handle is closed by whichever of the two drops last, exactly once. DestroyConnection(runtime, raw->id); return Refuse(runtime, status, "CultMesh QUIC connection start failed (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } *out_connection_id = raw->id; @@ -851,7 +855,7 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( runtime->registration, &alpn, 1, &settings, sizeof(settings), nullptr, &listener->configuration); if (QUIC_FAILED(status)) { return Refuse(runtime, status, "CultMesh QUIC listener configuration failed (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } // PKCS12 is the one credential type Schannel and OpenSSL both take, which @@ -868,14 +872,14 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( status = runtime->api->ConfigurationLoadCredential(listener->configuration, &credentials); if (QUIC_FAILED(status)) { return Refuse(runtime, status, "CultMesh QUIC listener certificate could not be loaded (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } Listener* raw = listener.get(); status = runtime->api->ListenerOpen(runtime->registration, ListenerCallback, raw, &raw->handle); if (QUIC_FAILED(status)) { return Refuse(runtime, status, "CultMesh QUIC listener open failed (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } QUIC_ADDR address{}; @@ -898,7 +902,7 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( if (QUIC_FAILED(status)) { Detach(runtime->gate, runtime->listeners, raw->id); return Refuse(runtime, status, "CultMesh QUIC listener start failed (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } // Port 0 means "pick one"; the host needs the chosen port to advertise it. @@ -908,7 +912,7 @@ CULTMESH_API int32_t cultmesh_quic_listener_open( if (QUIC_FAILED(status)) { Detach(runtime->gate, runtime->listeners, raw->id); return Refuse(runtime, status, "CultMesh QUIC listener address could not be read (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } if (out_bound_port != nullptr) *out_bound_port = QuicAddrGetPort(&bound); *out_listener_id = raw->id; @@ -948,7 +952,7 @@ CULTMESH_API int32_t cultmesh_quic_connection_certificate_complete( accept != 0 ? QUIC_TLS_ALERT_CODE_SUCCESS : QUIC_TLS_ALERT_CODE_BAD_CERTIFICATE); if (QUIC_FAILED(status)) { return Refuse(runtime, status, "CultMesh QUIC certificate validation completion failed (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } return 0; } @@ -991,7 +995,7 @@ CULTMESH_API int32_t cultmesh_quic_stream_open( StreamCallback, raw, &raw->handle); if (QUIC_FAILED(status)) { return Refuse(runtime, status, "CultMesh QUIC stream open failed (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } // In the map before it starts. `StreamStart` can reach shutdown-complete on // an MsQuic worker before it returns here, and that callback has to find the @@ -1004,7 +1008,7 @@ CULTMESH_API int32_t cultmesh_quic_stream_open( if (QUIC_FAILED(status)) { DestroyStream(runtime, raw->id); return Refuse(runtime, status, "CultMesh QUIC stream start failed (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } // The kind byte is the first thing on the stream, which is what the peer's @@ -1017,7 +1021,7 @@ CULTMESH_API int32_t cultmesh_quic_stream_open( if (QUIC_FAILED(status)) { delete request; return Refuse(runtime, status, "CultMesh QUIC stream kind could not be sent (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } *out_stream_id = raw->id; @@ -1052,7 +1056,7 @@ CULTMESH_API int32_t cultmesh_quic_stream_send_frame( if (QUIC_FAILED(status)) { delete request; return Refuse(runtime, status, "CultMesh QUIC frame send failed (status=" + - Hex(static_cast(status)) + ")."); + Hex(static_cast(status)) + ")."); } return 0; } From 53d59296d4f0cc33c61e44eb45b4c45eb7af6411 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 23:21:50 +0200 Subject: [PATCH 0069/1002] Say what the return code makes portable Section 3 and cultmesh_quic_last_status both told a host that the portable answer is the return code. What the mapping makes portable is the sign. The magnitude is not: the same MsQuic failure carries different numbers on different platforms, a TLS error being -12032 on win32-x64 and -1126 on linux-x64, and the 16-bit mask gives QUIC_STATUS_USER_CANCELED and QUIC_STATUS_FILE_NOT_FOUND the same -1002 on Windows. The header now says the sign is what a host may branch on, that the magnitude is diagnostic and platform-specific, and that switching on a particular code identifies nothing reliably. Co-Authored-By: Claude Opus 5 --- .../include/cultmesh_quic_native.h | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h b/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h index 1d984a97..94c8b5b7 100644 --- a/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h +++ b/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h @@ -160,9 +160,18 @@ enum cultmesh_quic_stream_kind { * * This mapping exists because `QUIC_STATUS` itself is not portable: it is a * negative HRESULT on Windows and a positive errno on POSIX, so a host that - * checked for a negative value saw every Linux failure as success. The mapping - * is one-way by construction — a bridge code is always negative and always - * outside the raw status space — and diagnostics go through `last_status`. + * checked for a negative value saw every Linux failure as success. + * + * What the mapping makes portable is the sign, and only the sign. A failure is + * negative everywhere, and that is what a host may branch on. The magnitude of a + * <= -1000 code is diagnostic and platform-specific: the same MsQuic failure + * carries different numbers on different platforms (a TLS error is -12032 on + * win32-x64 and -1126 on linux-x64; an ALPN already in use is -1009 against + * -1091), and the 16-bit mask can give two distinct statuses the same code + * (`QUIC_STATUS_USER_CANCELED` and `QUIC_STATUS_FILE_NOT_FOUND` are both -1002 + * on Windows). Switching on a particular code is therefore not portable and not + * a reliable identification of the failure. Report it, log it, and read + * `cultmesh_quic_last_status` and `cultmesh_quic_last_error` beside it. * --------------------------------------------------------------------------- */ #define CULTMESH_QUIC_RESULT_BAD_CALL (-1) @@ -295,7 +304,8 @@ CULTMESH_QUIC_API int32_t cultmesh_quic_last_error( /* The raw platform `QUIC_STATUS` behind the last <= -1000 return, as its own * bits: a negative HRESULT on Windows, a positive errno on POSIX. Diagnostics - * only — the portable answer is the return code. 0 when nothing has failed. */ + * only; what is portable about the return code is its sign, not its value. 0 + * when nothing has failed. */ CULTMESH_QUIC_API int32_t cultmesh_quic_last_status(void* runtime); #if defined(__cplusplus) From 19d8d5c94810e6b825d491cc3500ca792dd5ff93 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 23:22:59 +0200 Subject: [PATCH 0070/1002] Say that the committed Unity plugin is the older build The README claimed a rebuild reproduces the committed Unity plugin DLL. It does not. That plugin is 40,448 bytes, predates both the static CRT and the move off Schannel, and still imports VCRUNTIME140.dll and MSVCP140.dll; the current source builds to 302,080 bytes with no CRT import. What /Brepro buys is that a build reproduces itself, and the README now says that, along with the fact that the committed plugin stays the older build until the Unity package build replaces it. Co-Authored-By: Claude Opus 5 --- native/GameCult.Mesh.Quic.Native/README.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/README.md b/native/GameCult.Mesh.Quic.Native/README.md index adc256a0..60531975 100644 --- a/native/GameCult.Mesh.Quic.Native/README.md +++ b/native/GameCult.Mesh.Quic.Native/README.md @@ -76,11 +76,19 @@ actually ships beside the bridge. The OpenSSL flavour rather than Schannel because Schannel's MsQuic refuses `QUIC_CREDENTIAL_TYPE_CERTIFICATE_PKCS12`, which is the only credential type a provider has on both platforms. -The build uses MSVC with `/Brepro` so a rebuild reproduces the committed Unity -plugin DLL, and links the CRT statically (`/MT`). A Node or Unity host without -the Visual C++ redistributable cannot load a DLL that imports `vcruntime140.dll`, +The build uses MSVC with `/Brepro` so that a build reproduces itself: the link +timestamps are dropped, and building the same source twice gives the same bytes. +It links the CRT statically (`/MT`), because a Node or Unity host without the +Visual C++ redistributable cannot load a DLL that imports `vcruntime140.dll`, and the failure it reports names no missing runtime; the bridge carries its own. +A rebuild does not reproduce the committed Unity plugin. That plugin +(`unity/org.gamecult.cultlib/Runtime/Plugins/x86_64/gamecult_mesh_quic_native.dll`, +40,448 bytes) is the older build — before `/MT` and before the move off +Schannel — and it still imports `VCRUNTIME140.dll` and `MSVCP140.dll`. The +current source builds to 302,080 bytes with no CRT import. The committed plugin +stays the older build until the Unity package build runs and replaces it. + Linux x64, on a Debian 13 host: scripts/build-quic-native.sh From f4186e7427ec7c44f839467ca6567ac07eab7dbb Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 23:23:30 +0200 Subject: [PATCH 0071/1002] Run the runtime-lifetime scenarios from the repository The bridge's close path had no committed test. Whether a close is safe against host threads already inside the library is the one thing about it a host cannot establish by reading, and every check of it so far lived in a session scratchpad and is gone. The scenario runner under tests/ drives that path and nothing else: it parks pollers in cultmesh_quic_next_event, closes the runtime under them, and asserts that the close is what woke them. It consumes the bridge through the public header, as a host does. CULTMESH_QUIC_BUILD_TESTS builds it, off by default, because a delivery build has no business producing an executable. CULTMESH_QUIC_DEBUG_ASSERTS, also off by default, makes the bridge state the quiesce invariant itself rather than leaving it to whatever a sanitizer happens to catch. Deleting the quiesce wait is otherwise falsifiable only by luck: AddressSanitizer saw it 4 times in 48 attempts with pollers blocked mid-copy of large frames, and never on release. With the assertion and pollers blocked it fails on the first close. Co-Authored-By: Claude Opus 5 --- .../GameCult.Mesh.Quic.Native/CMakeLists.txt | 32 ++++ .../cultmesh_quic_native.cpp | 26 +++ .../tests/cultmesh_quic_native_tests.cpp | 151 ++++++++++++++++++ 3 files changed, 209 insertions(+) create mode 100644 native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp diff --git a/native/GameCult.Mesh.Quic.Native/CMakeLists.txt b/native/GameCult.Mesh.Quic.Native/CMakeLists.txt index 936002cc..87f877b2 100644 --- a/native/GameCult.Mesh.Quic.Native/CMakeLists.txt +++ b/native/GameCult.Mesh.Quic.Native/CMakeLists.txt @@ -54,3 +54,35 @@ set_target_properties(gamecult_mesh_quic_native PROPERTIES OUTPUT_NAME "gamecult_mesh_quic_native" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + +# The runtime-lifetime scenarios. Off by default: the shipped artifact is the +# library alone, and a delivery build has no business producing an executable. +# CULTMESH_QUIC_DEBUG_ASSERTS goes with them, never into a shipped binary — it +# makes the bridge state the quiesce invariant instead of leaving it to whatever +# a sanitizer happens to catch. +option(CULTMESH_QUIC_BUILD_TESTS "Build the runtime-lifetime scenario runner" OFF) +option(CULTMESH_QUIC_DEBUG_ASSERTS "Abort the bridge on a violated internal invariant" OFF) + +if(CULTMESH_QUIC_DEBUG_ASSERTS) + target_compile_definitions(gamecult_mesh_quic_native PRIVATE CULTMESH_QUIC_DEBUG_ASSERTS) +endif() + +if(CULTMESH_QUIC_BUILD_TESTS) + add_executable(cultmesh_quic_native_tests tests/cultmesh_quic_native_tests.cpp) + target_compile_features(cultmesh_quic_native_tests PRIVATE cxx_std_20) + # The header only. The scenarios drive the bridge as a host does, so they get + # no more of it than a host has. + target_link_libraries(cultmesh_quic_native_tests PRIVATE gamecult_mesh_quic_native) + set_target_properties(cultmesh_quic_native_tests PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + if(NOT WIN32) + target_link_libraries(cultmesh_quic_native_tests PRIVATE pthread) + # The linker resolves the bridge's own NEEDED libmsquic.so.2 while linking + # this executable, and the runtime copy only lands beside the binaries after + # the build; point it at the extracted package instead. + target_link_options(cultmesh_quic_native_tests PRIVATE "-Wl,-rpath-link,${MSQUIC_LIB_DIR}") + set_target_properties(cultmesh_quic_native_tests PROPERTIES + BUILD_WITH_INSTALL_RPATH TRUE + INSTALL_RPATH "$ORIGIN") + endif() +endif() diff --git a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp index b5aacb16..0466684f 100644 --- a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp +++ b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp @@ -35,6 +35,8 @@ #include #include #include +#include +#include #include #include #include @@ -46,6 +48,29 @@ #define CULTMESH_API extern "C" CULTMESH_QUIC_API +// Development builds only, and never in a shipped binary: after +// `cultmesh_quic_runtime_close` has quiesced, no host call may still be inside +// the library. The wait is what makes that true, and its absence is otherwise +// visible only as a use-after-free a sanitizer catches by luck — a poller has to +// be preempted in the right window. With pollers blocked, this states the +// invariant directly, so a build without the wait dies on the first close rather +// than on the run that happens to be unlucky. +#if defined(CULTMESH_QUIC_DEBUG_ASSERTS) +#define CULTMESH_QUIC_ASSERT_QUIESCED(count) \ + do { \ + const int cultmesh_quic_remaining = (count); \ + if (cultmesh_quic_remaining != 0) { \ + std::fprintf(stderr, \ + "cultmesh_quic_runtime_close: %d host call(s) still inside the " \ + "library after the quiesce\n", cultmesh_quic_remaining); \ + std::fflush(stderr); \ + std::abort(); \ + } \ + } while (false) +#else +#define CULTMESH_QUIC_ASSERT_QUIESCED(count) ((void)0) +#endif + namespace { constexpr uint32_t kApiVersion = 2; @@ -793,6 +818,7 @@ CULTMESH_API void cultmesh_quic_runtime_close(void* handle) { runtime->closing = true; runtime->signal.notify_all(); runtime->signal.wait(lock, [runtime] { return runtime->active_calls == 0; }); + CULTMESH_QUIC_ASSERT_QUIESCED(runtime->active_calls); for (auto& entry : runtime->streams) streams.push_back(std::move(entry.second)); for (auto& entry : runtime->connections) connections.push_back(std::move(entry.second)); for (auto& entry : runtime->listeners) listeners.push_back(std::move(entry.second)); diff --git a/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp b/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp new file mode 100644 index 00000000..1fc137a7 --- /dev/null +++ b/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp @@ -0,0 +1,151 @@ +// Scenario runner for the bridge's runtime lifetime rules. +// +// This is the one part of the bridge a host cannot check by reading: whether +// `cultmesh_quic_runtime_close` is safe against host threads that are inside the +// library when it starts. Everything here drives that path and nothing else. It +// opens a runtime, parks pollers in `cultmesh_quic_next_event`, closes the +// runtime underneath them, and asserts what the header promises: every parked +// poller returns, and none of them touches the runtime after it is gone. +// +// It consumes the bridge through include/cultmesh_quic_native.h — the same +// contract a host has — and nothing else. No MsQuic header, no internals. +// +// The failures it exists to catch are not visible in the return values, because +// a use-after-free is not an error code. Two things make them visible instead: +// a sanitizer build (ThreadSanitizer for the notify/destroy race, AddressSanitizer +// for the freed-runtime dereference), and `CULTMESH_QUIC_DEBUG_ASSERTS`, which +// makes the bridge state the quiesce invariant itself rather than leaving it to +// be caught by an unlucky thread schedule. +// +// cultmesh_quic_native_tests closerace [iterations] [pollers] +// +// Exit code 0 means every assertion held. Anything else, including a sanitizer +// abort or the bridge's own assertion, is a failure. Under ThreadSanitizer run +// it with `TSAN_OPTIONS=halt_on_error=1`, or a reported race leaves the exit +// code to the last thing that set it. + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace { + +// Long enough that a poller is still parked when the close begins. The close is +// what ends the wait; this timeout only bounds the scenario if the close never +// arrives, which is itself the failure. +constexpr int32_t kPollTimeoutMs = 5000; + +// A poller asks for a payload buffer, so the close races a `next_event` that has +// somewhere to copy into rather than one that can only ever return 0. +constexpr int32_t kPayloadCapacity = 4096; + +int Fail(const std::string& message) { + std::fprintf(stderr, "FAILED: %s\n", message.c_str()); + return 1; +} + +// One iteration: `pollers` threads parked in `next_event`, then a close under +// them. Returns an empty string when every promise held. +// +// Each poller makes exactly one blocking call and does not call again. Section 5 +// of the header puts the ordering on the host — no call may *begin* during a +// close — so a scenario that kept re-entering would be testing a shape the +// bridge declines to support, and its report would be the harness's own fault. +// A call already inside the library is the case the quiesce exists for, and that +// is the one run here. +std::string CloseRaceOnce(int pollers) { + void* runtime = nullptr; + const int32_t opened = cultmesh_quic_runtime_open("cultmesh-quic-native-tests", &runtime); + if (opened != 0 || runtime == nullptr) + return "cultmesh_quic_runtime_open returned " + std::to_string(opened); + + // Counts threads about to enter the blocking call. The close waits for all of + // them, so the race is run with the pollers actually inside rather than with + // threads that have not started yet. + std::atomic entering{0}; + std::atomic returned{0}; + std::atomic undefined_return{0}; + std::atomic timed_out{0}; + + std::vector threads; + threads.reserve(static_cast(pollers)); + for (int index = 0; index < pollers; ++index) { + threads.emplace_back([runtime, &entering, &returned, &undefined_return, &timed_out] { + std::vector payload(static_cast(kPayloadCapacity)); + cultmesh_quic_event event{}; + int32_t required = 0; + + entering.fetch_add(1); + const auto started = std::chrono::steady_clock::now(); + // Parked here when the close arrives. `closing` wakes the wait; the + // call scope this thread holds is what the close must count out + // before it frees anything. + const int32_t result = cultmesh_quic_next_event( + runtime, kPollTimeoutMs, &event, payload.data(), kPayloadCapacity, &required); + const auto elapsed = std::chrono::duration_cast( + std::chrono::steady_clock::now() - started).count(); + + if (result != 0 && result != 1 && result != 2) undefined_return.fetch_add(1); + // The close is what ends this wait. Sitting out the whole timeout + // instead means the wake never reached it. + if (elapsed >= kPollTimeoutMs / 2) timed_out.fetch_add(1); + returned.fetch_add(1); + }); + } + + while (entering.load() < pollers) std::this_thread::yield(); + // Settle so the pollers are inside the blocking wait rather than on their way + // to it. A poller that has not entered yet is a call beginning during the + // close, which is the host's to avoid, not the bridge's to survive. + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + + cultmesh_quic_runtime_close(runtime); + for (auto& thread : threads) thread.join(); + + if (undefined_return.load() != 0) + return std::to_string(undefined_return.load()) + " poller(s) saw a return the header does not define"; + if (timed_out.load() != 0) + return std::to_string(timed_out.load()) + " of " + std::to_string(pollers) + + " pollers sat out the timeout instead of being woken by the close"; + if (returned.load() != pollers) + return std::to_string(returned.load()) + " of " + std::to_string(pollers) + " pollers returned"; + return {}; +} + +int CloseRace(int iterations, int pollers) { + for (int iteration = 0; iteration < iterations; ++iteration) { + const std::string failure = CloseRaceOnce(pollers); + if (!failure.empty()) + return Fail("closerace iteration " + std::to_string(iteration) + ": " + failure); + } + std::printf("closerace %dx%d: ok\n", iterations, pollers); + return 0; +} + +} // namespace + +int main(int argc, char** argv) { + if (argc < 2) { + std::fprintf(stderr, "usage: %s closerace [iterations] [pollers]\n", argv[0]); + return 2; + } + const std::string scenario = argv[1]; + if (scenario == "closerace") { + const int iterations = argc > 2 ? std::atoi(argv[2]) : 20; + const int pollers = argc > 3 ? std::atoi(argv[3]) : 256; + if (iterations <= 0 || pollers <= 0) { + std::fprintf(stderr, "closerace needs a positive iteration and poller count\n"); + return 2; + } + return CloseRace(iterations, pollers); + } + std::fprintf(stderr, "unknown scenario '%s'\n", scenario.c_str()); + return 2; +} From 180917d75b4acce5b0ab74b53aaa9b66c7c77c12 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 16 Sep 2026 23:23:50 +0200 Subject: [PATCH 0072/1002] Mutate the native bridge, and name the target each entry is honest on The mutation suite covered only the TypeScript rules. The bridge's two runtime lifetime rules now have entries of their own, each with a revert that puts back the wrong spelling and a loosening that keeps the shape and gives away the guarantee: a notify moved outside the gate, a notify outside it that fires only on the last call out, the quiesce wait deleted, and the quiesce wait made bounded. Their killer is the scenario runner, built through CMake rather than npm, so the runner now takes a check per target instead of assuming a workspace, and a target without a dist/ keeps the verified restore without the sentinel. Every native entry names the platforms it is honest on, and a run elsewhere reports it as skipped rather than killed. There is no ThreadSanitizer for MSVC, so the notify rule cannot be seen on win32-x64 at all. Soul's Cut 3 pass found this the hard way, reporting two mutations killed from a win32-x64 release run where both in fact survive. Naming a target on the command line runs only that one, which is what lets the native entries run inside the Debian 13 container where the TypeScript workspaces have no installed dependencies. Co-Authored-By: Claude Opus 5 --- scripts/mutate-cultmesh.mjs | 246 ++++++++++++++++++++++++++++++++++-- 1 file changed, 234 insertions(+), 12 deletions(-) diff --git a/scripts/mutate-cultmesh.mjs b/scripts/mutate-cultmesh.mjs index d3d3f7e9..161da431 100644 --- a/scripts/mutate-cultmesh.mjs +++ b/scripts/mutate-cultmesh.mjs @@ -1,5 +1,6 @@ -// Mutation check for the CultMesh rules TypeScript owns: route verification and -// the realtime frame codec. +// Mutation check for the CultMesh rules that are not proven by reading: the +// route verifier, the realtime frame codec, and the native bridge's runtime +// lifetime. // // Two files own the route rules and each is one target here. `shared` is // `packages/cultnet-ts/src/cultmesh-authority.ts`, the one verifier, killed by @@ -24,11 +25,30 @@ // `realtime` is `packages/cultmesh-ts/src/realtime-wire.ts`, the frame codec, // killed by `npm run test --workspace packages/cultmesh-ts`. // -// node scripts/mutate-cultmesh.mjs +// `native` is `native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp`, and +// its killer is the scenario runner in that project's `tests/`, built and run +// through CMake rather than npm. It has no `dist/`, so it has no sentinel and no +// post-run rebuild check; the verified restore covers it. +// +// A mutation is only killed on a target that can see it. Some of the native +// rules are visible only under a sanitizer, and there is no ThreadSanitizer for +// MSVC; a run on the wrong platform would otherwise report "killed" for a +// mutation it never actually exercised. Every native entry therefore names the +// platforms it is honest on, and a run elsewhere reports it as `skipped`, which +// is not coverage. Soul's Cut 3 pass found this the hard way: `B1` and `L2` were +// reported killed from a win32-x64 release run where both in fact survive, and +// die deterministically only under linux-x64 AddressSanitizer. +// +// This script tests the platform it is running on. For the linux-x64 native +// entries, run it inside the Debian 13 container the bridge is built in, with +// cmake, ninja, a C++20 compiler and Node present; a Windows run reports those +// entries as skipped and says so. +// +// node scripts/mutate-cultmesh.mjs [target...] import { createHash } from "node:crypto"; import { execFileSync } from "node:child_process"; -import { existsSync, readFileSync, unlinkSync, writeFileSync } from "node:fs"; +import { existsSync, readFileSync, rmSync, unlinkSync, writeFileSync } from "node:fs"; import { dirname, join, resolve } from "node:path"; import { fileURLToPath } from "node:url"; @@ -36,6 +56,11 @@ const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), ".."); const npmCli = process.env.npm_execpath ?? join(dirname(process.execPath), "node_modules", "npm", "bin", "npm-cli.js"); +// The platform this run can speak for. It is the target the native entries are +// matched against, and it is named in the output so a report cannot be read as +// covering a platform it never touched. +const platform = process.platform === "win32" ? "win32-x64" : "linux-x64"; + // Each target's `sentinel` is present in its restored source and compiled // verbatim into its dist/; that target's last mutation removes it, which is // what makes the post-rebuild check distinguish a rebuilt dist/ from one still @@ -59,6 +84,10 @@ const targets = { dist: join(repoRoot, "packages", "cultmesh-ts", "dist", "realtime-wire.js"), sentinel: "0x31545343", }, + native: { + file: join(repoRoot, "native", "GameCult.Mesh.Quic.Native", "cultmesh_quic_native.cpp"), + check: () => nativeScenariosPass(), + }, }; const mutations = [ @@ -325,6 +354,68 @@ const mutations = [ { target: "realtime", rule: "the decoded payload is a plain Uint8Array whatever the frame was", old: " payload: new Uint8Array(bytes.subarray(offset, offset + payloadLength)),", new: " payload: Uint8Array.prototype.slice.call(bytes, offset, offset + payloadLength)," }, // Last, because it removes this target's sentinel. { target: "realtime", rule: "the frame magic is 0x31545343", old: "const MAGIC = 0x31545343;", new: "const MAGIC = 0x31545344;" }, + + // The native bridge's runtime lifetime. Each rule gets two mutations: the + // revert, which puts back the spelling that was wrong, and a loosening, which + // keeps the shape and gives away the guarantee. A rule that only the revert + // kills is pinned by accident. + // + // `honestOn` is load-bearing. There is no ThreadSanitizer for MSVC, so the + // notify rule cannot be seen on win32-x64 at all; the quiesce rule is visible + // on both, but only because the assertion build states it outright. Without + // the assertion it is visible on neither in any dependable way: Soul's Cut 3 + // pass hit the use-after-free 4 times in 48 linux-x64 AddressSanitizer + // attempts with pollers blocked mid-copy of large frames, and never once on + // release. + { + target: "native", + honestOn: ["linux-x64"], + rule: "the call scope notifies under `gate` (revert: notify after the unlock)", + old: " std::lock_guard lock(runtime_->gate);\n" + + " --runtime_->active_calls;\n" + + " runtime_->signal.notify_all();\n", + new: " {\n" + + " std::lock_guard lock(runtime_->gate);\n" + + " --runtime_->active_calls;\n" + + " }\n" + + " runtime_->signal.notify_all();\n", + }, + { + target: "native", + honestOn: ["linux-x64"], + // The tempting spelling: notify only when this was the last call out, which + // looks like it narrows the window and does not close it at all. The closer's + // predicate is true the moment the count reaches zero, so this is the same + // race with a tidier face. + rule: "the call scope notifies under `gate` (loosening: notify outside it only when the count reaches zero)", + old: " std::lock_guard lock(runtime_->gate);\n" + + " --runtime_->active_calls;\n" + + " runtime_->signal.notify_all();\n", + new: " bool last = false;\n" + + " {\n" + + " std::lock_guard lock(runtime_->gate);\n" + + " last = (--runtime_->active_calls == 0);\n" + + " }\n" + + " if (last) runtime_->signal.notify_all();\n", + }, + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + rule: "the close waits for every in-flight call (revert: wake without the wait)", + old: " runtime->signal.wait(lock, [runtime] { return runtime->active_calls == 0; });\n", + new: "", + }, + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + // A bounded wait is the shape that survives review: it looks like the wait, + // it usually finishes, and it turns the contract into a hope. The assertion + // is what tells them apart. + rule: "the close waits for every in-flight call (loosening: a bounded wait that gives up)", + old: " runtime->signal.wait(lock, [runtime] { return runtime->active_calls == 0; });", + new: " runtime->signal.wait_for(lock, std::chrono::milliseconds(1),\n" + + " [runtime] { return runtime->active_calls == 0; });", + }, ]; function digest(bytes) { @@ -347,6 +438,102 @@ function testsPass(workspace) { } } +// The native killer. The bridge is a shared library, so "run the tests" is build +// the scenario runner beside it and run the scenarios. There is no npm here and +// no `dist/`; the artifacts live under artifacts/, which is git-ignored. +// +// Two configurations, because the two rules are visible to different things. The +// assertion build states the quiesce invariant outright, which is what makes the +// missing wait fail on the first close instead of on an unlucky one. The +// ThreadSanitizer build is the only thing that sees a notify land on a destroyed +// condition variable, and it exists on linux-x64 alone. +const nativeConfigurations = platform === "linux-x64" + ? [ + { name: "asserts", asserts: "ON", sanitizer: null }, + { name: "tsan", asserts: "OFF", sanitizer: "thread" }, + ] + : [{ name: "asserts", asserts: "ON", sanitizer: null }]; + +function msquicArguments() { + if (platform === "win32-x64") { + const root = join(repoRoot, "artifacts", "dependencies", "msquic-openssl-2.5.9", + "package", "build", "native"); + if (!existsSync(root)) + throw new Error(`${root} is missing; run scripts/build-quic-native.ps1 once to fetch MsQuic`); + return { + configure: [`-DMSQUIC_ROOT=${root.replace(/\\/g, "/")}`, "-A", "x64"], + runtime: [[join(root, "bin", "x64", "msquic.dll"), "msquic.dll"]], + }; + } + const cache = join(repoRoot, "artifacts", "dependencies", "msquic-linux-2.5.9"); + const libraries = join(cache, "package", "usr", "lib", "x86_64-linux-gnu"); + const versioned = join(libraries, "libmsquic.so.2.5.9"); + if (!existsSync(versioned)) + throw new Error(`${versioned} is missing; run scripts/build-quic-native.sh once to fetch MsQuic`); + // CMake links -lmsquic, which needs an unversioned name to resolve against; + // the deb ships only the versioned file. + writeFileSync(join(libraries, "libmsquic.so"), readFileSync(versioned)); + return { + configure: [ + `-DMSQUIC_INCLUDE_DIR=${join(cache, "include")}`, + `-DMSQUIC_LIB_DIR=${libraries}`, + ], + runtime: [[versioned, "libmsquic.so.2"]], + }; +} + +function nativeScenariosPass() { + const msquic = msquicArguments(); + const source = join(repoRoot, "native", "GameCult.Mesh.Quic.Native"); + for (const configuration of nativeConfigurations) { + const build = join(repoRoot, "artifacts", "quic-native-mutation", platform, configuration.name); + // From scratch each time: a stale object file would let a mutation be + // reported against a binary that does not contain it. + rmSync(build, { recursive: true, force: true }); + const flags = configuration.sanitizer + ? [`-fsanitize=${configuration.sanitizer}`, "-fno-omit-frame-pointer", "-g"].join(" ") + : ""; + // Multi-config generators (MSVC) put the binaries in a per-config directory; + // single-config ones (Ninja, Makefiles) do not. + const binaries = platform === "win32-x64" + ? join(build, "bin", "RelWithDebInfo") + : join(build, "bin"); + try { + execFileSync("cmake", [ + "-S", source, "-B", build, + "-DCMAKE_BUILD_TYPE=RelWithDebInfo", + `-DCMAKE_CXX_FLAGS=${flags}`, + `-DCMAKE_EXE_LINKER_FLAGS=${flags}`, + `-DCMAKE_SHARED_LINKER_FLAGS=${flags}`, + "-DCULTMESH_QUIC_BUILD_TESTS=ON", + `-DCULTMESH_QUIC_DEBUG_ASSERTS=${configuration.asserts}`, + ...msquic.configure, + ], { cwd: repoRoot, stdio: ["ignore", "pipe", "pipe"] }); + execFileSync("cmake", ["--build", build, "--config", "RelWithDebInfo"], + { cwd: repoRoot, stdio: ["ignore", "pipe", "pipe"] }); + } catch { + // A mutation that does not compile is killed by the build, which is a + // legitimate kill: the rule it removed was load-bearing to the language. + return false; + } + for (const [from, name] of msquic.runtime) writeFileSync(join(binaries, name), readFileSync(from)); + const runner = join(binaries, + platform === "win32-x64" ? "cultmesh_quic_native_tests.exe" : "cultmesh_quic_native_tests"); + try { + execFileSync(runner, ["closerace", "20", "256"], { + cwd: binaries, + stdio: ["ignore", "pipe", "pipe"], + // Without this a reported race is printed and the run still exits 0, + // so every sanitizer mutation would survive. + env: { ...process.env, TSAN_OPTIONS: "halt_on_error=1", ASAN_OPTIONS: "halt_on_error=1" }, + }); + } catch { + return false; + } + } + return true; +} + function occurrences(text, needle) { return text.split(needle).length - 1; } @@ -402,7 +589,17 @@ function repair(name, target, own, sidecar) { const results = []; let failed = false; +// Named targets run only those; no argument runs all of them. The native target +// is built and run inside the Debian 13 container for its linux-x64 entries, +// where the TypeScript workspaces have no installed dependencies, so being able +// to ask for one target is what makes that run possible at all. +const requested = process.argv.slice(2); +for (const name of requested) { + if (!(name in targets)) throw new Error(`unknown target '${name}'; known: ${Object.keys(targets).join(", ")}`); +} + for (const [name, target] of Object.entries(targets)) { + if (requested.length > 0 && !requested.includes(name)) continue; const own = mutations.filter(mutation => (mutation.target ?? "shared") === name); if (own.length === 0) throw new Error(`target '${name}' has no mutations`); const sidecar = `${target.file}.mutation-original`; @@ -425,18 +622,25 @@ for (const [name, target] of Object.entries(targets)) { } }; - const last = own[own.length - 1]; - if (!originalText.includes(target.sentinel) || - originalText.replace(withEol(last.old), withEol(last.new)).includes(target.sentinel)) { - throw new Error( - `the sentinel '${target.sentinel}' must be in ${target.file} and removed by its last mutation ('${last.rule}')`, - ); + // A target with a compiled `dist/` carries a sentinel so the post-run rebuild + // check can tell a rebuilt output from one still holding the last mutant. The + // native target has no dist/ and so has neither. + if (target.dist) { + const last = own[own.length - 1]; + if (!originalText.includes(target.sentinel) || + originalText.replace(withEol(last.old), withEol(last.new)).includes(target.sentinel)) { + throw new Error( + `the sentinel '${target.sentinel}' must be in ${target.file} and removed by its last mutation ('${last.rule}')`, + ); + } } + const check = target.check ?? (() => testsPass(target.workspace)); + writeFileSync(sidecar, original); try { writeFileSync(target.file, Buffer.from(originalText, "utf8")); - const controlPass = testsPass(target.workspace); + const controlPass = check(); results.push({ target: name, outcome: controlPass ? "green" : "RED", rule: "control (no-op rewrite)" }); if (!controlPass) failed = true; else { @@ -446,8 +650,20 @@ for (const [name, target] of Object.entries(targets)) { if (count !== 1) { throw new Error(`anchor for '${mutation.rule}' matched ${count} times in ${target.file}, expected exactly 1`); } + // A mutation this platform cannot see is not run. Reporting it as killed + // from a run that never exercised it is the honesty failure these marks + // exist to prevent; the anchor is still checked above, so a rule whose + // spelling has moved fails here rather than going quiet. + if (mutation.honestOn && !mutation.honestOn.includes(platform)) { + results.push({ + target: name, + outcome: "skipped", + rule: `${mutation.rule} — honest only on ${mutation.honestOn.join(", ")}, not ${platform}`, + }); + continue; + } writeFileSync(target.file, Buffer.from(originalText.replace(old, replacement), "utf8")); - const pass = testsPass(target.workspace); + const pass = check(); restore(); results.push({ target: name, outcome: pass ? "SURVIVED" : "killed", rule: mutation.rule }); if (pass) failed = true; @@ -462,6 +678,11 @@ for (const [name, target] of Object.entries(targets)) { unlinkSync(sidecar); } + if (!target.dist) { + results.push({ target: name, outcome: "restored", rule: `${target.file} sha256=${originalDigest}` }); + continue; + } + // Every test run above rebuilt dist/ from a mutant; put the restored source back in it. npm(target.workspace, "run", "build"); if (!readFileSync(target.dist, "utf8").includes(target.sentinel)) { @@ -474,5 +695,6 @@ for (const [name, target] of Object.entries(targets)) { }); } +console.log(`build host and target: ${platform}`); for (const result of results) console.log(`${result.outcome.padEnd(9)} [${result.target}] ${result.rule}`); process.exit(failed ? 1 : 0); From 51fb449b563408cbdab8cfbb7bc23e862552cbb3 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 00:02:05 +0200 Subject: [PATCH 0073/1002] Record the second fix batch and the harness that was never there The lifetime fix holds under a thread sanitizer and the assertion kills the deleted wait on both targets. The harness defending all of it does not hold. Every native kill this cut had reported came from scratchpads that no longer exist, the committed Linux path dies before its scenario starts and hides the reason, and the scenario stays green when calls are not counted at all or when nothing ever parks. Two rules are defended by nothing committed. They are recorded as undefended rather than given a number that would look better. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 60 ++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 257998bc..bd0be20a 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -264,6 +264,66 @@ on Windows release and kill three times of three under AddressSanitizer, so the entries table must say which target each is honest on. A mutation whose kill depends on the target is not killed until it runs there. +**The second fix batch landed** (Opus) at `a4753f4` (the notify moves inside +the gate), `dc9e12c` (a Windows status stops sign-extending in diagnostics), +`53d5929` (the header says the return code is portably negative, not portably +meaningful), `19d8d5c` (the readme says the committed Unity plugin is the +older build), `f4186e7` (a committed scenario runner for the runtime +lifetime) and `180917d` (four native entries, each naming the target it is +honest on). + +**The discovery that outweighed the fix: there was no committed native +harness at all.** Every native mutation kill this cut had reported came from +consumers and scenarios that lived in agent scratchpads and no longer exist. +The runner at the previous head carried three package targets and nothing +touching the bridge, and two entries could not even be re-marked because +their definitions were gone. Hands built what the brief had assumed already +existed. + +**Soul's third pass, 2026-09-17** (Fable). Held: the lifetime fix on both +targets, the reverted notify killed three of three by the thread sanitizer +and invisible to the address sanitizer, so its target marking is right; the +assertion killing the deleted wait deterministically on both targets and +absent from both shipped libraries and a fresh release build; two fresh +release builds byte-identical to the committed artifact; the return-code +numbers recomputed from the pinned headers; byte-exact restore on both hosts. +**Cut 3 still does not close**, and the reason is that the harness defending +the fix is weaker than the fix: + +- **The committed Linux path does not run as committed.** The sanitizer + configuration dies before the scenario starts, on the kernel's + address-space randomisation, and the runner swallows the child's standard + error, so a future agent sees a red control and no diagnosis. Soul reached + four of four kills only by disabling randomisation and relaxing the + container's seccomp profile, neither of which any committed file mentions. + The image came from a definition that is not in the repository, and the + documented development recipe cannot run the runner at all, since it + installs the C++ toolchain but not the JavaScript runtime. High for the + claim that the Linux kills are rerunnable. +- **The scenario does not test the rule it exists for.** Deleting the call + guard from the polling entry point, so host calls are not counted at all, + survived nine runs of nine across every configuration. The harness pins the + order of the count and the notify, not that anything is counted. +- **The scenario passes vacuously when nothing parks.** Inverting the timeout + comparison makes every poller return before the close begins, and the + scenario is green on all six configurations. +- **The bounded-wait loosening is pinned by a constant, not by the rule.** At + one millisecond it dies with as few as two calls outstanding; at fifty + milliseconds it survives on both targets. A bounded wait is the wrong + contract at any bound. +- **A skipped entry exits zero** with no closing summary, so a gate reads a + host that killed nothing as green. +- **The header contradicts itself**, forbidding a call that begins after + close starts and separately promising such a poll is refused, when that + refusal path reads freed memory after teardown. + +**Two rules are defended by nothing committed**: popping before copying, and +a handle closed under a live call. Both were previously reported killed on +the sanitizer target only, and neither has a definition left. The third fix +batch is told to give each a real entry or to say plainly that the rule is +undefended, because an honest gap beats a fabricated kill. **Third fix batch +in Hands.** + **Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative greps, all twelve mutations rerun and killed, the control catching a truncated write, the equivalent mutant confirmed (Node 24 WebCrypto refuses From 62e53df447be1bf0d80b8b43308317a41ddbd408 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 00:23:04 +0200 Subject: [PATCH 0074/1002] Hold host calls inside the bridge so the quiesce is tested, not assumed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The closerace scenario pinned the order of the count and the notify but never that a host call is counted at all. Deleting the call scope from `cultmesh_quic_next_event` outright leaves every configuration green — the pollers finish before the teardown reaches them — and so does inverting the comparison that makes a positive timeout block, which empties the library before the close even begins. A scenario that only sleeps and hopes cannot tell any of that apart from the real thing. So the bridge says it itself, in development builds only (section 7 of the header, behind CULTMESH_QUIC_DEBUG_ASSERTS, absent from every shipped binary): the peak number of host calls counted inside the library, the number counted when the close began its wait, and a hold that parks a call inside the library until the scenario releases it. A held call returns the 0 an empty queue would have and touches the runtime no further, so a bridge that frees the runtime under it is reported by the scenario rather than crashing inside it. `holdclose` drives the quiesce through that seam: the calls are counted, they were still counted when the close began, and the close did not return while they were held. `closerace` keeps hunting the race and now also refuses to pass when a poller left before the close began, which is a scenario that raced nothing. Co-Authored-By: Claude Opus 5 --- .../GameCult.Mesh.Quic.Native/CMakeLists.txt | 6 + .../cultmesh_quic_native.cpp | 86 ++++++++++ .../include/cultmesh_quic_native.h | 32 ++++ .../tests/cultmesh_quic_native_tests.cpp | 161 ++++++++++++++++-- 4 files changed, 275 insertions(+), 10 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/CMakeLists.txt b/native/GameCult.Mesh.Quic.Native/CMakeLists.txt index 87f877b2..41e7527f 100644 --- a/native/GameCult.Mesh.Quic.Native/CMakeLists.txt +++ b/native/GameCult.Mesh.Quic.Native/CMakeLists.txt @@ -73,6 +73,12 @@ if(CULTMESH_QUIC_BUILD_TESTS) # The header only. The scenarios drive the bridge as a host does, so they get # no more of it than a host has. target_link_libraries(cultmesh_quic_native_tests PRIVATE gamecult_mesh_quic_native) + # The scenarios see the development seam (section 7 of the header) exactly when + # the library has one, so `holdclose` compiles out of the same builds the + # bridge's own assertions compile out of. + if(CULTMESH_QUIC_DEBUG_ASSERTS) + target_compile_definitions(cultmesh_quic_native_tests PRIVATE CULTMESH_QUIC_DEBUG_ASSERTS) + endif() set_target_properties(cultmesh_quic_native_tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") if(NOT WIN32) diff --git a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp index 0466684f..621be18c 100644 --- a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp +++ b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp @@ -71,6 +71,31 @@ #define CULTMESH_QUIC_ASSERT_QUIESCED(count) ((void)0) #endif +// Development builds only, and never in a shipped binary: the seam the scenario +// runner drives the quiesce through. A scenario that only sleeps and hopes its +// pollers are inside the library cannot tell a bridge that counts host calls +// from one that does not, so the bridge says so itself: +// +// - PEAK raises the high-water mark of calls counted inside, so a scenario can +// assert that the calls it launched were counted rather than assumed. +// - AT_CLOSE records how many were counted when the close began its wait, which +// is the number the wait exists for. +// - HELD parks a call inside the library until the scenario releases it, so the +// close races calls that are genuinely there for as long as the scenario +// wants them there, instead of for as long as the schedule happens to give. +// It returns true when it parked, and touches nothing afterwards: a bridge +// that frees the runtime out from under a held call is then reported by the +// scenario rather than crashing inside it. +#if defined(CULTMESH_QUIC_DEBUG_ASSERTS) +#define CULTMESH_QUIC_DEBUG_PEAK(count) DebugRaisePeak(count) +#define CULTMESH_QUIC_DEBUG_AT_CLOSE(count) DebugRecordCallsAtClose(count) +#define CULTMESH_QUIC_DEBUG_HELD(lock) DebugHoldCall(lock) +#else +#define CULTMESH_QUIC_DEBUG_PEAK(count) ((void)0) +#define CULTMESH_QUIC_DEBUG_AT_CLOSE(count) ((void)0) +#define CULTMESH_QUIC_DEBUG_HELD(lock) (false) +#endif + namespace { constexpr uint32_t kApiVersion = 2; @@ -203,6 +228,36 @@ struct Runtime { int active_calls = 0; }; +#if defined(CULTMESH_QUIC_DEBUG_ASSERTS) +// The development seam behind the three CULTMESH_QUIC_DEBUG_ macros. None of it +// is compiled into a shipped library. +std::atomic debug_peak_calls{0}; +std::atomic debug_calls_at_close{-1}; +std::mutex debug_hold_gate; +std::condition_variable debug_hold_signal; +bool debug_hold_armed = false; + +void DebugRaisePeak(int count) { + int peak = debug_peak_calls.load(std::memory_order_relaxed); + while (count > peak && !debug_peak_calls.compare_exchange_weak(peak, count)) { + } +} + +void DebugRecordCallsAtClose(int count) { debug_calls_at_close.store(count); } + +// Parks the calling host thread inside the library until the scenario releases +// it. The runtime gate is dropped first, so nothing else is blocked behind the +// held call, and it is never retaken: the call is still counted, because its +// CallScope is still alive, and that is the whole point. +bool DebugHoldCall(std::unique_lock& lock) { + std::unique_lock hold(debug_hold_gate); + if (!debug_hold_armed) return false; + lock.unlock(); + debug_hold_signal.wait(hold, [] { return !debug_hold_armed; }); + return true; +} +#endif + // Every host-facing export enters through this. It refuses once // `cultmesh_quic_runtime_close` has started, and otherwise holds the runtime // open for the length of the call. @@ -213,6 +268,7 @@ public: std::lock_guard lock(runtime_->gate); if (runtime_->closing) return; ++runtime_->active_calls; + CULTMESH_QUIC_DEBUG_PEAK(runtime_->active_calls); entered_ = true; } // The notify stays under `gate`, and that is the whole point of it. Released @@ -817,6 +873,7 @@ CULTMESH_API void cultmesh_quic_runtime_close(void* handle) { if (runtime->closing) return; runtime->closing = true; runtime->signal.notify_all(); + CULTMESH_QUIC_DEBUG_AT_CLOSE(runtime->active_calls); runtime->signal.wait(lock, [runtime] { return runtime->active_calls == 0; }); CULTMESH_QUIC_ASSERT_QUIESCED(runtime->active_calls); for (auto& entry : runtime->streams) streams.push_back(std::move(entry.second)); @@ -1117,6 +1174,10 @@ CULTMESH_API int32_t cultmesh_quic_next_event( if (runtime->events.empty() && timeout_ms > 0) { runtime->signal.wait_for(lock, std::chrono::milliseconds(timeout_ms), [runtime] { return !runtime->events.empty() || runtime->closing; }); + // Development builds only; a no-op unless a scenario has armed the hold. + // A held call returns the same 0 an empty queue would have, and touches + // the runtime no further. + if (CULTMESH_QUIC_DEBUG_HELD(lock)) return 0; } if (runtime->events.empty()) return 0; @@ -1371,3 +1432,28 @@ CULTMESH_API void cultmesh_quic_close(V1Client* client) { } #endif // _WIN32 + +#if defined(CULTMESH_QUIC_DEBUG_ASSERTS) +// The development seam's three exports. They exist only in a build configured +// with CULTMESH_QUIC_DEBUG_ASSERTS; a shipped library exports neither these nor +// the counters behind them. See section 7 of the header. +CULTMESH_API void cultmesh_quic_debug_hold_calls(int32_t hold) { + if (hold != 0) { + debug_peak_calls.store(0); + debug_calls_at_close.store(-1); + } + { + std::lock_guard lock(debug_hold_gate); + debug_hold_armed = hold != 0; + } + debug_hold_signal.notify_all(); +} + +CULTMESH_API int32_t cultmesh_quic_debug_peak_calls(void) { + return debug_peak_calls.load(); +} + +CULTMESH_API int32_t cultmesh_quic_debug_calls_at_close(void) { + return debug_calls_at_close.load(); +} +#endif diff --git a/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h b/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h index 94c8b5b7..4715e266 100644 --- a/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h +++ b/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h @@ -308,6 +308,38 @@ CULTMESH_QUIC_API int32_t cultmesh_quic_last_error( * when nothing has failed. */ CULTMESH_QUIC_API int32_t cultmesh_quic_last_status(void* runtime); +/* --------------------------------------------------------------------------- + * 7. The development seam + * + * Present only in a library configured with `CULTMESH_QUIC_DEBUG_ASSERTS`, which + * a shipped build never is. It exists for the runtime-lifetime scenarios: the + * quiesce is a promise about host calls that are inside the library, and a + * scenario that can only sleep and hope cannot tell a bridge that counts them + * from one that does not. + * + * It is process-wide, not per-runtime, because the numbers outlive the runtime + * they describe: `cultmesh_quic_runtime_close` frees the runtime, and the count + * it waited on is read afterwards. The scenarios open one runtime at a time. + * --------------------------------------------------------------------------- */ +#if defined(CULTMESH_QUIC_DEBUG_ASSERTS) + +/* Non-zero arms the hold and resets both counters: every call that reaches the + * blocking wait in `cultmesh_quic_next_event` parks inside the library instead + * of returning. Zero releases every held call and disarms it. A held call + * returns 0 and touches the runtime no further. */ +CULTMESH_QUIC_API void cultmesh_quic_debug_hold_calls(int32_t hold); + +/* The high-water mark of host calls counted inside the library since the hold + * was armed. Zero means no call was ever counted. */ +CULTMESH_QUIC_API int32_t cultmesh_quic_debug_peak_calls(void); + +/* How many host calls were counted inside the library when the last + * `cultmesh_quic_runtime_close` began its wait, or -1 if no close has begun one + * since the hold was armed. This is the number the wait exists for. */ +CULTMESH_QUIC_API int32_t cultmesh_quic_debug_calls_at_close(void); + +#endif /* CULTMESH_QUIC_DEBUG_ASSERTS */ + #if defined(__cplusplus) } #endif diff --git a/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp b/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp index 1fc137a7..36794d22 100644 --- a/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp +++ b/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp @@ -18,6 +18,14 @@ // be caught by an unlucky thread schedule. // // cultmesh_quic_native_tests closerace [iterations] [pollers] +// cultmesh_quic_native_tests holdclose [iterations] [pollers] +// +// `closerace` hunts the race: many pollers, many iterations, and whatever the +// schedule gives. `holdclose` takes the guessing out of it — the bridge's +// development seam (section 7 of the header) holds the pollers inside the +// library until this scenario releases them, and reports how many host calls the +// bridge actually counted, so the scenario asserts the quiesce instead of +// assuming its own fixture worked. It needs CULTMESH_QUIC_DEBUG_ASSERTS. // // Exit code 0 means every assertion held. Anything else, including a sanitizer // abort or the bridge's own assertion, is a failure. Under ThreadSanitizer run @@ -73,11 +81,18 @@ std::string CloseRaceOnce(int pollers) { std::atomic returned{0}; std::atomic undefined_return{0}; std::atomic timed_out{0}; + // Set just before the close, and read by each poller as it returns. A poller + // that is already out by then was never in the race, and a scenario full of + // those passes without testing anything: this is what catches a bridge whose + // blocking crossing has stopped blocking. + std::atomic closing_started{false}; + std::atomic left_before_the_close{0}; std::vector threads; threads.reserve(static_cast(pollers)); for (int index = 0; index < pollers; ++index) { - threads.emplace_back([runtime, &entering, &returned, &undefined_return, &timed_out] { + threads.emplace_back([runtime, &entering, &returned, &undefined_return, &timed_out, + &closing_started, &left_before_the_close] { std::vector payload(static_cast(kPayloadCapacity)); cultmesh_quic_event event{}; int32_t required = 0; @@ -96,6 +111,7 @@ std::string CloseRaceOnce(int pollers) { // The close is what ends this wait. Sitting out the whole timeout // instead means the wake never reached it. if (elapsed >= kPollTimeoutMs / 2) timed_out.fetch_add(1); + if (!closing_started.load()) left_before_the_close.fetch_add(1); returned.fetch_add(1); }); } @@ -106,9 +122,13 @@ std::string CloseRaceOnce(int pollers) { // close, which is the host's to avoid, not the bridge's to survive. std::this_thread::sleep_for(std::chrono::milliseconds(50)); + closing_started.store(true); cultmesh_quic_runtime_close(runtime); for (auto& thread : threads) thread.join(); + if (left_before_the_close.load() != 0) + return std::to_string(left_before_the_close.load()) + " of " + std::to_string(pollers) + + " pollers returned before the close began, so they were never in the race"; if (undefined_return.load() != 0) return std::to_string(undefined_return.load()) + " poller(s) saw a return the header does not define"; if (timed_out.load() != 0) @@ -119,6 +139,119 @@ std::string CloseRaceOnce(int pollers) { return {}; } +#if defined(CULTMESH_QUIC_DEBUG_ASSERTS) + +// How long a poll that does not block is given to prove it by returning, after +// the calls have been counted and before the close begins. A bridge whose +// blocking wait no longer blocks has emptied itself of host calls by the time +// the close starts, and `calls_at_close` then says 0. +constexpr int kSettleMs = 100; + +// How long the close is required to stay inside `cultmesh_quic_runtime_close` +// while the pollers are held. The held calls are what it is waiting for, and +// nothing releases them until this elapses, so a close that returns first gave +// up on a call that was still inside. This bounds what the scenario can see: a +// close that waits for longer than this and then gives up is not distinguished +// from one that waits properly, which is the honest limit of the check. +constexpr int kHeldWindowMs = 500; + +// How long the pollers are given to be counted inside the library before the +// close begins. Reaching `pollers` is the normal path; the deadline only stops +// a bridge that never counts them from hanging the scenario. +constexpr int kCountedDeadlineMs = 2000; + +// One iteration of the quiesce itself, with the guesswork taken out: the pollers +// are held inside the library by the bridge's own development seam until this +// scenario lets them go, and the bridge says how many calls it counted rather +// than the scenario assuming the schedule put them there. +// +// Three promises, and a mutation that breaks any one of them is seen here: +// - the calls are counted (`peak`), so a blocking crossing outside a call scope +// is not merely uncounted-but-lucky, it reads as zero; +// - they were still counted when the close began its wait (`calls_at_close`), +// so a poll that stopped blocking cannot leave the scenario testing an empty +// library; +// - the close did not return while they were held, so a wait that gives up +// after any interval shorter than the hold is not a wait. +std::string HoldCloseOnce(int pollers) { + cultmesh_quic_debug_hold_calls(1); + void* runtime = nullptr; + const int32_t opened = cultmesh_quic_runtime_open("cultmesh-quic-native-tests", &runtime); + if (opened != 0 || runtime == nullptr) { + cultmesh_quic_debug_hold_calls(0); + return "cultmesh_quic_runtime_open returned " + std::to_string(opened); + } + + std::atomic returned{0}; + std::atomic undefined_return{0}; + std::vector threads; + threads.reserve(static_cast(pollers)); + for (int index = 0; index < pollers; ++index) { + threads.emplace_back([runtime, &returned, &undefined_return] { + std::vector payload(static_cast(kPayloadCapacity)); + cultmesh_quic_event event{}; + int32_t required = 0; + const int32_t result = cultmesh_quic_next_event( + runtime, kPollTimeoutMs, &event, payload.data(), kPayloadCapacity, &required); + if (result != 0 && result != 1 && result != 2) undefined_return.fetch_add(1); + returned.fetch_add(1); + }); + } + + const auto counted_deadline = + std::chrono::steady_clock::now() + std::chrono::milliseconds(kCountedDeadlineMs); + while (cultmesh_quic_debug_peak_calls() < pollers && + std::chrono::steady_clock::now() < counted_deadline) + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + std::this_thread::sleep_for(std::chrono::milliseconds(kSettleMs)); + + std::atomic closed{false}; + std::thread closer([runtime, &closed] { + cultmesh_quic_runtime_close(runtime); + closed.store(true); + }); + const auto held_until = + std::chrono::steady_clock::now() + std::chrono::milliseconds(kHeldWindowMs); + while (!closed.load() && std::chrono::steady_clock::now() < held_until) + std::this_thread::sleep_for(std::chrono::milliseconds(5)); + + const bool closed_while_held = closed.load(); + const int32_t peak = cultmesh_quic_debug_peak_calls(); + const int32_t at_close = cultmesh_quic_debug_calls_at_close(); + + cultmesh_quic_debug_hold_calls(0); + closer.join(); + for (auto& thread : threads) thread.join(); + + if (peak != pollers) + return "the library counted a peak of " + std::to_string(peak) + " host call(s) inside it, not " + + std::to_string(pollers) + "; the blocking crossing is not inside a call scope"; + if (at_close != pollers) + return "the close began its wait with " + std::to_string(at_close) + + " host call(s) counted inside, not " + std::to_string(pollers) + + "; the pollers were not inside the library when the close started"; + if (closed_while_held) + return "the close returned while " + std::to_string(pollers) + + " host call(s) were still held inside the library"; + if (undefined_return.load() != 0) + return std::to_string(undefined_return.load()) + " poller(s) saw a return the header does not define"; + if (returned.load() != pollers) + return std::to_string(returned.load()) + " of " + std::to_string(pollers) + " pollers returned"; + return {}; +} + +int HoldClose(int iterations, int pollers) { + for (int iteration = 0; iteration < iterations; ++iteration) { + const std::string failure = HoldCloseOnce(pollers); + if (!failure.empty()) + return Fail("holdclose iteration " + std::to_string(iteration) + ": " + failure); + } + std::printf("holdclose %dx%d: ok\n", iterations, pollers); + return 0; +} + +#endif // CULTMESH_QUIC_DEBUG_ASSERTS + int CloseRace(int iterations, int pollers) { for (int iteration = 0; iteration < iterations; ++iteration) { const std::string failure = CloseRaceOnce(pollers); @@ -133,18 +266,26 @@ int CloseRace(int iterations, int pollers) { int main(int argc, char** argv) { if (argc < 2) { - std::fprintf(stderr, "usage: %s closerace [iterations] [pollers]\n", argv[0]); + std::fprintf(stderr, "usage: %s closerace|holdclose [iterations] [pollers]\n", argv[0]); return 2; } const std::string scenario = argv[1]; - if (scenario == "closerace") { - const int iterations = argc > 2 ? std::atoi(argv[2]) : 20; - const int pollers = argc > 3 ? std::atoi(argv[3]) : 256; - if (iterations <= 0 || pollers <= 0) { - std::fprintf(stderr, "closerace needs a positive iteration and poller count\n"); - return 2; - } - return CloseRace(iterations, pollers); + const int iterations = argc > 2 ? std::atoi(argv[2]) : 20; + const int pollers = argc > 3 ? std::atoi(argv[3]) : 256; + if (iterations <= 0 || pollers <= 0) { + std::fprintf(stderr, "%s needs a positive iteration and poller count\n", scenario.c_str()); + return 2; + } + if (scenario == "closerace") return CloseRace(iterations, pollers); + if (scenario == "holdclose") { +#if defined(CULTMESH_QUIC_DEBUG_ASSERTS) + return HoldClose(iterations, pollers); +#else + std::fprintf(stderr, + "holdclose needs the development seam: configure with " + "-DCULTMESH_QUIC_DEBUG_ASSERTS=ON\n"); + return 2; +#endif } std::fprintf(stderr, "unknown scenario '%s'\n", scenario.c_str()); return 2; From e4e09a086c3ad128db28921a9abd67bd55539b1d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 00:24:21 +0200 Subject: [PATCH 0075/1002] Enter the rules the quiesce rests on, and stop exiting green on skips MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Four entries the native target did not have. Two for the rule that a blocking crossing is a counted host call: the revert deletes the call scope from `cultmesh_quic_next_event`, and the loosening keeps the scope and its refusal but drops it at the door, before the call blocks. Two for the rule that a positive timeout blocks until an event or the close: the revert inverts the comparison, and the loosening waits a token millisecond. All four were green before this, because nothing checked that the pollers were inside the library at all. The bounded-wait loosening goes from 1 ms to 50 ms. A 1 ms bound only ever lost a race — the margin was a few hundred lock handoffs — and the same loosening at 50 ms survived on both targets. `holdclose` holds its pollers for 500 ms, so any bound shorter than the hold now expires with calls still inside. A bound longer than the hold is not distinguished, which is this entry's honest limit. A run that skips entries covered those rules with nothing, and exiting 0 let a win32-x64 run — where every ThreadSanitizer rule is skipped — be read as a green gate. It exits 2 and says so, with a killed/survived/skipped line. A red control arrived as a bare colour with the child's output thrown away, which is how a configuration that could not start at all stayed invisible. The control now prints what the child said. On linux-x64 the sanitizer configurations are re-executed through `setarch -R`, because ThreadSanitizer dies before `main` on the kernel's address-space randomisation; both that and the seccomp denial behind `personality(ADDR_NO_RANDOMIZE)` stop the run with the cause and the required invocation instead of being reported as kills. Co-Authored-By: Claude Opus 5 --- scripts/mutate-cultmesh.mjs | 196 ++++++++++++++++++++++++++++++++---- 1 file changed, 177 insertions(+), 19 deletions(-) diff --git a/scripts/mutate-cultmesh.mjs b/scripts/mutate-cultmesh.mjs index 161da431..c8cced18 100644 --- a/scripts/mutate-cultmesh.mjs +++ b/scripts/mutate-cultmesh.mjs @@ -398,6 +398,57 @@ const mutations = [ " }\n" + " if (last) runtime_->signal.notify_all();\n", }, + // The rule the quiesce rests on, and the one the scenario used to assume + // rather than test: the blocking crossing is a counted host call for as long + // as it is inside the library. Soul deleted the scope from `next_event` + // outright and every configuration stayed green, because the pollers finished + // before the teardown reached them. `holdclose` reads the bridge's own count + // instead. + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + rule: "the blocking crossing is a counted call (revert: no call scope on next_event)", + old: " CallScope scope(runtime);\n" + + " if (!scope.entered()) return -1;\n" + + " *out_required = 0;\n", + new: " *out_required = 0;\n", + }, + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + // The shape that passes review: the guard is there, it refuses during a + // close, it is simply let go before the call blocks. What the closer waits + // on is the count, and this hands it back at the door. + rule: "the blocking crossing is a counted call (loosening: the scope is dropped before the wait)", + old: " CallScope scope(runtime);\n" + + " if (!scope.entered()) return -1;\n" + + " *out_required = 0;\n", + new: " {\n" + + " CallScope scope(runtime);\n" + + " if (!scope.entered()) return -1;\n" + + " }\n" + + " *out_required = 0;\n", + }, + // And the fixture's own premise, which is a rule of the bridge and not of the + // scenario: a positive timeout blocks. Soul inverted this comparison and the + // scenario stayed green on six configurations, because nothing checked that + // the pollers were inside the library when the close began. + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + rule: "a positive timeout blocks until an event or the close (revert: it returns at once)", + old: " if (runtime->events.empty() && timeout_ms > 0) {", + new: " if (runtime->events.empty() && timeout_ms < 0) {", + }, + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + // Still a wait, still the host's timeout in the signature, and the poller is + // gone a millisecond later. A scenario that only sleeps cannot tell. + rule: "a positive timeout blocks until an event or the close (loosening: it waits a token 1 ms)", + old: "std::chrono::milliseconds(timeout_ms),", + new: "std::chrono::milliseconds(1),", + }, { target: "native", honestOn: ["linux-x64", "win32-x64"], @@ -409,11 +460,17 @@ const mutations = [ target: "native", honestOn: ["linux-x64", "win32-x64"], // A bounded wait is the shape that survives review: it looks like the wait, - // it usually finishes, and it turns the contract into a hope. The assertion - // is what tells them apart. + // it usually finishes, and it turns the contract into a hope. The bound is + // 50 ms, not the 1 ms this entry used to carry, because 1 ms only ever lost + // a race — Soul measured the margin at a few hundred lock handoffs, and the + // same loosening at 50 ms survived on both targets. `holdclose` holds its + // pollers for 500 ms, so the bound no longer has to be unlucky: any bound + // shorter than the hold expires with calls still inside and the bridge's own + // assertion says so. A bound longer than the hold is not distinguished, and + // that is the honest limit of this entry. rule: "the close waits for every in-flight call (loosening: a bounded wait that gives up)", old: " runtime->signal.wait(lock, [runtime] { return runtime->active_calls == 0; });", - new: " runtime->signal.wait_for(lock, std::chrono::milliseconds(1),\n" + + new: " runtime->signal.wait_for(lock, std::chrono::milliseconds(50),\n" + " [runtime] { return runtime->active_calls == 0; });", }, ]; @@ -447,12 +504,31 @@ function testsPass(workspace) { // missing wait fail on the first close instead of on an unlucky one. The // ThreadSanitizer build is the only thing that sees a notify land on a destroyed // condition variable, and it exists on linux-x64 alone. +// +// `holdclose` runs only where the development seam exists, which is the +// assertion build: it drives the quiesce through that seam rather than through a +// sleep, and it is what kills the rules about counting a host call at all. The +// ThreadSanitizer build deliberately keeps the shipped shape — no assertions, no +// seam — because what it is there for is the race in a library built like the +// one that ships. const nativeConfigurations = platform === "linux-x64" ? [ - { name: "asserts", asserts: "ON", sanitizer: null }, - { name: "tsan", asserts: "OFF", sanitizer: "thread" }, + { + name: "asserts", + asserts: "ON", + sanitizer: null, + scenarios: [["holdclose", "3", "64"], ["closerace", "20", "256"]], + }, + { name: "tsan", asserts: "OFF", sanitizer: "thread", scenarios: [["closerace", "20", "256"]] }, ] - : [{ name: "asserts", asserts: "ON", sanitizer: null }]; + : [ + { + name: "asserts", + asserts: "ON", + sanitizer: null, + scenarios: [["holdclose", "3", "64"], ["closerace", "20", "256"]], + }, + ]; function msquicArguments() { if (platform === "win32-x64") { @@ -482,6 +558,54 @@ function msquicArguments() { }; } +// What the last failed native check actually said. A red control used to arrive +// as a bare RED line with the child's output thrown away, which is how a +// configuration that could not start at all stayed invisible; this is printed +// with it. +let nativeFailure = null; + +function childOutput(error) { + const parts = [error.stderr, error.stdout] + .map(stream => (stream ? stream.toString("utf8").trimEnd() : "")) + .filter(text => text.length > 0); + return parts.length > 0 ? parts.join("\n") : `${error.message}`; +} + +// A sanitizer needs the process's address space where it expects it. Under the +// kernel's address-space randomisation a ThreadSanitizer process dies before +// main with "unexpected memory mapping", which is not a mutation being killed — +// it is every mutation being reported killed for a run that never started. So +// the sanitizer configurations are re-executed with randomisation off rather +// than left to whoever invokes this script to know. +// +// `setarch -R` asks for that through personality(ADDR_NO_RANDOMIZE), which +// Docker's default seccomp profile denies. Both failures are named here rather +// than swallowed. +function scenarioCommand(runner, scenario, configuration) { + if (configuration.sanitizer && platform === "linux-x64") + return ["setarch", ["-R", runner, ...scenario]]; + return [runner, scenario]; +} + +function explainUnrunnable(error, configuration, runner, scenario) { + const output = childOutput(error); + const invocation = `setarch -R ${runner} ${scenario.join(" ")}`; + if (error.code === "ENOENT") + return `the ${configuration.name} configuration needs setarch (util-linux) to disable address-space ` + + `randomisation, and it is not on PATH.\n Required invocation: ${invocation}`; + if (/failed to set personality|Operation not permitted/.test(output)) + return `setarch could not disable address-space randomisation for the ${configuration.name} ` + + "configuration: personality(ADDR_NO_RANDOMIZE) was denied.\n" + + " Docker's default seccomp profile denies it; run the container with --security-opt seccomp=unconfined.\n" + + ` Required invocation: ${invocation}\n ${output}`; + if (/unexpected memory mapping/.test(output)) + return `the ${configuration.name} sanitizer died before the scenario started, on the kernel's ` + + "address-space randomisation.\n" + + ` Required invocation: ${invocation}, in a container run with --security-opt seccomp=unconfined.\n` + + ` ${output}`; + return null; +} + function nativeScenariosPass() { const msquic = msquicArguments(); const source = join(repoRoot, "native", "GameCult.Mesh.Quic.Native"); @@ -511,24 +635,37 @@ function nativeScenariosPass() { ], { cwd: repoRoot, stdio: ["ignore", "pipe", "pipe"] }); execFileSync("cmake", ["--build", build, "--config", "RelWithDebInfo"], { cwd: repoRoot, stdio: ["ignore", "pipe", "pipe"] }); - } catch { + } catch (error) { // A mutation that does not compile is killed by the build, which is a // legitimate kill: the rule it removed was load-bearing to the language. + nativeFailure = `${configuration.name}: the build failed\n${childOutput(error)}`; return false; } for (const [from, name] of msquic.runtime) writeFileSync(join(binaries, name), readFileSync(from)); const runner = join(binaries, platform === "win32-x64" ? "cultmesh_quic_native_tests.exe" : "cultmesh_quic_native_tests"); - try { - execFileSync(runner, ["closerace", "20", "256"], { - cwd: binaries, - stdio: ["ignore", "pipe", "pipe"], - // Without this a reported race is printed and the run still exits 0, - // so every sanitizer mutation would survive. - env: { ...process.env, TSAN_OPTIONS: "halt_on_error=1", ASAN_OPTIONS: "halt_on_error=1" }, - }); - } catch { - return false; + for (const scenario of configuration.scenarios) { + const [command, commandArguments] = scenarioCommand(runner, scenario, configuration); + try { + execFileSync(command, commandArguments, { + cwd: binaries, + stdio: ["ignore", "pipe", "pipe"], + // A held poller plus a stopped close is the shape a broken mutant + // leaves behind, and it hangs rather than failing. Bounded well above + // the scenarios' own seconds so only a hang reaches it. + timeout: 180000, + // Without this a reported race is printed and the run still exits 0, + // so every sanitizer mutation would survive. + env: { ...process.env, TSAN_OPTIONS: "halt_on_error=1", ASAN_OPTIONS: "halt_on_error=1" }, + }); + } catch (error) { + // A scenario the environment cannot run is not a kill, and reporting it + // as one is how a whole configuration goes quiet. It stops the run. + const unrunnable = explainUnrunnable(error, configuration, runner, scenario); + if (unrunnable) throw new Error(unrunnable); + nativeFailure = `${configuration.name}: ${scenario.join(" ")}\n${childOutput(error)}`; + return false; + } } } return true; @@ -640,9 +777,17 @@ for (const [name, target] of Object.entries(targets)) { writeFileSync(sidecar, original); try { writeFileSync(target.file, Buffer.from(originalText, "utf8")); + nativeFailure = null; const controlPass = check(); results.push({ target: name, outcome: controlPass ? "green" : "RED", rule: "control (no-op rewrite)" }); - if (!controlPass) failed = true; + // A red control is the harness failing, not a rule failing, and it used to + // arrive with nothing but the colour. Whatever the child said is the + // diagnosis, so it is printed where it happens rather than discarded. + if (!controlPass) { + failed = true; + console.error(`control RED [${name}]: the unmutated source does not pass its own check`); + if (nativeFailure) console.error(nativeFailure); + } else { for (const mutation of own) { const [old, replacement] = [withEol(mutation.old), withEol(mutation.new)]; @@ -697,4 +842,17 @@ for (const [name, target] of Object.entries(targets)) { console.log(`build host and target: ${platform}`); for (const result of results) console.log(`${result.outcome.padEnd(9)} [${result.target}] ${result.rule}`); -process.exit(failed ? 1 : 0); + +// A run that skipped entries has not covered those rules, and exiting 0 lets a +// gate read a win32-x64 run — where every ThreadSanitizer rule is skipped — as +// proof of something it never touched. The status says which of the three +// outcomes the run reached. +const counted = outcome => results.filter(result => result.outcome === outcome).length; +const [killed, survived, skipped] = [counted("killed"), counted("SURVIVED"), counted("skipped")]; +console.log(`${killed} killed, ${survived} survived, ${skipped} skipped on ${platform}`); +if (skipped > 0) { + console.log( + `${skipped} rule(s) have no kill on ${platform} and were not exercised by this run; ` + + "run the native target on the platform each names to cover them."); +} +process.exit(failed ? 1 : (skipped > 0 ? 2 : 0)); From 12c8bfcc7d33e8f39afe845bc47f53414d0be5f9 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 00:25:59 +0200 Subject: [PATCH 0076/1002] Let the prohibition on a late call stand on its own MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Section 4 forbade any host call that begins after `cultmesh_quic_runtime_close` starts, and promised in the same sentence that such a call is refused with -1; section 6 repeated the promise for `cultmesh_quic_next_event`. The refusal lives behind the runtime's own gate, so once the close has returned there is nothing left to read it: the case the sentence describes is exactly the case where the promise cannot hold. The prohibition stands alone. The refusal is stated for what it is — a call that races the start of a close, while the close is still running, is refused and touches nothing — and no longer as a guarantee covering the call the section forbids. Co-Authored-By: Claude Opus 5 --- .../include/cultmesh_quic_native.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h b/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h index 4715e266..bf30d7eb 100644 --- a/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h +++ b/native/GameCult.Mesh.Quic.Native/include/cultmesh_quic_native.h @@ -198,10 +198,12 @@ enum cultmesh_quic_stream_kind { * `cultmesh_quic_runtime_close` quiesces before it tears anything down. It marks * the runtime closing, wakes every blocked `cultmesh_quic_next_event`, and waits * for every in-flight export to return before it closes a handle or frees a - * byte. No host call may begin after `cultmesh_quic_runtime_close` starts: a - * call that arrives during or after it is refused with -1 and touches nothing. - * The host is responsible for that ordering; the refusal is a guard rail, not a - * licence to race. + * byte. No host call may begin after `cultmesh_quic_runtime_close` starts. That + * ordering is the host's, and it is a prohibition rather than a race the bridge + * arbitrates: once the close returns, the handle names freed memory, and a call + * made with it has nothing left to refuse it. A call that races the start of the + * close, while it is still running, is refused with -1 and touches nothing; that + * narrows one mis-ordering and does not make the prohibition optional. * --------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------- @@ -280,8 +282,9 @@ CULTMESH_QUIC_API void cultmesh_quic_stream_shutdown( /* The one blocking crossing. * * 0 nothing within `timeout_ms`. A poller already blocked here when - * `cultmesh_quic_runtime_close` starts is woken and returns 0; one that - * arrives after it starts is refused with -1 like any other call. + * `cultmesh_quic_runtime_close` starts is woken and returns 0. A poll that + * begins after the close starts is forbidden by section 4, and is not a + * case this return code covers. * 1 `*out_event` filled and up to `payload_capacity` payload bytes copied; * `*out_required` is the payload size * 2 `payload_capacity` is too small. Nothing is consumed and nothing is From c2c07605d8dc9014c378572b7264245ea0ef2c43 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 00:36:44 +0200 Subject: [PATCH 0077/1002] Map the selection cut for CultNet's database organ Three selector engines evaluate the same two allowlists today, two of them carrying identical copies of the same reflection, and projection is a delegate no production code ever constructs. The map replaces all of it with one selection a caller can state: any-of over the aliases the cache already declares, a projection it asks for, an order, a cursor, and one hop along a declared reference. The audit is reported as measured rather than as hoped. About 326 of 21,720 lines collapse in CultMesh, and the repository grows by about 370, because the Rust runtime gains a capability it never had. Co-Authored-By: Claude Fable 5.1 --- docs/cultnet-selection-cut.md | 751 ++++++++++++++++++++++++++++++++++ 1 file changed, 751 insertions(+) create mode 100644 docs/cultnet-selection-cut.md diff --git a/docs/cultnet-selection-cut.md b/docs/cultnet-selection-cut.md new file mode 100644 index 00000000..de2f9045 --- /dev/null +++ b/docs/cultnet-selection-cut.md @@ -0,0 +1,751 @@ +# CultNet typed selection: cut map + +Date: 2026-09-17. Imagination output. Intended path: `F:\Projects\CultLib\docs\cultnet-selection-cut.md`. +No code in this document has been written; nothing here is committed by +Imagination. This is its own campaign with its own map; it does not touch +`docs/typescript-quic-realtime-cut.md` or any code in that tree. + +Status: cut map for one cut, **Cut 1: the selection vocabulary in the C# +reference runtime and the Rust runtime**, with the follow-on runtime cuts +and the Huginn consumer cut named and not mapped. + +**Rulings this map is written under (operator, 2026-09-17):** + +- The vocabulary lands in CultLib at the CultNet layer, not in Huginn. It + fills a hole: the query side of the substrate was never dropped by + decision, only never asked for. `contracts/cultnet/cultnet-distributed-database.md:10-11` + names RethinkDB changefeeds with "point, table/schema, and **filtered + watches**" as prior art to keep; schema and key allowlists were built, + filtered selection never was. +- The first cut covers the C# reference (`src\GameCult.Networking`) and + Rust (`packages\cultnet-rs`, what Huginn consumes). TypeScript, Python and + Kotlin follow when they have a caller. +- Deletes first: the two untyped stand-ins are replaced, not sat beside. +- The CultMesh subtraction audit is a required part of the map, with real + line counts, and an honest miss beats a padded ledger. +- Nothing on the wire is serde-untagged (rule of this cut; evidence below). + +**What survives unchanged from the Huginn-targeted specification** +(`scratchpad/cut10b-read-side-spec.md`, D1-D4): the five capabilities, the +chosen representation and the rejected ones with their reasons, the order and +snapshot cursor, the role-typed hop, the one negation, and the bound. What +changes: owner, repo, the value model of a field predicate (strings, because +the cache's indexes are strings), the parity obligation, and the subtraction. + +## Pins + +| Repo | Branch | HEAD | State | +|---|---|---|---| +| CultLib | `main` | `51fb449` | dirty in `native/GameCult.Mesh.Quic.Native/*` and `scripts/mutate-cultmesh.mjs` from the live QUIC campaign; **not touched**. Every `file:line` below is against `51fb449`. | +| Huginn | `eureka/memory-organ` | `25a841d` | the consumer; its cut is named in section 12 and mapped in the Epiphany campaign map. | +| Epiphany leaf | `5cda0886` | — | untouched. | + +Baselines: `src/GameCult.Networking` 14,848 lines; `src/GameCult.Mesh` +21,720 lines; `tests/GameCult.Networking.Tests/NetworkingTests.cs` 141 +`[Test]`s; `packages/cultnet-rs` 111 `#[test]`s; `cultnet-rs` depends on +`serde`, `rmp-serde 1.3`, `rmpv`, `serde_json`, `cultcache-rs` and no +`schemars` (`packages/cultnet-rs/Cargo.toml:14-31`). + +## 1. Body facts, each by source read + +**The reference's read side today.** + +- `CultNetDatabase` (`src/GameCult.Networking/CultNetDatabase.cs`): change + kinds `:15-45`; `Watch` `:1052`, `WatchAllChanges` `:1063`, + `WatchRecord` `:1072`; `GetAll` `:776`; per-shard mutation log with + sequence (`:465-466`, `:528-590`, `:631` a snapshot carries + `ShardLogSequence`). `CultNetSchemaAliasMatching` `:47-97` is the one + schema-alias matcher, `internal static`. +- **Three separate selector engines evaluate the same two allowlists:** + `CultNetDocumentRegistry.CreateRawSnapshotResponse` `:263-349` (snapshot, + over `cache.AllEntries` by reflection at `:325-342`) with its own + `MatchesRequestedSchema` `:505-524`; `CultNetDatabaseServer.CreateChangeMessage` + `:347-384` with `Matches`/`MatchesSchema`/`InferSchemaName` `:401-468` + (the LiteNetLib path, the one production construction site, + `CultNetLocal.cs:154`); `CultNetDatabaseSubscriptionServer.CreateChangeCore` + `:442-485` with `MatchesRequestedSchema` `:493-500` (the RUDP path). Two + of them carry an identical reflection copy of `CreateRawRecord` + (`CultNetDatabaseServer.cs:386-399`, `CultNetDatabaseSubscriptionServer.cs:502-515`). +- **The two stand-ins.** `CultNetDatabaseSubscribeMessage` + (`CultNetSchemaMessages.cs:788-826`): `schemaIds` `:805`, `recordKeys` + `:809`, `includeSnapshot` `:813`, then `consumerRuntimeId`, `bodyIds`, + `supportedBodyTransports` (body-plane demand, not selection). The same + pair on `CultNetSnapshotRequestMessage` `:737-741`, + `CultNetShardCatalogRequestMessage` `:949-953` (shard routing, stays), and + `CultNetSchemaCatalogRequestMessage` `:1591` (catalog, stays). + `_projectRecord` on the subscription server (`:27`, `:44`, `:50`, + `:239-240`, `:314`): **no production caller constructs the subscription + server at all** — `grep "new CultNetDatabaseSubscriptionServer"` over + `src/` is empty; it is built only in tests (`NetworkingTests.cs:1596-1605` + passes `projectRecord`). Projection is authority that exists in the + reference and reaches no wire and no caller. +- **The cache already owns addressing.** `CultIndexAttribute` + (`src/GameCult.Caching/CultDocumentContracts.cs:34`, `Alias` `:41`) names + a member as an index; the cache's index values are **strings by + construction** (`CultCache.cs:1084` `Getter = document => getValue(document)?.ToString()`; + `GetByIndex(string alias, string value)` `:1503-1509`). + `CultReferenceAttribute` (`:45`, `TargetType` `:53`, `Many` `:55`) names a + member as a reference; the descriptor records `IsReference`, `IsMany`, + `TargetSchemaName` (`CultCache.cs:1069-1080`). So a field predicate's key + is an index alias and a hop's role is a reference member, both declared + by the document's owner and both readable from `CultDocumentDescriptor`. + No cache change is needed for addressing. +- **Schemas are hand-written JSON** in `contracts/cultnet/*.schema.json`, + listed by file name in `CultNetSchemaRegistry.cs:360-385`; TypeScript + compiles them with Ajv and refuses unknown fields + (`cultnet.database-subscribe.schema.json` has `additionalProperties: false`); + Python lists required fields per version by hand + (`packages/cultnet-py/src/cultnet_py/schema_catalog.py:283`, `:407`); Rust + types are a serde enum tagged on `schemaVersion` + (`packages/cultnet-rs/src/contracts.rs:252`) with hand validation + (`require_optional_string_vec`, `:548-594`). C# encodes with + MessagePack-CSharp string keys (`[Key("name")]`), i.e. named maps; Rust + encodes with `rmp_serde::to_vec_named`. +- **Runtime coverage of the subscribe message today.** C# server ×2, C# + client (`CultNetDatabaseSubscriptionClient.cs:138-151`); TypeScript + contract only (`packages/cultnet-ts/src/contracts.ts:237-247`, no server + fanout, interop tests send it at `test/interop/cultnet-interop.test.ts:719,798`); + Python server ×2 (`cultnet_py/interop_peer.py:390-401` with + `DatabaseSubscription.matches` `:110-125`, and + `cultmesh_py/server.py:315-331` with `_subscription_matches_document` + `:449-470`, `_schema_matches_request` `:699-716`, and a third copy in + `cultmesh_py/node.py:1322-1345`); **Rust: none** — `cultnet-rs` has + `SnapshotRequest` with the two allowlists (`contracts.rs:314-321`) and no + `DatabaseSubscribe` variant; Kotlin: none (a snapshot-request builder, + `CultMesh.kt:2111`, and a `require(schemaVersion == "…snapshot_request.v0")` + at `:2195`). +- **How each runtime treats a message it does not know**, which is the + wire-parity fact section 9 rests on: C# throws + (`CultNetSchemaMessageSerialization.cs:85` `_ => throw`); TypeScript + `parseCultNetMessage` (`contracts.ts:728-744`) looks the version up in its + Ajv validators and throws when absent; Kotlin `require`s the exact version + (`CultMesh.kt:2195-2196`); Rust's tagged enum fails to deserialize on an + unknown tag; **Python returns `[]`** (`interop_peer.py:360-387` falls off + the chain; `cultmesh_py/server.py:341` delegates to `handle_message`) — a + silent drop, no reply, and for a *known* version with unknown fields + Python reads only the fields it expects (`message.get(...)`), so it would + answer a selector it did not understand with the wrong rows. +- **Every committed write has a shard-log sequence** — assumed from + `CultNetDatabase.cs:465` (`_nextLogSequences`) and the invariant "raw + snapshot/put/delete messages must pass through `CultNetDatabase`" + (`cultnet-distributed-database.md:115-116`); **Hands confirms** that a + local `PutAsync` outside any shard also takes a sequence, because the + order in section 3 rests on it. If it does not, the row's ordinal is its + `storedAt` and the cursor refuses on any advance (section 3 says what + that costs). + +**The CultMesh audit** (Explore pass over `src/GameCult.Mesh` and +`CultNetDocumentRegistry.cs`, 92 sites classified) is in section 11 with its +numbers. + +## 2. The vocabulary, exactly + +One shape, `cultnet.selection.v1`, carried by two request messages at a new +version and answered by one page message. Field names are the wire +spelling; C# and Rust type names follow each runtime's convention. + +``` +Selection { + schemas: string[]? // kinds: schema ids or aliases, matched by CultNetSchemaAliasMatching; absent = every schema + keys: string[]? // record-key allowlist; absent = every key + fields: FieldPredicate[]? // conjunction; each is any-of over one declared index alias + cites: Citation? // rows whose declared reference `role` (or any reference) names `target` + cited: Incoming? // rows that some row does / does not name in `role` + projection: "header" | "document" // default "header" + descending: bool // default false; the one order, reversed + limit: uint32? // clamped 1..=200 + cursor: string? // opaque; minted by the answering server +} +FieldPredicate { index: string, anyOf: string[] } // anyOf non-empty; index must be declared on some schema the selection can reach, else refused +Citation { target: RecordRef, role: string? } // target validated as a reference the row owner recognises +Incoming { role: string, exists: bool } +RecordRef { schemaId: string, recordKey: string } + +SelectionPage { // cultnet.snapshot_response_raw.v1 carries this + matched: uint32 + asOf: uint64 // the snapshot the page is exact for + next: string? // absent on the last page + headers: RawDocumentHeader[]? | documents: RawDocumentRecord[]? // exactly one present, by projection + shardId?, shardEpoch?, shardLogSequence? // as v0 carries them +} +RawDocumentHeader = RawDocumentRecord minus payload, payloadEncoding +``` + +Messages: `cultnet.snapshot_request.v1 { messageId, selection, shardId?, shardEpoch? }`; +`cultnet.database_subscribe.v1 { messageId, subscriptionId, selection, includeSnapshot, consumerRuntimeId?, bodyIds?, supportedBodyTransports? }`; +`cultnet.snapshot_response_raw.v1` as above. `database_change_raw.v0` and +`database_unsubscribe.v0` are unchanged: a change is a change. + +**Rules, each one owner:** + +- **Order** is `(ordinal, schemaId, recordKey)` ascending, or the reverse + under `descending`. `ordinal` is the sequence of the commit that last + wrote the row (the shard-log sequence in the reference; the receipt + sequence in Huginn). The row owner supplies it; the vocabulary never reads + a clock. +- **Snapshot.** A page is exact as of `asOf`. A cursor carries `asOf`, the + last `(ordinal, schemaId, recordKey)`, and a digest of the selection with + `cursor` and `limit` cleared. A server that can present rows as of the + cursor's `asOf` answers the next page over that snapshot; **a server that + cannot refuses** `cultnet.error.v0 { code: "cursor_stale", details: { asOf, current } }`. + The reference refuses when the shard log has advanced (rows mutate, and a + replay is not this cut's); Huginn never refuses (append-only, one + writer). One contract, two honest servers. A cursor that does not decode, + or whose digest is not this selection's, is `cursor_invalid`. +- **Fields** are any-of over string values of one declared index, conjoined + across predicates. A row of a schema that does not declare the index + never matches it. An `index` no reachable schema declares, an empty + `anyOf`, an empty `keys` or `schemas` list, and a `role` no schema + declares are refused typed at the door (`selection_invalid { field, value }`), + never answered as an empty page. Values are strings because the cache's + indexes are strings (`CultCache.cs:1084`); an enum-typed field on the + consumer's side is a string on the wire and the row owner refuses a value + its enum does not carry — the closed key set survives as "declared + aliases only", and the fixed operator survives as any-of. +- **The hop** reads edges the row owner declares: in the reference, members + with `CultReferenceAttribute` (role = the member's index alias or name; + target = the referenced key, or each key when `Many`); in Rust, the + `Row::references` the consumer implements. The citer's status, fields and + authorization are not consulted by the hop; one hop, no second. +- **Projection.** `header` is the record without its payload; `document` is + the record. The consumer decides what a header *means* for typed rows + (Huginn's typed summary is its header; the substrate carries whichever + type the page was instantiated with). +- **Not on the wire:** the admission window (`admittedAfter/Before`) of + Huginn's Cut 9 — `descending` plus the cursor answer "the latest"; a date + window is a range, and ranges are out (Q-G). + +**The bound, carried forward in force.** Closed key set (declared aliases), +fixed operator (any-of), no path language, no expression terms, no OR, one +negation, one hop, no depth field, no sort field, no range, no text. +Section 13 lists what is deliberately impossible. + +**Nothing on the wire is serde-untagged — rule, with evidence.** Probe +`scratchpad/untagged-probe/` (result in `untagged-probe-result.txt`), run +2026-09-17 against `rmp-serde 1.3.1` / `rmp 0.8.15` / `serde 1.0.229` (the +versions Huginn's lockfile resolves; `cultnet-rs` pins `rmp-serde 1.3`): +every `#[serde(untagged)]` enum with struct variants **fails to round-trip +under positional MessagePack** (`data did not match any variant of untagged +enum`) and passes only under named maps; externally tagged shapes pass under +both. The reference encodes named maps and so does Rust today, so an +untagged shape would work by accident of an undocumented encoding choice. +`grep untagged packages/cultnet-rs/src packages/cultcache-rs/src` is empty +at `51fb449`; this cut keeps it empty and pins it (section 10). + +## 3. Decisions, with the reasons + +**D1. Strings for field values, not typed enums.** In the Huginn-targeted +design a predicate was `Option>`, closed at compile +time. The substrate cannot know a consumer's enums, and the cache's own index +model is string-valued; so the wire carries strings and the row owner +refuses a value outside its enum at the door. The loss is compile-time +closure; what is kept is runtime closure with a typed refusal, which is the +same guarantee to a caller. + +**D2. Declared aliases, not a field-path language.** `index` and `role` are +names the document's owner declared with `CultIndexAttribute` and +`CultReferenceAttribute`; an undeclared name is refused. A dot-path over the +payload would be the string language the bound excludes, and the cache +already has the declaration mechanism. + +**D3. A new message version, not new fields on v0.** Section 1's fact: +Python reads only the fields it knows and would answer a v0 selector it +did not understand with the wrong rows. A v1 version string makes every +runtime not in this cut refuse or drop by its own dispatch rather than +mis-answer. The cost is that v0 stays answerable by the reference until the +follow-ups land (Q-F). + +**D4. One evaluator in the reference, three engines deleted.** `Select` +over `(descriptor, key, document)` rows from the cache replaces +`CreateRawSnapshotResponse`'s loop, `CultNetDatabaseServer.CreateChangeMessage`'s +`Matches`, and `CultNetDatabaseSubscriptionServer.CreateChangeCore`. +`CultNetSchemaAliasMatching` (`CultNetDatabase.cs:47-97`) becomes the one +alias matcher and goes `public`; the four Mesh copies and two Networking +copies go. + +**D5. Projection becomes a wire value; `_projectRecord` dies.** The +delegate ran after authorization and reached no caller. `projection` on the +selection is the same authority as a value; `_authorizeRequest` and +`_authorizeRecord` stay, because authorization is not selection. + +**D6. Subscriptions evaluate the selection on the snapshot and on every +change, and hop-bearing selections reconcile.** `cites`/`cited` are +set-dependent: a change to row B can change whether row A matches. The +subscription server already owns a diff-against-delivered reconcile +(`Reconcile` `:251-292`, `DeliveredBySourceRecordKey`); a hop-bearing +subscription runs it on every change instead of the per-change fast path. +That is the mechanism by which "watch a question" falls out, and this cut +does **not** add a local `CultNetDatabase.Watch(Selection)`; section 11 +records what that later cut would collapse (Q-H). + +**D7. The Rust runtime carries the evaluator, not only the types.** Huginn +evaluates selections over its own rows; if `select` lived only in C#, Rust +consumers would each write one. `packages/cultnet-rs/src/selection.rs` +holds the types, the cursor, and `select` over a `Row` trait, with no +subscription client in this cut (Huginn does not subscribe). + +**Agreement with our own abandoned prior art** (`ThreadEpiphanyGraphQuery`, +Epiphany `5c62a650`, deleted with its host `5f6f2441`): direction and edge +kind as data, schema derived — agreed; differs as before (predicate not +subgraph read; roles are declared names not free strings; one negation +added; no depth field). + +**Rejected, unchanged in reason:** Qdrant's `Filter` (open dot-path keys, +polymorphic values, OR/threshold/recursion advertised then refused, the +untagged hazard; Cut 11 lowers `FieldPredicate` to `must`/`match.any` in ~30 +lines on the daemon side); ReQL term trees; Firestore `CompositeFilter`; +Mongo/ES magic-key documents; every string-parsed evaluator surveyed. + +## 4. Deletes first + +| Path:lines (at `51fb449`) | Lines | What | +|---|---:|---| +| `src/GameCult.Networking/CultNetDatabaseServer.cs:347-468` | 122 | `CreateChangeMessage`, `CreateRawDocumentRecord`, `Matches`, `MatchesSchema`, `InferSchemaName` — the LiteNetLib selector engine; the handler calls the shared evaluator and the shared raw-record projection | +| `src/GameCult.Networking/CultNetDatabaseSubscriptionServer.cs:424-515` | 92 | `CreateAuthorizedChange`, `CreateChange`, `CreateChangeCore`, `ResolveWireSchemaId`, `MatchesRequestedSchema`, `CreateRawRecord` — the RUDP selector engine | +| `CultNetDatabaseSubscriptionServer.cs:27, :44, :50, :239-240, :314` | 6 | `_projectRecord`, its parameter and its two call sites | +| `CultNetDatabaseSubscriptionServer.cs:294-322` | 29 | `CreateProjectedSnapshot` body: becomes evaluate + authorize + project (~12 lines stay) | +| `src/GameCult.Networking/CultNetDocumentRegistry.cs:263-349` | 87 | `CreateRawSnapshotResponse`: the loop and its reflection over `cache.AllEntries` (`:325-342`); the raw-record construction (`:297-311`) survives as `ToRawRecord` | +| `CultNetDocumentRegistry.cs:505-524` | 20 | `MatchesRequestedSchema`, a copy of `CultNetSchemaAliasMatching.Matches(candidate, descriptor)` | +| `CultNetDocumentRegistry.cs:247-258` | 12 | `CreateSnapshotRequest` (v0 builder); v1 takes a `Selection` | +| **Networking total** | **368** | | +| `src/GameCult.Mesh/CultMeshSnapshots.cs:638-661, 750-773, 889-911` | 71 | three verbatim clones of the selector-carrying options; one `with` copy over a record type remains | +| `src/GameCult.Mesh/CultMesh.cs:2721-2748, 1941-1969` | 57 | the fourth and fifth copies (`ToSnapshotRequestOptions`, `WithPublicationBindingOptions`) | +| `CultMeshSnapshots.cs:973-983` | 11 | `CleanSnapshotFilter`: normalisation is the selection's own validation | +| `CultMeshSnapshots.cs:1000-1009, 1033-1047, 1078-1088` | 36 | the client-side re-filter of a snapshot by schema and `InferSchemaName`; the server's v1 answer is exact, decode stays | +| `CultMesh.cs:2750-2800` | 51 | `ReadDocumentFromSnapshotResponse`'s four-tier fallback (which returns a record with the wrong key when only the schema matches) and `TryDecodeSnapshotDocument`; replaced by one exact read (~10 stay) | +| `CultMesh.cs:3474-3497` | 24 | `IsSameCultDocumentSchema`: `CultNetSchemaAliasMatching`, now public | +| `CultMeshSnapshots.cs:625-636` and the rule at `:198`, `CultMesh.cs:2716` | ~15 | the "no schema filter when keys are given" rule, three times; one place | +| `CultMeshClient.cs:574-604, 830-860, 932-962` selector construction | ~25 net | `{recordKeys, schemaIds}` literals become `Selection` literals; the retry loops stay | +| `CultMeshBodyDemand.cs:177-221` | ~15 net | `CultMeshHotBodySubscription` builds two allowlists; builds one `Selection` | +| `CultMesh.cs:2701-2719, 2838-2858, 2875-2915` | ~20 net | selector construction for peer snapshots and body subscriptions | +| `CultMeshSnapshots.cs:139-201, 434-516, 611-623` overlay logic | ~40 net | overlaying caller `schemaIds`/`recordKeys` onto defaults, four times | +| **Mesh total** | **≈ 365 gross, ≈ 331 net** | see section 11 for what does not go | +| `tests/GameCult.Networking.Tests/NetworkingTests.cs`: `CultNetDatabaseServer_Creates_Filtered_SnapshotResponse` `:3124`, `…_ForCompatibleSchemaAlias` `:3158`, `CultNetDatabaseServer_Creates_Filtered_SubscriptionChange` `:5547`, `…_ForSchemaAlias` `:5601`, `DatabaseSubscription_FiltersLiveChangesByWireSchemaBinding` `:2256`, `…ByRequestedSchemaAlias` `:2310`, and the `projectRecord` lambda in `…AuthorizesRequestAndFiltersSnapshotAndLiveRecords` `:1601-1605` | ~250 | rewritten over v1 selections against the one evaluator (section 10); the rules they pin survive | + +**Not deleted in this cut, by ruling (Q-F):** the v0 message classes and +their three schema files, the v0 arms in `CultNetSchemaMessageSerialization`, +and the v0 handling in the two servers — kept as a **lowering**: a v0 +request lowers to `Selection { schemas: schemaIds, keys: recordKeys, projection: document }` +and is answered through the same evaluator, so v0 has no engine of its own. +They die with the last runtime follow-up. + +## 5. Keeps and moves + +- `CultNetSchemaAliasMatching` (`CultNetDatabase.cs:47-97`), `internal` → + `public`, the one alias matcher for every runtime-side match. +- `_authorizeRequest`, `_authorizeRecord`, `Reconcile`, `Watch`, + `ApplyProjectedChange`, `PublishDemand`, `DemandChanged` and the body-plane + fields of the subscribe message: authorization, reconciliation and demand + are not selection. +- `CultNetDocumentRegistry`'s raw-record construction (`:297-311`) as + `ToRawRecord(descriptor, binding, key, document, options)`; the payload + schema resolution (`:452-503`) untouched. +- The v0 messages, schemas and arms as a lowering (above). +- `CultMeshSnapshotRequestOptions` as a record `{ Selection, ShardId, ShardEpoch, …transport knobs }`. +- Every (B)-class site of the audit (section 11): transport racing, + authority, freshness, body routing, provider-session validation. +- The interop lanes and CI witness (`.github/workflows/cultnet-interop.yml`) + green throughout, because v0 still answers. + +## 6. Adds + +| Add | Owner | Live consumer | Protected invariant | What it replaces | +|---|---|---|---|---| +| `contracts/cultnet/cultnet.selection.schema.json` (`$id`, referenced by `$ref`), `cultnet.snapshot-request.v1.schema.json`, `cultnet.database-subscribe.v1.schema.json`, `cultnet.snapshot-response-raw.v1.schema.json`; registry entries in `CultNetSchemaRegistry.cs` | CultLib contracts | C#, Rust; TS/Py/Kotlin follow-ups | one published shape of a selection, hand-written like its siblings, pinned by vectors in both runtimes | `schemaIds`/`recordKeys`/`includeSnapshot` as the wire's only selection | +| `src/GameCult.Networking/CultNetSelection.cs`: `CultNetSelection`, `CultNetFieldPredicate`, `CultNetCitation`, `CultNetIncoming`, `CultNetSelectionProjection`, `CultNetRecordRef`, `CultNetRawDocumentHeader`, `CultNetSelectionPage`; `Validate(IReadOnlyList)` (declared aliases and roles, non-empty lists) | `GameCult.Networking` | the three message classes, the evaluator, Mesh | a selection is typed data with one validation | `_projectRecord`, the allowlist pair | +| `src/GameCult.Networking/CultNetSelectionEvaluator.cs`: `Select(cache, descriptors, selection, ordinals, asOf)` → ordered, hopped, cursored, projected page; `Matches(selection, descriptor, key, document)` for a single change; the cursor mint/parse with `cursor_stale` / `cursor_invalid` | `GameCult.Networking` | `CultNetDocumentRegistry` (snapshot), both servers (changes), `Reconcile` | one evaluator; order, snapshot and hop have one owner | the three engines (section 4) | +| `CultNetDatabase.LastWriteSequence(schemaId, key)` (a per-key ordinal kept on apply, ~20 lines) | `CultNetDatabase` | the evaluator's order and cursor | a row's ordinal is its last commit's sequence | `storedAt` as the only time | +| v1 message classes beside the v0 ones; the v0→`Selection` lowering (one function) | `GameCult.Networking` | both servers | v0 has no engine of its own | — | +| `packages/cultnet-rs/src/selection.rs`: the types (`Serialize`, `Deserialize`, no `untagged`), `Row` trait (`id`, `ordinal`, `values(index)`, `references()`), `RowSet` trait (`declared_indexes`, `declared_roles`), `Malformed`, `select`, cursor mint/parse, `LIMIT_MAX` | `cultnet-rs` | Huginn (section 12), later Rust services | the same evaluator semantics as the reference, pinned by vectors both ways | Huginn's own `select.rs` from the earlier design | +| `contracts.rs`: `SnapshotRequestV1`, `DatabaseSubscribeV1`, `SnapshotResponseRawV1` variants | `cultnet-rs` | Huginn's daemon | the wire spelling equals the reference's | — | +| `contracts/cultnet/selection-vectors.cs-written.json` and `selection-vectors.rs-written.json`: a fixture row set (`cultnet.interop-selection-row` document type with declared indexes `kind`, `severity`, `tags[]` and references `parent`, `related[]`), twenty selections, and each selection's expected page as ids + `matched` + `next` presence | tests, both runtimes | `NetworkingTests`, `cultnet-rs/tests/selection.rs` | **vectors written by the reference decode and evaluate identically in Rust, and vectors written by Rust decode and evaluate identically in the reference** | a within-runtime round trip, which pins nothing about parity | +| `contracts/cultnet/interop/cultnet.interop-selection-row.schema.json` | contracts | the vectors | — | — | +| `docs/cultnet-selection-cut.md` (this file), a paragraph in `contracts/cultnet/cultnet-distributed-database.md` under "Implemented", and the runtime table row in `docs/runtime-parity-scope.md` | docs | — | describe the live system | — | + +No dependency in either runtime (`schemars` is **not** added to +`cultnet-rs`: the schema is hand-written JSON like every CultNet schema, and +Huginn's derived schema for its own request embeds `Selection` through a +hand-maintained `JsonSchema` impl in Huginn, not through the substrate — +see section 12). No new package, binary, transport, or store format. + +## 7. Per-file changes (code that exists, anchored; new code by name and rule) + +**`src/GameCult.Networking/CultNetSchemaMessages.cs`**: after `:826`, the +three v1 classes; `CultNetSchemaVersions` (`:77`, `:93` and the +`SnapshotResponseRaw` constant) gains `SnapshotRequestV1`, +`DatabaseSubscribeV1`, `SnapshotResponseRawV1`. v0 classes untouched. + +**`CultNetSchemaMessageSerialization.cs:9-85`**: three arms before the +`_ => throw`. + +**`CultNetSchemaRegistry.cs:360-385`**: four `SchemaResourceSpec` entries. + +**`CultNetDatabase.cs`**: `:47` `internal static class` → `public static +class`; a `Dictionary<(string, string), long>` maintained where a mutation +is appended to the shard log (Hands anchors on the append site; section 1's +assumption is confirmed there) and `LastWriteSequence`; `:1052-1075` untouched. + +**`CultNetDocumentRegistry.cs`**: `:247-258` → `CreateSnapshotRequest(messageId, CultNetSelection)`; +`:263-349` → `CreateRawSnapshotResponse(cache, messageId, selection, ordinals, asOf, options)` +calling the evaluator and `ToRawRecord`; `:505-524` deleted. + +**`CultNetDatabaseServer.cs`**: `:276-316` handles v0 (lowered) and v1; +`:332-345` `CreateSubscription` calls `evaluator.Matches(selection, change)` +then `ToRawRecord`; `:347-468` deleted. + +**`CultNetDatabaseSubscriptionServer.cs`**: `:27, :44, :50` `_projectRecord` +deleted; `:112-167` handles v0 (lowered) and v1, and answers a +`snapshot_response_raw.v1` page with `matched`/`asOf`/`next`; `:218-249` +`Watch`: a selection with `cites`/`cited` runs `Reconcile` on every change, +otherwise `Matches` on the changed row; `:294-322` evaluate + authorize + +project; `:424-515` deleted. Module doc `:14-18` rewritten: projection is a +value on the request. + +**`CultNetSelection.cs`**, **`CultNetSelectionEvaluator.cs`** (new): as +section 6. Rules that must die under their own mutation are in section 10. + +**`src/GameCult.Mesh/CultMeshSnapshots.cs`**: `:16-62` the options record +carries `Selection`; `:139-201`, `:434-516`, `:611-636` overlay through one +`WithSelection`; `:638-661`, `:750-773`, `:889-911` deleted; `:973-983`, +`:1000-1009`, `:1033-1047`, `:1078-1088` deleted. +**`CultMesh.cs`**: `:1941-1969`, `:2721-2748`, `:2750-2800` (one exact read +remains), `:3474-3497` deleted; `:2701-2719`, `:2838-2858`, `:2875-2915` +build a `Selection`. +**`CultMeshClient.cs:574-604, 830-860, 932-962`**, **`CultMeshBodyDemand.cs:177-221`**: +`Selection` literals. + +**`packages/cultnet-rs/src/selection.rs`** (new), **`contracts.rs:314-331`** +region gains the three v1 variants, **`lib.rs`** re-exports. **`tests/selection.rs`** +(new): the vectors both directions, the evaluator, the cursor, the +refusals, the untagged grep. + +**`tests/GameCult.Networking.Tests/NetworkingTests.cs`**: the seven tests in +section 4 rewritten; new tests in section 10; the vector writer under +`CULTNET_WRITE_VECTORS=1` following `scripts/write-cultmesh-realtime-frame-vectors.mjs` +and the C#-written pattern the QUIC campaign established (`docs/typescript-quic-realtime-cut.md:15-21`). + +## 8. Authority map + +- **Owner.** CultNet's database organ, `src/GameCult.Networking`, as the + reference: `CultNetSelection` owns the shape and its validation; + `CultNetSelectionEvaluator` owns matching, the hop, the order, the + snapshot and the cursor; `CultNetSchemaAliasMatching` owns schema + identity; `CultNetDatabase` owns a row's ordinal. **The cache owns + addressing**: which names are indexes and which members are references, + and what a value of each is (a string), through `CultIndexAttribute` and + `CultReferenceAttribute` read from `CultDocumentDescriptor`. The + vocabulary reads those declarations and adds none. `packages/cultnet-rs` + is the Rust spelling of the same owner, at wire parity, with the row + owner supplying what the cache supplies in C# (`Row`, `RowSet`). +- **Inputs.** The cache's rows and descriptors, the shard log's sequences, + the selection, the peer's authorization answers. Not inputs: a clock, + a payload path, a transport. +- **Outputs.** Pages (`headers` or `documents`, `matched`, `asOf`, `next`), + per-change match decisions, typed refusals (`selection_invalid`, + `cursor_stale`, `cursor_invalid`) as `cultnet.error.v0` with a code, the + form the reference already uses for routing errors. +- **Derived state.** The page, the order, the incoming-edge index per + evaluation, the cursor. **Demotions:** `schemaIds`/`recordKeys` are no + longer a selection language; they are a lowering of v0 into one. + `_projectRecord` is no longer an authority; projection is a request + value. `CreateRawSnapshotResponse`, `CreateChangeMessage` and + `CreateChangeCore` are no longer engines; they call one. + `IsSameCultDocumentSchema`, the Mesh `InferSchemaName` and the registry's + `MatchesRequestedSchema` are no longer owners of schema identity. +- **Forbidden writers.** Neither server may match a record by a rule of its + own; Mesh may not re-filter a page the server answered; nothing may mint a + cursor a caller could construct; nothing may answer a page over a + different `asOf` than its cursor's; the evaluator may not read a payload + by path, only declared indexes and references; no type on the wire is + `untagged`; the Rust `select` may not diverge from the reference on any + vector. +- **Shared paths.** The evaluator under snapshot, change, and reconcile; + `CultNetSchemaAliasMatching` under every schema match in both assemblies; + `ToRawRecord` under snapshot and change; the v0 lowering under both + servers. +- **Deletion line.** Commit 1: the shape, the evaluator and the v1 + messages beside v0, with the three engines rewired and deleted and the + seven tests rewritten — green. Commit 2: `_projectRecord` and the + Mesh collapse. Commit 3: Rust. Commit 4: vectors both ways and entries. + Nothing lands with two engines alive. +- **Where the line to CultMesh falls.** Mesh is a client that builds + selections and reads pages; it evaluates nothing. Where Mesh watches a + cache locally by name or index (audit sites #2, #4-9, #16-21), it keeps + its own loops until `CultNetDatabase.Watch(Selection)` exists (Q-H). + +## 9. Parity: what this cut covers, and what the other runtimes do + +**In this cut:** the C# reference (both servers, the client, the registry) +and Rust (`cultnet-rs`: types, evaluator, cursor; no subscription client, +because no Rust caller subscribes). Parity is pinned by vectors in both +directions (section 10), not by a round trip inside one runtime. + +**Runtimes not in this cut, stated answer per runtime, by source read:** + +| Runtime | On v0 (unchanged) | On a v1 request it receives | On a v1 page it receives | +|---|---|---|---| +| TypeScript | unaffected; the reference still answers v0 | **refuses**: `parseCultNetMessage` finds no validator for the version and throws (`contracts.ts:728-744`) | refuses the same way | +| Kotlin | unaffected (client only) | **refuses**: `require(schemaVersion == …v0)` throws (`CultMesh.kt:2195`) | n/a as a server; a Kotlin client sends v0 and gets v0 | +| Python | unaffected | **silently drops, no reply**: `handle_server_message` returns `[]` for an unknown version (`interop_peer.py:387`), so a caller times out rather than reading a refusal; **it cannot answer with wrong rows**, because v1 is a version it does not dispatch, which is why D3 chose a version over new fields | as above | +| Rust | in this cut | in this cut | in this cut | + +The one runtime that mis-answers today is none: nothing sends v1 to a +runtime that does not speak it until its follow-up lands, and a stray v1 is +refused (TS, Kotlin, C#) or dropped (Python). Python's drop is a silence, +not a refusal, and is recorded as the first line of its follow-up. + +**Follow-ups, recorded with triggers:** + +- **FU-TS.** `cultnet-ts`: the three v1 contracts, Ajv registration, a + `Selection` type; `cultmesh-ts` builders. Trigger: the first TypeScript + caller that needs a filtered snapshot or subscription (the browser Eve + runtime, when it reads pipeline state). Until then TS refuses v1 loudly. +- **FU-Py.** `cultnet-py` and `cultmesh-py`: reply `cultnet.error.v0 + { code: "unsupported_schema_version" }` for an unknown version (five + lines, the honest minimum, may land before the rest); then the v1 + contracts, and the **three** copies of the selector match + (`interop_peer.py:110-125`, `cultmesh_py/server.py:449-470`, + `cultmesh_py/node.py:1322-1345`) collapsed into one evaluator. Trigger: + the first Python peer asked a v1 question, or the interop lane gaining a + v1 case. +- **FU-Kt.** `cultmesh-kotlin`: v1 snapshot request builder and page + reader. Trigger: an Android/JVM client reading filtered state. +- **FU-v0.** Retire v0's classes, schemas and lowering once FU-TS, FU-Py, + FU-Kt have landed and the interop lanes send v1. Trigger: the last of the + three. +- **FU-Watch.** `CultNetDatabase.Watch(Selection)` in the reference and the + Mesh collapse it enables (section 11, ≈ −240). Trigger: the first + consumer that watches a question locally, or the operator's call (Q-H). + +`docs/runtime-parity-scope.md`'s table gains, per runtime, "typed selection +v1: C# and Rust claimed; TS, Python, Kotlin not claimed (refuse / refuse / +drop)". The claim is written where the parity claims live, not here alone. + +## 10. Verification + +**Builds.** `dotnet build` of `GameCult.Networking`, `GameCult.Mesh` and +their test projects; `cargo test -p cultnet-rs`; the TypeScript workspace +untouched but `npm run test --workspace packages/cultnet-ts` run once to +prove the interop lane still passes on v0. Host = target = workstation for +C# and Rust; no native code. Nothing cleaned. + +**Tests, each named for the rule it pins, with the mutation that kills it — +a loosening where one exists.** + +| # | Test (C# unless marked) | Pins | Revert kills | Loosening kills | +|---|---|---|---|---| +| S1 | `Selection_RefusesUndeclaredIndexRoleAndEmptyLists` | D2, door refusals typed | validation dropped (empty page) | `index` checked against *any* schema's aliases rather than the reachable ones (a predicate on an alias only an excluded schema declares matches nothing silently) | +| S2 | `Evaluator_ConjoinsAnyOfPredicatesOverDeclaredIndexes` | fields | an arm dropped | any-of treated as all-of | +| S3 | `Evaluator_OrdersByLastWriteSequenceThenIdentityAndReverses` | order, `descending` | sort by `storedAt` | `descending` ignored | +| S4 | `Evaluator_PagesExactlyOnceAndTheLastPageSaysSo` | cursor walk | `next` always present | position `>=` (last item repeats) | +| S5 | `Evaluator_RefusesAStaleCursorAfterTheShardLogAdvances` | `cursor_stale` typed | advance ignored (a page over a moved set) | digest check dropped (a cursor accepted under another selection) | +| S6 | `Evaluator_HopsOneEdgeByDeclaredReferenceAndRole` | hop, roles from `CultReferenceAttribute`, `Many` | role ignored | a second hop followed | +| S7 | `Evaluator_NegatedIncomingEdgeIsTheOnlyNegation` | `cited { exists: false }` | `exists` ignored | citer's status consulted (an unauthorized citer's edge dropped) | +| S8 | `Evaluator_HeaderProjectionCarriesNoPayload` | projection | payload carried | `payloadEncoding` carried without payload | +| S9 | `Subscription_EvaluatesSelectionOnSnapshotAndEveryChange_AndReconcilesHopBearingOnes` (rewrite of `:1587`) | D6 | a change matched by v0 allowlists | a hop-bearing subscription taking the per-change fast path (a change to the citer not reconciled) | +| S10 | `V0Request_LowersToASelectionAndHasNoEngineOfItsOwn` (rewrites of `:3124`, `:3158`, `:5547`, `:5601`, `:2256`, `:2310`) | D3/D4 | v0 matched by its own loop | alias matching inlined again in one server | +| S11 | `SchemaAliasMatching_IsTheOneMatcherInBothAssemblies` (grep-shaped, negative) | D4 | — | — | +| S12 | `SelectionVectors_WrittenByTheReference_DecodeAndEvaluateIdenticallyInRust` (Rust reads `selection-vectors.cs-written.json`) and `SelectionVectors_WrittenByRust_DecodeAndEvaluateIdenticallyInTheReference` (C# reads `selection-vectors.rs-written.json`) | **parity** | any semantic drift on either side | a vector whose expected ids are compared as a set (order lost) — the vectors carry ordered ids and `next` presence | +| S13 (Rust) | `selection_is_never_untagged` (grep over `packages/cultnet-rs/src` for `untagged`, empty) and `selection_round_trips_named_and_positional` (both encodings) | the encoding rule | an `untagged` shape added | — | +| S14 (Rust) | `select_over_a_toy_row_set_matches_orders_hops_pages_and_refuses` | D7, no CultCache knowledge in the evaluator | as S1-S8 | as S1-S8 | +| S15 | `Mesh_ReadsASnapshotPageWithoutReFilteringIt` (Mesh tests) | the client trusts the page | the four-tier fallback restored | schema re-filter restored | + +**Negative greps:** `rg -n "untagged" packages/cultnet-rs/src packages/cultcache-rs/src` +empty; `rg -n "InferSchemaName" src/GameCult.Mesh` empty and +`src/GameCult.Networking` only in `CultNetSchemaAliasMatching` and the +registry's payload-schema resolution; `rg -n "MatchesRequestedSchema|MatchesSchema\(" src` +empty; `rg -n "_projectRecord|projectRecord" src` empty; +`rg -n "SchemaIds = .*RecordKeys = " src/GameCult.Mesh` empty (no +allowlist pair assembled by hand); `rg -n "CloneSnapshot(Facade)?RequestOptions" src` at most one. + +**Mutations.** `tools`-style entries in `scripts/mutate-cultmesh.mjs`'s +format with two new targets, `networking` (killer `dotnet test +tests/GameCult.Networking.Tests`) and `rust` (killer `cargo test -p cultnet-rs`), +one entry per rule above with revert and loosening; the runner's +byte-rewrite/verified-restore discipline applies unchanged. The runner is +the QUIC campaign's file and is dirty in the tree; **this campaign adds its +entries in its own file** (`scripts/mutate-cultnet-selection.mjs` or an +entries module the runner imports) and does not edit the QUIC campaign's +targets — Self decides the exact split at landing. + +## 11. The CultMesh subtraction audit, with real numbers + +Method: an Explore pass classified 92 sites in `src/GameCult.Mesh` and +`CultNetDocumentRegistry.cs` as (A) mechanical selection/projection over +schema ids, keys or fields, or (B) a domain rule (authority, freshness, +transport, session). (A) totalled **1,158 lines**, (B) **429**. **(A) is not +a reduction figure**; it is what *could* be expressed as a selection. What +collapses is what has a replacement in this cut. + +| Category | Sites (audit #) | Lines now | After | Net | +|---|---|---:|---:|---:| +| Selector-carrying options cloned five times | #11, #3, #74, #75, #77 | 128 | ~30 (`with` on a record) | **−98** | +| "No schema filter when keys are given" rule, three times | #65, #73, #10 | ~16 | ~4 | −12 | +| `CleanSnapshotFilter` | #79 | 11 | 0 | −11 | +| Client-side re-filter of a snapshot by schema, plus `InferSchemaName` | #80 (part), #81, #82 | ~51 | ~10 (decode only) | −41 | +| Four-tier read fallback + decode gate | #12, #13 | 50 | ~10 | −40 | +| `IsSameCultDocumentSchema` | #22 | 24 | 0 (public matcher) | −24 | +| Selector literals in client bindings | #32, #34, #35 | 93 | ~68 | −25 | +| Hot-body subscription allowlists | #25 | 45 | ~30 | −15 | +| Peer snapshot / body subscribe selector construction | #10, #14, #15 | 81 | ~61 | −20 | +| Snapshot facade overlay logic | #64, #66-70, #72 | ~110 | ~70 | −40 | +| **Collapses in this cut** | | | | **≈ −326** | +| Local cache/database watches by name and index and their predicates | #2, #4-9, #16-21 | ≈ 240 | ≈ 240 | 0 now; **≈ −200 under FU-Watch** | +| Handle catalogs by type/schema, surface catalog, operation payload | #41-49 | 233 | 233 | 0 — these index *handles*, not records | +| Verse discovery selection and reshaping | #36, #38 (part), #39, #40, #83, #85 | ~110 | ~110 | 0 — over Verse observations, not documents | +| Single-file catalog membership | #58-62 | 81 | 81 | 0 — file-format membership | +| Provider session wire decode gate | #50 | 12 | 12 | 0 | +| (B) sites | 24 sites | 429 | 429 | 0 by definition | + +**Plain statement.** `src/GameCult.Mesh` shrinks by about **326 lines of +21,720 (1.5%)** in this cut; a further ≈ 200 collapse only when +`CultNetDatabase.Watch(Selection)` exists (FU-Watch); about 590 of the +audit's (A) lines stay because they select handles, Verse observations or +file-catalog entries, not database records. The operator's expectation of a +net reduction in CultMesh holds, modestly; it does not hold for CultLib as a +whole in this cut, because the Rust runtime is new capability (section 14). +If the expectation was a large reduction, this audit says it is not there +without the watch cut, and it is not there at all for the catalogs and +discovery. + +## 12. Huginn: the consumer cut, and what moved + +**Moves to CultLib (this map):** `Selection`, `Citation`, `Incoming`, +`Projection`, `Page`, the cursor, `select`, the `Row`/`RowSet` traits, the +untagged rule and its probe, the cap, the order rule and the snapshot +contract. Huginn's earlier `select.rs` is never written. + +**Stays with the organ (a smaller, later cut in the Epiphany campaign map, +against a `cultnet-rs` dependency Huginn already has):** + +- `impl Row for PipelineDocumentView`: `ordinal = admission.sequence` + (Q-B A, still recommended; under Q-B B Huginn refuses `cursor_stale` on + advance exactly as the reference does, which is now a legitimate second + option), `values(index)` for the declared aliases `campaign`, `repo`, + `cut`, `kinds`→(schema), `in_force`, `faculty`, `severity`, `confidence`, + `origin`, `authority`, `claim_outcome`, `outcome`; `references()` from + `docs::citations` with the fifteen roles; `RowSet::declared_*` as the + organ's closed lists, so an unknown alias or a value outside an enum + refuses typed. +- `docs::citations`, `CitationRole`, `ResolutionOutcomeKind`, the summary + as the organ's header, the `as_of` restriction of the image to receipts, + the semantic refusal, the ref validation of `cites.target` through the + leaf, and the deletion of `open_items`/`history` with the relation table + unchanged (`history(Subject)` = `kinds: [resolution], cites { target, role: subject }`; + the open lists = five selections). +- **Dropped from the organ's wire:** `PipelineQuery`, `admitted_after/before` + (Q-G), `QUERY_LIMIT_MAX`. Huginn's `Query { instance, selection }` carries + the substrate's type; its published request schema embeds `Selection` + through a hand-maintained `JsonSchema` impl for the `cultnet-rs` types + inside Huginn (the substrate publishes JSON, not `schemars`), pinned by the + existing byte-for-byte test. +- Cut 11's lowering to Qdrant and the after-index application of the hop, + as before. + +The Huginn cut is ordered **after** this cut's commit 3 (Rust) and before +Cut 11 and Cut 13, as 10b was. + +## 13. Deliberately not possible, and why + +OR across predicates (ask twice); negation beyond `cited { exists: false }`; +a predicate on the far end of the hop; a second hop; ranges, dates, text, +paths, sort fields, counts beyond `matched`; a page not tied to `asOf`; +selection across shards or minds; a cursor the caller constructs. Each for +the reason the earlier specification gave, unchanged. + +## 14. Subtraction ledger (estimate) + +| | Removed | Added | +|---|---:|---:| +| `src/GameCult.Networking` | 368 | ~350 (`CultNetSelection` 140, evaluator + cursor 180, ordinals 20, v1 classes and lowering ~40 minus shared) | +| `src/GameCult.Mesh` | ≈ 365 gross | ≈ 40 (one `WithSelection`, one exact read) | +| `packages/cultnet-rs/src` | 0 | ~390 (`selection.rs` 350, `contracts.rs` 40) | +| `contracts/cultnet` | 0 | 4 schema files (~200 lines JSON), 1 interop row schema, 2 vector files (generated) | +| tests, C# | ~250 rewritten | ~450 (S1-S12, S15, the vector writer) | +| tests, Rust | 0 | ~300 (S12-S14) | +| entries | 0 | ~30 entries | +| docs | — | this map; two paragraphs | +| **net source outside tests** | | **≈ −18 in C#, +390 in Rust; ≈ +370 across the repo** | + +The repo grows by about 370 source lines for: a typed selection with a +derived-by-vector schema where two allowlists were the only language; +projection as a value where it was a delegate no caller reached; an exact +snapshot cursor where paging did not exist; one evaluator where three +engines and six schema matchers stood; a Rust runtime that did not have the +capability at all. CultMesh proper shrinks ≈ 326. The liability retired is +not in the line count: five copies of one options record, four spellings +of schema identity, a client that re-filtered what the server answered and +a read that could return the wrong key. + +## 15. Build budget + +C#: two assemblies and two test projects, debug, workstation. Rust: +`cultnet-rs` lib + tests, warm target dir, +0 to +60 paths. Nothing cleaned. +No native, no TypeScript build beyond one interop-lane run. + +## 16. Operator questions, one batch + +- **Q-A. Leaf `Short` titles for question and ruling** (Huginn/Epiphany). + Unchanged: **A, not now** (recommended); B, a leaf follow-up before Cut 13; + C, a text projection (Cut 11's question). Depends: the organ's header row + for those two kinds. +- **Q-B. Huginn's receipt ordinal.** **A, record it** (recommended; exact + order, no `cursor_stale` on an append-only mind); **B, do not**: Huginn + refuses `cursor_stale` on advance like the reference does — now a + legitimate option under one contract, costing a re-walk on a busy mind + and id-order ties within a second. Depends: Huginn's consumer cut only. +- **Q-C. Delete `open_items` and `history`.** **A, delete** (recommended); + B, thin presets in Huginn; C, wire operations (refused). Depends: Cut 13's + tool list. +- **Q-D. The representation.** **A, declared-alias any-of over strings in a + new v1 selection** (recommended; D1, D2); B, Qdrant's `Filter` (rejected, + section 3); C, typed enums on the wire (impossible in the substrate: it + cannot know a consumer's enums; the organ keeps the typed refusal at its + door). Depends: everything in sections 2-10. +- **Q-E.** Withdrawn: the seam question is answered by the placement ruling. +- **Q-F. v0's life.** **A, keep v0 answerable in the reference as a + lowering until FU-TS, FU-Py, FU-Kt land** (recommended; the interop CI + witness stays green, and v0 has no engine of its own); B, delete v0 now + and break the three runtimes' lanes; C, add the new fields to v0 — + refused by D3 because Python would mis-answer. Also under Q-F: whether + FU-Py's five-line "reply with `unsupported_schema_version`" lands ahead of + its trigger (recommended yes; it is a refusal where there is a silence). +- **Q-G. `descending` in place of the admission window.** **A** (recommended): + one fixed order, reversible; "the latest N" is `descending, limit: N`; + Huginn's `admitted_after/before` leave its wire. **B**: keep a window as + the one range, on the ordinal only (`sinceOrdinal`), which is a second way + to say what a cursor says. **C**: keep Huginn's date window as an + organ-side alias any-of over `admitted_on` dates — expressible today with + no substrate change, weaker than a range, honest. Depends: Huginn's + filter list; nothing in the substrate. +- **Q-H. `CultNetDatabase.Watch(Selection)` as a named follow-up cut.** + **A, yes, after the runtime follow-ups** (recommended): it is the + "watch a question" affordance the seam was drawn for and the ≈ 200 further + Mesh lines; B, fold into this cut — refused by the coordinator's own + constraint not to design the watch now; C, never — leaves the local + watch helpers as they are. +- **Q-I. Vectors: the fixture row type.** **A, a dedicated + `cultnet.interop-selection-row`** (recommended; declares indexes and + references purposely, both runtimes register it); B, reuse + `cultnet.interop-note` and add index/reference declarations to it — + touches the live interop lane's document. + +What depends on each: S1-S8 on Q-D A; S5 on the shard-log assumption +(section 1) and on Q-B for Huginn; S9 on D6; S10 on Q-F A; S12 on Q-I; +the Huginn cut on Q-B, Q-C, Q-G; FU-Watch on Q-H. + +## 17. What was probed, read, and not settled + +**Probed:** the untagged round trip (section 2). **Read:** every line +anchored above; the CultMesh audit's 92 sites by an Explore pass whose +classification I checked at the sites that carry the ledger (the five +clones, the four matchers, the fallback, the two engines). **Not run:** +`dotnet` or `cargo` on CultLib — the tree is dirty from the QUIC campaign +and no claim here depends on a build; Hands takes the baselines named in +Pins. **Not settled:** whether every committed write has a shard-log +sequence (section 1, Hands confirms at the append site); the exact split of +mutation entries against the QUIC campaign's runner (section 10, Self at +landing); whether MessagePack-CSharp needs a union attribute for the +page's `headers | documents` (it does not if both are optional arrays with +exactly one present, which is the spelling chosen so no union is needed — +Hands confirms the schema says "exactly one" with `oneOf` over `required`). From 440709829deece8ba436b543ae274af4a950a26c Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 00:37:16 +0200 Subject: [PATCH 0078/1002] Commit the container the linux-x64 entries are honest in MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The image the bridge is built and mutated in existed nowhere in the repository, and the recipe that stood in for it installed a C++ toolchain and no JavaScript runtime — so the container could not run the harness that checks the bridge it had just built. It is a file now, pinned to the same debian:13 digest as the release workflow, carrying ninja, Node, setarch and MsQuic's four runtime dependencies. The harness configures with `-G Ninja` on linux-x64, which is what scripts/build-quic-native.sh uses. CMake's Linux default is Makefiles, the image carries ninja rather than make, and the default configured nothing at all: the first run in the committed container died in cmake. It said so, because the control now prints what the child said, which is the whole point of that change. The seccomp requirement is stated where someone hitting it will read it — the bridge's README, beside the recipe — rather than being knowledge the runner assumes its caller already has. Co-Authored-By: Claude Opus 5 --- native/GameCult.Mesh.Quic.Native/README.md | 20 ++++++++++ .../tests/cultmesh_quic_native_tests.cpp | 5 ++- scripts/mutate-cultmesh.mjs | 23 +++++++++-- scripts/quic-native-linux-dev.Dockerfile | 38 +++++++++++++++++++ 4 files changed, 80 insertions(+), 6 deletions(-) create mode 100644 scripts/quic-native-linux-dev.Dockerfile diff --git a/native/GameCult.Mesh.Quic.Native/README.md b/native/GameCult.Mesh.Quic.Native/README.md index 60531975..4653f86c 100644 --- a/native/GameCult.Mesh.Quic.Native/README.md +++ b/native/GameCult.Mesh.Quic.Native/README.md @@ -102,6 +102,26 @@ shipped beside it resolves without being installed system-wide. A Linux host still needs MsQuic's own runtime dependencies present: `libssl3t64`, `libnuma1`, `libxdp1`, `libnl-route-3-200`. +The development loop for it is one committed image, +[`scripts/quic-native-linux-dev.Dockerfile`](../../scripts/quic-native-linux-dev.Dockerfile), +pinned to the same `debian:13` digest the release workflow builds in. It carries +the toolchain, MsQuic's runtime dependencies, `setarch`, and Node, because the +mutation harness that drives the runtime-lifetime scenarios is a Node script and +a container that cannot run it cannot check the bridge it just built: + + docker build -t cultlib-quic-native-dev -f scripts/quic-native-linux-dev.Dockerfile scripts + docker run --rm --security-opt seccomp=unconfined -v F:\Projects\CultLib:/src -w /src \ + cultlib-quic-native-dev bash -lc "scripts/build-quic-native.sh && node scripts/mutate-cultmesh.mjs native" + +`--security-opt seccomp=unconfined` is load-bearing, not caution. The +ThreadSanitizer configuration needs the process's address space where it expects +it, so `scripts/mutate-cultmesh.mjs` re-executes those runs under `setarch -R`, +which asks the kernel for `personality(ADDR_NO_RANDOMIZE)`. Docker's default +seccomp profile denies that call. Without it ThreadSanitizer dies before `main` +with "unexpected memory mapping" — a configuration that never starts, which a +mutation harness would otherwise read as every mutant being killed. The harness +stops with that diagnosis rather than reporting kills it did not earn. + Where an artifact was built is part of what it is. The Linux binary is linked against Debian 13's glibc, so a build from anywhere else is a different artifact whatever the file name says. diff --git a/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp b/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp index 36794d22..2b2fa3a3 100644 --- a/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp +++ b/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp @@ -224,8 +224,9 @@ std::string HoldCloseOnce(int pollers) { for (auto& thread : threads) thread.join(); if (peak != pollers) - return "the library counted a peak of " + std::to_string(peak) + " host call(s) inside it, not " + - std::to_string(pollers) + "; the blocking crossing is not inside a call scope"; + return "the library's peak count of host calls inside it was " + std::to_string(peak) + ", not " + + std::to_string(pollers) + ": either the blocking crossing is not inside a call scope, or it " + + "did not block long enough for the pollers to be inside it together"; if (at_close != pollers) return "the close began its wait with " + std::to_string(at_close) + " host call(s) counted inside, not " + std::to_string(pollers) + diff --git a/scripts/mutate-cultmesh.mjs b/scripts/mutate-cultmesh.mjs index c8cced18..c75a9041 100644 --- a/scripts/mutate-cultmesh.mjs +++ b/scripts/mutate-cultmesh.mjs @@ -39,10 +39,21 @@ // reported killed from a win32-x64 release run where both in fact survive, and // die deterministically only under linux-x64 AddressSanitizer. // -// This script tests the platform it is running on. For the linux-x64 native -// entries, run it inside the Debian 13 container the bridge is built in, with -// cmake, ninja, a C++20 compiler and Node present; a Windows run reports those -// entries as skipped and says so. +// This script tests the platform it is running on, and a run that skipped +// entries exits 2 rather than 0: those rules were covered by nothing. For the +// linux-x64 native entries, run it inside the committed development image, +// `scripts/quic-native-linux-dev.Dockerfile`, which is the same debian:13 digest +// the bridge is built in and carries Node, ninja, setarch and MsQuic's runtime +// dependencies: +// +// docker build -t cultlib-quic-native-dev -f scripts/quic-native-linux-dev.Dockerfile scripts +// docker run --rm --security-opt seccomp=unconfined -v F:\Projects\CultLib:/src -w /src \ +// cultlib-quic-native-dev bash -lc "node scripts/mutate-cultmesh.mjs native" +// +// The seccomp flag is required, not cautious: the ThreadSanitizer configuration +// is re-executed under `setarch -R`, and Docker's default profile denies the +// personality call that needs. See `explainUnrunnable` below, and the bridge's +// README. // // node scripts/mutate-cultmesh.mjs [target...] @@ -625,6 +636,10 @@ function nativeScenariosPass() { try { execFileSync("cmake", [ "-S", source, "-B", build, + // The same generator scripts/build-quic-native.sh uses. CMake's Linux + // default is Makefiles, and the container the bridge is built in carries + // ninja rather than make, so the default configured nothing at all. + ...(platform === "linux-x64" ? ["-G", "Ninja"] : []), "-DCMAKE_BUILD_TYPE=RelWithDebInfo", `-DCMAKE_CXX_FLAGS=${flags}`, `-DCMAKE_EXE_LINKER_FLAGS=${flags}`, diff --git a/scripts/quic-native-linux-dev.Dockerfile b/scripts/quic-native-linux-dev.Dockerfile new file mode 100644 index 00000000..7c796749 --- /dev/null +++ b/scripts/quic-native-linux-dev.Dockerfile @@ -0,0 +1,38 @@ +# The linux-x64 development loop for the CultMesh native QUIC bridge: build it, +# run its scenarios, and run the mutation harness over it. Not a release +# builder — the shipped Linux artifact comes from the workflow (see +# docs/typescript-quic-realtime-cut.md). +# +# This image is what the harness's linux-x64 entries are honest about. Before it +# was committed, the recipe in the cut map installed a C++ toolchain and no +# JavaScript runtime, so the container the bridge was built in could not run the +# runner that mutates it at all. +# +# docker build -t cultlib-quic-native-dev -f scripts/quic-native-linux-dev.Dockerfile scripts +# docker run --rm --security-opt seccomp=unconfined -v F:\Projects\CultLib:/src -w /src \ +# cultlib-quic-native-dev bash -lc "scripts/build-quic-native.sh && node scripts/mutate-cultmesh.mjs native" +# +# `--security-opt seccomp=unconfined` is not optional and not caution. The +# ThreadSanitizer configuration needs the process's address space where it +# expects it, so the harness re-executes it under `setarch -R`, which asks the +# kernel for personality(ADDR_NO_RANDOMIZE). Docker's default seccomp profile +# denies that call, and without it ThreadSanitizer dies before main with +# "unexpected memory mapping" — a whole configuration failing to start, which a +# mutation harness reads as every mutant being killed. +# +# Pinned by digest, not by the moving tag: the artifact is the toolchain that +# made it. +FROM debian:13@sha256:f324c7ff54321e8d9c588493a20244965938ce0aa50bbd1022d38010e9ffc4b1 + +# cmake, ninja and g++ build the bridge and its scenario runner; curl, +# ca-certificates and dpkg fetch and unpack the pinned libmsquic deb; +# util-linux carries setarch; nodejs runs scripts/mutate-cultmesh.mjs. The four +# libraries are MsQuic's own runtime dependencies, which the bridge does not +# vendor. +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + bash ca-certificates cmake curl dpkg g++ ninja-build nodejs util-linux \ + libssl3t64 libnuma1 libxdp1 libnl-route-3-200 \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /src From 211b5e320f12d2b64959927810d38e381407a7f4 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 00:48:50 +0200 Subject: [PATCH 0079/1002] Point the Linux recipe at the container that exists The map carried a one-line invocation that installed no JavaScript runtime, so it could not run the mutation runner, and said nothing about disabling randomisation or relaxing seccomp. That is how the Linux path came to be red for everyone except the agent that had found the flags by hand. The recipe now lives with the image and the bridge README, and the map points at them. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index bd0be20a..164d51ad 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -1190,9 +1190,19 @@ Verification: (P13), a client connection to it, answers event 3 with accept, sees event 2 on both sides, opens a latest-only stream, sends one frame with `fin`, and reads event 6 on the server side with the identical bytes. -- Linux, development loop: `docker run --rm -v F:\Projects\CultLib:/src debian:13 bash -lc "apt-get update && apt-get install -y cmake ninja-build g++ curl ca-certificates dpkg && /src/scripts/build-quic-native.sh"` - then the same FFI smoke under `node:24` in the container. This is a Linux - build on a Linux host; it is not the release artifact (Q6). +- Linux, development loop: build the committed image + `scripts/quic-native-linux-dev.Dockerfile`, pinned to the same `debian:13` + digest as the release workflow, and follow the recipe in the bridge's own + README. The image carries the compiler, Ninja, Node, `setarch` and the + library's runtime dependencies, and the sanitizer configurations need the + container's default seccomp profile relaxed so randomisation can be + disabled. The README and the Dockerfile header own that recipe; this map + does not restate it. This is a Linux build on a Linux host; it is not the + release artifact (Q6). *(The earlier one-line `docker run` recipe here + installed no JavaScript runtime and could not run the mutation runner at + all, and said nothing about randomisation or seccomp, which is how the + Linux path came to be red for everyone but the agent that had found the + flags by hand.)* - Build economy: the only builds are the native CMake target and `tests/GameCult.Mesh.Quic.Native.Tests` (which pulls `GameCult.Mesh.Quic`, `GameCult.Mesh.Quic.Native`, `GameCult.Mesh`, `GameCult.Networking`, From ee91062cee738420a3e1658039ed092535dc1bd9 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 01:13:08 +0200 Subject: [PATCH 0080/1002] Finish the selection map, and price it honestly The cache already declares and persists what type each member is, so numbers cost no migration. What they do cost is a public way to read a declared value at all, because the evaluator today cannot reach one from outside the cache, which is why the existing snapshot loop reflects. That is a hundred and fifty lines, not sixty, and the ledger moves the wrong way to say so. Three claims inherited from the earlier pass were wrong and were cut rather than designed around. A fifth selector engine turned up in Rust. And the cache's index maps keep one key per value, so an evaluator that reached for them would answer a query about a whole family with a single row. Watching a selection is mapped as its own cut, where nine overloads that are a query language in disguise collapse into one. Co-Authored-By: Claude Fable 5.1 --- docs/cultnet-selection-cut.md | 889 ++++++++++++++++++++++++++++++---- 1 file changed, 795 insertions(+), 94 deletions(-) diff --git a/docs/cultnet-selection-cut.md b/docs/cultnet-selection-cut.md index de2f9045..fa144f75 100644 --- a/docs/cultnet-selection-cut.md +++ b/docs/cultnet-selection-cut.md @@ -5,9 +5,12 @@ No code in this document has been written; nothing here is committed by Imagination. This is its own campaign with its own map; it does not touch `docs/typescript-quic-realtime-cut.md` or any code in that tree. -Status: cut map for one cut, **Cut 1: the selection vocabulary in the C# -reference runtime and the Rust runtime**, with the follow-on runtime cuts -and the Huginn consumer cut named and not mapped. +Status: cut map for two cuts. **Cut 1: the selection vocabulary in the C# +reference runtime and the Rust runtime** (sections 1-17), with the +follow-on runtime cuts and the Huginn consumer cut named and not mapped. +**Cut 2: watching a selection** (section 18), mapped to the same standard, +landing after Cut 1 and depending on it. Cut 1 goes to Hands without +waiting on anything in Cut 2. **Rulings this map is written under (operator, 2026-09-17):** @@ -88,8 +91,22 @@ Baselines: `src/GameCult.Networking` 14,848 lines; `src/GameCult.Mesh` member as a reference; the descriptor records `IsReference`, `IsMany`, `TargetSchemaName` (`CultCache.cs:1069-1080`). So a field predicate's key is an index alias and a hop's role is a reference member, both declared - by the document's owner and both readable from `CultDocumentDescriptor`. - No cache change is needed for addressing. + by the document's owner. +- **The declarations are public; the values are not.** `ToCatalogEntry()` + (`CultCache.cs:151-176`) is public and carries every member's `Slot`, + `MemberName`, `TypeName`, `IsReference`, `IsMany`, `TargetSchemaName`, + `IsName`, `IndexAlias`. But `CultDocumentDescriptor.Members` (`:149`) and + `IndexAccessors` (`:148`) are **`internal`**, and `GameCult.Caching` + declares no `InternalsVisibleTo` for `GameCult.Networking` (the only + `InternalsVisibleTo` in `src/` outside the vendored Unity tree is + `GameCult.Caching.MessagePack` → `GameCult.Caching.Tests`). That is why + `CreateRawSnapshotResponse` reaches for reflection at + `CultNetDocumentRegistry.cs:325-342`. **An evaluator outside the cache + assembly cannot read a declared index's value today**, by any means the + cache offers. The earlier claim in this map that no cache change is + needed for addressing was wrong: addressing is declared publicly and + *readable* only inside the cache. Section 6 carries the read surface as + an add; sections 7 and 14 carry its cost. - **Schemas are hand-written JSON** in `contracts/cultnet/*.schema.json`, listed by file name in `CultNetSchemaRegistry.cs:360-385`; TypeScript compiles them with Ajv and refuses unknown fields @@ -134,6 +151,100 @@ Baselines: `src/GameCult.Networking` 14,848 lines; `src/GameCult.Mesh` `storedAt` and the cursor refuses on any advance (section 3 says what that costs). +**The Aetheria catalog as a hostile example, verified at +`F:\Projects\Aetheria\Assets\Scripts\ServerShared`:** + +- **Inheritance.** `ItemData.cs:272` `abstract class ItemData` (`Name` + `:275`, `Mass` `:284`), `:313` `abstract class CraftedItemData : ItemData` + (which re-declares `Name` at `:327`, hiding the base's), and only the + leaves carry `[CultDocument]`: `SimpleCommodityData` `:300`, + `CompoundCommodityData` `:330`, `GearData` `:449`, and more. The cache's + `DiscoverMembers` (`CultCache.cs:838-875`) walks `current.BaseType`, so a + leaf's descriptor carries every inherited member with its attributes + (`GetCustomAttribute` reads the member's own attribute wherever it is + declared). Inherited addressing therefore already resolves per leaf. + **Corrected on a second read:** duplicate *slots* are refused + (`:931-935`), and a **hiding member is already refused too** — `:937-943` + groups keyed members by `Member.Name` and rejects any name carried at two + different slots (`HiddenMemberMessage`), while a hiding member re-using + one slot is caught by the duplicate-slot rule. So `CraftedItemData`'s + `Name` at `ItemData.cs:327` hiding `:275` is **not registrable in + CultCache as it stands**, however the aliases fall; that is a finding for + the Aetheria campaign, not a hole here. What is *not* refused by name is + two members with **different names** carrying the **same index alias** + (base `[CultIndex("mass")] Mass`, leaf `[CultIndex("mass")] Weight`). + That does not collide silently either: the alias map is built by + `ToDictionary` at `:462-468`, which throws `ArgumentException("An item + with the same key has already been added")` — a real refusal, from the + wrong owner, naming neither schema nor member nor alias. D10 is therefore + a **renaming of an existing refusal**, not a new rule, and is smaller + than it first looked. +- **A reference to an abstract target.** `FactionProduct.cs:24` + `CultRecordRef Design`. `PersistedMember.FromMember` + (`CultCache.cs:1069-1071`) takes the target type and reads + `CultDocumentAttribute` from it — an abstract base has none, so + **`TargetSchemaName` is `null` today for exactly this reference**. The + registry can compute the leaf set by assignability (it already does for + index lookups, `:1506`, and store routing, `:1828`) but records nothing. +- **A dictionary reference with a value.** `ItemData.cs:333-334` + `[CultReference(typeof(PersonalityAttribute), many: true)] Dictionary, float> DemandProfile`. + The descriptor records `IsMany` (`:1080`) and nothing else: **no code in + the cache enumerates a many-reference's targets**, and the only accessor + is `Getter = document => getValue(document)?.ToString()` (`:1082`), which + on a dictionary yields the CLR type name. The edge and its payload are + declared and unreadable. +- **Numbers.** `PersistedMember.MemberType` (`:1053`) knows the member is a + `float`, and the catalog persists it as `TypeName` (`:38`, `:192`, + compared by `CompareSchemaShapes` `:605-629`), so **a member's numeric + type is already declared and persisted**; what is missing is a typed + accessor beside the string one. Adding an accessor is a runtime change + with no catalog-shape or hash change, because `TypeName` is already in + the canonical shape. + +**The cache's index maps are unique indexes, and the evaluator must not use +them.** `Index(stored)` (`CultCache.cs:1849-1862`) writes +`MapOf(_indexes, (type, alias))[value] = key` — **one key per value, last +writer wins**. Two rows of one type sharing an index value do not collide +loudly; the second silently displaces the first in the map. `GetByIndex` +(`:1502-1508`) reads that map and `Single` (`:1838-1848`) throws only +when *several types* assignable to `T` each contribute a key, never for two +rows of one type. So `GetByIndex` answers "the row that most recently +claimed this value", not "the rows with this value". + +The consequence for this cut is a rule, not a caveat: **the evaluator +evaluates every predicate per row, through the accessor, and never through +`_indexes` or `GetByIndex`.** The declared alias is an *addressing* name — +the cache's own lookup map is a different, lossier thing that happens to be +built from the same declaration. A "use the index, it is already there" +optimisation would turn `kind any_of [weapon]` into a one-row answer. S23 +pins it, `WatchByIndex` already has the bug (section 18), and the +unique-index behaviour itself is left exactly as it is: it is the cache's +own contract for a single-record lookup and this cut does not renegotiate +it. + +**A fourth selector engine, in Rust, that this map's first draft missed.** +`packages/cultnet-rs/src/snapshot_query.rs` (339 lines, `pub use` at +`lib.rs:29`) already serves and asks snapshot requests: + +- `serve_read_only_raw_snapshot` `:64-130` is an engine — it walks the + source's records, refuses a duplicate identity and an unregistered + schema, applies a `CultNetReadOnlySnapshotPolicy` allowlist of + `(schema_id, record_key)` pairs, then filters by the request's + `schema_ids` and `record_keys` (`:112-125`). The policy is + **authorization** and stays; `:112-125` is the fifth copy of the same two + allowlists and goes, as the C# three do. +- `CultNetRawSnapshotQuery` `:158-285` is the client side, and it exposes + the sharpest limit of the two-allowlist model: `request()` `:195-217` + turns a set of exact `(schema, key)` pairs into the **cross product** of + their schemas and their keys, and `accept_response` `:219-284` then + *errors* on any record the cross product dragged in + (`"snapshot response contains unexpected record"`). Asking for `(A,x)` + and `(B,y)` asks for four and refuses two. **v1 does not fix this**: + `schemas × keys` is still a cross product (section 13, Q-M). What v1 does + change is that `accept_response`'s check is a *declared expectation*, not + a re-filter of a page the server got right, and section 8's forbidden + writer is worded to keep that distinction honest. + **The CultMesh audit** (Explore pass over `src/GameCult.Mesh` and `CultNetDocumentRegistry.cs`, 92 sites classified) is in section 11 with its numbers. @@ -156,7 +267,12 @@ Selection { limit: uint32? // clamped 1..=200 cursor: string? // opaque; minted by the answering server } -FieldPredicate { index: string, anyOf: string[] } // anyOf non-empty; index must be declared on some schema the selection can reach, else refused +FieldPredicate { // one operator per predicate, named by `op`; no union, no untagged + index: string // a declared index alias, reachable on some schema the selection can reach, else refused + op: "any_of" | "lt" | "le" | "ge" | "gt" + values: string[]? // present iff op = any_of; non-empty + number: float64? // present iff op is a comparison; the alias must be declared numeric on every reachable schema that declares it +} Citation { target: RecordRef, role: string? } // target validated as a reference the row owner recognises Incoming { role: string, exists: bool } RecordRef { schemaId: string, recordKey: string } @@ -166,8 +282,15 @@ SelectionPage { // cultnet.snapshot_r asOf: uint64 // the snapshot the page is exact for next: string? // absent on the last page headers: RawDocumentHeader[]? | documents: RawDocumentRecord[]? // exactly one present, by projection + edges: Edge[]? // present iff the selection has `cites` or `cited`: the edges the hop traversed shardId?, shardEpoch?, shardLogSequence? // as v0 carries them } +Edge { + from: RecordRef // the citing row + role: string + to: RecordRef // the cited row, its schema resolved to the leaf actually stored + payloadEncoding: "messagepack"?, payload: bytes? // the value attached to the edge (a dictionary's value), typed by the member's declared value type; present under `document`, absent under `header` +} RawDocumentHeader = RawDocumentRecord minus payload, payloadEncoding ``` @@ -192,33 +315,72 @@ Messages: `cultnet.snapshot_request.v1 { messageId, selection, shardId?, shardEp replay is not this cut's); Huginn never refuses (append-only, one writer). One contract, two honest servers. A cursor that does not decode, or whose digest is not this selection's, is `cursor_invalid`. -- **Fields** are any-of over string values of one declared index, conjoined - across predicates. A row of a schema that does not declare the index - never matches it. An `index` no reachable schema declares, an empty - `anyOf`, an empty `keys` or `schemas` list, and a `role` no schema - declares are refused typed at the door (`selection_invalid { field, value }`), - never answered as an empty page. Values are strings because the cache's - indexes are strings (`CultCache.cs:1084`); an enum-typed field on the - consumer's side is a string on the wire and the row owner refuses a value - its enum does not carry — the closed key set survives as "declared - aliases only", and the fixed operator survives as any-of. +- **Fields** are predicates over one declared index each, conjoined across + predicates: `any_of` over string values, or one of four comparisons + (`lt`, `le`, `ge`, `gt`) against one number over a declared numeric + member. A row of a schema that does not declare the index never matches + it. An `index` no reachable schema declares, an empty `values`, a + comparison on an alias any reachable schema declares non-numeric, an + empty `keys` or `schemas` list, and a `role` no schema declares are + refused typed at the door (`selection_invalid { field, value }`), never + answered as an empty page. `any_of` values are strings because the + cache's indexes are strings (`CultCache.cs:1084`); comparison numbers are + IEEE float64 on the wire, and a member of an integer type wider than 53 + bits compares at float precision — a stated limit, not a hidden one. No + range operator (two predicates on one alias make a range), no `ne`, no + nesting. +- **Inheritance.** A schema is a leaf: only a type with `[CultDocument]` + has a schema name, and `schemas` names leaves. A predicate on an alias + applies to every reachable leaf whose descriptor carries a member with + that alias, inherited or own — the cache already discovers inherited + members per leaf, so "gear or commodities with `mass` over 10" is + `schemas: [geardata, simplecommoditydata], fields: [{index: mass, op: gt, number: 10}]` + with `mass` declared once on the abstract base. Two leaves that each + declare a member with the same alias independently are two members; the + predicate reads each leaf's own. One leaf that resolves the same alias to + two members (a base member and a hiding re-declaration both carrying the + alias) is refused at registration (D10). A numeric comparison on an alias + that is numeric on one reachable leaf and a string on another is refused + at the door, because the row owner cannot compare a string. - **The hop** reads edges the row owner declares: in the reference, members - with `CultReferenceAttribute` (role = the member's index alias or name; - target = the referenced key, or each key when `Many`); in Rust, the - `Row::references` the consumer implements. The citer's status, fields and - authorization are not consulted by the hop; one hop, no second. + with `CultReferenceAttribute` (role = the member's index alias or name); + a one-reference yields one edge, a many-reference yields one edge per + element, and a dictionary keyed by references yields one edge per key + **with the value as the edge's payload**. In Rust, `Row::references()` + yields `(role, target, payload)`. **A reference's target is a set of + leaves**: the declared target type's own schema if it is a leaf, else + every registered leaf assignable to it (`CraftedItemData` → + `compoundcommoditydata`, `consumableitemdata`, …). The hop follows an + edge into any row whose schema is in that set. **A stored edge naming a + row whose schema is outside the set refuses the selection** + (`reference_outside_target { from, role, to }`), not skips it: an edge the + declaration forbids is corrupt data and a read does not paper over it. + The citer's status, fields and authorization are not consulted by the + hop; one hop, no second. +- **Edges in the answer.** A selection with `cites` or `cited` returns, beside + the rows, the edges the hop traversed, each with its payload under + `document` projection and without it under `header`. A weighted reference + and a bill of materials are the same shape: follow the edge, return the + payload, filter the rows. **Filtering on the payload as part of the + traversal is not expressible** (section 13): that is a join condition. - **Projection.** `header` is the record without its payload; `document` is the record. The consumer decides what a header *means* for typed rows (Huginn's typed summary is its header; the substrate carries whichever type the page was instantiated with). - **Not on the wire:** the admission window (`admittedAfter/Before`) of Huginn's Cut 9 — `descending` plus the cursor answer "the latest"; a date - window is a range, and ranges are out (Q-G). + window is a range, and ranges are out (R-3). -**The bound, carried forward in force.** Closed key set (declared aliases), -fixed operator (any-of), no path language, no expression terms, no OR, one -negation, one hop, no depth field, no sort field, no range, no text. -Section 13 lists what is deliberately impossible. +**The bound, carried forward in force, with one widening the operator +ruled.** Closed key set (declared aliases), a closed operator set (any-of +and four comparisons, one per predicate, no nesting), no path language, no +expression terms, no OR, one negation, one hop with its edges returned, no +depth field, no sort field, no text, no predicate on an edge's payload in +the traversal. Section 13 lists what is deliberately impossible. The +capability set is now: **C1** typed predicates over declared members, +string any-of and numeric comparison; **C2** projection; **C3** order and +cursor; **C4** one hop, both directions, returning typed edge payloads; +**C5** existence and count without bodies. **Nothing on the wire is serde-untagged — rule, with evidence.** Probe `scratchpad/untagged-probe/` (result in `untagged-probe-result.txt`), run @@ -253,7 +415,7 @@ Python reads only the fields it knows and would answer a v0 selector it did not understand with the wrong rows. A v1 version string makes every runtime not in this cut refuse or drop by its own dispatch rather than mis-answer. The cost is that v0 stays answerable by the reference until the -follow-ups land (Q-F). +follow-ups land (R-1, a scheduled deletion with a named trigger). **D4. One evaluator in the reference, three engines deleted.** `Select` over `(descriptor, key, document)` rows from the cache replaces @@ -276,7 +438,7 @@ subscription server already owns a diff-against-delivered reconcile subscription runs it on every change instead of the per-change fast path. That is the mechanism by which "watch a question" falls out, and this cut does **not** add a local `CultNetDatabase.Watch(Selection)`; section 11 -records what that later cut would collapse (Q-H). +records what that later cut would collapse; it is Cut 2, section 18 (R-5). **D7. The Rust runtime carries the evaluator, not only the types.** Huginn evaluates selections over its own rows; if `select` lived only in C#, Rust @@ -284,6 +446,108 @@ consumers would each write one. `packages/cultnet-rs/src/selection.rs` holds the types, the cursor, and `select` over a `Row` trait, with no subscription client in this cut (Huginn does not subscribe). +**D8. Numbers are addressable through the type the cache already declares; +the cache gains accessors, not attributes.** A comparison needs a numeric +value the string getter cannot give. `CultCache.cs:1053` holds the CLR +`MemberType` and the catalog already persists `TypeName` in the canonical +shape, so numeric-ness is declared; what is added is runtime: on each +member, `ValueOf(document) -> object?` and `NumberOf(document) -> double?` +(non-null exactly for the closed set of CLR numeric types), and the public +member entry exposes `IsNumeric` derived from `TypeName`. No new attribute, +no catalog-shape change, no schema hash moves, no migration. Rust mirrors +it as `Row::number(index)` and `RowSet::is_numeric(schema, index)`; the +consumer decides from its own types. + +**Verified by source read, because everything downstream rests on it:** +`CultDocumentMemberDescriptor.TypeName` is set at `CultCache.cs:474` from +`CultSchemaTypeNames.FromType(member.MemberType)`, which renders a CLR full +name (`System.Single`, `System.Nullable`, +`System.Collections.Generic.Dictionary, +System.Single>`); `ToCatalogEntry()` `:168` copies it into +`CultSchemaMemberCatalogEntry.TypeName` `:42`; `CompareSchemaShapes` +compares it inside `CanonicalSchemaMember` `:605-629`. Numeric-ness is +declared and persisted today, and the claim holds. + +**Two corrections to the estimate.** First, `IsNumeric` has two possible +authorities — the CLR `MemberType` in hand and the `TypeName` string read +back from a stored catalog. They must agree, or a schema validates one way +locally and another way against a persisted catalog. **The CLR set is the +authority** (a closed set: the eight integer types, `float`, `double`, +`decimal`, and `Nullable` over any of them); the string set is generated +from it by `CultSchemaTypeNames.FromType`, never hand-written. S22 pins +that. + +Second, and larger: the accessor is not the only thing missing. Per section +1, `IndexAccessors` and `Members` are `internal` and `GameCult.Networking` +is not a friend assembly, so the evaluator cannot read *any* declared +value — string or number — without the reflection the map is deleting. The +cache add is therefore a **public read surface over declared members**, of +which the numeric accessor is one method: +`TryGetIndexValue(object document, string alias, out string? value)`, +`TryGetIndexNumber(object document, string alias, out double value)`, +`ReferencesOf` (D11), and a public member view carrying `IndexAlias`, +`IsReference`, `IsMany`, `IsNumeric` and the target **`Type`** (D9 needs +the type, not the name). Section 14 carries the revised cost. + +**D9. A reference's target set is resolved by the registry at evaluation, +not persisted.** Persisting `TargetSchemaNames` would change the canonical +member shape and every stored catalog's hash for such schemas. Resolving at +evaluation by assignability over registered leaves (`:1506`, `:1828` do +this today) costs nothing and is correct as of the registry in hand. The +catalog's `TargetSchemaName` stays what it is (`null` for an abstract +target) and is not read by the hop. + +The resolution needs a **`Type`**, and `CultDocumentMemberDescriptor` +carries only `TargetSchemaName`, a string that is `null` in exactly the +case that matters. So the public member view exposes the target `Type` +(held already on `PersistedMember.MemberType` / the attribute's +`TargetType`, `CultCache.cs:1069-1070`), and the leaf set is +`AllDescriptors` (public, `:254-255`) filtered by +`target.IsAssignableFrom(d.DocumentType)` — the same predicate +`GetByIndex` uses at `:1506` and store routing at `:1828`. It must be +computed **against the registry at evaluation, not at descriptor build**: +`BuildDescriptor` runs per type as it is registered, and a leaf registered +later would be missing from a set frozen early. A cached set keyed by +target type is legitimate only if it is invalidated by `Refresh()` +(`:257-265`) and by `RegisterDescriptor` (`:381-410`); simplest is not to +cache it. + +**D10. The duplicate-alias refusal is renamed, not invented.** The Aetheria +hiding case turned out to be refused already (section 1: `HiddenMemberMessage` +at `CultCache.cs:937-943`), and two differently-named members sharing one +alias already throw — from `ToDictionary` at `:462-468`, as an +`ArgumentException` that names neither the schema, nor the members, nor the +alias. D10 is to replace that with a rejection in `DiscoverMembers`' +`rejections` list, in the shape of its neighbours: one grouping over +`IndexAlias` beside the two at `:931-943`, one message beside +`DuplicateSlotMessage` / `HiddenMemberMessage`. The behaviour barely +changes; what changes is that the refusal can be read. Nothing in the +selection depends on it — a colliding catalog never registers either way — +so it is in this cut only because the cut is already in this file and the +message is four lines. + +**D11. Many-references are enumerated by the cache, with payloads.** On each +reference member, `ReferencesOf(document) -> IEnumerable<(CultRecordKey target, object? payload)>`: +a `CultRecordRef` yields one; an `IEnumerable>` yields +each with no payload; an `IDictionary, V>` yields each key +with its value. Anything else declared `many` is refused at registration +(`unsupported_reference_shape`), so a declaration the cache cannot walk is +never silently walked as nothing. + +The enumeration reads `ICultRecordRef.Key` (`CultDocumentContracts.cs:92-95`), +which every `CultRecordRef` implements (`:97-99`), so it needs no +generic dispatch. Two shape rules fall out of `ResolveReferenceTarget` +(`CultCache.cs:1100-1113`) and belong in the same refusal: a member +declared `many` whose element type is not a `CultRecordRef<>` and whose +attribute names no `TargetType` has **no resolvable target at all** +(`IsReference` is true only because the attribute exists, and +`TargetSchemaName` is `null` for a reason that is not inheritance); and a +`many` member that is neither `IEnumerable>` nor +`IDictionary, V>` cannot be walked. Both are +`unsupported_reference_shape` at registration. A `many: false` member whose +type is not `CultRecordRef` is the same fault and takes the same +refusal. + **Agreement with our own abandoned prior art** (`ThreadEpiphanyGraphQuery`, Epiphany `5c62a650`, deleted with its host `5f6f2441`): direction and edge kind as data, schema derived — agreed; differs as before (predicate not @@ -320,9 +584,11 @@ Mongo/ES magic-key documents; every string-parsed evaluator surveyed. | `CultMesh.cs:2701-2719, 2838-2858, 2875-2915` | ~20 net | selector construction for peer snapshots and body subscriptions | | `CultMeshSnapshots.cs:139-201, 434-516, 611-623` overlay logic | ~40 net | overlaying caller `schemaIds`/`recordKeys` onto defaults, four times | | **Mesh total** | **≈ 365 gross, ≈ 331 net** | see section 11 for what does not go | +| `packages/cultnet-rs/src/snapshot_query.rs:100-130` | ~31 | the fifth selector engine: the `requested_schemas` / `requested_keys` sets and the two `is_some_and` filters inside `serve_read_only_raw_snapshot` become one `select` over a lowered v0 selection. The duplicate-identity and unregistered-schema refusals (`:90-110`) and the whole `CultNetReadOnlySnapshotPolicy` (`:132-157`, authorization) stay | +| `src/GameCult.Caching/CultCache.cs` | **0** | the cache deletes nothing. The string `Getter`/`GetterNullable` pair (`:1081-1082`) stays: it is what `any_of` compares and what the index maps are built from (`:1858`). The numeric accessor is beside it, not instead of it | | `tests/GameCult.Networking.Tests/NetworkingTests.cs`: `CultNetDatabaseServer_Creates_Filtered_SnapshotResponse` `:3124`, `…_ForCompatibleSchemaAlias` `:3158`, `CultNetDatabaseServer_Creates_Filtered_SubscriptionChange` `:5547`, `…_ForSchemaAlias` `:5601`, `DatabaseSubscription_FiltersLiveChangesByWireSchemaBinding` `:2256`, `…ByRequestedSchemaAlias` `:2310`, and the `projectRecord` lambda in `…AuthorizesRequestAndFiltersSnapshotAndLiveRecords` `:1601-1605` | ~250 | rewritten over v1 selections against the one evaluator (section 10); the rules they pin survive | -**Not deleted in this cut, by ruling (Q-F):** the v0 message classes and +**Not deleted in this cut, by ruling (R-1), and scheduled for deletion on FU-v0's trigger:** the v0 message classes and their three schema files, the v0 arms in `CultNetSchemaMessageSerialization`, and the v0 handling in the two servers — kept as a **lowering**: a v0 request lowers to `Selection { schemas: schemaIds, keys: recordKeys, projection: document }` @@ -351,14 +617,17 @@ They die with the last runtime follow-up. | Add | Owner | Live consumer | Protected invariant | What it replaces | |---|---|---|---|---| +| `src/GameCult.Caching/CultCache.cs`: a **public read surface over declared members** — `CultDocumentDescriptor.DeclaredMembers` (a public view: `MemberName`, `Slot`, `IndexAlias`, `IsName`, `IsReference`, `IsMany`, `IsNumeric`, `TargetType`), `TryGetIndexValue(document, alias, out string?)`, `TryGetIndexNumber(document, alias, out double)`, `ReferencesOf(document, member)` (D11), `ResolveTargetLeaves(targetType)` over `AllDescriptors` (D9) | `GameCult.Caching` | the evaluator; `CultNetDocumentRegistry`; later any runtime-side reader | **the cache owns addressing and its values**; a reader outside the assembly reads declarations and values through one surface instead of reflecting over documents | the reflection loop at `CultNetDocumentRegistry.cs:325-342`, and the absence that forced it | +| `CultCache.cs` registration refusals: one alias-collision rejection beside `:931-943` (D10), one `unsupported_reference_shape` rejection for a `many`/reference member the cache cannot walk (D11) | `GameCult.Caching` | every registering catalog | a declaration the cache cannot read is refused when it is declared, not answered as nothing when it is read | an `ArgumentException` from `ToDictionary` `:462-468` that names nothing; a silent unwalkable reference | | `contracts/cultnet/cultnet.selection.schema.json` (`$id`, referenced by `$ref`), `cultnet.snapshot-request.v1.schema.json`, `cultnet.database-subscribe.v1.schema.json`, `cultnet.snapshot-response-raw.v1.schema.json`; registry entries in `CultNetSchemaRegistry.cs` | CultLib contracts | C#, Rust; TS/Py/Kotlin follow-ups | one published shape of a selection, hand-written like its siblings, pinned by vectors in both runtimes | `schemaIds`/`recordKeys`/`includeSnapshot` as the wire's only selection | -| `src/GameCult.Networking/CultNetSelection.cs`: `CultNetSelection`, `CultNetFieldPredicate`, `CultNetCitation`, `CultNetIncoming`, `CultNetSelectionProjection`, `CultNetRecordRef`, `CultNetRawDocumentHeader`, `CultNetSelectionPage`; `Validate(IReadOnlyList)` (declared aliases and roles, non-empty lists) | `GameCult.Networking` | the three message classes, the evaluator, Mesh | a selection is typed data with one validation | `_projectRecord`, the allowlist pair | +| `src/GameCult.Networking/CultNetSelection.cs`: `CultNetSelection`, `CultNetFieldPredicate`, `CultNetCitation`, `CultNetIncoming`, `CultNetSelectionProjection`, `CultNetRecordRef`, `CultNetRawDocumentHeader`, `CultNetSelectionPage`, **`CultNetEdge`** (`From`, `Role`, `To`, `PayloadEncoding?`, `Payload?`), **`CultNetSelectionOperator`** (`AnyOf`, `Lt`, `Le`, `Ge`, `Gt`, serialised as the `op` string, never as a union); `Validate(IReadOnlyList)` — declared aliases and roles, non-empty lists, exactly one of `values`/`number` per `op`, and every reachable leaf declaring a compared alias declares it numeric | `GameCult.Networking` | the three message classes, the evaluator, Mesh | a selection is typed data with one validation | `_projectRecord`, the allowlist pair | | `src/GameCult.Networking/CultNetSelectionEvaluator.cs`: `Select(cache, descriptors, selection, ordinals, asOf)` → ordered, hopped, cursored, projected page; `Matches(selection, descriptor, key, document)` for a single change; the cursor mint/parse with `cursor_stale` / `cursor_invalid` | `GameCult.Networking` | `CultNetDocumentRegistry` (snapshot), both servers (changes), `Reconcile` | one evaluator; order, snapshot and hop have one owner | the three engines (section 4) | | `CultNetDatabase.LastWriteSequence(schemaId, key)` (a per-key ordinal kept on apply, ~20 lines) | `CultNetDatabase` | the evaluator's order and cursor | a row's ordinal is its last commit's sequence | `storedAt` as the only time | | v1 message classes beside the v0 ones; the v0→`Selection` lowering (one function) | `GameCult.Networking` | both servers | v0 has no engine of its own | — | -| `packages/cultnet-rs/src/selection.rs`: the types (`Serialize`, `Deserialize`, no `untagged`), `Row` trait (`id`, `ordinal`, `values(index)`, `references()`), `RowSet` trait (`declared_indexes`, `declared_roles`), `Malformed`, `select`, cursor mint/parse, `LIMIT_MAX` | `cultnet-rs` | Huginn (section 12), later Rust services | the same evaluator semantics as the reference, pinned by vectors both ways | Huginn's own `select.rs` from the earlier design | +| `packages/cultnet-rs/src/selection.rs`: the types (`Serialize`, `Deserialize`, no `untagged`; `SelectionOperator` an **externally tagged / string** enum, `Edge { from, role, to, payload_encoding, payload }`), `Row` trait (`id`, `ordinal`, `values(index) -> &[String]`, **`number(index) -> Option`**, **`references() -> Vec<(role, RecordRef, Option>)>`**), `RowSet` trait (`declared_indexes`, `declared_roles`, **`is_numeric(schema, index)`**, **`target_leaves(role)`**), `Malformed`, `select`, cursor mint/parse, `LIMIT_MAX` | `cultnet-rs` | Huginn (section 12), later Rust services | the same evaluator semantics as the reference, pinned by vectors both ways | Huginn's own `select.rs` from the earlier design | +| `snapshot_query.rs`: `serve_read_only_raw_snapshot` calls `select` over a lowered v0 selection; the policy check stays where it is | `cultnet-rs` | its existing callers and tests | the fifth engine has no rule of its own | the filter at `:112-125` | | `contracts.rs`: `SnapshotRequestV1`, `DatabaseSubscribeV1`, `SnapshotResponseRawV1` variants | `cultnet-rs` | Huginn's daemon | the wire spelling equals the reference's | — | -| `contracts/cultnet/selection-vectors.cs-written.json` and `selection-vectors.rs-written.json`: a fixture row set (`cultnet.interop-selection-row` document type with declared indexes `kind`, `severity`, `tags[]` and references `parent`, `related[]`), twenty selections, and each selection's expected page as ids + `matched` + `next` presence | tests, both runtimes | `NetworkingTests`, `cultnet-rs/tests/selection.rs` | **vectors written by the reference decode and evaluate identically in Rust, and vectors written by Rust decode and evaluate identically in the reference** | a within-runtime round trip, which pins nothing about parity | +| `contracts/cultnet/selection-vectors.cs-written.json` and `selection-vectors.rs-written.json`: a fixture row set (`cultnet.interop-selection-row` document type; declared indexes `kind`, `severity`, `tags[]` and **`mass` (numeric, declared on the abstract middle type, not on the leaves)**; references `parent`, `related[]` and **`components` (a dictionary keyed by reference with a float payload)** and **`design` (declared target = the abstract middle, resolving to two leaves)**; **two leaf schemas under one abstract middle**, so inheritance, the abstract target, the dictionary edge and the comparison are all exercised by the fixture rather than argued about in prose), **twenty-eight** selections, and each selection's expected page as ordered ids + `matched` + `next` presence + **the expected `edges` with their payload bytes**. The fixture must also carry, because tests depend on it and a loosening that cannot fail is the fixture's defect: a row whose `mass` **equals** a compared number exactly (S16), **three** rows sharing one index value (S23), one edge pointing outside its declared target (S18), two dictionary entries with **different** payload bytes (S19), and a nullable numeric member and a `decimal` one (S22). **Expected to grow** (R-4): it is chosen for coverage now, not pinned as final, and adding rows or selections to it is a normal change | tests, both runtimes | `NetworkingTests`, `cultnet-rs/tests/selection.rs` | **vectors written by the reference decode and evaluate identically in Rust, and vectors written by Rust decode and evaluate identically in the reference** | a within-runtime round trip, which pins nothing about parity | | `contracts/cultnet/interop/cultnet.interop-selection-row.schema.json` | contracts | the vectors | — | — | | `docs/cultnet-selection-cut.md` (this file), a paragraph in `contracts/cultnet/cultnet-distributed-database.md` under "Implemented", and the runtime table row in `docs/runtime-parity-scope.md` | docs | — | describe the live system | — | @@ -367,6 +636,12 @@ No dependency in either runtime (`schemars` is **not** added to Huginn's derived schema for its own request embeds `Selection` through a hand-maintained `JsonSchema` impl in Huginn, not through the substrate — see section 12). No new package, binary, transport, or store format. +**`packages/cultcache-rs` is untouched**: the C# cache change buys the +evaluator a read surface it does not have, and in Rust the row owner +already supplies exactly that through `Row`/`RowSet`. The asymmetry is +real and intended — the reference reads documents the cache owns, Rust +reads rows the consumer owns — and it is the reason the parity obligation +is on the *vectors* and not on the two implementations' shapes. ## 7. Per-file changes (code that exists, anchored; new code by name and rule) @@ -401,6 +676,43 @@ otherwise `Matches` on the changed row; `:294-322` evaluate + authorize + project; `:424-515` deleted. Module doc `:14-18` rewritten: projection is a value on the request. +**`src/GameCult.Caching/CultCache.cs`** (the only cache file this cut +touches): + +- `:112-150` `CultDocumentDescriptor`'s constructor and fields: `Members` + `:149` and `IndexAccessors` `:148` stay `internal`; a **public** + `DeclaredMembers` view and the three value accessors are added beside + them. Do not widen `Members` itself — `CultDocumentMemberDescriptor` is a + mutable internal DTO whose shape `ToCatalogEntry` `:151-176` depends on, + and publishing a mutable descriptor list makes the catalog's shape a + public contract by accident. The public view is a readonly struct or + sealed record built from it. +- `:445-490` `BuildDescriptor`: the alias `ToDictionary` at `:462-468` is + the site of the D10 refusal's *symptom*; the refusal itself belongs in + `DiscoverMembers` so it lands in `rejections` with its neighbours. +- `:838-946` `DiscoverMembers`: two new groupings beside the two at + `:931-943` — one over `IndexAlias` (D10), one over reference shape + (D11) — and two message helpers beside `DuplicateSlotMessage` / + `HiddenMemberMessage`. Nothing in the existing walk changes. +- `:1050-1114` `PersistedMember`: `Getter`/`GetterNullable` `:1081-1082` + untouched; `NumberOf` (non-null exactly for the closed CLR numeric set, + `Nullable` unwrapped) and `ReferencesOf` added beside them; + `MemberType` `:1052` and the attribute's `TargetType` surface through the + public view as the target `Type`. +- `:254-255` `AllDescriptors` is the input to `ResolveTargetLeaves`; the + set is computed per call, not cached, because `Refresh()` `:257-265` and + `RegisterDescriptor` `:381-410` can both add a leaf after any given + descriptor was built. +- `CultSchemaTypeNames.FromType` (`CultSchemaTypeNames.cs:9-31`) is + `internal` and generates the `TypeName` strings; the `IsNumeric` string + set is generated from the CLR set through it, never written by hand + (S22). + +**`packages/cultnet-rs/src/snapshot_query.rs`**: `:100-130` the two +allowlist sets and their filters become one `select` over the lowered +selection; `:64-99` and `:132-157` untouched; `:158-285` +`CultNetRawSnapshotQuery` untouched in this cut and named in Q-M. + **`CultNetSelection.cs`**, **`CultNetSelectionEvaluator.cs`** (new): as section 6. Rules that must die under their own mutation are in section 10. @@ -431,10 +743,16 @@ and the C#-written pattern the QUIC campaign established (`docs/typescript-quic- `CultNetSelectionEvaluator` owns matching, the hop, the order, the snapshot and the cursor; `CultNetSchemaAliasMatching` owns schema identity; `CultNetDatabase` owns a row's ordinal. **The cache owns - addressing**: which names are indexes and which members are references, - and what a value of each is (a string), through `CultIndexAttribute` and - `CultReferenceAttribute` read from `CultDocumentDescriptor`. The - vocabulary reads those declarations and adds none. `packages/cultnet-rs` + addressing and every value of it**: which names are indexes, which + members are references, whether a member is numeric, what leaves a + reference may target, what a row's value at an alias is, and what edges + and payloads a row carries — through `CultIndexAttribute` and + `CultReferenceAttribute`, the persisted `TypeName`, and the public read + surface of section 6. The vocabulary reads those declarations and adds + none: no new attribute, no persisted field, no schema-hash movement, and + no opinion in the evaluator about what a CLR type means. **The evaluator + never reflects over a document**; if it needs something the cache does + not expose, the cache gains a method, not the evaluator a `GetProperty`. `packages/cultnet-rs` is the Rust spelling of the same owner, at wire parity, with the row owner supplying what the cache supplies in C# (`Row`, `RowSet`). - **Inputs.** The cache's rows and descriptors, the shard log's sequences, @@ -453,17 +771,33 @@ and the C#-written pattern the QUIC campaign established (`docs/typescript-quic- `IsSameCultDocumentSchema`, the Mesh `InferSchemaName` and the registry's `MatchesRequestedSchema` are no longer owners of schema identity. - **Forbidden writers.** Neither server may match a record by a rule of its - own; Mesh may not re-filter a page the server answered; nothing may mint a + own; **`serve_read_only_raw_snapshot` may not filter by schema or key** + (its policy is authorization and stays; its allowlist filter goes); Mesh + may not re-filter a page the server answered — a caller *may* verify a + page against expectations it declared before the request + (`CultNetRawSnapshotQuery::accept_response`, which errors rather than + quietly dropping, and so cannot hide a server that answered wrongly), but + no caller may narrow a page and call the narrowed result the answer; + nothing may mint a cursor a caller could construct; nothing may answer a page over a different `asOf` than its cursor's; the evaluator may not read a payload - by path, only declared indexes and references; no type on the wire is - `untagged`; the Rust `select` may not diverge from the reference on any - vector. + by path, only declared indexes and references, **and may not reflect over + a document at all**; **the evaluator may not read the cache's `_indexes` + map or call `GetByIndex`** — those answer a unique-index lookup, not a + predicate (section 1, S23); no rule may consult an edge's payload while + traversing (section 13); nothing outside `GameCult.Caching` may decide + whether a member is numeric or what leaves a target resolves to; no type + on the wire is `untagged`; the Rust `select` may not diverge from the + reference on any vector. - **Shared paths.** The evaluator under snapshot, change, and reconcile; `CultNetSchemaAliasMatching` under every schema match in both assemblies; `ToRawRecord` under snapshot and change; the v0 lowering under both servers. -- **Deletion line.** Commit 1: the shape, the evaluator and the v1 +- **Deletion line.** Commit 0: the cache's public read surface and its two + registration refusals, with S17-S22 green and `GameCult.Networking` + untouched — the cache change is independently true and lands first, so + that if the rest of the cut is cut, the substrate is not left with half a + surface. Commit 1: the shape, the evaluator and the v1 messages beside v0, with the three engines rewired and deleted and the seven tests rewritten — green. Commit 2: `_projectRecord` and the Mesh collapse. Commit 3: Rust. Commit 4: vectors both ways and entries. @@ -471,7 +805,7 @@ and the C#-written pattern the QUIC campaign established (`docs/typescript-quic- - **Where the line to CultMesh falls.** Mesh is a client that builds selections and reads pages; it evaluates nothing. Where Mesh watches a cache locally by name or index (audit sites #2, #4-9, #16-21), it keeps - its own loops until `CultNetDatabase.Watch(Selection)` exists (Q-H). + its own loops until `CultNetDatabase.Watch(Selection)` exists, which is Cut 2 (section 18). ## 9. Parity: what this cut covers, and what the other runtimes do @@ -491,8 +825,11 @@ directions (section 10), not by a round trip inside one runtime. The one runtime that mis-answers today is none: nothing sends v1 to a runtime that does not speak it until its follow-up lands, and a stray v1 is -refused (TS, Kotlin, C#) or dropped (Python). Python's drop is a silence, -not a refusal, and is recorded as the first line of its follow-up. +refused (TS, Kotlin, C#) or dropped (Python). **Python's drop is fixed in +this cut, not in its follow-up** (R-2): after this cut the table's Python +row reads "refuses with `unsupported_schema_version`", and every runtime on +the wire answers an unknown version with something a caller can read. The +build budget gains one Python test run for it. **Follow-ups, recorded with triggers:** @@ -500,9 +837,12 @@ not a refusal, and is recorded as the first line of its follow-up. `Selection` type; `cultmesh-ts` builders. Trigger: the first TypeScript caller that needs a filtered snapshot or subscription (the browser Eve runtime, when it reads pipeline state). Until then TS refuses v1 loudly. -- **FU-Py.** `cultnet-py` and `cultmesh-py`: reply `cultnet.error.v0 - { code: "unsupported_schema_version" }` for an unknown version (five - lines, the honest minimum, may land before the rest); then the v1 +- **FU-Py.** Its first line is **not** a follow-up: by R-2, `cultnet-py` + and `cultmesh-py` reply `cultnet.error.v0 + { code: "unsupported_schema_version" }` for an unknown version **in this + cut** (five lines at `interop_peer.py:360-387` and the delegating path at + `cultmesh_py/server.py:341`, with one test per site that a v1 message + produces a refusal and not an empty list). The rest of FU-Py is the v1 contracts, and the **three** copies of the selector match (`interop_peer.py:110-125`, `cultmesh_py/server.py:449-470`, `cultmesh_py/node.py:1322-1345`) collapsed into one evaluator. Trigger: @@ -513,9 +853,12 @@ not a refusal, and is recorded as the first line of its follow-up. - **FU-v0.** Retire v0's classes, schemas and lowering once FU-TS, FU-Py, FU-Kt have landed and the interop lanes send v1. Trigger: the last of the three. -- **FU-Watch.** `CultNetDatabase.Watch(Selection)` in the reference and the - Mesh collapse it enables (section 11, ≈ −240). Trigger: the first - consumer that watches a question locally, or the operator's call (Q-H). +- **Not a follow-up any more:** `CultNetDatabase.Watch(Selection)` is + **Cut 2**, mapped in section 18 with its own deletes, authority map, + verification and numbers. It lands after this cut. The audit's ≈ 240 + local-watch lines are counted there, and the real figure turned out + larger than the audit's estimate (≈ −378 in Mesh, section 18.3), because + the audit did not count the nine `Collection*` overloads as selection. `docs/runtime-parity-scope.md`'s table gains, per runtime, "typed selection v1: C# and Rust claimed; TS, Python, Kotlin not claimed (refuse / refuse / @@ -523,8 +866,11 @@ drop)". The claim is written where the parity claims live, not here alone. ## 10. Verification -**Builds.** `dotnet build` of `GameCult.Networking`, `GameCult.Mesh` and -their test projects; `cargo test -p cultnet-rs`; the TypeScript workspace +**Builds.** `dotnet build` of `GameCult.Caching`, `GameCult.Networking`, +`GameCult.Mesh` and their test projects — the cache is now in the build +budget, and it is the assembly the rest of CultLib depends on, so +`dotnet test tests/GameCult.Caching.Tests` is the gate on commit 0 and runs +on every later commit; `cargo test -p cultnet-rs`; the TypeScript workspace untouched but `npm run test --workspace packages/cultnet-ts` run once to prove the interop lane still passes on v0. Host = target = workstation for C# and Rust; no native code. Nothing cleaned. @@ -549,8 +895,31 @@ a loosening where one exists.** | S13 (Rust) | `selection_is_never_untagged` (grep over `packages/cultnet-rs/src` for `untagged`, empty) and `selection_round_trips_named_and_positional` (both encodings) | the encoding rule | an `untagged` shape added | — | | S14 (Rust) | `select_over_a_toy_row_set_matches_orders_hops_pages_and_refuses` | D7, no CultCache knowledge in the evaluator | as S1-S8 | as S1-S8 | | S15 | `Mesh_ReadsASnapshotPageWithoutReFilteringIt` (Mesh tests) | the client trusts the page | the four-tier fallback restored | schema re-filter restored | +| S16 | `Evaluator_ComparesNumbersAtTheBoundaryForEachOfTheFourOperators` | D8's operators; one operator per predicate; two predicates make a range | the comparison ignored (every row matches) | `le` evaluated as `lt` (and `ge` as `gt`) — **kills only if the fixture carries a row whose `mass` equals the compared number exactly**; the fixture must, and if it does not, that is the fixture's defect, not licence to mutate something easier | +| S17 | `Evaluator_AppliesAnInheritedAliasToEveryReachableLeaf` | the inheritance rule; the cache's `BaseType` walk reaching the evaluator | the walk stopped at the leaf (`CultCache.cs:847`) — kills S17 and S12 together | "reachable" narrowed from *every* leaf matching `schemas` to the first descriptor consulted, so a two-leaf selection on an alias declared only on the abstract middle answers with one leaf's rows and no refusal — **requires the fixture to declare `mass` only on the middle and to carry rows of both leaves** | +| S18 | `Evaluator_ResolvesAnAbstractTargetToItsLeavesAndRefusesAnEdgeOutsideThem` | D9; the typed `reference_outside_target` | the target set taken as `{TargetSchemaName}`, which is `null` for an abstract target, so the hop follows nothing | the out-of-target edge **skipped** instead of refused — the option section 3 rejected, and the mutant that proves the rejection is load-bearing; **requires the fixture to carry one edge pointing at a schema outside the declared target** | +| S19 | `Cache_EnumeratesADictionaryReferenceAsEdgesCarryingItsValues` (cache tests) | D11 | `ReferencesOf` yields nothing for a dictionary — today's behaviour, restored | the keys enumerated and the **values dropped** (`payload` null), which is the shape a careless `IEnumerable` implementation would have; **requires two dictionary entries with different payload bytes**, or the assertion passes on shape alone | +| S20 | `Evaluator_ReturnsTraversedEdgesOnlyForHoppingSelections_AndNoPayloadUnderHeader` | the `edges` rule | `edges` never emitted | payload carried under `header`; and, separately, `edges` emitted for a selection with neither `cites` nor `cited` — a widening rather than a loosening, and killed by the same test | +| S21 | `Cache_RefusesADuplicateIndexAliasAndAnUnwalkableReferenceByName` (cache tests) | D10, D11's shape rule | the rejections removed — **kills only if the test asserts the message names the schema, the two members and the alias**, since without them `ToDictionary` still throws an `ArgumentException` and a shallow `Assert.Throws` passes either way. That is the entire content of D10 | the alias grouping keyed by `MemberName` instead of `IndexAlias`, which refuses nothing the existing `HiddenMemberMessage` (`:937-943`) did not already refuse | +| S23 | `Evaluator_MatchesEveryRowSharingAnIndexValue_NotTheCacheIndexWinner` | the evaluator reads values per row, never `_indexes` / `GetByIndex` | the predicate answered from `GetByIndex`, so an `any_of` over a value **three** fixture rows share answers with one | the per-row read kept but short-circuited after the first match when `matched` is all the caller asked for — a plausible optimisation that makes `matched` a boolean in disguise; **requires three rows sharing one index value**, which the fixture must carry | +| S22 | `Cache_DerivesIsNumericFromTheClrSetAndTheTypeNameSetAgrees` (cache tests) | D8's two authorities agreeing | `IsNumeric` true for every member, so a comparison on a string alias validates and compares `ToString()` lexically | the `TypeName`-string set hand-written and missing `System.Nullable` or `System.Decimal`, so a member is numeric against the live descriptor and non-numeric against the same schema read back from a persisted catalog — **requires the fixture to declare a nullable numeric member and a `decimal` one** | -**Negative greps:** `rg -n "untagged" packages/cultnet-rs/src packages/cultcache-rs/src` +**On the parity vectors and the four findings.** S12 is not a new test but +a widened one: the fixture of section 6 carries the abstract middle, the +two leaves, the inherited numeric alias, the dictionary reference with +float payloads and the abstract-target reference, and the vector set +includes at least one selection per finding — a comparison on the +inherited alias, a hop into the abstract target, a hop over the dictionary +returning payloads, and the same hop under `header`. Both directions: +**vectors written by the reference are evaluated in Rust, and vectors +written by Rust are evaluated by the reference**. A round trip inside one +runtime pins nothing and is not counted. The Rust side's fixture rows +implement `Row` over the same declared values, so the vectors test the +*semantics* both ways while each runtime keeps its own source of rows. + +**Negative greps:** `rg -n "GetProperty|GetField|GetCustomAttribute" src/GameCult.Networking` +empty (the evaluator reflects over nothing); +`rg -n "untagged" packages/cultnet-rs/src packages/cultcache-rs/src` empty; `rg -n "InferSchemaName" src/GameCult.Mesh` empty and `src/GameCult.Networking` only in `CultNetSchemaAliasMatching` and the registry's payload-schema resolution; `rg -n "MatchesRequestedSchema|MatchesSchema\(" src` @@ -559,8 +928,10 @@ empty; `rg -n "_projectRecord|projectRecord" src` empty; allowlist pair assembled by hand); `rg -n "CloneSnapshot(Facade)?RequestOptions" src` at most one. **Mutations.** `tools`-style entries in `scripts/mutate-cultmesh.mjs`'s -format with two new targets, `networking` (killer `dotnet test -tests/GameCult.Networking.Tests`) and `rust` (killer `cargo test -p cultnet-rs`), +format with three new targets, `caching` (killer `dotnet test +tests/GameCult.Caching.Tests`, carrying S19, S21 and S22), `networking` +(killer `dotnet test tests/GameCult.Networking.Tests`) and `rust` (killer +`cargo test -p cultnet-rs`), one entry per rule above with revert and loosening; the runner's byte-rewrite/verified-restore discipline applies unchanged. The runner is the QUIC campaign's file and is dirty in the tree; **this campaign adds its @@ -590,7 +961,7 @@ collapses is what has a replacement in this cut. | Peer snapshot / body subscribe selector construction | #10, #14, #15 | 81 | ~61 | −20 | | Snapshot facade overlay logic | #64, #66-70, #72 | ~110 | ~70 | −40 | | **Collapses in this cut** | | | | **≈ −326** | -| Local cache/database watches by name and index and their predicates | #2, #4-9, #16-21 | ≈ 240 | ≈ 240 | 0 now; **≈ −200 under FU-Watch** | +| Local cache/database watches by name and index and their predicates | #2, #4-9, #16-21 | ≈ 240 | ≈ 240 | 0 in this cut; **≈ −378 in Cut 2** (section 18.3 — larger than this audit estimated, because the nine `Collection*` overloads at `CultMesh.cs:2278-2480` were not classified as selection and are) | | Handle catalogs by type/schema, surface catalog, operation payload | #41-49 | 233 | 233 | 0 — these index *handles*, not records | | Verse discovery selection and reshaping | #36, #38 (part), #39, #40, #83, #85 | ~110 | ~110 | 0 — over Verse observations, not documents | | Single-file catalog membership | #58-62 | 81 | 81 | 0 — file-format membership | @@ -598,8 +969,9 @@ collapses is what has a replacement in this cut. | (B) sites | 24 sites | 429 | 429 | 0 by definition | **Plain statement.** `src/GameCult.Mesh` shrinks by about **326 lines of -21,720 (1.5%)** in this cut; a further ≈ 200 collapse only when -`CultNetDatabase.Watch(Selection)` exists (FU-Watch); about 590 of the +21,720 (1.5%)** in this cut, and a further **≈ 378 in Cut 2** — the two +together are about 3.2% of the assembly, and Cut 2 is where the audit's +expectation of a real reduction is met. About 590 of the audit's (A) lines stay because they select handles, Verse observations or file-catalog entries, not database records. The operator's expectation of a net reduction in CultMesh holds, modestly; it does not hold for CultLib as a @@ -633,8 +1005,12 @@ against a `cultnet-rs` dependency Huginn already has):** leaf, and the deletion of `open_items`/`history` with the relation table unchanged (`history(Subject)` = `kinds: [resolution], cites { target, role: subject }`; the open lists = five selections). -- **Dropped from the organ's wire:** `PipelineQuery`, `admitted_after/before` - (Q-G), `QUERY_LIMIT_MAX`. Huginn's `Query { instance, selection }` carries +- **Deleted from the organ's wire (R-3, ruled, not proposed):** + `PipelineQuery`; **`admitted_after` and `admitted_before`**, which existed + only to approximate an order and are replaced by `descending` plus the + cursor — they are a delete in the Huginn cut's own deletes-first table, + with their query-builder call sites, their schema fields and the tests + that pin them, not a deprecation; and `QUERY_LIMIT_MAX`. Huginn's `Query { instance, selection }` carries the substrate's type; its published request schema embeds `Selection` through a hand-maintained `JsonSchema` impl for the `cultnet-rs` types inside Huginn (the substrate publishes JSON, not `schemars`), pinned by the @@ -653,19 +1029,45 @@ paths, sort fields, counts beyond `matched`; a page not tied to `asOf`; selection across shards or minds; a cursor the caller constructs. Each for the reason the earlier specification gave, unchanged. +Named individually, because each has an obvious-looking one-line +implementation and a caller who will ask for it: + +| Not expressible | The obvious ask | Why it is the door | +|---|---|---| +| **A predicate on an edge's payload during traversal** — "components whose quantity is over 4", "demand profile entries weighted above 0.5" | one `if` inside the hop loop, over a payload the evaluator is already holding | **It is a join condition.** The moment a predicate can read a value that belongs to neither the row nor the selection, the evaluator is combining two sources under a condition, and everything that follows is a query planner: which side to drive from, whether to build the incoming-edge index before or after filtering, how `matched` counts a row whose only surviving edge was filtered, what the cursor means when the page is a join result, and whether the payload's type is comparable at all when its declared type differs per leaf. None of that is answerable in a bounded vocabulary. **The caller follows the edge, receives the payload in `edges`, and filters the result** — one extra step for the caller, an entire category of machinery this organ never grows | +| **A set of exact `(schema, key)` pairs** | `keys` already exists; let an entry name its schema | `schemas` × `keys` is a cross product and stays one. `CultNetRawSnapshotQuery` (section 1) shows the cost honestly: it over-requests and verifies. The fix is either a second list shape or a pair type on the wire, and both are the beginning of a term language. A caller who needs exact pairs asks once per schema, or accepts the cross product and verifies against what it declared. Recorded as Q-M, recommendation A: state the limit | +| **A predicate that depends on how many edges a row has** — "hulls with more than three components" | `cited` already counts to one | `exists: true/false` is a boolean, and a threshold is a range over a derived aggregate. Aggregation is a second evaluator with its own ordering and paging semantics | +| **`edges` without rows, or rows the hop excluded** | a `projection: "edges"` | the page's rows are the answer and the edges explain it; an edge-only page is a different question (a graph read) and would need its own order, cursor and bound | + ## 14. Subtraction ledger (estimate) | | Removed | Added | |---|---:|---:| -| `src/GameCult.Networking` | 368 | ~350 (`CultNetSelection` 140, evaluator + cursor 180, ordinals 20, v1 classes and lowering ~40 minus shared) | +| `src/GameCult.Caching` | 0 | **~150**: the public member view ~40, `TryGetIndexValue` / `TryGetIndexNumber` + the CLR numeric set ~35, `ReferencesOf` over the three shapes ~40, `ResolveTargetLeaves` ~10, two rejections with their messages ~20 | +| `src/GameCult.Networking` | 368 | ~400 (`CultNetSelection` + `CultNetEdge` + the operator 170, evaluator + cursor + the incoming-edge index 190, ordinals 20, v1 classes and lowering ~40 minus shared) | | `src/GameCult.Mesh` | ≈ 365 gross | ≈ 40 (one `WithSelection`, one exact read) | -| `packages/cultnet-rs/src` | 0 | ~390 (`selection.rs` 350, `contracts.rs` 40) | +| `packages/cultnet-rs/src` | ~31 (`snapshot_query.rs`'s filter) | ~430 (`selection.rs` 390 with edges and numbers, `contracts.rs` 40) | +| `packages/cultnet-py`, `cultmesh-py` | 0 | ~5 (the `unsupported_schema_version` reply, ruled into this cut) | | `contracts/cultnet` | 0 | 4 schema files (~200 lines JSON), 1 interop row schema, 2 vector files (generated) | -| tests, C# | ~250 rewritten | ~450 (S1-S12, S15, the vector writer) | -| tests, Rust | 0 | ~300 (S12-S14) | -| entries | 0 | ~30 entries | +| tests, C# | ~250 rewritten | ~600 (S1-S12, S15-S18, S20 in Networking; S19, S21, S22 in Caching; the vector writer) | +| tests, Rust | 0 | ~340 (S12-S14 with the edge and number vectors) | +| entries | 0 | ~38 entries across three targets | | docs | — | this map; two paragraphs | -| **net source outside tests** | | **≈ −18 in C#, +390 in Rust; ≈ +370 across the repo** | +| **net source outside tests** | | **≈ +32 in C# Networking, +150 in C# Caching, +399 in Rust; ≈ +585 across the repo** | + +**The estimate moved, and in the wrong direction.** The committed version of +this ledger said ≈ +370 and ≈ −18 in C#. Both were wrong, for one reason: +the map assumed the cache needed no change, and the cache needs about 150 +lines of new public surface before the evaluator can read a single declared +value from outside the assembly (section 1). The honest figure is ≈ +585. +What the repo buys for it is unchanged in kind and larger in size: one +evaluator where **five** stood (three in C#, one in Mesh's re-filter, one +in Rust), a read surface where the substrate's own consumers were +reflecting over documents, edges and their payloads where a declared +reference was unreadable, numeric comparison over a type the catalog has +persisted all along, and a Rust runtime with the capability at all. Nothing +here is a reason to shrink the cut; it is a reason not to claim the cut +shrinks the repo. The repo grows by about 370 source lines for: a typed selection with a derived-by-vector schema where two allowlists were the only language; @@ -679,12 +1081,59 @@ a read that could return the wrong key. ## 15. Build budget -C#: two assemblies and two test projects, debug, workstation. Rust: +C#: **three** assemblies and three test projects (`GameCult.Caching` joins +the budget; it is a dependency of the other two, so touching it rebuilds +them), debug, workstation. Rust: `cultnet-rs` lib + tests, warm target dir, +0 to +60 paths. Nothing cleaned. No native, no TypeScript build beyond one interop-lane run. ## 16. Operator questions, one batch +**Ruled 2026-09-17 and no longer questions.** Four of the batch are +settled; they are recorded here as rulings and carried in the sections +they govern. + +- **R-1 (was Q-F). v0 retires on a named trigger, not "eventually."** The + reference keeps answering v0 by lowering it into a `Selection`, with no + engine of its own. That lowering is a **scheduled deletion**: it is + deleted when FU-TS, FU-Py and FU-Kt have all landed and the interop lanes + send v1, and that is FU-v0's trigger in section 9. A shim with no + deletion date is a permanent shim; this one has a date written as a + condition, and the condition is checkable by grep over the three + runtimes' contract files. Section 4's "not deleted in this cut" row and + section 5's keeps both point here. +- **R-2 (was the second half of Q-F). Python's silent drop is fixed in this + cut.** Every other runtime refuses a message it does not understand; + Python returns `[]` (`interop_peer.py:387`) and the caller reads a hang + rather than a rejection. The five lines that reply `cultnet.error.v0 + { code: "unsupported_schema_version" }` land here, ahead of FU-Py's own + trigger, because a silence is a worse failure than a missing feature. + Carried in section 9's FU-Py entry and section 14's ledger. +- **R-3 (was Q-G). `descending` is the order; the time windows go.** + `admittedAfter` / `admittedBefore` existed to approximate an order the + vocabulary now states outright, and two filters standing in for an order + are worse than the order. They are deleted from Huginn's wire in the + consumer cut (section 12), not kept as an organ-side alias any-of. "The + latest N" is `descending, limit: N`. +- **R-4 (was Q-I). The fixture is chosen for coverage and expected to + grow.** The vector row type is the dedicated + `cultnet.interop-selection-row` family of section 6, shaped to *exercise* + the four hostile findings rather than describe them: shared fields on an + abstract middle with two leaves under it, a reference whose declared + target is that middle, and a many-reference carrying a payload. It is + **not pinned as final** — the fixture is expected to gain rows and + selections as the vocabulary meets more catalogs, and a change to it is a + normal change, not a contract break. What is pinned is the parity + obligation over whatever the fixture holds: both directions, ordered ids, + `matched`, `next` presence, and the edges with their payloads. +- **R-5 (was Q-H). Watching a selection is its own cut, mapped in section + 18 of this document**, after this one and depending on it. Nothing of it + is smuggled into the selection cut and nothing here is designed around it + speculatively; the seam already drawn — one selector type serving both a + query and a subscription — is all this cut owes it. + +**Still open:** + - **Q-A. Leaf `Short` titles for question and ruling** (Huginn/Epiphany). Unchanged: **A, not now** (recommended); B, a leaf follow-up before Cut 13; C, a text projection (Cut 11's question). Depends: the organ's header row @@ -703,36 +1152,47 @@ No native, no TypeScript build beyond one interop-lane run. cannot know a consumer's enums; the organ keeps the typed refusal at its door). Depends: everything in sections 2-10. - **Q-E.** Withdrawn: the seam question is answered by the placement ruling. -- **Q-F. v0's life.** **A, keep v0 answerable in the reference as a - lowering until FU-TS, FU-Py, FU-Kt land** (recommended; the interop CI - witness stays green, and v0 has no engine of its own); B, delete v0 now - and break the three runtimes' lanes; C, add the new fields to v0 — - refused by D3 because Python would mis-answer. Also under Q-F: whether - FU-Py's five-line "reply with `unsupported_schema_version`" lands ahead of - its trigger (recommended yes; it is a refusal where there is a silence). -- **Q-G. `descending` in place of the admission window.** **A** (recommended): - one fixed order, reversible; "the latest N" is `descending, limit: N`; - Huginn's `admitted_after/before` leave its wire. **B**: keep a window as - the one range, on the ordinal only (`sinceOrdinal`), which is a second way - to say what a cursor says. **C**: keep Huginn's date window as an - organ-side alias any-of over `admitted_on` dates — expressible today with - no substrate change, weaker than a range, honest. Depends: Huginn's - filter list; nothing in the substrate. -- **Q-H. `CultNetDatabase.Watch(Selection)` as a named follow-up cut.** - **A, yes, after the runtime follow-ups** (recommended): it is the - "watch a question" affordance the seam was drawn for and the ≈ 200 further - Mesh lines; B, fold into this cut — refused by the coordinator's own - constraint not to design the watch now; C, never — leaves the local - watch helpers as they are. -- **Q-I. Vectors: the fixture row type.** **A, a dedicated - `cultnet.interop-selection-row`** (recommended; declares indexes and - references purposely, both runtimes register it); B, reuse - `cultnet.interop-note` and add index/reference declarations to it — - touches the live interop lane's document. +- **Q-J. Number encoding on the wire.** **A, IEEE float64, with the 2^53 + limit stated in the schema and in this map** (recommended: one encoding, + no parse rule per runtime, and no catalog in hand declares an integer + member wide enough to lose). **B**, decimal strings — exact, but a second + value encoding beside `any_of`'s strings and a per-runtime parse rule, + and two ways to spell a number is how a vocabulary starts growing terms. + **C**, add `integer: int64` beside `number` now, sharing `op` — additive + and untagged-free, and can be added later without breaking A, which is + why adding it now is premature. Depends: the schema files and both + runtimes' predicate types. +- **Q-K. Family names for abstract bases on the wire.** **A, not now** + (recommended): an abstract type has no `[CultDocument]`, no schema name + and no catalog entry, so there is nothing to name; a caller who wants + "every crafted item" enumerates the leaves from the schema catalog it + already reads. **B**, a `[CultDocumentFamily]` declaration plus a catalog + concept plus a matching rule in every runtime, in a later cut. Note this + is only about the `schemas` list: the *hop* already resolves an abstract + target to its leaves (D9), so the hostile example works under A. +- **Q-L. Refusing an out-of-target reference at write time.** **A, + follow-up (FU-Ref)** (recommended): this cut refuses it at read + (`reference_outside_target`, S18), which is where the corruption is + noticed; refusing at write touches the cache's put path and every + runtime's apply path and is a change of a different size. **B**, in this + cut. Under A, the read-side refusal is the only thing standing between a + corrupt edge and a wrong answer, which is why it refuses instead of + skipping. +- **Q-M. The `(schema, key)` cross product.** **A, state the limit** + (recommended): `schemas` × `keys` stays a cross product; a caller needing + exact pairs asks once per schema or verifies what it declared, as + `CultNetRawSnapshotQuery` already does. **B**, allow a `refs: + RecordRef[]` list beside `keys` — expressible without a term language and + genuinely useful, at the cost of a third addressing list and a rule for + how three lists combine. **C**, let a `keys` entry carry a schema — a + path language in miniature, refused. Depends: section 13's table and + `snapshot_query.rs`'s client. What depends on each: S1-S8 on Q-D A; S5 on the shard-log assumption -(section 1) and on Q-B for Huginn; S9 on D6; S10 on Q-F A; S12 on Q-I; -the Huginn cut on Q-B, Q-C, Q-G; FU-Watch on Q-H. +(section 1) and on Q-B for Huginn; S9 on D6; S16 and the schema files on +Q-J; S18 on Q-L A; the Huginn cut on Q-B and Q-C. Settled by R-1 to R-5: +S10, S12, the fixture, FU-v0's trigger, FU-Py's five lines, Huginn's +window deletion, and the watch cut's existence. ## 17. What was probed, read, and not settled @@ -749,3 +1209,244 @@ landing); whether MessagePack-CSharp needs a union attribute for the page's `headers | documents` (it does not if both are optional arrays with exactly one present, which is the spelling chosen so no union is needed — Hands confirms the schema says "exactly one" with `oneOf` over `required`). + +**Read on the second pass, and what it changed.** Each of these was read at +the source, and three of them contradicted something this map or its +predecessor's notes asserted: + +| Read | Held | Changed | +|---|---|---| +| `CultCache.cs:474`, `:151-176`, `:598-629`, `CultSchemaTypeNames.cs:9-31` | **Yes.** A member's type name is derived from the CLR type, persisted in the catalog entry and compared inside the canonical shape. Numeric addressing needs no new declaration, no hash movement and no migration — the load-bearing claim of this whole widening | — | +| `CultCache.cs:112-150` | — | **No.** `Members` and `IndexAccessors` are `internal` with no friend assembly, so the evaluator cannot read a declared value from outside `GameCult.Caching` at all. "No cache change is needed for addressing" was false; the cache add is ~150 lines, not ~60, and the ledger moved from ≈ +370 to ≈ +585 | +| `CultCache.cs:931-943`, `:462-468` | — | **No.** A hiding member is already refused (`HiddenMemberMessage`), and a duplicate alias already throws from `ToDictionary`. D10 shrank from "a missing refusal" to "a refusal that names nothing", and its test only means anything if it asserts the message | +| `packages/cultnet-rs/src/snapshot_query.rs` | — | **No.** Rust has a fifth selector engine (`serve_read_only_raw_snapshot:112-125`) that "Rust: none" concealed, and its client (`:195-217`) shows the cross-product limit that v1 does not fix (Q-M) | +| `CultDocumentContracts.cs:92-99`, `CultCache.cs:1100-1113`, `:1495-1509`, `:1818-1838`, `:254-265` | **Yes.** `ICultRecordRef` is the enumerable handle D11 needs; assignability is already how the cache resolves a base type to concrete documents (D9); `AllDescriptors` is public | — | + +**Still not settled, and who settles it:** + +- Whether every committed write takes a shard-log sequence (unchanged; + Hands, at the append site). +- Whether `CultDocumentDescriptor`'s public member view can be a readonly + struct without forcing an allocation per row per predicate in the + evaluator's inner loop. Nothing here depends on the answer being fast, + but a `Select`-per-row over a fresh list would be a silly cost to build + in; Hands measures if a fixture of a few thousand rows is slow, and not + before. +- The exact split of mutation entries against the QUIC campaign's runner + (unchanged; Self at landing). +- Whether `serve_read_only_raw_snapshot`'s existing tests survive the + lowering unchanged; they should, since the behaviour is identical, but + they were not read line by line. +- Q-J, Q-K, Q-L, Q-M: the operator. + +**Not probed, and deliberately:** nothing was built or run against CultLib. +The tree is hosting a live QUIC campaign, and no claim in this map needs a +build to be true — every one of them is a source read, and the three that +were wrong were wrong because the first pass did not read far enough, not +because a build would have caught them. + +--- + +# Cut 2: watching a selection + +Ruled 2026-09-17 (R-5): the operator wants this and wants it soon, so it is +mapped here rather than left as a follow-up trigger. It is **its own cut**, +landing after Cut 1 and depending on it. Nothing below is smuggled into Cut +1, and Cut 1 is not shaped around it: the seam Cut 1 draws — one selector +type serving a query and a subscription alike — is the whole of what Cut 1 +owes this one. Cut 1 can go to Hands without waiting for a ruling on +anything here. + +Same discipline as Cut 1: facts by source read, deletes first, an authority +map, verification with a mutation per rule including a loosening, and a +subtraction estimate with real numbers. + +## 18.1 Body facts + +**The local watch surface today** (`src/GameCult.Networking/CultNetDatabase.cs`): + +- `Watch()` `:1051-1057` filters the change stream by CLR type; + `WatchAllChanges()` `:1063-1067`; `WatchRecord(key)` `:1072-1075`; + `WatchGlobal()` `:1080-1083`; `WatchByName(name)` `:1088-1094`; + `WatchByIndex(alias, value)` `:1100-1107`. +- **`WatchByName` and `WatchByIndex` do not do what they are named.** Both + read the cache's *current single winner* for the lookup and compare it to + the change's document by `ReferenceEquals`. Combined with section 1's + finding that the cache's index maps hold **one key per value**, this + means `WatchByIndex("kind", "cannon")` observes changes to + whichever single `Weapon` most recently claimed `cannon`, not to the + weapons whose kind is `cannon`. It also re-runs the lookup *at change + time*, so a change that clears the value is evaluated against the state + after the clear. The same two lines exist again in CultMesh as + `MatchesName` / `MatchesIndex` (`CultMesh.cs:3312-3333`). +- The rule is set-dependent even without a hop, and nothing tracks + membership: there is no "was in the set, now is not" anywhere in the + local path. `Reconcile` (`CultNetDatabaseSubscriptionServer.cs:251-292`) + is the only membership tracker in the reference and it belongs to a + server, over a delivered set, per peer. + +**The CultMesh collection surface** (`src/GameCult.Mesh/CultMesh.cs`): nine +`Collection*` overloads at `:2278-2480` — three shapes (all / by name / by +index) by three sources (`CultCache` `:2278`, `:2302`, `:2331`; +`CultNetDatabase` `:2362`, `:2386`, `:2413`; `CultMeshNode` `:2442`, +`:2456`, `:2471`, which delegate to the database trio in three lines each). +`CollectionByIndex` over a cache resolves its contents as +`Optional(cache.GetByIndex(alias, value))` — a "collection" of +**at most one row**, whose live feed then filters by `MatchesIndex`. Three +shapes exist because the shape *is* the query language; a selection +replaces the shape axis entirely and leaves the source axis alone. + +**What Cut 1 leaves in place for this cut:** `CultNetSelection` and its +validation, `CultNetSelectionEvaluator.Matches(selection, descriptor, key, +document)` for a single row, the cache's public read surface, and D6's rule +that a hop-bearing selection is set-dependent and must reconcile rather +than decide per change. + +## 18.2 The shape + +``` +CultNetDatabase.Watch(CultNetSelection selection) + -> Observable + +CultNetSelectionChange { + kind: Entered | Left | Updated // membership, not storage + schemaId, recordKey + document: object? // present on Entered/Updated under `document` projection + previous: object? // present on Left/Updated + cause: Self | Edge // this row changed, or a row it cites / is cited by did +} +``` + +**Rules, each one owner:** + +- **Membership, not mutation.** The stream reports a row entering the + selection, leaving it, or changing while inside it. A write to a row that + was outside and stays outside emits nothing. A write that changes a value + the selection filters on emits `Entered` or `Left`, **not** `Updated` — + which is precisely what `WatchByIndex` cannot express today. +- **`cause: Edge`** is how a hop-bearing selection stays honest: when a + change to row B moves row A in or out, the subscriber is told about A, + with the cause marked, and never about B unless B is itself in the set. +- **No order, no cursor, no `asOf`, no `limit`.** A live feed is not a + page. A selection carrying `limit`, `cursor` or `descending` is **refused + at the door** (`selection_invalid { field }`) rather than silently + ignored: "the latest ten, live" is a different question with a different + answer (it needs an eviction rule), and this cut does not answer it. + `projection` is honoured; `schemas`, `keys`, `fields`, `cites` and + `cited` are honoured. +- **The initial set is not a snapshot message.** `Watch` is local and + in-process; it emits `Entered` for every row already matching, at + subscribe time, under the cache's lock, before any live change. There is + no `asOf` because there is no wire and no second reader. +- **A hop-bearing selection recomputes; a plain one decides per row.** + Without `cites`/`cited`, membership is `Matches(selection, row)` and + costs one row's read. With a hop, a change anywhere can move anything, so + the watch re-evaluates the selection over the cache and diffs against the + membership set it holds. That is O(rows) per change and it is stated + plainly rather than hidden (Q-N). + +## 18.3 Deletes first + +| Path:lines | Lines | What | +|---|---:|---| +| `CultNetDatabase.cs:1080-1107` | 28 | `WatchGlobal`, `WatchByName`, `WatchByIndex` — the three that encode a query in a method name, two of them wrongly. `WatchGlobal` lowers to `keys: ["global:{schemaId}"]`, the other two to a `fields` predicate | +| `CultMesh.cs:3312-3333` | 22 | `MatchesName`, `MatchesIndex` — the same `ReferenceEquals`-against-the-winner rule, second copy | +| `CultMesh.cs:2278-2480` | 203 | the nine `Collection*` overloads; **after: three**, one per source (`CultCache`, `CultNetDatabase`, `CultMeshNode`), each taking a `CultNetSelection`, about 75 lines | +| `CultMeshSnapshots.cs` and `CultMesh.cs` local-watch predicates, audit sites #2, #4-9, #16-21 | ~240 | the remaining local watch loops and their inline predicates, about 40 after | +| **Total** | **~493** | **~115 after; net about −378** | + +`Watch()`, `WatchAllChanges()` and `WatchRecord(key)` **stay**, as +Cut 1's v0 lowering stays: a CLR-type filter and a single-key watch are +conveniences that lower to a selection and have no rule of their own. If +they grow a rule again, W6 catches it. + +## 18.4 Adds and authority + +| Add | Owner | Live consumer | Protected invariant | Replaces | +|---|---|---|---|---| +| `CultNetSelectionWatch` in `GameCult.Networking` (~130 lines): the membership set, the per-change decision, the hop recompute, `CultNetSelectionChange` | `CultNetDatabase` | Mesh's three `Collection` overloads; any local consumer that watches a question | membership is tracked in one place, and a row that leaves the set is reported leaving | `WatchByName` / `WatchByIndex` / `MatchesName` / `MatchesIndex`, four spellings of one wrong rule | +| `CultNetDatabase.Watch(CultNetSelection)` (~15 lines) | `CultNetDatabase` | the above | one entry point | three named-query methods | +| Rust: **nothing in this cut** | — | — | — | no Rust caller watches locally; when one does, it gets the same shape over `Row`/`RowSet` | + +- **Owner.** `CultNetSelectionWatch` owns membership and only membership. + `CultNetSelectionEvaluator.Matches` owns whether a row is in the set — + the watch never re-implements a predicate. `CultNetDatabase` owns the + change stream. The cache owns values, as in Cut 1. +- **Inputs.** The change stream, the cache's rows through the public read + surface, the validated selection. Not inputs: a clock, a transport, the + shard log's sequences (there is no order here), a peer's authorization. +- **Outputs.** `Entered` / `Left` / `Updated` with a cause, and one typed + refusal for a selection carrying page-shaped fields. +- **Derived state.** The membership set, and the incoming-edge index when + the selection hops. **Demotions:** `Watch` and `WatchRecord` are no + longer queries, they are lowerings; Mesh's collection *shape* is no + longer a language, it is a `Selection`; `MatchesIndex` is not an owner of + anything. +- **Forbidden writers.** Nothing outside `CultNetSelectionWatch` may decide + membership; no watch path may call `GetByIndex` or `GetByName` to decide + whether a change is interesting (that is the bug being deleted, in both + its copies); Mesh may not filter a feed the watch answered; the watch may + not emit `Updated` for a row that crossed the predicate boundary; the + watch may not accept `limit`, `cursor` or `descending`. +- **Shared paths.** `Matches` under both the query and the watch — a row + that a page would return and a row the watch reports entering are decided + by the same function, or the two truths drift. The subscription server's + `Reconcile` keeps its own per-peer delivered set (it answers a different + question: what this peer has been told) and **does not** become the local + membership tracker. +- **Deletion line.** Commit 1: `CultNetSelectionWatch` and + `Watch(Selection)`, with the three named-query methods deleted and their + tests rewritten. Commit 2: Mesh's nine overloads collapsed to three, both + matchers deleted. Nothing lands with `WatchByIndex` alive beside it. + +## 18.5 Verification + +| # | Test | Pins | Revert kills | Loosening kills | +|---|---|---|---|---| +| W1 | `Watch_ReportsARowLeavingWhenItsFilteredValueChanges` | membership, not mutation — the bug being deleted | `Left` never emitted (today's behaviour restored: the change is simply not delivered) | `Updated` emitted instead of `Left`, so a subscriber holding a list keeps a row that no longer matches | +| W2 | `Watch_ReportsEveryRowSharingAnIndexValue_NotTheCacheIndexWinner` | the deletion of the `ReferenceEquals`-against-the-winner rule | `MatchesIndex` restored | membership decided by the winner *plus* the changed row, which passes a two-row fixture and fails a three-row one — **the fixture must carry three rows sharing the value** | +| W3 | `Watch_EmitsTheInitialSetBeforeAnyLiveChange` | the subscribe-time set | no initial emission | the initial set emitted *after* the subscription goes live, so a write racing the subscribe is delivered twice or not at all — needs a test that writes between subscribe and first emission | +| W4 | `Watch_ReportsAnEdgeCausedEntryWhenTheCiterChanges` | `cause: Edge`, D6 locally | a hop-bearing watch decided per changed row (the citee never moves) | the citee reported with `cause: Self`, which loses the subscriber's ability to tell a row's own change from a set change | +| W5 | `Watch_RefusesAPageShapedSelection` | no order, cursor or limit on a feed | the refusal dropped and the fields ignored | `limit` refused but `descending` ignored — one field's worth of silent ignoring, which is how a "harmless" ignored field becomes a bug report | +| W6 | `Watch_AndSelect_AgreeOnMembershipForTheSameSelection` (property-shaped: for each fixture selection, the set the watch holds equals the ids a page returns) | the shared `Matches` | the watch given its own predicate | the watch's copy agreeing on the plain selections and differing on the hop-bearing ones — kills only if the fixture's selections include hops, which section 6's fixture does | +| W7 | `Mesh_CollectionTakesASelectionAndFiltersNothingItself` (Mesh tests) | the collapse | an overload restored | the three surviving overloads re-filtering the feed after the watch answered | + +**Negative greps:** `rg -n "WatchByIndex|WatchByName|MatchesIndex|MatchesName" src` +empty; `rg -n "GetByIndex|GetByName" src/GameCult.Mesh src/GameCult.Networking` +empty; `rg -n "CollectionByIndex|CollectionByName" src` empty. + +**Mutations.** Entries in this campaign's own file, target `networking` +(killer `dotnet test tests/GameCult.Networking.Tests`) plus the Mesh tests +for W7, one per rule above with its revert and its loosening. + +## 18.6 Subtraction estimate + +| | Removed | Added | +|---|---:|---:| +| `src/GameCult.Networking` | 28 | ~145 | +| `src/GameCult.Mesh` | ~465 | ~115 | +| tests | ~80 rewritten | ~260 (W1-W7) | +| **net source outside tests** | | **about −233** | + +This is the cut where CultMesh actually shrinks: about −350 in +`CultMesh.cs` and the snapshot facade against about +117 in the database +organ. It is also the cut that deletes a wrong answer rather than a +duplicate one — four spellings of "watch the row that currently wins a +unique-index lookup", replaced by one membership tracker over the selection +the caller actually asked about. Cut 1 pays about +585 for the vocabulary; +Cut 2 spends it. + +## 18.7 Operator questions for this cut + +- **Q-N. The hop-bearing watch's recompute.** **A, recompute and diff on + every change** (recommended: obviously correct, O(rows) per change, and + the local caches this runs over hold thousands of rows, not millions). + **B**, maintain an incremental incoming-edge index invalidated per write + — faster, and a second piece of derived state that can disagree with the + cache. Take B only with a measured reason. +- **Q-O. Does `WatchRecord` survive?** **A, yes, as a lowering** + (recommended; it is one key and no rule). **B**, delete it too and make + every caller say `keys: [k]` — cleaner, noisier at its call sites. +- **Q-P. Ordering on a feed, later.** Out of this cut by the rules above. + If "the latest N, live" is wanted, it is a third cut with an eviction + rule, not a field added here. From 47618428a3210d6342ec5343dc6dd9d9586ab24f Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 01:13:41 +0200 Subject: [PATCH 0081/1002] Close three questions the map still lists as open The operator ruled ordinals, the two deletions and the leaf titles earlier today, in the other campaign's map. This one still carried them as open, and a stale live question is exactly what a later agent reads as a decision still to make. Co-Authored-By: Claude Fable 5.1 --- docs/cultnet-selection-cut.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/cultnet-selection-cut.md b/docs/cultnet-selection-cut.md index fa144f75..1b8a9469 100644 --- a/docs/cultnet-selection-cut.md +++ b/docs/cultnet-selection-cut.md @@ -1188,6 +1188,14 @@ they govern. path language in miniature, refused. Depends: section 13's table and `snapshot_query.rs`'s client. +**Q-A, Q-B and Q-C are no longer open.** The operator ruled all three on +2026-09-17 and they are recorded in the Huginn campaign's map, +`F:\Projects\Epiphany\notes\eureka-pipeline-state-cut.md`: receipt ordinals +yes; `open_items` and `history` deleted rather than kept as presets; and the +leaf gains titles on `question` and `ruling`, riding the same store version +bump as the ordinal so there is one migration rather than two. They are named +below only because work here still depends on them. + What depends on each: S1-S8 on Q-D A; S5 on the shard-log assumption (section 1) and on Q-B for Huginn; S9 on D6; S16 and the schema files on Q-J; S18 on Q-L A; the Huginn cut on Q-B and Q-C. Settled by R-1 to R-5: From fa6c000e7fcf1fdc80cf3f7a7a4e5e9117e6252a Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 01:19:02 +0200 Subject: [PATCH 0082/1002] Record the pass where the verdict splits A stranger can now rerun both targets from the committed container and the README, which was the batch's point and holds. The rules are another matter. The scenario holds its callers after the wait whose duration is the rule, so a hard-coded two seconds walks through the whole matrix while the committed entry only ever died because one constant was smaller than another. The gap recorded as unreachable is reachable in fifteen lines against a closed port, and the mutant crashes a plain optimised build on contact. Second gap falsified today. The next batch fixes the cause once instead of adding another entry at another constant. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 73 +++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 2 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 164d51ad..f096ebc1 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -321,8 +321,77 @@ the fix is weaker than the fix: a handle closed under a live call. Both were previously reported killed on the sanitizer target only, and neither has a definition left. The third fix batch is told to give each a real entry or to say plainly that the rule is -undefended, because an honest gap beats a fabricated kill. **Third fix batch -in Hands.** +undefended, because an honest gap beats a fabricated kill. + +**The third fix batch landed** at `62e53df` (the development seam and a +hold-then-close scenario), `e4e09a0` (four entries, the bounded wait at 50 ms, +an exit status on skips, the child's stderr on a red control, re-execution +with randomisation disabled), `12c8bfc` (the header's self-contradiction) and +`4407098` (the committed container, the Ninja generator, the README recipe +with the seccomp requirement). + +**Soul's fourth pass, 2026-09-17** (Fable, banked mid-pass when that model ran +out, resumed on Opus from the bank; the handoff paid for itself by carrying a +live harness process, a dirty tree and two leads the successor opened with). +**The verdict splits, so it is given twice.** + +*The infrastructure question is now yes.* The committed container built with no +cache, then the literal README run line, gives eight killed, none surviving, +none skipped, exit zero on Linux; Windows gives six killed, two honestly +skipped, and a real exit code. A stranger can rerun both targets today. The +seccomp requirement is genuinely load-bearing and the randomisation +re-execution genuinely runs. The development seam is absent from a release +build: thirteen production symbols, no debug symbols, no assertion strings, +and every executable section byte-identical between pre- and post-change +release builds. The predecessor's harness had already exited, restoring the +tree byte-exactly, so the restore path holds. + +*The rules question is still no.* Three of the four rules in the native table +are pinned. The fourth is not, and the cause is structural rather than a bad +constant: + +- **F1, confirmed, high: the hold sits after the wait whose duration is the + rule**, so every timeout mutant lands in a blind spot by construction. + A hard-coded 100 ms survives Windows and Linux with assertions, and dies + under the thread sanitizer only because its slowdown trips an unrelated + condition. **A hard-coded 2000 ms survives the entire matrix on both + targets.** A host asking for five seconds silently gets two and every + consumer's poll loop spins at two and a half times the rate it asked for, + forever. The committed one-millisecond entry dies only because one is less + than the scenario's fifty-millisecond settle: constant pinning constant. +- **F2, confirmed, high: the pop-before-copy gap was wrong about itself.** + A client opening to a closed loopback port reaches that path in about a + millisecond with no listener, credential or connection, because the failure + path always publishes a non-empty reason; fifteen lines. Moving the pop + before the copy then crashes an ordinary optimised build twice out of two, + while both committed scenarios stay green on that same binary. +- **F3, confirmed, medium: the refusal during a close has no entry** and + survives being neutered, though the header promises it. A call entering + behind the closer increments the in-flight count behind the wait, which can + then never reach zero. +- F4, low: the seam misdescribes itself, claiming the held call touches + nothing afterwards when its scope destructor takes the gate, decrements and + notifies. The safety comes from the assertion, not the hold. +- F5, low: the bounded wait at 600 ms survives, the same shape as F1 and + honestly labelled as a limit by Hands. +- Also: "the close wakes every blocked poll" **is** defended by committed code + but has no entry, so the table understates coverage in one place while + overstating it in another. + +**Two scars from the pass itself.** An export made with `git archive` carried +1,459 inserted carriage returns, poisoning any byte comparison built on it; +raw blobs verified against the worktree hash are the only safe source. And the +51 bytes that differ between pre- and post-change release builds are accounted +for: 48 are four copies of the reproducibility content hash, and the last +three sit in exception metadata outside every executable section and **could +not be fully accounted for**, which Soul said rather than rounding away. The +same source rebuilt at the same path twice differs by zero bytes; built +elsewhere it differs by 69, so the figure is only meaningful at a shared path. + +**One undocumented step remains** in an otherwise clean path: the README +hardcodes the container mount, so a newcomer on another checkout must edit the +line. **Fourth fix batch in Hands**, told to fix the structural cause once +rather than add another entry at another constant. **Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative greps, all twelve mutations rerun and killed, the control catching a From 6e4b9e7eb422e0fd12e1e5d52ffa30acf5e8bd4d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 01:23:44 +0200 Subject: [PATCH 0083/1002] Rule numbers onto decimal strings Floats are fragile, and every value in this vocabulary is already a string, so decimal strings keep the wire to one value encoding rather than adding a second. The recommendation this reverses had that backwards. What it costs is a comparison rule, and that is where the danger sits: compared as text, ten is less than nine. The cut owes a canonical decimal form and a numeric comparison, both pinned, and it no longer owes anyone a sentence about where exactness runs out. Co-Authored-By: Claude Fable 5.1 --- docs/cultnet-selection-cut.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/cultnet-selection-cut.md b/docs/cultnet-selection-cut.md index 1b8a9469..a488e69d 100644 --- a/docs/cultnet-selection-cut.md +++ b/docs/cultnet-selection-cut.md @@ -1152,7 +1152,22 @@ they govern. cannot know a consumer's enums; the organ keeps the typed refusal at its door). Depends: everything in sections 2-10. - **Q-E.** Withdrawn: the seam question is answered by the placement ruling. -- **Q-J. Number encoding on the wire.** **A, IEEE float64, with the 2^53 +- **Q-J. Number encoding on the wire. RULED B, decimal strings, + 2026-09-17.** The operator: floats are fragile, and strings are the most + reliable way to store a number. **Self's recommendation of A was argued + backwards and the map said so wrongly.** B was framed as "a second value + encoding beside `any_of`'s strings"; it is the opposite. Every value in this + vocabulary is already a string, so decimal strings keep the wire to **one** + value encoding, and it is float64 that would add a second. What B really + costs is a comparison rule, and that is where the danger sits: a decimal + string compared lexicographically answers that ten is less than nine. So + the cut must specify a canonical decimal form and a numeric comparison, + and pin both with mutants — a lexicographic comparison must die, and a + non-canonical spelling of an equal value must not change an answer. Name + the edge cases the canonical form settles: leading and trailing zeros, an + explicit plus, exponent notation, and negative zero. No exactness limit + needs stating, because there is no longer one. + - *Superseded, kept as history:* **A, IEEE float64, with the 2^53 limit stated in the schema and in this map** (recommended: one encoding, no parse rule per runtime, and no catalog in hand declares an integer member wide enough to lose). **B**, decimal strings — exact, but a second From 34df099e8ca4acca079042606a3c51c4d790418a Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 01:30:45 +0200 Subject: [PATCH 0084/1002] Rule the cross product, and park families for the right reason A caller needing exact pairs asks once per schema. The limit is stated rather than answered with a third addressing list. Naming a family is parked, but not because there is nothing to name. In one process a family is an assignability check; over the wire there is no type system, and nothing publishes the hierarchy where a caller can see it. The fix is a catalog entry naming each leaf's base chain, which is small work that moves the catalog's shape, so it belongs in a cut already touching it. Co-Authored-By: Claude Fable 5.1 --- docs/cultnet-selection-cut.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/docs/cultnet-selection-cut.md b/docs/cultnet-selection-cut.md index a488e69d..e79d9721 100644 --- a/docs/cultnet-selection-cut.md +++ b/docs/cultnet-selection-cut.md @@ -1177,8 +1177,22 @@ they govern. and untagged-free, and can be added later without breaking A, which is why adding it now is premature. Depends: the schema files and both runtimes' predicate types. -- **Q-K. Family names for abstract bases on the wire.** **A, not now** - (recommended): an abstract type has no `[CultDocument]`, no schema name +- **Q-K. Family names for abstract bases on the wire. PARKED, 2026-09-17, + and Self's reason was wrong.** The operator: this was possible when + CultCache was a single file, so it is odd that it is hard now; not + load bearing either way. That is correct. In-process a family is one + assignability check, because the runtime holds the hierarchy. Over the + wire there is no type system, only schema names, and an abstract type + carries no `[CultDocument]` so it never gets one. **The hardness is not + modelling, it is that nothing publishes the hierarchy where a remote + caller can see it.** The honest cost is therefore a catalog addition, + each leaf's entry naming its base chain, after which a family is the + leaves whose chain contains the name asked for. Small work — but it moves + the catalog's shape, and this cut's whole claim to being cheap is that it + moves neither the catalog's shape nor its hashes. So it is **deferred to a + cut that is already touching the catalog**, not deferred because there is + nothing to name. Superseded reasoning, kept as history: + an abstract type has no `[CultDocument]`, no schema name and no catalog entry, so there is nothing to name; a caller who wants "every crafted item" enumerates the leaves from the schema catalog it already reads. **B**, a `[CultDocumentFamily]` declaration plus a catalog @@ -1193,7 +1207,11 @@ they govern. cut. Under A, the read-side refusal is the only thing standing between a corrupt edge and a wrong answer, which is why it refuses instead of skipping. -- **Q-M. The `(schema, key)` cross product.** **A, state the limit** +- **Q-M. The `(schema, key)` cross product. RULED A, 2026-09-17**, in the + operator's words: once per schema. The cross product stays, the limit is + stated, and a caller needing exact pairs asks once per schema. No third + addressing list and no rule for combining three of them. + Original options: **A, state the limit** (recommended): `schemas` × `keys` stays a cross product; a caller needing exact pairs asks once per schema or verifies what it declared, as `CultNetRawSnapshotQuery` already does. **B**, allow a `refs: From 2df124e26950a5a11df5147a48249304df3f1a71 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 01:38:24 +0200 Subject: [PATCH 0085/1002] Name what the generator needs before it can exist A generator runs against published schemas, and the published schema entry is flat: the cache walks the base types to collect members and then throws the hierarchy away. Fed that, a generator emits one flat class per leaf with the inherited members copied into each, which is the opposite of building the hierarchy up for you. So the catalog carrying each leaf's base chain is a prerequisite of that campaign rather than a nicety for naming families, and families fall out of it once it exists. The campaign itself waits until this cut settles the shape it would be generating against. No generator exists in the repository today. Co-Authored-By: Claude Fable 5.1 --- docs/cultnet-selection-cut.md | 38 ++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/docs/cultnet-selection-cut.md b/docs/cultnet-selection-cut.md index e79d9721..83214e87 100644 --- a/docs/cultnet-selection-cut.md +++ b/docs/cultnet-selection-cut.md @@ -1191,7 +1191,43 @@ they govern. the catalog's shape, and this cut's whole claim to being cheap is that it moves neither the catalog's shape nor its hashes. So it is **deferred to a cut that is already touching the catalog**, not deferred because there is - nothing to name. Superseded reasoning, kept as history: + nothing to name. + + **Trigger named, 2026-09-17: the source-generator campaign needs it first.** + The operator's position is that any project using CultNet wants the types it + touches native, and that where the hierarchy is not being declared in + parallel by hand, a generator should build it. That generator runs against + **published schemas**, with C# authoring and the schema as the contract, + which is what the reference-runtime rule already says. + + The obstacle is the same missing fact. `CultCache.cs:847,887,966` walks the + base types while collecting members and then discards the hierarchy, and + `ToCatalogEntry` (`:152-177`) publishes a schema id, the canonical schema, + the compatible ids and a flat member list carrying slot, name, type, + reference-ness, many-ness, target and alias. **Nothing records what a type + inherits from.** So a generator fed published schemas alone emits one flat + class per leaf with the inherited members copied into each — exactly the + hierarchy the operator wants built for them, and unbuildable from what is + published today. + + So the base chain in the catalog is a **prerequisite of the generator + campaign**, and family names fall out of it for free once it exists. Until + then a family expands at the call site into its leaf schema names, which the + generator can emit as a constant, costing the protocol nothing. The honest + limit of call-site expansion, to be stated wherever it lands: it is + closed-world per compilation, so a leaf declared where the caller does not + compile leaves the list silently short, and an open-world caller must ask the + catalog at run time instead. + + The generator is **its own campaign, mapped after this cut lands** (operator, + 2026-09-17: "definitely later"), because its value is emitting against a + shape that is settled and this cut is what settles it. It is also where the + query sugar comes from: typed per-kind builders make filtering a document by + another kind's field a compile error rather than an empty page. **No source + generator exists in CultLib today** — no Roslyn generator anywhere in the + repository, and `src/GameCult.Caching/emitted/` is empty. + + Superseded reasoning, kept as history: an abstract type has no `[CultDocument]`, no schema name and no catalog entry, so there is nothing to name; a caller who wants "every crafted item" enumerates the leaves from the schema catalog it From 122c2172d9c0970b55b85d271bca5a90766b7ea5 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 01:44:09 +0200 Subject: [PATCH 0086/1002] Rule the reference check onto read now and write later A reference whose target contradicts its declaration is noticed on read in this cut and refused by name. Writing the same check into the put path is intended rather than optional: the declaration already names the target and the writer already holds the record, so it is cheap, and leaving it to consumers means every tool that writes records reimplements it and a tool that forgets looks exactly like one that did not until something refuses. The consumer story rests on less than it sounds. There is no Studio repository and no project by that name; the tooling that enforces this today is one console project in one game. That makes now the cheapest moment to move the rule to its owner. Co-Authored-By: Claude Fable 5.1 --- docs/cultnet-selection-cut.md | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/docs/cultnet-selection-cut.md b/docs/cultnet-selection-cut.md index 83214e87..f21013f5 100644 --- a/docs/cultnet-selection-cut.md +++ b/docs/cultnet-selection-cut.md @@ -1235,8 +1235,33 @@ they govern. concept plus a matching rule in every runtime, in a later cut. Note this is only about the `schemas` list: the *hop* already resolves an abstract target to its leaves (D9), so the hostile example works under A. -- **Q-L. Refusing an out-of-target reference at write time.** **A, - follow-up (FU-Ref)** (recommended): this cut refuses it at read +- **Q-L. Refusing an out-of-target reference at write time. RULED A, + 2026-09-17**, with the follow-up upgraded from optional to intended. The + operator: notice on read for now, but on write eventually; today this is + left to consumers to enforce, as Aetheria's Database Tools did and as + CultCache Studio is expected to, and it is easy to insert garbage at the + source level which a cheap check would prevent. + + **Two things make the follow-up worth more than "nice to have."** First, + enforcement living in consumers is duplicated authority by construction: + every tool that writes records re-implements the same check, and a tool + that forgets is indistinguishable from one that does not, until a read + refuses. Second, the check really is cheap — the declaration already names + the target (`TargetSchemaName` on the member catalog entry), and the write + path already has the record in hand. + + **What Self could establish about the consumer story, 2026-09-17:** it + rests on less than it sounds. There is no CultCache Studio repository + under `F:\Projects`, and no project file by that name anywhere; every + reference to it is forward-looking, in Aetheria's migration documents, + where it is described as absorbing that project's Database Tools. Aetheria's + actual data tooling today is the `tools/AetherDb` console project. So the + enforcement being relied on is one tool, in one project, for one catalog, + and there is no second implementation to be inconsistent with yet — which is + the cheapest moment to move the rule to its owner rather than the most + expensive. + + Original options: **A, follow-up (FU-Ref)** (recommended): this cut refuses it at read (`reference_outside_target`, S18), which is where the corruption is noticed; refusing at write touches the cache's put path and every runtime's apply path and is a change of a different size. **B**, in this From 25d7de26b369f827fe5b8fcb634e1410d4102c15 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 02:09:12 +0200 Subject: [PATCH 0087/1002] Point the container recipe at whatever checkout is running it The mount was this machine's own path, so the one documented way to build and check the Linux bridge needed editing before it would run anywhere else. It is the repository root now, named as the shell names it. Co-Authored-By: Claude Opus 5 --- native/GameCult.Mesh.Quic.Native/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/native/GameCult.Mesh.Quic.Native/README.md b/native/GameCult.Mesh.Quic.Native/README.md index 4653f86c..92041e8d 100644 --- a/native/GameCult.Mesh.Quic.Native/README.md +++ b/native/GameCult.Mesh.Quic.Native/README.md @@ -110,9 +110,12 @@ mutation harness that drives the runtime-lifetime scenarios is a Node script and a container that cannot run it cannot check the bridge it just built: docker build -t cultlib-quic-native-dev -f scripts/quic-native-linux-dev.Dockerfile scripts - docker run --rm --security-opt seccomp=unconfined -v F:\Projects\CultLib:/src -w /src \ + docker run --rm --security-opt seccomp=unconfined -v "${PWD}:/src" -w /src ` cultlib-quic-native-dev bash -lc "scripts/build-quic-native.sh && node scripts/mutate-cultmesh.mjs native" +Both lines are run from the repository root, and the mount is that root wherever +it is: `${PWD}` in PowerShell, `$(pwd)` in a POSIX shell. + `--security-opt seccomp=unconfined` is load-bearing, not caution. The ThreadSanitizer configuration needs the process's address space where it expects it, so `scripts/mutate-cultmesh.mjs` re-executes those runs under `setarch -R`, From a937a0b07e38a4180ba4e606b3f78f45883f72bc Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 02:09:50 +0200 Subject: [PATCH 0088/1002] Let the bridge's own timeout, refusal and two-phase poll be seen Three rules the bridge has always promised, none of which anything committed could see. The timeout was the structural one. Both scenarios end their waits with a close, so the duration the bridge waits on governed nothing either of them observes: a hard-coded 2000 ms survived the whole Linux matrix and Windows, and a host asking for five seconds would have got two forever with nothing reporting it. The fix is not another entry at another constant. A timeout's only observable is how long the call takes, so `polltimeout` lets an idle runtime's poll be ended by its own timeout and measures it, twice at different values, because no single constant sits in both bands. The seam's hold moves behind that too: it parks only a call the wait woke, so a poll whose own timeout expired is on its way out rather than held there by the fixture and counted as the bridge's doing. The refusal during a close (the header's section 4) had no scenario at all. A call admitted after the closer has begun increments the in-flight count behind a wait that has already read it. `latecall` holds the close open with the seam and makes a call into it. And the two-phase poll was written off as needing a listener, a credential and a connection. It needs a closed loopback port: the failure always carries a reason, which is an 87-byte payload, in about a millisecond. Moving the pop above the copy crashes on both targets. 18 killed, 0 survived, 0 skipped on linux-x64; 16 killed, 0 survived on win32-x64, where the two ThreadSanitizer entries are honestly skipped. Both runs restored the source to the same sha256, b163cab7d48ebc93. Co-Authored-By: Claude Opus 5 --- .../cultmesh_quic_native.cpp | 20 +- .../tests/cultmesh_quic_native_tests.cpp | 330 +++++++++++++++++- scripts/mutate-cultmesh.mjs | 200 +++++++++-- 3 files changed, 517 insertions(+), 33 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp index 621be18c..bfd09afc 100644 --- a/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp +++ b/native/GameCult.Mesh.Quic.Native/cultmesh_quic_native.cpp @@ -83,9 +83,11 @@ // - HELD parks a call inside the library until the scenario releases it, so the // close races calls that are genuinely there for as long as the scenario // wants them there, instead of for as long as the schedule happens to give. -// It returns true when it parked, and touches nothing afterwards: a bridge -// that frees the runtime out from under a held call is then reported by the -// scenario rather than crashing inside it. +// It returns true when it parked, and a held call makes no further call of +// its own; what it does still do is leave its CallScope, which takes the gate, +// decrements the count and notifies. That is the ordinary exit every export +// makes, and it is the bridge's wait — not the hold — that keeps the runtime +// alive underneath it. #if defined(CULTMESH_QUIC_DEBUG_ASSERTS) #define CULTMESH_QUIC_DEBUG_PEAK(count) DebugRaisePeak(count) #define CULTMESH_QUIC_DEBUG_AT_CLOSE(count) DebugRecordCallsAtClose(count) @@ -1172,12 +1174,16 @@ CULTMESH_API int32_t cultmesh_quic_next_event( std::unique_lock lock(runtime->gate); if (runtime->events.empty() && timeout_ms > 0) { - runtime->signal.wait_for(lock, std::chrono::milliseconds(timeout_ms), + // The host's timeout bounds the wait; an event or the close ends it + // sooner, and `woken` is which of the two happened. + const bool woken = runtime->signal.wait_for(lock, std::chrono::milliseconds(timeout_ms), [runtime] { return !runtime->events.empty() || runtime->closing; }); // Development builds only; a no-op unless a scenario has armed the hold. - // A held call returns the same 0 an empty queue would have, and touches - // the runtime no further. - if (CULTMESH_QUIC_DEBUG_HELD(lock)) return 0; + // A held call returns the same 0 an empty queue would have, and makes no + // further call of its own. Only a woken call is held: one whose own + // timeout expired is on its way out, and parking it would let a scenario + // report a call the bridge kept when what kept it was the fixture. + if (woken && CULTMESH_QUIC_DEBUG_HELD(lock)) return 0; } if (runtime->events.empty()) return 0; diff --git a/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp b/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp index 2b2fa3a3..afb529f7 100644 --- a/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp +++ b/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp @@ -19,6 +19,8 @@ // // cultmesh_quic_native_tests closerace [iterations] [pollers] // cultmesh_quic_native_tests holdclose [iterations] [pollers] +// cultmesh_quic_native_tests polltimeout [iterations] +// cultmesh_quic_native_tests latecall [iterations] // // `closerace` hunts the race: many pollers, many iterations, and whatever the // schedule gives. `holdclose` takes the guessing out of it — the bridge's @@ -27,6 +29,12 @@ // bridge actually counted, so the scenario asserts the quiesce instead of // assuming its own fixture worked. It needs CULTMESH_QUIC_DEBUG_ASSERTS. // +// In both of those the wait is ended by the close, so the host's timeout governs +// nothing either of them can see, and a bridge waiting on a constant of its own +// passes both. `polltimeout` is the one that lets the timeout govern the return +// and measures it. `latecall` covers the other half of section 4: a call that +// races the start of a close is refused rather than counted behind its wait. +// // Exit code 0 means every assertion held. Anything else, including a sanitizer // abort or the bridge's own assertion, is a failure. Under ThreadSanitizer run // it with `TSAN_OPTIONS=halt_on_error=1`, or a reported race leaves the exit @@ -34,6 +42,7 @@ #include +#include #include #include #include @@ -139,6 +148,222 @@ std::string CloseRaceOnce(int pollers) { return {}; } +// The two timeouts `polltimeout` asks for. Two, and not one, because a single +// value cannot tell a bridge that honours the host's timeout from one that waits +// on that same number of its own: a constant has to satisfy both bands, and no +// constant is in both. +constexpr int32_t kShortPollMs = 200; +constexpr int32_t kLongPollMs = 900; + +// How much sooner than the timeout a poll may return. A wait may be late; it may +// not be early, because returning early is exactly what waiting on a shorter +// duration looks like. This is scheduler granularity, not slack. +constexpr int kEarlyToleranceMs = 20; + +// How much later than the timeout a poll may return. Wide enough for a loaded +// machine and a container, and narrower than the gap between the two timeouts, +// which is what closes the constant off: 200 admits [180, 500] and 900 admits +// [880, 1200], and nothing is in both. +constexpr int kLateToleranceMs = 300; + +struct TimedPoll { + int32_t result; + long long elapsed_ms; +}; + +TimedPoll PollFor(void* runtime, int32_t timeout_ms) { + std::vector payload(static_cast(kPayloadCapacity)); + cultmesh_quic_event event{}; + int32_t required = 0; + const auto started = std::chrono::steady_clock::now(); + const int32_t result = cultmesh_quic_next_event( + runtime, timeout_ms, &event, payload.data(), kPayloadCapacity, &required); + const auto elapsed = std::chrono::duration_cast( + std::chrono::steady_clock::now() - started).count(); + return {result, elapsed}; +} + +// The host's timeout, and the only thing it is: how long a poll with nothing to +// deliver stays inside the library. Nothing else here checks it — `closerace` +// and `holdclose` both end their waits with a close, so in both of them the +// bridge could wait on any duration at all and every assertion would still hold. +// A runtime with no listener and no connection has nothing to deliver, so the +// timeout is what ends this poll, and the elapsed time is what it waited on. +std::string PollTimeoutOnce() { + void* runtime = nullptr; + const int32_t opened = cultmesh_quic_runtime_open("cultmesh-quic-native-tests", &runtime); + if (opened != 0 || runtime == nullptr) + return "cultmesh_quic_runtime_open returned " + std::to_string(opened); + + std::string failure; + for (const int32_t timeout_ms : {kShortPollMs, kLongPollMs}) { + const TimedPoll poll = PollFor(runtime, timeout_ms); + const std::string asked = "a poll asking for " + std::to_string(timeout_ms) + " ms "; + if (poll.result != 0) { + failure = asked + "returned " + std::to_string(poll.result) + + ", not the 0 an idle runtime owes it"; + break; + } + if (poll.elapsed_ms < timeout_ms - kEarlyToleranceMs) { + failure = asked + "returned after " + std::to_string(poll.elapsed_ms) + + " ms: the wait ended on some shorter duration than the one it was given"; + break; + } + if (poll.elapsed_ms > timeout_ms + kLateToleranceMs) { + failure = asked + "returned after " + std::to_string(poll.elapsed_ms) + + " ms: the wait ended on some longer duration than the one it was given"; + break; + } + } + + cultmesh_quic_runtime_close(runtime); + return failure; +} + +int PollTimeout(int iterations) { + for (int iteration = 0; iteration < iterations; ++iteration) { + const std::string failure = PollTimeoutOnce(); + if (!failure.empty()) + return Fail("polltimeout iteration " + std::to_string(iteration) + ": " + failure); + } + std::printf("polltimeout %dx: ok\n", iterations); + return 0; +} + +// Nothing listens on the discard port, so a connection to it fails and the +// bridge says why. That reason is the payload this scenario needs, and reaching +// it takes no listener, no credential and no established connection. +constexpr uint16_t kClosedPort = 9; + +// How long the failure is given to arrive. The loopback refusal is immediate; +// if the refusal is swallowed instead, MsQuic's own handshake timeout ends the +// connection at 10 seconds and event 4 still arrives, so this only bounds a +// bridge that reports nothing at all. +constexpr int kEventDeadlineMs = 20000; + +// The bridge writes its own reason sentences and every one of them starts here. +// Checking the bytes, and not only the length, is what separates a payload +// copied out of the queued event from one copied out of an event that was popped +// first: the second reads freed memory, which does not spell this. +constexpr char kReasonPrefix[] = "CultMesh QUIC connection"; + +// The two-phase poll, which is the shape every host uses to size its buffer: +// ask with nothing, be told what it needs, ask again. What makes it work is that +// the refusal consumes nothing — the event is still queued, payload and all, +// after a return of 2 — and that the copy happens before the event is popped. +// Both are section 6 of the header, and nothing committed reached either. +std::string PayloadFitOnce() { + void* runtime = nullptr; + const int32_t opened = cultmesh_quic_runtime_open("cultmesh-quic-native-tests", &runtime); + if (opened != 0 || runtime == nullptr) + return "cultmesh_quic_runtime_open returned " + std::to_string(opened); + + std::string failure; + uint64_t connection_id = 0; + const int32_t connecting = + cultmesh_quic_connection_open(runtime, "127.0.0.1", kClosedPort, &connection_id); + if (connecting != 0) { + cultmesh_quic_runtime_close(runtime); + return "cultmesh_quic_connection_open returned " + std::to_string(connecting); + } + + // An out parameter the bridge must not write on a refusal, filled with + // something the bridge never writes so that a write is visible. + cultmesh_quic_event poisoned{}; + std::memset(&poisoned, 0xab, sizeof(poisoned)); + cultmesh_quic_event event = poisoned; + int32_t required = 0; + int32_t result = 0; + + // Ask with no room at all until the event carrying the failure reason + // arrives. An event with no payload fits in nothing, so it is delivered and + // polled past rather than mistaken for this one. + const auto deadline = std::chrono::steady_clock::now() + std::chrono::milliseconds(kEventDeadlineMs); + for (;;) { + event = poisoned; + required = 0; + result = cultmesh_quic_next_event(runtime, 250, &event, nullptr, 0, &required); + if (result == 2 && required > 0) break; + if (result < 0) { + failure = "cultmesh_quic_next_event returned " + std::to_string(result); + break; + } + if (std::chrono::steady_clock::now() >= deadline) { + failure = "no event carrying a payload arrived within " + + std::to_string(kEventDeadlineMs) + " ms of a connection to a closed port"; + break; + } + } + + if (failure.empty() && std::memcmp(&event, &poisoned, sizeof(event)) != 0) + failure = "the refusal wrote to *out_event, which the header says it leaves alone"; + + // Again, with the same empty buffer: a refusal that consumed the event + // leaves nothing to find the second time. + if (failure.empty()) { + cultmesh_quic_event again = poisoned; + int32_t required_again = 0; + const int32_t second = cultmesh_quic_next_event(runtime, 0, &again, nullptr, 0, &required_again); + if (second != 2 || required_again != required) + failure = "the second ask returned " + std::to_string(second) + " needing " + + std::to_string(required_again) + ", not the 2 needing " + std::to_string(required) + + " the first one did: the refusal consumed the event"; + } + + // And with room, which is where the copy happens. The tail beyond the + // payload is written too, so a copy that ran past what it was told to write + // is visible. + if (failure.empty()) { + constexpr uint8_t kTail = 0x5a; + std::vector payload(static_cast(required) + 16, kTail); + cultmesh_quic_event delivered = poisoned; + int32_t required_delivered = 0; + const int32_t third = cultmesh_quic_next_event( + runtime, 0, &delivered, payload.data(), static_cast(payload.size()), + &required_delivered); + const std::string reason(reinterpret_cast(payload.data()), + static_cast(required)); + if (third != 1 || required_delivered != required) + failure = "the ask with room returned " + std::to_string(third) + " needing " + + std::to_string(required_delivered) + ", not the 1 needing " + + std::to_string(required) + " the refusal promised"; + else if (delivered.type != CULTMESH_QUIC_EVENT_CONNECTION_SHUTDOWN || + delivered.connection_id != connection_id || + delivered.payload_length != required) + failure = "the delivered event was type " + std::to_string(delivered.type) + + " on connection " + std::to_string(delivered.connection_id) + " carrying " + + std::to_string(delivered.payload_length) + " byte(s), not the failed connection's own"; + else if (reason.rfind(kReasonPrefix, 0) != 0) + failure = "the payload delivered was '" + reason + "', not a reason this bridge writes"; + else if (payload[static_cast(required)] != kTail) + failure = "the copy wrote past the " + std::to_string(required) + " bytes it reported"; + } + + // Consumed now, and only now. + if (failure.empty()) { + cultmesh_quic_event emptied = poisoned; + int32_t required_emptied = 0; + const int32_t fourth = + cultmesh_quic_next_event(runtime, 0, &emptied, nullptr, 0, &required_emptied); + if (fourth != 0) + failure = "the event was still queued after being delivered: a further ask returned " + + std::to_string(fourth); + } + + cultmesh_quic_runtime_close(runtime); + return failure; +} + +int PayloadFit(int iterations) { + for (int iteration = 0; iteration < iterations; ++iteration) { + const std::string failure = PayloadFitOnce(); + if (!failure.empty()) + return Fail("payloadfit iteration " + std::to_string(iteration) + ": " + failure); + } + std::printf("payloadfit %dx: ok\n", iterations); + return 0; +} + #if defined(CULTMESH_QUIC_DEBUG_ASSERTS) // How long a poll that does not block is given to prove it by returning, after @@ -241,6 +466,98 @@ std::string HoldCloseOnce(int pollers) { return {}; } +// One iteration of the other half of section 4: a call made while a close is +// running is refused, and is not counted behind the close's wait. +// +// The prohibition is the host's — no call may begin after the close starts — and +// the bridge does not make it optional. What it does do is refuse the call that +// races the start, and that refusal is load-bearing rather than courteous: a +// call admitted after the closer has begun increments the in-flight count behind +// a wait that has already read it, and the wait can then be left waiting on a +// count that reaches zero only when the late caller happens to leave. +// +// The seam is what makes the window wide enough to aim at: a held poller keeps +// the close inside its wait for as long as this scenario wants it there. +std::string LateCallOnce() { + cultmesh_quic_debug_hold_calls(1); + void* runtime = nullptr; + const int32_t opened = cultmesh_quic_runtime_open("cultmesh-quic-native-tests", &runtime); + if (opened != 0 || runtime == nullptr) { + cultmesh_quic_debug_hold_calls(0); + return "cultmesh_quic_runtime_open returned " + std::to_string(opened); + } + + std::thread poller([runtime] { + std::vector payload(static_cast(kPayloadCapacity)); + cultmesh_quic_event event{}; + int32_t required = 0; + cultmesh_quic_next_event( + runtime, kPollTimeoutMs, &event, payload.data(), kPayloadCapacity, &required); + }); + + const auto counted_deadline = + std::chrono::steady_clock::now() + std::chrono::milliseconds(kCountedDeadlineMs); + while (cultmesh_quic_debug_peak_calls() < 1 && + std::chrono::steady_clock::now() < counted_deadline) + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + std::this_thread::sleep_for(std::chrono::milliseconds(kSettleMs)); + + std::thread closer([runtime] { cultmesh_quic_runtime_close(runtime); }); + // The close has begun its wait once it has read the count, and the held + // poller is what keeps it there. + const auto started_deadline = + std::chrono::steady_clock::now() + std::chrono::milliseconds(kCountedDeadlineMs); + while (cultmesh_quic_debug_calls_at_close() < 0 && + std::chrono::steady_clock::now() < started_deadline) + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + const int32_t at_close = cultmesh_quic_debug_calls_at_close(); + + // Two calls, from a thread of their own so that a bridge which admits them + // cannot park this one: one that does not block, and then the blocking + // crossing. That order, because a bridge that admits the blocking one parks + // it inside the library until the hold is released, and a call made after + // that would be racing the teardown rather than the wait. + std::atomic late_poll{0}; + std::atomic late_error{0}; + std::thread late([runtime, &late_poll, &late_error] { + std::array message{}; + late_error.store(cultmesh_quic_last_error(runtime, message.data(), + static_cast(message.size()))); + std::vector payload(static_cast(kPayloadCapacity)); + cultmesh_quic_event event{}; + int32_t required = 0; + late_poll.store(cultmesh_quic_next_event( + runtime, kPollTimeoutMs, &event, payload.data(), kPayloadCapacity, &required)); + }); + + std::this_thread::sleep_for(std::chrono::milliseconds(kSettleMs)); + cultmesh_quic_debug_hold_calls(0); + late.join(); + closer.join(); + poller.join(); + + if (at_close < 1) + return "the close did not begin its wait with the poller counted inside, so nothing held it " + "open for a call to race"; + if (late_poll.load() != -1) + return "cultmesh_quic_next_event returned " + std::to_string(late_poll.load()) + + " to a call made during the close, not the -1 that refuses it"; + if (late_error.load() != -1) + return "cultmesh_quic_last_error returned " + std::to_string(late_error.load()) + + " to a call made during the close, not the -1 that refuses it"; + return {}; +} + +int LateCall(int iterations) { + for (int iteration = 0; iteration < iterations; ++iteration) { + const std::string failure = LateCallOnce(); + if (!failure.empty()) + return Fail("latecall iteration " + std::to_string(iteration) + ": " + failure); + } + std::printf("latecall %dx: ok\n", iterations); + return 0; +} + int HoldClose(int iterations, int pollers) { for (int iteration = 0; iteration < iterations; ++iteration) { const std::string failure = HoldCloseOnce(pollers); @@ -267,7 +584,9 @@ int CloseRace(int iterations, int pollers) { int main(int argc, char** argv) { if (argc < 2) { - std::fprintf(stderr, "usage: %s closerace|holdclose [iterations] [pollers]\n", argv[0]); + std::fprintf(stderr, + "usage: %s closerace|holdclose|polltimeout|payloadfit|latecall [iterations] [pollers]\n", + argv[0]); return 2; } const std::string scenario = argv[1]; @@ -278,13 +597,16 @@ int main(int argc, char** argv) { return 2; } if (scenario == "closerace") return CloseRace(iterations, pollers); - if (scenario == "holdclose") { + if (scenario == "polltimeout") return PollTimeout(iterations); + if (scenario == "payloadfit") return PayloadFit(iterations); + if (scenario == "holdclose" || scenario == "latecall") { #if defined(CULTMESH_QUIC_DEBUG_ASSERTS) + if (scenario == "latecall") return LateCall(iterations); return HoldClose(iterations, pollers); #else std::fprintf(stderr, - "holdclose needs the development seam: configure with " - "-DCULTMESH_QUIC_DEBUG_ASSERTS=ON\n"); + "%s needs the development seam: configure with " + "-DCULTMESH_QUIC_DEBUG_ASSERTS=ON\n", scenario.c_str()); return 2; #endif } diff --git a/scripts/mutate-cultmesh.mjs b/scripts/mutate-cultmesh.mjs index c75a9041..ac0711b1 100644 --- a/scripts/mutate-cultmesh.mjs +++ b/scripts/mutate-cultmesh.mjs @@ -47,9 +47,12 @@ // dependencies: // // docker build -t cultlib-quic-native-dev -f scripts/quic-native-linux-dev.Dockerfile scripts -// docker run --rm --security-opt seccomp=unconfined -v F:\Projects\CultLib:/src -w /src \ +// docker run --rm --security-opt seccomp=unconfined -v "${PWD}:/src" -w /src ` // cultlib-quic-native-dev bash -lc "node scripts/mutate-cultmesh.mjs native" // +// Both from the repository root; the mount is that root wherever it is, as +// `${PWD}` in PowerShell or `$(pwd)` in a POSIX shell. +// // The seccomp flag is required, not cautious: the ThreadSanitizer configuration // is re-executed under `setarch -R`, and Docker's default profile denies the // personality call that needs. See `explainUnrunnable` below, and the bridge's @@ -455,11 +458,165 @@ const mutations = [ target: "native", honestOn: ["linux-x64", "win32-x64"], // Still a wait, still the host's timeout in the signature, and the poller is - // gone a millisecond later. A scenario that only sleeps cannot tell. + // gone a millisecond later. This used to die for the wrong reason — 1 ms is + // shorter than `closerace`'s 50 ms settle, so the poller left before the + // close began and the scenario complained about its own fixture. It dies on + // `polltimeout` now, which measures the wait against what was asked for. rule: "a positive timeout blocks until an event or the close (loosening: it waits a token 1 ms)", old: "std::chrono::milliseconds(timeout_ms),", new: "std::chrono::milliseconds(1),", }, + // And the rule underneath that one, which nothing reached until `polltimeout`: + // the duration waited on is the host's, not one of the bridge's own. Both + // scenarios that came before it end their waits with a close, so the timeout + // governed nothing either could see and any constant at all passed them. A + // 2000 ms constant survived the entire Linux matrix and Windows: a host asking + // for five seconds silently got two, and every consumer's poll loop spun at two + // and a half times the rate it asked for. + // + // `polltimeout` asks twice, 200 ms and 900 ms, and measures. That is what makes + // a constant unsurvivable rather than merely unlucky: no single value sits in + // both bands, so the entries below are two sides of one rule and not two + // numbers to be tuned against. + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + rule: "the wait is on the host's timeout (revert: a shorter constant of the bridge's own)", + old: "std::chrono::milliseconds(timeout_ms),", + new: "std::chrono::milliseconds(100),", + }, + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + // The lengthening, which is the half that looks harmless: every poll still + // blocks, every poll still returns, and nothing anywhere reports an error. + rule: "the wait is on the host's timeout (loosening: a longer constant of the bridge's own)", + old: "std::chrono::milliseconds(timeout_ms),", + new: "std::chrono::milliseconds(2000),", + }, + // The close's wake. It was defended by committed code and had no entry, so the + // table understated what `closerace` covers; these say it. + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + rule: "the close wakes every blocked poll (revert: the close marks and waits without waking)", + old: " runtime->signal.notify_all();\n" + + " CULTMESH_QUIC_DEBUG_AT_CLOSE(runtime->active_calls);\n", + new: " CULTMESH_QUIC_DEBUG_AT_CLOSE(runtime->active_calls);\n", + }, + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + // The plausible reading: the wait is for events, so wake it when there are + // events. The wake a close owes has nothing to do with the queue. + // + // Not listed beside it: narrowing `notify_all` to `notify_one`. It survived + // when tried, and it is equivalent rather than uncovered — the first poller + // out notifies all under the gate from its own CallScope destructor, so the + // wake propagates whatever the close asked for. + rule: "the close wakes every blocked poll (loosening: it wakes only when something is queued)", + old: " runtime->signal.notify_all();\n" + + " CULTMESH_QUIC_DEBUG_AT_CLOSE(runtime->active_calls);\n", + new: " if (!runtime->events.empty()) runtime->signal.notify_all();\n" + + " CULTMESH_QUIC_DEBUG_AT_CLOSE(runtime->active_calls);\n", + }, + // Section 4's other half: a call that races the start of a close is refused. + // The header has promised it since it was written and nothing checked it. A + // call admitted instead increments the in-flight count behind a wait that has + // already read it, and that wait can then be left on a count that only reaches + // zero if the late caller happens to leave. + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + rule: "a call racing the start of a close is refused (revert: the scope admits it)", + old: " if (runtime_->closing) return;\n", + new: "", + }, + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + // The reading that sounds conservative: if other calls are still inside, the + // close is waiting for them anyway, so one more can do no harm. It is the + // exact case the refusal exists for. + rule: "a call racing the start of a close is refused (loosening: only when nothing else is inside)", + old: " if (runtime_->closing) return;\n", + new: " if (runtime_->closing && runtime_->active_calls == 0) return;\n", + }, + // The two-phase poll, which is how every host sizes its buffer. Reaching it + // needs no listener, no credential and no established connection: a client + // opening to a closed loopback port is refused in about a millisecond and the + // refusal always carries a non-empty reason, which is an 87-byte payload. + // It was written off as unreachable and is neither unreachable nor safe — + // moving the pop above the copy crashes outright. + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + rule: "a payload that does not fit is refused without being consumed (revert: the refusal pops)", + old: " if (required > payload_capacity) {\n" + + " *out_required = required;\n" + + " return 2;\n" + + " }\n", + new: " if (required > payload_capacity) {\n" + + " *out_required = required;\n" + + " runtime->events.pop_front();\n" + + " return 2;\n" + + " }\n", + }, + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + // The helpful shape: give the caller what fits, tell it what it missed. It + // reports 2, so a host obeying the header asks again — for an event that is + // no longer there. + rule: "a payload that does not fit is refused without being consumed (loosening: it truncates)", + old: " if (required > payload_capacity) {\n" + + " *out_required = required;\n" + + " return 2;\n" + + " }\n", + new: " if (required > payload_capacity) {\n" + + " *out_required = required;\n" + + " *out_event = queued.header;\n" + + " if (payload_capacity > 0 && payload != nullptr)\n" + + " std::memcpy(payload, queued.payload.data(), static_cast(payload_capacity));\n" + + " runtime->events.pop_front();\n" + + " return 2;\n" + + " }\n", + }, + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + rule: "the event is copied before it is popped (revert: the pop moves above the copy)", + old: " *out_event = queued.header;\n" + + " if (required > 0 && payload != nullptr)\n" + + " std::memcpy(payload, queued.payload.data(), static_cast(required));\n" + + " *out_required = required;\n" + + " runtime->events.pop_front();\n", + new: " runtime->events.pop_front();\n" + + " *out_event = queued.header;\n" + + " if (required > 0 && payload != nullptr)\n" + + " std::memcpy(payload, queued.payload.data(), static_cast(required));\n" + + " *out_required = required;\n", + }, + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + // `queued` is a reference into the deque, and the pop destroys what it names. + // This is the spelling that hides that: the header is copied first, so only + // the payload — the part that is a pointer into a freed vector — is read + // afterwards. Both die; this one dies with the header already correct, which + // is why the payload bytes are checked and not only their length. + rule: "the event is copied before it is popped (loosening: only the payload copy moves after it)", + old: " *out_event = queued.header;\n" + + " if (required > 0 && payload != nullptr)\n" + + " std::memcpy(payload, queued.payload.data(), static_cast(required));\n" + + " *out_required = required;\n" + + " runtime->events.pop_front();\n", + new: " *out_event = queued.header;\n" + + " *out_required = required;\n" + + " runtime->events.pop_front();\n" + + " if (required > 0 && payload != nullptr)\n" + + " std::memcpy(payload, queued.payload.data(), static_cast(required));\n", + }, { target: "native", honestOn: ["linux-x64", "win32-x64"], @@ -516,30 +673,29 @@ function testsPass(workspace) { // ThreadSanitizer build is the only thing that sees a notify land on a destroyed // condition variable, and it exists on linux-x64 alone. // -// `holdclose` runs only where the development seam exists, which is the -// assertion build: it drives the quiesce through that seam rather than through a -// sleep, and it is what kills the rules about counting a host call at all. The -// ThreadSanitizer build deliberately keeps the shipped shape — no assertions, no -// seam — because what it is there for is the race in a library built like the -// one that ships. +// `holdclose` and `latecall` run only where the development seam exists, which +// is the assertion build: they drive the quiesce and the refusal through that +// seam rather than through a sleep, and they are what kill the rules about +// counting a host call at all. The ThreadSanitizer build deliberately keeps the +// shipped shape — no assertions, no seam — because what it is there for is the +// race in a library built like the one that ships. +// +// `polltimeout` measures a wait against the timeout it asked for, so it is run +// only where nothing distorts the clock: a sanitizer's slowdown would make its +// bands meaningless, which is the honest limit of that entry. +const assertScenarios = [ + ["holdclose", "3", "64"], + ["latecall", "5"], + ["polltimeout", "3"], + ["payloadfit", "3"], + ["closerace", "20", "256"], +]; const nativeConfigurations = platform === "linux-x64" ? [ - { - name: "asserts", - asserts: "ON", - sanitizer: null, - scenarios: [["holdclose", "3", "64"], ["closerace", "20", "256"]], - }, + { name: "asserts", asserts: "ON", sanitizer: null, scenarios: assertScenarios }, { name: "tsan", asserts: "OFF", sanitizer: "thread", scenarios: [["closerace", "20", "256"]] }, ] - : [ - { - name: "asserts", - asserts: "ON", - sanitizer: null, - scenarios: [["holdclose", "3", "64"], ["closerace", "20", "256"]], - }, - ]; + : [{ name: "asserts", asserts: "ON", sanitizer: null, scenarios: assertScenarios }]; function msquicArguments() { if (platform === "win32-x64") { From 1845301f91cb40197f817e160258fb903b11e12b Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 02:12:12 +0200 Subject: [PATCH 0089/1002] Record the batch that made the timeout observable The blind spot was not where the hold sat. No scenario ever let a timeout finish a poll, because both ended their waits with a close, so the duration governed nothing anyone could see. A scenario that polls an idle runtime and measures elapsed against what it asked kills all three constants, and it asks twice at values whose bands do not overlap, because one value cannot tell a bridge honouring the host from one waiting on that same number of its own. The probe that reached the two-phase poll through a closed port is committed, the wake finally has the entry the table had been claiming, and a surviving mutant is argued equivalent and handed to Soul rather than swapped for an easier one. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 52 ++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index f096ebc1..83c08ab6 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -390,8 +390,56 @@ elsewhere it differs by 69, so the figure is only meaningful at a shared path. **One undocumented step remains** in an otherwise clean path: the README hardcodes the container mount, so a newcomer on another checkout must edit the -line. **Fourth fix batch in Hands**, told to fix the structural cause once -rather than add another entry at another constant. +line. + +**The fourth fix batch landed** at `25d7de2` (the container mount taken from +the running checkout rather than one machine's path) and `a937a0b` (the +scenarios, the seam correction and the new entries). + +**Hands rejected Self's diagnosis and gave a better one.** Self had said the +blind spot was that the hold sat after the wait whose duration was the rule. +The real cause is that **no committed scenario ever let a timeout finish a +poll**: both ended their waits with a close, so the timeout governed nothing +either could observe. The fix is therefore a scenario rather than a seam +recording. `polltimeout` polls an idle runtime and measures elapsed against +what was asked, **at two values with non-overlapping bands** — 200 ms in +[180,500] and 900 ms in [880,1200] — because one value cannot tell a bridge +honouring the host's timeout from one waiting on a constant that happens to +equal it, and no constant lies in both bands. No new export, no header change, +and it works in the shipped shape. + +All three constants now die by that scenario: 100 ms, 600 ms and 2000 ms. The +600 ms case survives both older scenarios and dies to the new one, which is +the demonstration of what the old ones could not see; Hands kept it as a hand +check rather than carrying a third constant in the table. + +Also landed: Soul's closed-port probe committed as `payloadfit`, reaching the +two-phase poll in about a millisecond, where the pop-before-copy mutant +segfaults an optimised Windows build with no sanitizer, five runs of five; an +entry for the refusal of a call racing a close; an entry for the wake, which +the table had been silently failing to claim; and the seam's self-description +corrected, since a held call does leave its scope, which takes the gate, +decrements and notifies. Release shape unchanged on both targets, with no +debug exports and no assertion strings. + +**Tables now: Linux 18 killed, none surviving, none skipped, exit 0. Windows +16 killed, none surviving, two honestly skipped, exit 2.** Controls green on +both. + +**A declared equivalence, handed to Soul rather than substituted.** Changing +the close's wake-all to a wake-one survives, and Hands argues it is equivalent +rather than uncovered, because the first poller out calls wake-all under the +gate from its own scope destructor. It recorded the equivalence beside the +entry and shipped the queue-conditional wake as the loosening instead. This +campaign's fourth encounter with that defect shape, and the first where the +answer was an argued equivalence rather than a swap. + +Named limits: the 600 ms mutant lives only in the report; `payloadfit` and +`polltimeout` run only in the assertion configuration, so the pop-before-copy +kill rests on an unsanitized crash and an exit code rather than an +address-sanitizer configuration the harness still lacks. **Fifth Soul pass in +flight**, asked to settle the rules question and to test the two-band argument +against a mutant that scales or derives its wait rather than replacing it. **Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative greps, all twelve mutations rerun and killed, the control catching a From 367c9bc2b852504e55d4de8efe825ebdaf418c72 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 02:36:37 +0200 Subject: [PATCH 0090/1002] Record the pass that beat the bands with a clamp No constant sits in both bands, which is true and is not the rule. A wait that caps itself at a second passes every scenario, and capping a wait so shutdown gets noticed is the most ordinary way that line will ever be written. An offset and a scale survive beside it. A fresh Windows clone also cannot run the documented Linux path at all, because nothing tells git to leave shell scripts alone and the container dies on a carriage return in the interpreter line. The mount fix works; this sat behind it. The equivalence holds, but on two premises nobody had written down, and narrowing both wakes survives while being equivalent to nothing. Co-Authored-By: Claude Fable 5.1 --- docs/typescript-quic-realtime-cut.md | 60 ++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 3 deletions(-) diff --git a/docs/typescript-quic-realtime-cut.md b/docs/typescript-quic-realtime-cut.md index 83c08ab6..0e1c5fc8 100644 --- a/docs/typescript-quic-realtime-cut.md +++ b/docs/typescript-quic-realtime-cut.md @@ -437,9 +437,63 @@ answer was an argued equivalence rather than a swap. Named limits: the 600 ms mutant lives only in the report; `payloadfit` and `polltimeout` run only in the assertion configuration, so the pop-before-copy kill rests on an unsanitized crash and an exit code rather than an -address-sanitizer configuration the harness still lacks. **Fifth Soul pass in -flight**, asked to settle the rules question and to test the two-band argument -against a mutant that scales or derives its wait rather than replacing it. +address-sanitizer configuration the harness still lacks. **Soul's fifth pass, 2026-09-17** (Opus). Both targets reproduced end to end +from a fresh clone at a different path. **Cut 3 still does not close, and for +the same underlying reason in a third costume: the scenario proves the wait is +not a constant, not that it is the host's.** + +- **F1, confirmed, high: an expression defeats the two-band argument.** No + constant sits in both bands, which is true and is not the rule. Any mapping + that is identity at 200 and 900 passes for free, and the late tolerance is a + flat 300 ms. Three mutants, each run through all five Windows scenarios, all + **survived all five**: clamping the wait to at most a second, adding 150 ms, + and scaling by six fifths. **The clamp is the one that matters**, because its + failure is verbatim the bug this batch claims to fix — a host asking for five + seconds gets one, forever, with nothing reporting it — and "cap the wait so + shutdown gets noticed" is the most ordinary spelling that line will ever be + given. The close is cheap: raise the long probe above any plausible ceiling, + which kills the clamp and the scale, and make the tolerance proportional + rather than flat, which kills the offset. +- **F2, confirmed, medium: a Windows clone cannot run the documented Linux + path at all.** `.gitattributes:2` is `* text=auto` with no rule for shell + scripts, so a default Windows clone writes the build script with carriage + returns and the container dies in under a second complaining about the + interpreter line. Soul hit it from a clean clone before anything else ran. + The mount fix works; this is a second, independent blocker on the same + documented path, and it fires for the likeliest newcomer. One line repairs + it. +- **F3, confirmed, low: the only non-comment source change in the range is + pinned by nothing.** Reverting the hold's new guard survived all five + scenarios, because the timeout scenario never arms the hold and the other two + never let a timeout expire, so nothing is ever in both states at once. The + seam folds away in release, so nothing shipped is at risk; it is the + recurring shape again. + +**The declared equivalence holds, and its stated reason was the weaker half.** +Narrowing the close's wake to one waiter is genuinely equivalent, reproduced. +But the equivalence rests on two premises together: the closing flag is set +permanently under the gate before the notify and appears in every waiter's +predicate, so after a close begins no poller can block at all; and each exiting +call's own destructor takes the gate, decrements and wakes everyone, cascading. +Soul then narrowed **both** wakes, which also survived and **is not equivalent +by any argument**, since a notify consumed by the closer stalls the chain. It +passes on wait-queue ordering alone. The premises belong beside the entry so +the claim is checkable rather than assertable. + +**Held:** Linux 18 killed and Windows 16 with two honest skips, both +reproduced; 600 ms dying to the new scenario and surviving the older two; +the closed-port probe reaching the two-phase poll and both pop-before-copy +entries dying on both targets; the release shape clean on both, with the new +local folding away. **The red-control path proved itself unasked** — a run +from a deep temporary path failed MSBuild's file tracker, and the harness +reported a red control with the child's output rather than banking eighteen +kills it had not earned. + +**Two record corrections.** The source digest quoted in the previous report is +checkout-dependent, because line-ending conversion changes it; Soul's clone +restored to a different one. It is not a portable identity. And the Windows +harness needs a short checkout path or the control fails on the file tracker, +which belongs where a newcomer meets it. **Fifth fix batch in Hands.** **Cut 1 Soul findings, 2026-09-16.** Held: every test count, both negative greps, all twelve mutations rerun and killed, the control catching a From ca6c0f5852a7bbeee294cd44fe4d57d7cd10cf52 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 02:43:37 +0200 Subject: [PATCH 0091/1002] Keep shell scripts LF so a Windows clone can run the Linux path `* text=auto` and nothing else, so a Windows clone writes every shell script with carriage returns. The documented Linux path is a container that runs one of them, and it dies in under a second with a complaint about an interpreter named `bash\r`. Nothing in that failure names line endings, and the same clone builds and tests fine everywhere else, so it reads as a broken image. `scripts/build-quic-native.sh` is the only shell script in the repository and the only file on those paths that an interpreter reads by shebang; the mutation runner is Node and handles carriage returns itself, and the Dockerfile builds either way. Co-Authored-By: Claude Opus 5 --- .gitattributes | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitattributes b/.gitattributes index dfe07704..2b8f1fee 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,10 @@ # Auto detect text files and perform LF normalization * text=auto + +# Shell scripts keep LF in the working tree as well as in the index. Left to +# `text=auto`, a Windows clone writes them with carriage returns, and the +# documented Linux path then dies inside the container in under a second: the +# shebang reads as the interpreter `bash\r`, which does not exist. Nothing about +# that failure names line endings, and the same clone builds and tests fine +# everywhere else, so it reads as a broken image rather than a broken checkout. +*.sh text eol=lf From c177533b4f08e603a538df87c30835d93efeadef Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 02:44:47 +0200 Subject: [PATCH 0092/1002] Offer the container line to both shells, and name the short-path requirement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The container recipe carried a PowerShell backtick continuation in a snippet whose next paragraph invites a POSIX shell to run it, where a backtick is not a continuation. A continuation has to pick a shell, so the line does not have one. The Dockerfile's own copy of the recipe still mounted one machine's checkout by absolute path; it mounts whatever checkout is running it, like the other two. And the requirement a newcomer meets by tripping over it: on win32-x64 the harness needs the checkout somewhere short. MSBuild's file tracker gives out on long paths, so a run from a deep temporary directory fails the build for every mutant, the no-op control included. That is loud — the harness stops on a red control and prints what the child said — but what the child says is MSBuild, not the path. Co-Authored-By: Claude Opus 5 --- native/GameCult.Mesh.Quic.Native/README.md | 14 +++++++++++--- scripts/mutate-cultmesh.mjs | 10 +++++++--- scripts/quic-native-linux-dev.Dockerfile | 6 ++++-- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/README.md b/native/GameCult.Mesh.Quic.Native/README.md index 92041e8d..825595e5 100644 --- a/native/GameCult.Mesh.Quic.Native/README.md +++ b/native/GameCult.Mesh.Quic.Native/README.md @@ -110,11 +110,12 @@ mutation harness that drives the runtime-lifetime scenarios is a Node script and a container that cannot run it cannot check the bridge it just built: docker build -t cultlib-quic-native-dev -f scripts/quic-native-linux-dev.Dockerfile scripts - docker run --rm --security-opt seccomp=unconfined -v "${PWD}:/src" -w /src ` - cultlib-quic-native-dev bash -lc "scripts/build-quic-native.sh && node scripts/mutate-cultmesh.mjs native" + docker run --rm --security-opt seccomp=unconfined -v "${PWD}:/src" -w /src cultlib-quic-native-dev bash -lc "scripts/build-quic-native.sh && node scripts/mutate-cultmesh.mjs native" Both lines are run from the repository root, and the mount is that root wherever -it is: `${PWD}` in PowerShell, `$(pwd)` in a POSIX shell. +it is: `${PWD}` in PowerShell, `$(pwd)` in a POSIX shell. The second is one line +because the shell it is offered to is not decided here; a continuation would have +to pick one, and a backtick pasted into a POSIX shell is not a continuation. `--security-opt seccomp=unconfined` is load-bearing, not caution. The ThreadSanitizer configuration needs the process's address space where it expects @@ -125,6 +126,13 @@ with "unexpected memory mapping" — a configuration that never starts, which a mutation harness would otherwise read as every mutant being killed. The harness stops with that diagnosis rather than reporting kills it did not earn. +The win32-x64 half of the harness needs the checkout somewhere short — near a +drive root rather than under a deep temporary directory. MSVC builds the bridge +and its scenario runner through MSBuild, whose file tracker gives out on long +paths, and the build then fails for every mutant including the no-op control. +The harness stops on a red control rather than reporting a table of kills, so +the failure is loud, but it names MSBuild and not the path. + Where an artifact was built is part of what it is. The Linux binary is linked against Debian 13's glibc, so a build from anywhere else is a different artifact whatever the file name says. diff --git a/scripts/mutate-cultmesh.mjs b/scripts/mutate-cultmesh.mjs index ac0711b1..b3d12676 100644 --- a/scripts/mutate-cultmesh.mjs +++ b/scripts/mutate-cultmesh.mjs @@ -47,11 +47,15 @@ // dependencies: // // docker build -t cultlib-quic-native-dev -f scripts/quic-native-linux-dev.Dockerfile scripts -// docker run --rm --security-opt seccomp=unconfined -v "${PWD}:/src" -w /src ` -// cultlib-quic-native-dev bash -lc "node scripts/mutate-cultmesh.mjs native" +// docker run --rm --security-opt seccomp=unconfined -v "${PWD}:/src" -w /src cultlib-quic-native-dev bash -lc "node scripts/mutate-cultmesh.mjs native" // // Both from the repository root; the mount is that root wherever it is, as -// `${PWD}` in PowerShell or `$(pwd)` in a POSIX shell. +// `${PWD}` in PowerShell or `$(pwd)` in a POSIX shell. The second is one line +// because a continuation would have to pick one of those shells. +// +// The win32-x64 half wants the checkout somewhere short, near a drive root. MSVC +// builds the bridge through MSBuild, whose file tracker gives out on long paths, +// and a run from a deep temporary directory fails its own no-op control. // // The seccomp flag is required, not cautious: the ThreadSanitizer configuration // is re-executed under `setarch -R`, and Docker's default profile denies the diff --git a/scripts/quic-native-linux-dev.Dockerfile b/scripts/quic-native-linux-dev.Dockerfile index 7c796749..f4b11684 100644 --- a/scripts/quic-native-linux-dev.Dockerfile +++ b/scripts/quic-native-linux-dev.Dockerfile @@ -9,8 +9,10 @@ # runner that mutates it at all. # # docker build -t cultlib-quic-native-dev -f scripts/quic-native-linux-dev.Dockerfile scripts -# docker run --rm --security-opt seccomp=unconfined -v F:\Projects\CultLib:/src -w /src \ -# cultlib-quic-native-dev bash -lc "scripts/build-quic-native.sh && node scripts/mutate-cultmesh.mjs native" +# docker run --rm --security-opt seccomp=unconfined -v "${PWD}:/src" -w /src cultlib-quic-native-dev bash -lc "scripts/build-quic-native.sh && node scripts/mutate-cultmesh.mjs native" +# +# Both from the repository root, and the mount is that root wherever it is: +# `${PWD}` in PowerShell, `$(pwd)` in a POSIX shell. # # `--security-opt seccomp=unconfined` is not optional and not caution. The # ThreadSanitizer configuration needs the process's address space where it From c682619fbd8586e479ea1ab022e5e3d146b4e261 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 02:45:57 +0200 Subject: [PATCH 0093/1002] Close the timeout against waits derived from the argument, not only constants MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The two bands ruled out a constant and ruled out nothing else. Any mapping that is the identity at 200 and 900 passed for free, and the late tolerance was a flat 300 ms, so anything within that of the truth passed at every value forever. Three ordinary ones survived all five scenarios on both targets: clamping the wait to at most a second, adding 150 ms to it, and scaling it by six fifths. The clamp is the one that matters. Its failure is verbatim the bug the last pass claimed to fix — a host asking for five seconds gets one, forever, with nothing reporting it — and "cap the wait so a shutdown gets noticed" is the most ordinary spelling that line will ever be given. So the long probe goes to 5000, above any ceiling a bridge would plausibly clamp to, which kills the clamp and the scale on the early check and the late one. And the late tolerance becomes a fraction of what was asked for — 60 ms plus an eighth — which is what kills the offset: 150 ms is 75% late at the 200 ms probe and there is no flat gap left to hide in. Measured overshoot on either target is about 10 ms, against 85 ms allowed at the short probe and 685 at the long. The table gets the clamp as an entry of its own, because the whole lesson here is that a table of constants says nothing about a wait computed from the argument, and a table of constants would go green again the moment these numbers drifted back. Its honest limit is stated where the tolerance is defined: a scaling smaller than an eighth survives, and nothing here claims otherwise. Co-Authored-By: Claude Opus 5 --- .../tests/cultmesh_quic_native_tests.cpp | 35 +++++++++++++++---- scripts/mutate-cultmesh.mjs | 29 ++++++++++++--- 2 files changed, 53 insertions(+), 11 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp b/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp index afb529f7..08ffa2ed 100644 --- a/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp +++ b/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp @@ -152,19 +152,40 @@ std::string CloseRaceOnce(int pollers) { // value cannot tell a bridge that honours the host's timeout from one that waits // on that same number of its own: a constant has to satisfy both bands, and no // constant is in both. +// +// A constant was never the hard case, though, and the numbers are chosen for the +// waits that are computed from the argument instead. Any mapping that is the +// identity at both of these passes for free, so the two are picked to leave the +// ordinary ones nowhere to be identity: +// +// - 5000 is above any ceiling a bridge would plausibly clamp a host's timeout +// to. A wait of `min(timeout, 1000)` — cap it so a shutdown gets noticed — is +// the most ordinary spelling this line will ever be given, and it returns +// from this probe four seconds early. +// - 200 is low enough that an added constant shows as a proportion. A wait of +// `timeout + 150` is 75% late here, and the late tolerance below is a +// fraction of what was asked for rather than a flat number it could hide in. constexpr int32_t kShortPollMs = 200; -constexpr int32_t kLongPollMs = 900; +constexpr int32_t kLongPollMs = 5000; // How much sooner than the timeout a poll may return. A wait may be late; it may // not be early, because returning early is exactly what waiting on a shorter // duration looks like. This is scheduler granularity, not slack. constexpr int kEarlyToleranceMs = 20; -// How much later than the timeout a poll may return. Wide enough for a loaded -// machine and a container, and narrower than the gap between the two timeouts, -// which is what closes the constant off: 200 admits [180, 500] and 900 admits -// [880, 1200], and nothing is in both. -constexpr int kLateToleranceMs = 300; +// How much later than the timeout a poll may return: an allowance for scheduler +// granularity plus an eighth of what was asked for. +// +// Proportional, and not the flat 300 ms this used to be, because a flat +// tolerance is a gap a mapping hides in. `timeout + k` for any k under the flat +// value passes at every probe, at every value, forever — and the measured +// overshoot on both targets is about 10 ms, so a flat 300 was 290 ms of room +// for a bridge to add a little of its own and be believed. +// +// The honest limit: a scaling smaller than an eighth survives this, and this +// does not claim otherwise. An eighth is under the smallest scaling anyone +// writes on purpose, and 60 ms is six times the overshoot either target shows. +constexpr int LateToleranceMs(int32_t timeout_ms) { return 60 + timeout_ms / 8; } struct TimedPoll { int32_t result; @@ -209,7 +230,7 @@ std::string PollTimeoutOnce() { " ms: the wait ended on some shorter duration than the one it was given"; break; } - if (poll.elapsed_ms > timeout_ms + kLateToleranceMs) { + if (poll.elapsed_ms > timeout_ms + LateToleranceMs(timeout_ms)) { failure = asked + "returned after " + std::to_string(poll.elapsed_ms) + " ms: the wait ended on some longer duration than the one it was given"; break; diff --git a/scripts/mutate-cultmesh.mjs b/scripts/mutate-cultmesh.mjs index b3d12676..87437f9e 100644 --- a/scripts/mutate-cultmesh.mjs +++ b/scripts/mutate-cultmesh.mjs @@ -478,10 +478,18 @@ const mutations = [ // for five seconds silently got two, and every consumer's poll loop spun at two // and a half times the rate it asked for. // - // `polltimeout` asks twice, 200 ms and 900 ms, and measures. That is what makes - // a constant unsurvivable rather than merely unlucky: no single value sits in - // both bands, so the entries below are two sides of one rule and not two - // numbers to be tuned against. + // `polltimeout` asks twice and measures. That is what makes a constant + // unsurvivable rather than merely unlucky: no single value sits in both bands, + // so the first two entries below are two sides of one rule and not two numbers + // to be tuned against. + // + // A constant was never the hard case, though. A wait computed from the + // argument is identity wherever the probes are, and passes for free: the two + // bands rule out a constant and rule out nothing else. Clamping, adding and + // scaling all survived the whole matrix once, on bands of 200 and 900 with a + // flat late tolerance of 300 ms. The scenario's numbers are what closed that, + // and the third entry is here so nothing reopens it quietly — a table of + // constants would go green again the moment those numbers drifted back. { target: "native", honestOn: ["linux-x64", "win32-x64"], @@ -498,6 +506,19 @@ const mutations = [ old: "std::chrono::milliseconds(timeout_ms),", new: "std::chrono::milliseconds(2000),", }, + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + // The derived wait, which is the shape the two constants above do not cover + // and the most ordinary spelling this line will ever be given: cap the wait + // so a shutdown gets noticed. Its failure is verbatim the one the scenario + // exists for — a host asking for five seconds gets one, forever, with + // nothing reporting it — and it is identity at any probe below the cap, so + // it is the long probe's height that kills it rather than the two bands. + rule: "the wait is on the host's timeout (loosening: the bridge caps it at a second)", + old: "std::chrono::milliseconds(timeout_ms),", + new: "std::chrono::milliseconds((std::min)(timeout_ms, 1000)),", + }, // The close's wake. It was defended by committed code and had no entry, so the // table understated what `closerace` covers; these say it. { From 5ab4c627d7fc533f5fc96a838c772fd05b47e19a Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 02:46:49 +0200 Subject: [PATCH 0094/1002] Put a call in both states so the seam's own guard is pinned MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The last pass's only non-comment source change was held by nothing. Reverting the hold's guard so it fires unconditionally survived all five scenarios, because no scenario ever had a call in both states at once: the timeout scenario never arms the hold, and the hold scenarios never let a timeout expire. `holdtimeout` is the missing state. The hold is armed, the runtime is idle, and one poll asks for 150 ms while the hold stays armed for 800. A call the wait woke is the seam's to park; a call whose own timeout expired is on its way out, and parking it would let `holdclose` report the bridge keeping a host call inside the library when what kept it was the fixture. The measurement is which of those two numbers the poll comes back at. Two entries, and the loosening is the one worth reading: the same two conditions in the other order. The hold blocks, so the order is the rule — asked first, it parks the call and then decides whether it should have. Both die on `holdtimeout` at about 800 ms and on nothing else; `holdclose` and `latecall` stay green under both, which is the point. Co-Authored-By: Claude Opus 5 --- .../tests/cultmesh_quic_native_tests.cpp | 74 ++++++++++++++++++- scripts/mutate-cultmesh.mjs | 44 ++++++++--- 2 files changed, 107 insertions(+), 11 deletions(-) diff --git a/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp b/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp index 08ffa2ed..ad4e0be3 100644 --- a/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp +++ b/native/GameCult.Mesh.Quic.Native/tests/cultmesh_quic_native_tests.cpp @@ -21,6 +21,7 @@ // cultmesh_quic_native_tests holdclose [iterations] [pollers] // cultmesh_quic_native_tests polltimeout [iterations] // cultmesh_quic_native_tests latecall [iterations] +// cultmesh_quic_native_tests holdtimeout [iterations] // // `closerace` hunts the race: many pollers, many iterations, and whatever the // schedule gives. `holdclose` takes the guessing out of it — the bridge's @@ -34,6 +35,10 @@ // passes both. `polltimeout` is the one that lets the timeout govern the return // and measures it. `latecall` covers the other half of section 4: a call that // races the start of a close is refused rather than counted behind its wait. +// `holdtimeout` covers the seam's own rule, which nothing else is in a position +// to see: the hold parks a call the wait woke and not one whose own timeout +// expired, so the quiesce the hold scenarios assert is the bridge's doing and +// not the fixture's. // // Exit code 0 means every assertion held. Anything else, including a sanitizer // abort or the bridge's own assertion, is a failure. Under ThreadSanitizer run @@ -569,6 +574,69 @@ std::string LateCallOnce() { return {}; } +// How long `holdtimeout`'s poll asks for, and how long the hold stays armed +// under it. The gap between them is the whole measurement: a poll the hold +// parks leaves when the hold is released, so its elapsed time lands at the +// second number instead of the first. +constexpr int32_t kHeldTimeoutPollMs = 150; +constexpr int kHoldArmedMs = 800; + +// The seam's own rule, and the only scenario that can see it: the hold parks a +// call the wait woke, and not one whose own timeout expired. +// +// Everything else that arms the hold parks a woken call, so the guard governs +// nothing either of them observes — the timeout scenario never arms the hold, +// and the hold scenarios never let a timeout expire, so nothing was ever in +// both states at once and the guard could be deleted with every scenario still +// green. This puts one call in both states: the hold is armed, and the runtime +// is idle, so the wait ends on the timeout and the call is on its way out. +// +// It matters because a scenario that parked such a call would then report the +// bridge keeping a host call inside the library when what kept it was the +// fixture — the quiesce numbers `holdclose` asserts would be the seam's, not +// the bridge's. +std::string HoldTimeoutOnce() { + cultmesh_quic_debug_hold_calls(1); + void* runtime = nullptr; + const int32_t opened = cultmesh_quic_runtime_open("cultmesh-quic-native-tests", &runtime); + if (opened != 0 || runtime == nullptr) { + cultmesh_quic_debug_hold_calls(0); + return "cultmesh_quic_runtime_open returned " + std::to_string(opened); + } + + // On a thread of its own, because a parked call does not come back until the + // release below and this thread is what releases it. + TimedPoll poll{}; + std::thread poller([runtime, &poll] { poll = PollFor(runtime, kHeldTimeoutPollMs); }); + + std::this_thread::sleep_for(std::chrono::milliseconds(kHoldArmedMs)); + cultmesh_quic_debug_hold_calls(0); + poller.join(); + cultmesh_quic_runtime_close(runtime); + + if (poll.result != 0) + return "a poll ended by its own timeout returned " + std::to_string(poll.result) + + ", not the 0 an idle runtime owes it"; + if (poll.elapsed_ms < kHeldTimeoutPollMs - kEarlyToleranceMs) + return "a poll asking for " + std::to_string(kHeldTimeoutPollMs) + " ms returned after " + + std::to_string(poll.elapsed_ms) + " ms, so the fixture never let its timeout run out"; + if (poll.elapsed_ms > kHeldTimeoutPollMs + LateToleranceMs(kHeldTimeoutPollMs)) + return "a poll asking for " + std::to_string(kHeldTimeoutPollMs) + " ms returned after " + + std::to_string(poll.elapsed_ms) + " ms: the hold parked a call its own timeout had " + "already ended, and it left when the hold did"; + return {}; +} + +int HoldTimeout(int iterations) { + for (int iteration = 0; iteration < iterations; ++iteration) { + const std::string failure = HoldTimeoutOnce(); + if (!failure.empty()) + return Fail("holdtimeout iteration " + std::to_string(iteration) + ": " + failure); + } + std::printf("holdtimeout %dx: ok\n", iterations); + return 0; +} + int LateCall(int iterations) { for (int iteration = 0; iteration < iterations; ++iteration) { const std::string failure = LateCallOnce(); @@ -606,7 +674,8 @@ int CloseRace(int iterations, int pollers) { int main(int argc, char** argv) { if (argc < 2) { std::fprintf(stderr, - "usage: %s closerace|holdclose|polltimeout|payloadfit|latecall [iterations] [pollers]\n", + "usage: %s closerace|holdclose|holdtimeout|polltimeout|payloadfit|latecall " + "[iterations] [pollers]\n", argv[0]); return 2; } @@ -620,9 +689,10 @@ int main(int argc, char** argv) { if (scenario == "closerace") return CloseRace(iterations, pollers); if (scenario == "polltimeout") return PollTimeout(iterations); if (scenario == "payloadfit") return PayloadFit(iterations); - if (scenario == "holdclose" || scenario == "latecall") { + if (scenario == "holdclose" || scenario == "latecall" || scenario == "holdtimeout") { #if defined(CULTMESH_QUIC_DEBUG_ASSERTS) if (scenario == "latecall") return LateCall(iterations); + if (scenario == "holdtimeout") return HoldTimeout(iterations); return HoldClose(iterations, pollers); #else std::fprintf(stderr, diff --git a/scripts/mutate-cultmesh.mjs b/scripts/mutate-cultmesh.mjs index 87437f9e..75a1a8d0 100644 --- a/scripts/mutate-cultmesh.mjs +++ b/scripts/mutate-cultmesh.mjs @@ -519,6 +519,30 @@ const mutations = [ old: "std::chrono::milliseconds(timeout_ms),", new: "std::chrono::milliseconds((std::min)(timeout_ms, 1000)),", }, + // The seam's own rule, and the only non-comment source change of the last pass + // that nothing pinned. It is development-only and folds away in release, so + // nothing shipped was at risk; it is still the shape this campaign keeps + // finding, a change justified by a scenario that cannot observe it. The + // timeout scenario never armed the hold and the hold scenarios never let a + // timeout expire, so no call was ever in both states and the guard could be + // deleted with everything green. `holdtimeout` puts one call in both. + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + rule: "the hold parks only a call the wait woke (revert: it parks whatever reaches it)", + old: " if (woken && CULTMESH_QUIC_DEBUG_HELD(lock)) return 0;\n", + new: " if (CULTMESH_QUIC_DEBUG_HELD(lock)) return 0;\n", + }, + { + target: "native", + honestOn: ["linux-x64", "win32-x64"], + // The spelling nobody would look twice at: the same two conditions, the + // other way round. The hold blocks, so the order is the rule — asked first, + // it parks the call and then decides whether it should have. + rule: "the hold parks only a call the wait woke (loosening: it decides after parking)", + old: " if (woken && CULTMESH_QUIC_DEBUG_HELD(lock)) return 0;\n", + new: " if (CULTMESH_QUIC_DEBUG_HELD(lock) && woken) return 0;\n", + }, // The close's wake. It was defended by committed code and had no entry, so the // table understated what `closerace` covers; these say it. { @@ -698,19 +722,21 @@ function testsPass(workspace) { // ThreadSanitizer build is the only thing that sees a notify land on a destroyed // condition variable, and it exists on linux-x64 alone. // -// `holdclose` and `latecall` run only where the development seam exists, which -// is the assertion build: they drive the quiesce and the refusal through that -// seam rather than through a sleep, and they are what kill the rules about -// counting a host call at all. The ThreadSanitizer build deliberately keeps the -// shipped shape — no assertions, no seam — because what it is there for is the -// race in a library built like the one that ships. +// `holdclose`, `latecall` and `holdtimeout` run only where the development seam +// exists, which is the assertion build: they drive the quiesce and the refusal +// through that seam rather than through a sleep, and they are what kill the +// rules about counting a host call at all. The ThreadSanitizer build +// deliberately keeps the shipped shape — no assertions, no seam — because what +// it is there for is the race in a library built like the one that ships. // -// `polltimeout` measures a wait against the timeout it asked for, so it is run -// only where nothing distorts the clock: a sanitizer's slowdown would make its -// bands meaningless, which is the honest limit of that entry. +// `polltimeout` and `holdtimeout` both measure a wait against the timeout it +// asked for, so they are run only where nothing distorts the clock: a +// sanitizer's slowdown would make their bands meaningless, which is the honest +// limit of those entries. const assertScenarios = [ ["holdclose", "3", "64"], ["latecall", "5"], + ["holdtimeout", "3"], ["polltimeout", "3"], ["payloadfit", "3"], ["closerace", "20", "256"], From b985f07887a0da727becc03cf9595e5efd6ba52a Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 02:47:34 +0200 Subject: [PATCH 0095/1002] Say what the single-waiter wake actually rests on, and what is still unreached MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The note beside the close's wake claimed the narrowing to `notify_one` was equivalent, and gave the weaker half of the reason. The equivalence needs two premises together: `closing` is set permanently under the gate before the notify and appears in every waiter's predicate, so after a close begins no poller can block at all and the set of waiters is fixed; and each exiting call's own scope destructor takes the gate, decrements and wakes everyone, so one wake starts a chain that reaches all of them. Neither carries it alone. Both are now written where the claim is made, so it can be checked rather than believed. Narrowing both wakes also survives, and that is not equivalent by any argument: a wake consumed by the closer, waiting on the same variable for the count to reach zero, leaves the chain stopped and the rest of the pollers sitting out their timeouts. It passes on wait-queue ordering — the pollers are queued before the closer, so a FIFO head is never the closer until it is the only waiter left. Recorded as unreached, with the reason, and deliberately not as unreachable: that claim has been wrong twice in this campaign. A scenario cannot force it while the first premise holds, since the only way to put the closer ahead of a poller in that queue is a poller that blocks after the close began. Reaching it would need a seam that chooses which waiter a notify goes to. The standard does not promise FIFO, so what survives here is the implementation's doing. Co-Authored-By: Claude Opus 5 --- scripts/mutate-cultmesh.mjs | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/scripts/mutate-cultmesh.mjs b/scripts/mutate-cultmesh.mjs index 75a1a8d0..720444c7 100644 --- a/scripts/mutate-cultmesh.mjs +++ b/scripts/mutate-cultmesh.mjs @@ -559,10 +559,34 @@ const mutations = [ // The plausible reading: the wait is for events, so wake it when there are // events. The wake a close owes has nothing to do with the queue. // - // Not listed beside it: narrowing `notify_all` to `notify_one`. It survived - // when tried, and it is equivalent rather than uncovered — the first poller - // out notifies all under the gate from its own CallScope destructor, so the - // wake propagates whatever the close asked for. + // Not listed beside it: narrowing the close's `notify_all` to `notify_one`. + // It survived when tried, and it is equivalent rather than uncovered — but + // the equivalence rests on two premises together, and neither alone carries + // it, so they are written here where the claim can be checked instead of + // taken: + // + // - `closing` is set permanently under the gate before the notify and is in + // every waiter's predicate, so once a close has begun no poller can block + // at all. The set of waiters is therefore fixed when the close wakes one. + // - each exiting call's own CallScope destructor takes the gate, decrements + // and wakes everyone. So one wake is enough to start a chain that reaches + // all of them. + // + // Narrowing *both* of those to `notify_one` also survived, and that one is + // not equivalent by any argument: a wake consumed by the closer, which waits + // on the same variable for the count to reach zero, re-checks a count that + // is still non-zero and goes back to waiting, and the chain stops with the + // remaining pollers sitting out their timeouts. It passes on wait-queue + // ordering alone — the pollers are all queued before the closer, so the head + // of a FIFO queue is never the closer until it is the only waiter left. + // + // That is recorded as unreached, not unreachable. A scenario cannot force it + // while the first premise holds, because the only way to put the closer + // ahead of a poller in that queue is a poller that blocks after the close + // has begun, which is the thing premise one rules out. Reaching it would + // take a seam that controls which waiter a notify goes to, which does not + // exist and is not obviously worth building. The standard does not promise + // FIFO, so the survival is the implementation's, not the code's. rule: "the close wakes every blocked poll (loosening: it wakes only when something is queued)", old: " runtime->signal.notify_all();\n" + " CULTMESH_QUIC_DEBUG_AT_CLOSE(runtime->active_calls);\n", From 244154e2f57b7429303896c152a58557957277af Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 03:11:05 +0200 Subject: [PATCH 0096/1002] Say what the restore digest is, since it is not an identity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The last report quoted the restored sha256 as though two runs agreeing on it meant they had run the same source. They had not: `text=auto` gives a Windows checkout carriage returns, so the win32-x64 run restored to b163cab7 and the linux-x64 run to e3c6528a from the same commit. The digest is a restore check — the file this run started with is the file it ended with — and it is said where it is printed, so the next report does not borrow it for something it cannot do. Co-Authored-By: Claude Opus 5 --- scripts/mutate-cultmesh.mjs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/mutate-cultmesh.mjs b/scripts/mutate-cultmesh.mjs index 720444c7..08a3f1af 100644 --- a/scripts/mutate-cultmesh.mjs +++ b/scripts/mutate-cultmesh.mjs @@ -1070,6 +1070,11 @@ for (const [name, target] of Object.entries(targets)) { } if (!target.dist) { + // This digest says the file this run started with is the file it ended with. + // It is not an identity for the source: `text=auto` gives a Windows checkout + // carriage returns, so two clones of the same commit restore to two + // different digests. The identity that survives a clone is the commit, or + // `git rev-parse HEAD:` for one file. results.push({ target: name, outcome: "restored", rule: `${target.file} sha256=${originalDigest}` }); continue; } From 95a3c32250b37e93c443c24faab237d4e576aff7 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 18:43:03 +0200 Subject: [PATCH 0097/1002] Replace the asset path attribute with a stable GUID identity CultInspectorAssetPathAttribute stored an engine asset path, which breaks when the asset moves. CultInspectorAssetGuidAttribute stores the asset's stable identity (in Unity, the .meta GUID) instead. The Studio drawer now resolves the stored GUID to a path only to load the preview object, and writes back AssetPathToGUID on a change. No path form survives for the next field to pick up. Co-Authored-By: Claude Opus 5 --- src/GameCult.Caching/CultInspectorAttributes.cs | 9 +++++---- src/GameCult.Caching/CultInspectorModel.cs | 4 ++-- .../Caching/Editor/CultCacheStudioDrawers.cs | 9 +++++---- src/GameCult.Unity/Assets/Caching/README.md | 9 +++++---- .../CultInspectorModelTests.cs | 17 +++++++++++++++++ 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/GameCult.Caching/CultInspectorAttributes.cs b/src/GameCult.Caching/CultInspectorAttributes.cs index 881208ea..2ae523e0 100644 --- a/src/GameCult.Caching/CultInspectorAttributes.cs +++ b/src/GameCult.Caching/CultInspectorAttributes.cs @@ -64,12 +64,13 @@ namespace GameCult.Caching public float Max { get; } } - // A string member holding an engine asset path. AssetType is the engine's asset type, named by the consumer - // (typeof(UnityEngine.Texture2D) in a Unity assembly); a lowering that does not know the type ignores it. + // A string member holding an engine asset's stable identity; in Unity, the `.meta` GUID. AssetType is the + // engine's asset type, named by the consumer (typeof(UnityEngine.Texture2D) in a Unity assembly); a lowering + // that does not know the type ignores it. [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, Inherited = true)] - public sealed class CultInspectorAssetPathAttribute : Attribute + public sealed class CultInspectorAssetGuidAttribute : Attribute { - public CultInspectorAssetPathAttribute(Type? assetType = null) + public CultInspectorAssetGuidAttribute(Type? assetType = null) { AssetType = assetType; } diff --git a/src/GameCult.Caching/CultInspectorModel.cs b/src/GameCult.Caching/CultInspectorModel.cs index 6a86f5ee..e5b5581f 100644 --- a/src/GameCult.Caching/CultInspectorModel.cs +++ b/src/GameCult.Caching/CultInspectorModel.cs @@ -41,7 +41,7 @@ namespace GameCult.Caching Order = Find()?.Order; Range = Find(); TextArea = Find(); - AssetPath = Find(); + AssetGuid = Find(); } public IReadOnlyList Attributes { get; } @@ -53,7 +53,7 @@ namespace GameCult.Caching public int? Order { get; } public CultInspectorRangeAttribute? Range { get; } public CultInspectorTextAreaAttribute? TextArea { get; } - public CultInspectorAssetPathAttribute? AssetPath { get; } + public CultInspectorAssetGuidAttribute? AssetGuid { get; } public T? Find() where T : Attribute => Attributes.OfType().FirstOrDefault(); } diff --git a/src/GameCult.Unity/Assets/Caching/Editor/CultCacheStudioDrawers.cs b/src/GameCult.Unity/Assets/Caching/Editor/CultCacheStudioDrawers.cs index 2b4a87cb..ab1b1e84 100644 --- a/src/GameCult.Unity/Assets/Caching/Editor/CultCacheStudioDrawers.cs +++ b/src/GameCult.Unity/Assets/Caching/Editor/CultCacheStudioDrawers.cs @@ -167,12 +167,13 @@ namespace GameCult.Unity.Caching.Editor private static string DrawString(string label, string value, CultInspectorMetadata metadata) { - if (metadata.AssetPath != null) + if (metadata.AssetGuid != null) { - var assetType = metadata.AssetPath.AssetType != null && typeof(Object).IsAssignableFrom(metadata.AssetPath.AssetType) ? metadata.AssetPath.AssetType : typeof(Object); - var asset = string.IsNullOrEmpty(value) ? null : AssetDatabase.LoadAssetAtPath(value, assetType); + var assetType = metadata.AssetGuid.AssetType != null && typeof(Object).IsAssignableFrom(metadata.AssetGuid.AssetType) ? metadata.AssetGuid.AssetType : typeof(Object); + var path = string.IsNullOrEmpty(value) ? string.Empty : AssetDatabase.GUIDToAssetPath(value); + var asset = string.IsNullOrEmpty(path) ? null : AssetDatabase.LoadAssetAtPath(path, assetType); var next = EditorGUILayout.ObjectField(label, asset, assetType, false); - return next == asset ? value : next == null ? string.Empty : AssetDatabase.GetAssetPath(next); + return next == asset ? value : next == null ? string.Empty : AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(next)); } var textArea = metadata.TextArea; diff --git a/src/GameCult.Unity/Assets/Caching/README.md b/src/GameCult.Unity/Assets/Caching/README.md index d96f674f..49348452 100644 --- a/src/GameCult.Unity/Assets/Caching/README.md +++ b/src/GameCult.Unity/Assets/Caching/README.md @@ -150,8 +150,8 @@ public sealed class ItemData public string Notes = string.Empty; [Key(3)] - [CultInspectorAssetPath] - public string IconPath = string.Empty; + [CultInspectorAssetGuid] + public string IconGuid = string.Empty; } ``` @@ -161,8 +161,9 @@ public sealed class ItemData - `CultInspectorOrder` - `CultInspectorTextArea` - `CultInspectorRange` -- `CultInspectorAssetPath` (optional engine asset `Type`, named by the - consumer; the Studio uses it when it is a `UnityEngine.Object` type) +- `CultInspectorAssetGuid` (a string member holding an engine asset's stable + identity, in Unity the `.meta` GUID; optional engine asset `Type`, named by + the consumer; the Studio uses it when it is a `UnityEngine.Object` type) - `CultInspectorDrawer` (on drawer classes) CultMesh collaboration should feed the same CultCache mutation surface rather diff --git a/tests/GameCult.Caching.Tests/CultInspectorModelTests.cs b/tests/GameCult.Caching.Tests/CultInspectorModelTests.cs index 7ce19824..5c2c171b 100644 --- a/tests/GameCult.Caching.Tests/CultInspectorModelTests.cs +++ b/tests/GameCult.Caching.Tests/CultInspectorModelTests.cs @@ -42,6 +42,15 @@ namespace GameCult.Caching.Tests Assert.That(hidden.ValueType, Is.EqualTo(typeof(string))); } + [Test] + public void AssetGuidMemberExposesItsAttributeAndDeclaredType() + { + var member = Model().MembersOf(typeof(InspectAsset)).Single(); + + Assert.That(member.Metadata.AssetGuid, Is.Not.Null); + Assert.That(member.Metadata.AssetGuid!.AssetType, Is.EqualTo(typeof(Uri))); + } + [Test] public void ClaimsResolveAttributeThenTypeThenBuiltIn() { @@ -321,6 +330,14 @@ namespace GameCult.Caching.Tests public string Name = string.Empty; } + [CultDocument("tests.inspect_asset", "tests.inspect_asset.v1")] + [MessagePackObject] + public sealed class InspectAsset + { + [Key(0)] [CultInspectorAssetGuid(typeof(Uri))] + public string Guid = string.Empty; + } + [CultDocument("tests.inspect_fixed", "tests.inspect_fixed.v1")] [MessagePackObject] public sealed class InspectFixed From 0155ba8cca881f710bd777cf6b66967afc79c173 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Thu, 17 Sep 2026 18:46:07 +0200 Subject: [PATCH 0098/1002] Prepare 1.0.60/1.4.0 release: rebuild plugin DLLs, bump package.json Removing the public asset path attribute is breaking. Runs scripts/build-unity-package.ps1 -UpdateTemplate to refresh the tracked plugin DLLs/pdbs in unity/org.gamecult.cultlib/Runtime/Plugins, and bumps unity/org.gamecult.cultlib/package.json to 1.0.60 and src/GameCult.Unity/Assets/Caching/package.json to 1.4.0 (dependency bumped to cultlib 1.0.60). Tags are the next, separate step. Co-Authored-By: Claude Opus 5 --- .../Assets/Caching/package.json | 4 ++-- .../Plugins/GameCult.Caching.MessagePack.dll | Bin 41472 -> 41472 bytes .../Plugins/GameCult.Caching.MessagePack.pdb | Bin 18924 -> 18924 bytes .../Runtime/Plugins/GameCult.Caching.dll | Bin 118784 -> 118784 bytes .../Runtime/Plugins/GameCult.Caching.pdb | Bin 38032 -> 38032 bytes .../Runtime/Plugins/GameCult.Logging.dll | Bin 6656 -> 6656 bytes .../Runtime/Plugins/GameCult.Logging.pdb | Bin 9256 -> 9256 bytes .../Plugins/GameCult.Mesh.Quic.Native.dll | Bin 15872 -> 15872 bytes .../Plugins/GameCult.Mesh.Quic.Native.pdb | Bin 11960 -> 11960 bytes .../Runtime/Plugins/GameCult.Mesh.dll | Bin 675840 -> 675840 bytes .../Runtime/Plugins/GameCult.Mesh.pdb | Bin 160904 -> 160900 bytes .../GameCult.Networking.WebSockets.dll | Bin 14848 -> 14848 bytes .../Runtime/Plugins/GameCult.Networking.dll | Bin 524288 -> 524288 bytes .../Runtime/Plugins/GameCult.Networking.pdb | Bin 247280 -> 247280 bytes .../x86_64/gamecult_mesh_quic_native.dll | Bin 40448 -> 302080 bytes .../Runtime/Plugins/x86_64/msquic.dll | Bin 536928 -> 4181856 bytes unity/org.gamecult.cultlib/package.json | 2 +- 17 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/GameCult.Unity/Assets/Caching/package.json b/src/GameCult.Unity/Assets/Caching/package.json index 016a25e9..dbd0815c 100644 --- a/src/GameCult.Unity/Assets/Caching/package.json +++ b/src/GameCult.Unity/Assets/Caching/package.json @@ -1,7 +1,7 @@ { "name": "org.gamecult.caching.unity", "displayName": "GameCult CultCache Unity Tools", - "version": "1.3.1", + "version": "1.4.0", "unity": "2021.3", "description": "Unity editor tooling for inspecting and editing CultCache .cc stores.", "keywords": [ @@ -10,7 +10,7 @@ "Data" ], "dependencies": { - "org.gamecult.cultlib": "1.0.59" + "org.gamecult.cultlib": "1.0.60" }, "license": "MIT", "category": "Scripting" diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.MessagePack.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.MessagePack.dll index d57846bb430c3bd533735cbb969ef9f3cffc558f..3909f7279224beb6a9eec4e4eb6719b51fe524f6 100644 GIT binary patch delta 192 zcmZoT!qjktX+j6fdjQP0F_!@$762*fs*o{XA24pa6p&P_S@D8{=li1^*cV^yo@M delta 192 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 diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.pdb b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Caching.pdb index aa2be878c7d0a06473d276eed51b85a2543ecd7b..7643cc0ae7cdecb4fb53fe612ef63a957f5a1a94 100644 GIT binary patch delta 3760 zcmYk;30zdw9>DQ)XJr{cMG-yuj#!S|b)TR9)T=l?(F+;i`_=iWKPmI}od z{#N%sc&oX7WlhSMPow%>v9YgP-@o#j>BJU=WSHbFi5ZxS*YPHnVKwqlfUVetQhbb~ z_zaQ0l8D1tOvE(I!2)DpDRPjDd=y~^N?^ocU&$a&k(|MKTtWk`;ue0yeW(XYLI-EO zfB_hUA&A8oOu$sk#zMS>X1yC}j= zl;R+2&<5ARlIV|gY{dK6hfi=EeP5Eqc$DH3oWLCz`ug*nQHP=cmOn`Fk;JtimUxIH zh9UxSNX8VT;WfO4Y~-Q<#n=lYj^H$!(28f!4wZxx`oar-LwWuSNiwk+AK@^n(TH|* z!6}&4Kq?mD@4@Ctnm>|QNqs9S@D(ng5x*hvWnN6AVF6ZPJ&Ldw#+P~iM@TNC9Uahw z@Z8~#5R61Ja5}d;&v<6c+g|o~E zM=TOC5z{dj3z3O!C+H}j!rm? zkc0K2Zwcf#HaW62f3Tu|nu+cm-)#iX7yk5Zkc_WvIY$RH23w z2%!+)k~iT7I--=~AvDo{Oj#)$qLsoEzKBE|#v(mhX%MfGEWuiAzz&o|tAr8C7?rR? zPq^ZguS$3k2O$T3pd< z#C3QjXhkMAB>eFl+3^$jV&h|+MJw9Tfk)^yhCLQ9;w7Zxb-aZYFyLJjVJAw*uxp$r zslyfAzz?{GhvcV?3rJ4GXXY%diF;P>6##llaHYm?K+bBD=?cPbIR+$2A{5b3l5rRm>BN>x13-j>?mOeLT744<(8a@ z$<*$98X)Kb^OlU!VpT(SU1c!!LM%rv?gDic08GtQYDn$9{73p)Wwr zL**DHM?HPxExCEDR!mLNirJWt#g=w{y;JzrPSMcMKSJiiIL^viHwEdMf(d7lJFqLU@hPUuPO1+Ah$_zAVJSNk!3 zp4LTDigAizlrhS9iCt73uP~S1N|n$W)bZw^zHKSvRVtxY&$pD`YJOtW-Wv96b+|?= z-VUmyEDL&~HRstj=DgBUHe1RkmU5S^R`eZG>7W(Wp}Tr%#mwQZURvR=&mN!^S>tZT z+K3$U7czdbPgG2JdU}RQF|tb2|DB(!bRoCbyKg-1HmvAgdfD7qpJ{CwYZe_S@QY2~ zrG2HiRqxgR*}C@R#L(|h@6B3%b5ie<8G%`o96b9ZW&LN{{rb^^ z;{xqkYFFI-ede*|hK-?~i&yRrG)=ph5mEYEOk>%Nwh{k(%^=;m9aAwS@7m+;7b25f z7F_UltXtjmVO>LN;vR3;4>X^|)#SDO;``})@0VT~GUv;(u)DWk`p*62@1LM25+B@pLJhN`dw+S1jWF2VETC{6#t*dFuV|$ZhlCFPHi&TD7 zD({wzZjv!TGLDjr$&zuJWLzW}-;<1oBx9{)Y>z delta 3759 zcmYk-2|!fU8o=>$hdT@+ASob{C@zDRI7qRH117Z!0&wDIp>~x&pr3fncO|9T>h83 z74~?zDIE#z;4mZ(^yRi3_gframEPCQO z48Twf$4HFFWF#XM|HhkGiMNr5t=NIx_}JGZiO)zXP>IvHfGcQ&TOTfno|uVwScEsQ z66>%D+fag197F|<;{vYYCT`(ZJc6pPBplJvMB#;=cpfhx48stE(U^+2uo}78f+Flj zB^uG?IZ5=uG-P7~c3=zkt7+{&CcP#BuGqg^Kx_x&NY3RI&O&G-X$1DV1=+v@yNO2V6VE&AgEn$QB5FiCVn z0~`j?j|KP|x8b6fgoj=wx*-&U^+K3zCsqj~4HGa0X~;wt)?*V2P>j9Uj|xp z4V^(2iO4}EG?B7!MK}0kC>~*86gi?X8cA4y3@nRMi#0I)hoTDANYkoCO_aU31|OqF zEWj$`ljq2eZ{&-OUHBReXu=&lK&O}3W6=x!Fb%IF6^ro}RwEZ%Q1lYJ#tD*hs6jpc zhhOjq+F(DNHy0l024Cn9j0hMJkMWp-Sx7-T-oz@b$8H=M{^VvXk*#q!yT%W6{Dk{x zfgCLfC%B<2dczNa&?6FY7>h}mfw@S-Qmnw+$VUN6P>O@7z;T?#C0t9OXvEL>9j#Eu z*k?(Pmw396?yGuSt6u^v+Z~%vK4mD_j9Lp`k z4P9d`XR>^_b?SZygdUNI!&pqh49rE^Q)8A=U!m05U092!I`io)c&cu;=1fe92k6g= zvt4|x5;rPwyAr=p;)yu6OeL=+Z$Oh$zhjFgA&;<~?3od~l6Vn=ls1DBQmeh88h&jwVhw@k^E|pw5MO<&vu;U*eCTeol{MKsZtjv&gd+?l4!40 z5$&vbpk7V1jlLJ|K;F*UzAvgh(aD;77+r`Rta*m<8Dd9hRBJ^ap%zZ+K8*jD#zV3b zajIa-2s?wsE~+-DEM+e{SvZ)~21`(XZ!Hb7EbP^!+!UVcGK3pbyK^pEZgCy%s=lHO#03} zuRf}~PfAPKjmBrcEc?y#Ojb~<$9%78huY5^Ke_eNxSpFn4;#3$%-iU!GCdldoEYmJ zIoxe^W$o6pzl<3&^XiPcFYI*P=RBBy@|&>0Wykzj*wXy!wHJrDp19NgFPGy5Zgn%l z7pJB_Q}d%PtKX-C)@$yKY971s*f0A=O!DY~duijdyF5PX@NM?0v~jJszP}x_ zx$#OuZFBU*W7_q;v%RB62hN#tCOe~ai7EcNxyR*cS@TpEJNax`?Z5C=aK){F^!%f; z--OS8YNv|7o*E~2-L`wKyR5^kUB5_`C6&-MXY$AjD7HTk+t82rkn71H-qy!7=EN|CI+b zcIFqkue^Ef_N5z1`>uSuHSp)xGLi~9R~L3}%6`4Ra(v*KeZ{jMcfOlim$_+H+L!eW z(~9OMyc2%&viG^9{TX47$#2NTzlxw&%R}B@-aGhw^YTZ>J0;$qWk`B==E<53i*EGJ zKN7h)BlGm{b*XLF=BIBjY#C5jf28Y`kh=+2c5hs@&;85X>{A(Wd#V-<7G=&cPCmM; zQt=I`__1X6lFa=j^DxOACz%r^^Bl>%Rx*DmnX4r8MakSKnOme1hq9OE{N*8CEi)_| zBn1p_XD>Wt-dRbNVfmKHBYL_L0w&OIlpQ?&-#)3krMushypOX+xn7kj>a7>FU8kk2 n!}3xMt(H01ni{!K-kG(Dnyc29s=R(VlN|p!pzNKTHiy3f7Scrt diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Logging.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Logging.dll index efbc225930edb04802433afc516f43795fe52fd5..2cfe3979ce314c4ae38c29951373c75e08988295 100644 GIT binary patch delta 174 zcmZoLX)u}4!6M1T)wZ$6iG$H*^LdV+ECM~3Jx@k_{p&bU{NKex2Y1+PzQJ41C}3uw zXTZR~&B(xJsAr&OW-vLO|1Qh56aMX!Jp=*-I{aK8Wq-5tUfjRN?1P(A%#D$ delta 174 zcmZoLX)u}4!7}Y#)YFYUP8^KZo6mFnWD!s)NU~N8{NUJ@X(Pn{LymFt4c>Z20aHso z0|o|eMg}%RJp(;c%gO2dcUc&uR<}&{5C{;M^?bTOhSLnMC87obQn8I1lUE1?E5HO( zpn^cvEce9bwl*;MreE@0v3j$#U@;@7H3I_!BM@6}o-TBdk=c~Na&xpuC73b!x~M5w JfM4t*GXQ{SHGu#C diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Logging.pdb b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Logging.pdb index b52442e7d10acc91ea1ab3f9e917186ee3f31b9a..fc1f2ee2ae732dc1173c1f0ea4968274ed0832f4 100644 GIT binary patch delta 482 zcmV<80UiFRNT^7Vd=!XIMdEArK1-vItVsJWpjOt%PlvIPiv)i+Sbyu_1U^4jScm%f zUGXVXJQ$P#7<G#Q!?YcfY>Nq{AYq-R$a%L$| zM5Xp>yI96!&k28wv;U@w4X1OydvRgv!Hs~&@;1S+5H; zdi>530YeK<>>M-%PLcw5dz$vN^X3GR_U2nlxUBz?^RY{FdXf_d3+pi{`HRD8^+25? zqb%W~NWWrADNp}?{XVm6;Y(zt Ym9%sd(RvCB#$ifTi30ltv*rdu9o={CQ~&?~ delta 482 zcmV<80UiFRNT^7Vd=#4Jmk?+|m`bD-Fc2DDfhYhPtAw$Tiv)j!^Y2<2AUfjo$Ed6q z)JQ+EJ)^RY{FdXf_d3!5=1`OCv;^+25? zqb%XFNIzprkRV!8{Cs3Y$>FvKSsiCQ({_qGERK->fgDhqwD}?lfU#;mAA delta 190 zcmZpuX{edd!BXMv)wQw5K$6jV@?J?*M(fRwC4UMD>~*ozZ=$Tq>o@>a=#L_Gs^K$YM;{XAV=Mg5o7FAB$d)!t%_*FG& zGK)#70#s1wJ5&&)df_>io8jH@E28gD3)1S42Y{# z85!mS@iHJ@tI7Zbj0{_VY(6zc20I|m1mZ#r@}mjFo)hE1FQvut6ipZv`ElhXg6ooifXF0KfjbwiZ7(t}6) z;o_;`-VDKW_cu0P3}j_sSUcr>)*T0)WA7Vl*&hZw&Hni9lCu!k%V{l6+qeAOY&%8n z$;KS+W5(So>OUs_lB(Tgbg%5@Qr(=y=Ls90U-ti`zHpO`{i~UCr>Mp}OnA9xsYjFB z*V!+V?f7NuwSR;N+blj5#&DH`V_Hx_n+@4CcKVq@#RJ8&h`2kZ@M?jIVF0&sl^$3DLFYn z6QIs#w9-)mohUhRbpJK$GFsBegMSJfw)?g zkzoN4F9+gvstiED$gma2=2v56um|ESAT9#pDj;rF1IdE`BSR06e+Y=Ls7-cc6cz!B z`~u4|GR#$nsBqeRnej3cW9sDPEQ;n^nbjHC7`WNO7?>HJGn4_z`;5wrEDW2O6eLljI2d}=6M$?JjRin*DUjq~*u42a%NC}3-zCc19u|J6X_-|zG3w#hgJ++vtyN*2 zd4y5?u%v8~eMjS^Kvo8ZwNuV#-ErVK_P()}{b8`v?82%S3q3WKL<@1d1rh5ng_wYA6mGg8AF&ABD@Z!z6`U=H#A$4z^UWD&O)HXqTzTPr^PQ7r+W() ziOE}XCaihb>Da;Z7+@j4*7tDUn5Yjun|4L0pcAER%qMQeL0gK-y{l9wm zlGX%szmH1Z`xk1JhDx0KFS29x^WBxNu1U0O8$VoSZlz~sRR5*v*glJ&b~A;-?|iY; zIx2fjm(^+Mf5x@!50`C~J#k)sgMxEJ(3Oq$c1O>q3eD}S^MBQP{kN!``1}h$CMGP5 zuli>2zFF5JTHsK^ou_TbJ?>39pv7t9vMo_ZDbky1q7QF!Z&33WLwAu6No7-xFAWHv zU}7PGEr$^8T2@6PP4uX}uM+5czlJG?IS_8$14|Dfbfx@YP8^4o>YvZ=FUzMV|H ze&^WXmlvwHIkda#@h8O2+a$&NovmW-6y1{_6c$!+x@K>?_IXpzja&PQ>`I@$e|7rL zj}upC6x`u7-~C%NzyIjn-SeDz<6C>5tz4FUaM|LF2h6K>$$aN#WNZp4OD!tiypD4& zlf-VHiK`eKm>4X#^JLUKSMk_4HT+!pY^%J<$vnyuFSuTP1f|OLPujy+y{7wZIMi`4 zY2#6g$@6%`>!-boddkqiz@So)WUUzZ!LcpVMu`819HV<;ZmM%>PKlmxYH@~MN=^>Y z1b_YZGYki~7^ZA&@tpRS#iP6UmZsg@nX}<){ZdQH^NX@G^U|R@j%($0G9+*?#QbPk zd3(lY&)qJk|E}gSZuczCFUZf(b1vF!!mBPP{F!mdFUF-Tj7yanm+CVvbzoc?zBy0Z GlNkU8G>g^% diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Mesh.dll index b02d835548ea7de9770ded14fb8c5cb1538d528f..52a8a1cfcc1548dbc7ea0b6e12592f1939ad1611 100644 GIT binary patch delta 264 zcmZozpxLlMb3zBplzY4v8+%%N7+ZUoT6>sVdstd~SX+D8w)U{IxG~yHpXkPJENjDn z0JC=>*o;7?&Gd(E?9z-j?SI|axBqqHNdG1f_(=1PZpCTO&U1gY#Aa>Q++JeK`TvH1 znSq`G0|PfB1Dm0qfu5Pc_GU4zTs;;MHkF>~UtG8X1g;;d@0!=ddx_F2Kjl}EN8bmcnB#0hdE*ge~)dvFOdF`F?MY+vog gmBnsx|$c2qMx2B!HAq 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 E59-X0(*OVf diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.WebSockets.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/GameCult.Networking.WebSockets.dll index 91675e12fc7c55e14b4dd107aa40894221752e77..3205055971ddf53e21194f639dedd72bcd615025 100644 GIT binary patch delta 204 zcmZoDX(*Y{!E)z;NYloi90^97$v-7j8ErPpODggU1PH9Jn_(8>+1urN$~obo$L0VH zAyzRn13d!<25v?MHbXrFJu@I%nUO(m@ox~y z2(gNpTIv}vFmN+6uo>zZ=$TqFFeo!J$W1;dFFe`7fP3>a-FJ*EmFu{tPVUeT5O933 z+WQ#ab&u&$Urz-seVsD-g?_#QR8ZnNR1lg6so$rNJ7>ert@+jKr5E0{H% a`477(J5Y#04=617kNq&?cBX&q{}=(btXxh2 delta 244 zcmZo@P-tjSn9#v;Tr01$v8T0%v9*V(wTF3Y4-3-|M(gSQKUiXc)Y~5{`anwdCyO|v zb-U?LmhGlLSzp%+#QbPkd3(lY&)qJk|E}gSZr^TD$+o;+%+ylPfPsOVk%7%n&p^-A zl7T^jkwJL+#51hI+kUc@d}1kQDO)zZ;x&7Kz<Y`$I-%QwGcJ)xX$V f!K~@bf7nggfkF&=3AO(uG4HR$DQlzCgi)#xv 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 diff --git a/unity/org.gamecult.cultlib/Runtime/Plugins/x86_64/gamecult_mesh_quic_native.dll b/unity/org.gamecult.cultlib/Runtime/Plugins/x86_64/gamecult_mesh_quic_native.dll index 48ff569f01a5dad922b96109f1e30b054bef7436..5f0875169ab3b2598a5afbbaf6b3755a1b246b4d 100644 GIT binary patch literal 302080 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 literal 40448 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�g1OFb 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 %wpzxBLHFdgeW@lLPFl{n%2 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%0AJn|T6v>Xuu_dc!eC5g!4-mFDF;R$__7o`#g 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Ⓢh^#-Pmj}nz&skEz!_oW4l4B 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


N`gB>|qQ4jB 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�EkD9pd;sy3ShR6t*s`3pnObFLrF# z#!3pVyGbj8h{&)zcA-)5~0a~(Z(SHSv&CSU3Cu9vXXykQ_F>djNV;>pu@V(C5QE#*inx{{io_F zqMm9CGT^epdf4uNQRzkQ2&<~*bWL9i-#=Yo3|C^I`@6^9aV*da2`+s&Q)qbo+C_tj z=!p>r0e*K=vZZaH;kK=xu_qj9KoOX}#dnkmcf~tkp^FEe-3Ko`xcgdD7@G4^nmp#? zSL8!HvMlqRD|FMhr;(()Dg~eVR88lu(!&flf{>>|QiKgMrB}Oh=02l;VH!t;Za_yh zBRf?yl4@eAro_D!3#$onG}7&3N>R-a;Rurp$KK8Dd84}nbf)IoeDRj}+tyWeO;?hq zh{E%WWn$O}nnc0F$w6Y>BU@kma=$n*+r@YDsayV=e10h1X&q=rx$t7sj;#x8qH$P# z+ZpA-+AmsH?(KzpBx=F1Xx66kOIO`a!Dwkq%^1rPRfe2k70FqfE_-ekDr3!|sLssa z#W(bcCf7#eYrl#nR~9#+F-Pu@;iuU~H4T~Xk@PuM;T`^})f&q!;`LmQjw||B8@|@4 z!siVP#t#bKio5T`ch8LcvN_&7q-{+6%OSNV@ZEo%_pMmzK1u$K?!OO7dDqV9vT<8| z5jQgot$jsX!x8rtxk4}EoVHD|V4s3M5uJ^X>`xym4W#DbhKpEyP8pU>3qgsL~*$l#23_^KuPCiWMTRcXSt5&F1s;G)oGzC2&k}}+BOE6~2tv#61 zj~^(4P=S(GuI`?FN$t6h;=Eq!YNTFlwKBFiQ(iZ0%%i01FTHXtLq zct4j*sQL0>@-T3^c)xI3an#~H=LK{#QoacSvx8aDB~2QXDp1F9-hzwBi22tec=A9) z@Z=#va4`80eo!vfyMunc58jfxf7tiEzNreg3pL42-_LLkqAKu+=!!1jIRtnPr5Rvh zhE5XNE6Eym~3HE{V?zj+SQY--#VY)Sq!q> zPVse9oFCrM!Mm%1x7DwhPJ)BSvPJ|9em7hAHnIXi!e$2Dnr2IKbMebasf^FX+^Uz2=q3$!%1$5Q~`pKxtw>6=iQMAl`tQKo$^33ev z6}mfo!SGx}Y&q=?kIJ%gmX{hP7iW~0u8iFBXJ%hC_;_;QDuex%LAwkzvC>_&L&jqb z95?p7NS)k_j~(^UzDS+CqsK>{>Nn2)&93^3)cu$*6C+OzAIIFNEG5hN=`6Q~Sx)y~ zvd2{*VV{aO_c$#v=nk?^Obn{FBG_nHZp;$xP0UP8&V)uc-@F5Mde-pl_}(G0NX6<% z#rlfUI~M29EzXGCvPV;zw-UYG*2Y_WPtVBB*YSWcpPRN8KYG26S+*p1L=)pbx~ydu z12U`iJZ0QFr1r3AeD8N|$RlYMXqnYIp6^1;tkx1eW$Nj8p2(0S!;ID=c&VDn-4fCG zmzlMPpbgCO6y~mH>muI75ucnR0Jtr8LQwZ#Gk~fb>&b0rQcNGV|D-rWWs)t?tW|30 z{E$A&hhGk0Mbz43L4iAgx-$9XjoK6_YRg438Ba9!{Y7gz{-7)Oa7b(=lB_(dC3@M) zS)*DeB(jI9p37SD8ZY6tvoBgFB>FW-9KNudO9d=zllB@glVxSCTDiMNxsG?POuxpP zdS;Q#*T!EAul#v=*2;>kRnadTqIBin9x1W8s#p0aBcwTP1J#S^ZT<9fR$GpKs>^}+ z*yOW}8BQ>q4}jP!OFxa=@)vZ)D67=$p|w}UW;TysJhtTc+F3HJC!3?CZ{Wf)^UL6K z=-`HsOx4HFWa+Qy%89uW1AEN2nzb2a#6SA?<*FK;g2%1)W+Ov}7 ziA#G(0Ib2w5&>{?)7swUmwuLy6l}{&L^DfWZO_YAjV;gG z#iT)45s(tp62CTb%S=iuum!AzX3+VfUu<2xV0hti6_N7Q_;QWso&{;j#1Qtal%79) zc%=SmUe(?q3S(7GqgO@pIhYZRz_ud;xEib>R%nV(>o3W9``r15XWYo&Bm6zi-`Z;r z&)CG@EBuK+di`$8o1Py^u{%9-;C|7vPU(LdcwqWnK0T-$8jZIMHT^KoAf@Y{*C~Db z`<6b_r<*<&TA8cER)W`9FJqC>LJ1@#-I^);Sh{4^9$D7DCcE~~AikBtD_y@YHpRF1 zh_`TDSv$wxeyztwc&)V5ud!#_esCel?(H{18L*;EoFYIa*jvteT~1EFR(W(IykN1v zjtf3_FZHlJT_T81&Bf~RY>wTy)Bzby~=uA$Nv3V7&UG)}KOl$>-vGd(Arn=cs<`k*{=qw$^5ave3H9 zeY%%;{#l9Y-1^P)Cu35I@6EkoP;4e98e;n;a+cmlnM8I=+d<|jo7eLEVHxpNyIplQ zi|Qao#EvyAWk7$orYn;>DBx3dQ)-dw=?Y!54s{kvy61AqXruM;)os?p;&!foDaY?t z>X@$oZuoYvzu`NYn&`=!w7)-6{}j5d?BcSfw3r&|vSM7|TfUfbx?L&e4+HCp^)d^` zNDz={d}p>iJc}UMaw?h6%#YMRLJ3WA9qgA4l#}BS-&8~D)R8U&L_tbLXh0{jj&rwX zi0CfLA9Kyng~e(AmcDN5?<}-vF8MB)mYw0|SiVX5ZYpmu^2GNGORpKa;3euRBv0iO z@|0U1;wvW#{`N1{3yn7;!QGp^<+!qxN50?9cdbg+>SORstKyNCHyj1P^&Ds+>2e`v zy=(PL`dgo28pU^W===BT4m&t?4c4#8Bi-n)1mR@$%wGp;U>&wZi(fYtS)@~dAbXSbne0yz6->jd^C*jwyFM1 z>%aMp&73?mmbidEROGW=niC7o%EUoqv$pluxh&w+*htt^B^dTLVp4rx5qww`+>l>B z=7&Qgx5^c=GQI{w?j`IVyjyd1B?#t2VeqEAf4_));ko!x%ReepBe%P1%#7UH(UsVM zSu5qa+t0|xrCl#I*Vx6`E$+CzD#mR3LP@u1I~ex)7{!Gw2cnijUocG}F3FqoaIe(m4^CO%f#7 z(D_694Bhqm;)m{0kmmXVL2BrZSG>r+Zu)Qa$s(A&QO&?Oqgw`VBX0)|-dapE?itHt zgZJ&v(t~$luTJ!LFyA$Jm3+iPR#6pXxqBcyT(a?FJO?f#73C^?Nzeu6*Bqj}PnOCE z*W!*g9y8E0tAcdPyt*2M^Oo5s31XAEgB!Ab&|Z)B*g_fg@GGIz zAjqDC4ng+B6iVE*Jwk#_)}>^3?-1sq?^#9U$`o~mo&}3P_(;s*{aGw4S z6OH?g<*|9%`_nX@M)&N5r%!kJd3ppNy<3@Npcj9kd~e?pLY*mMJET1$w`Op(aju`| ze^Yr${_PS-Jajghbe7MLcGP001x3X}-E*)Lym<7|w~HWtMFVmE7sl*US5c$^GtN%_ zSKN8lLlQc>ZXvn-D1`E;!(LM)xII|simA#D(&djQynuAt^cw{4}Jm8GV z_I&qGnb*AOeRM47$y}&{+Gk)TVGKqH&_H_?sCj=BY#)@1Y}!{p$!T(_xX7-rJFB4N0{`^N4sla&qj zRx{nq+%0aR!Kl}bIJiw`YL&XkEoU&BO#>2{RcjE)puk*AUMU|wR>b-2`%Wq8(MG>E zxC?N3VC*);0ugA<38MUC+6Edb?8{;LGL-l9bhz&$O{aBkGpZLwf6VmQgJ&G#Y7kOb%e^Q(d#vUM#64P!1vY+TOxR3)x)7Vix;&$ZxxNeF+!u3LQj zOF;;d$F63%oe1-}x_;xVFTs)|f-7$4db|qDv#^Hr{>Ycnq*etLxs{12D9)SYupjpZ z@M2N=RTfymgAlU;*H8gZh8ycm#*w0^Qn4#t?pyc4W1))4^W$do?PSZrUENiUb;JS%P0nsk((d=Vq#GSn5Z2* zIe4bhQ{h`?t&Y@PLTO9qz2>~iU}2$X^bG1@SGp~8{%MR?sQ-lY551T^n9-h*RdW;( z$D|BxZ4<-1kIIs~p(age7XrytcWL5Txd<&=H>{7A)KvOU&D@2Di7T8Z4(l zrd&C~$L8B=WA-ia`S}^Ow8kA&iGm+lYkv(}y952o=e;g$jT5|Vbhn5Mi>%-=8g1#u zS;+{kbiOh((A{a2|NZ6?$J#l@7iN#^5?h% zHEJZ|mi_xn1xL)~;N89Clt(0I#UtbQR5nET-n%?81NWL>S7dxEuYDrpKh^CreXQZu z9#BEWsGSwTSM$Z%pmv!{XF}nr6^;$^^CT!?om5aH!-YthfojYImYbrqx&#Ey2y&{eIqx@!BH!xNmNGuOd@o~=X25z zU=*L`)B5DXLDBYS3u}8MHwI;cSg_=9Pg2!x2&W3ALB{NBe-RB<$6K=NliWZ_bw$7xZIpJ;n4Z}>C}VjU&+aN|ftaI+b0Xh_+Ed*X18tk|O0ul@t7XqSif1=( zP$y4=BUN@*0Rhb932!@Ats9hi=5Gw!wDB?LO~FiTOqTq3g2tRFz4!83lgX4X^t$5nf^M1{<`xy8%2)O!!?)WSFxbes>x|y!&4F4{7|KWU1EMh(ktBjwT zf!Ep8p<*}DU}Jnop-$;BhjK)PhlVL_191TAkz5}|@Y-lU8>wN_oF5-&)iv`d7;2bMY=dyv&5A#>%OSiE#Mg5NWBi)RRu-Sc8>qleMQE}!Mvft z^nA{}yFrvM-5RO;BcJu29oDCVFrK;9@x-j%qST%L63b@P(BU|uxRvu@e&D{R{m5Q& zrwP7~oZ#uj4mGQ~EH(U*x<61C0ss)6NBE>DAr_ngC9aR>qG_3S;GTd8#1iMyEGCm5 ze+rnpBDd6nGogTvB0>61)iE`U#4$CN$cw(uBuxoSH?4{QD)CM?&3h6t`sla>s51|qLA~x+ z-!i8d2;0Hxqljw*Y>iUE;JYawi%M$0RT6AhFUu(aUFjMIkyGaN;G|3X59}ovwG~){rjB zm^u=rCWk^OHJm2&(SCe1vRh6N*+KRpV~syEqZ3Oq67crY2iMy8;~*ULkuc^M8`1T7 z7!co`!>S=sa6cPC?kz;WS6I`lD)S#G1TF4jUq>wXM!c2z8i#MkTYE(6Ua|+i4Db&% zi{g9wfJ)vfgXJ0t=3u1mUV9ITt>Czw5&(fxqm6m+xmZJdyISdo_|taQW4<8fC51-i zE@|aS6#V-=mD}iE9w5;a_n8>D@nnKJ3uW7q4XfHstJKCdzET$6UZ?(bLIek8{$fnu1bs_Q85xK$G@=EvQ9rK$`> zbZ*pqdlpXIuqyQ}xL3~u{qsXSYaY-mR|MRctbdX?%!u|eBie??7L%pn>IDstiDY99 zfdSm`*d}{>%qnOwoHNVr<>Q)oih8~la*)Tpi%37f$1mRc%emI3)N}*D#nj?fUD45r z+1GS*;yepv>N_#TKZl(tQYS9^K%Fp7K)(v!))GhuIb089dKZAazMsgs^sP?*JDA_^ z-rngw^#6Ir%ezFu*c~to8H-+g#ryxHU1_|jBRsBH9~KCf3tN@iT)`Lh(^!1b(2SaI z$AU#eD}xrvx+1st2U?*2g2Jk z)x2E{O_c3IX$-vtcx7_C;X1T(h5KL4p*%lGr?%C-@_%)U_v9}Hl^v&0qjP_%1n~ob zTJ9-93rm=&48*(K1I}if?!69P*7Umr+6vj@^cAu#+jQIQs`B(`XFHBz4o~MAmL*db zET#!RRw+xz4C}F?kF#tezQRo!^D0hX!deR4mYocGgMH&er0xR}LsQC^21%su6+Q`o zhDC&?#Y1mJ!t!i%&-F_~(AOY{)L(}fM99>z3AN6>)*?geI>NBvUxxDEYt3mzr1K5! zI@nl_dNtks!Er?h3k6Y!BK3#7b@y*%qGNs>8;NL4I}_(xTJx4(`-v_8*kTG!Tt zAK&(sHoio3Uhrm$eqRmg*Zjdc;)AX8S?#E!JpF5C#u|RM9bAQSHE3``T%uqFH4)#w zt9Y$BF)dnurIzT)b$#e$eN!l1y?W~Hq;>>YLYDD_%)dc9DrE7Fc%SaqWQEm`STRKGBqSlTV2MR0Y;nEs)2uL-aDuDK zvX%LrRJ-DCBfPxd@$AlGFH|e@_xR==iO1V^vXN3DAcp)+;=Yj3Vj;r=l)Lq7ZHUm|AMZa8ghkD#|i}jK6t?tR&+tt;HXQ_)=4KUFI@dlT}yba@XZlIx^ z+o*8mNwzeM)M;f(D=+Bd>uWi^g`*+^e3gczY`NmpdlhxpG}SuH!b)z_B@9Lgn3&(M zAR#0RW=3B(8}&D&2McUo#n7L57(w@ikv4>Yd;))<_CDN1;LwI~rnG2_tjs<4DN)9_ zFNah?zK#r~jN>gg( z?=0%Vh$rEuM`*~ssF{mw;kFyxPyQRM*t!@G39CB!Nv34&gYhquHN)ax?yp7PyeQWz zBm+lhXK>1>4HM33xee2^)%wq3GL;3fhEv;a>V*G7-9#KJb`P&G)JMgMx8g9#MwYnR z01!t90uPx_GNcrwvg}ttv+;gN5O)$ks zoBfpl?T@vFdDF~?2a`bI*lxm65wBSD^I=dUb!G~N9li1fqt+a`RVHdiZK;fVngm4} z-x4ujA1LrtKL|@-(GrBXx4Yaulnh)r!XSZg2GxwBHsHchyneflVq4E>FfTv3!PhXG zkBKRnrLp`QjwpTOhQr97TCdtLPb3}u#qvwvSn!dCgC#C8??rJ;7-L_yM3ANoYxX?U z&K7!kyz`&dQ&DcmajD+!lh@Ja6hLHZ3#J{Dq2YKG(qs3iFXh!O^q_BwRXr~>V;1kbrb#T#Ut^TTr~sY)4a`XyTK z)DXf#{&ohh#>O+vE{n2V%dFRO+vhGNIuMNos6`vx7t9FUV@yy7yQ7iHH@U8Q>kUWJ zA9ZGf+X5-av`3fg*43E)K7t%?E!YvBP3o#2by}ctaB)XxatrnG*&Y(CW|9vhTZz3Z z;Q7yw&%|!&qr0V#=$8KAxRg(#FW)nrZmLl0P2JLW{=<)dP^o=m?hp3JOSiweTe@6j z47?D&2fL-8(+$3xx~2C_w+|UegB}yj^@2`8)}q(~*2W^`tF)d)-sOhMTA8mUO>e{9 zl-Iftn@yHZG;jj5tsAkaK1hMhz;Kec{XOiu1SUlGH~|_xo2)HJ(;12`suidqd=rA9 zc8Dhpn@ye55))VmEWmYR8&tx)sod)R{3`Q#H`Fs6>Y07Jr=Po+Bq99-bB%ubdit?? zHGzvfhw5CpA>5DW=n&{m^VN-~p>C6v64)=syxe)cgni@1uJ3C*zx(>PJm!&-D5#>a zk;Lb#{d%NZeLnw#sr-3|rt(j~F_-pJ`dppQQ5CH8T@*XjwxDU*-_*m*%u;;i4&{-< zxRIL&>YEfY7OB6Sz5|sEu7)H0lKBs%?;AQ3&z4xOd+43aj8?7ZD+5C51lO_LA^5Be zE#^Pyxi+o>L&V?sXLHR-rj!ZARH|V`pTv`sMK}%mP#{VngQdBNv;gBF2GkTPUt4n} zcaiY0xn{N-MN-=Zom#FrlU8dct2shxK718sUBy=&YegvUE=AdH8x;#e=vUVRuXZehZR2^= zvo=0Hedpi8^t^tl^!SsV(pRU_3yysuEdLJohNtU)FqNLyFO@#Qmxuno)s6ldy1Z+C zcjwREKd71kbXC4)d`5_Aib5iK#4#C{kGG%DLPPpYq;4FCK z0qmMAbEN+NsU9nkn-QtI-DIU@j+qhC@JM84y_%#|3VTEIr??zFPGc1Dvc zUQ!!@mBC9cIx$?|-D`QYrbE~6`x30etJCL)CaeSYkyY6Q3-flDN)dm^7B^KTa7p48ghK9&7|ERx?8{w`Qu2=N zAD!P}0qG{6Lrw3TzlKctHR$IjK!G(!XUC=SnI)>#U7by@xW%Vta4dd(ZUzC^5(Sss zs+`=1n-F`|`Y@-Q!UT-BlIHcZ-i=X7G?KD#Q5HreIM8=Z^QV)%NQdAq65bwr#6W}= zQTg53{r0hsc&ik5XwofvQ2?w*+5C+*^V_3OGB}HfGPi+qP?at9#KnI$Qu*SjRi!PF z+ol=u4l7R#@5AOHlVJfTU~8;~b?hDfh$od)Ij#|mRIU*tm{C5;MN8L5ZY!X4c_KTP zt^0)sHEP%C?&ud^m6tX}Zqt=58la)TpgAGhV@^~CuZZlx0%T#{-#9M27a?&n)j!AQ z73yJ%G*joT*Si_igToOfrYR`zb>xA!p%1NhJK02*;c`O-zYNmI`26g_wex7nT5$8M z^4g!Es9D`Ab5N?b+Q&o8xka1R)rBW>;wM#qm=tVr7enW&kY>K=t2;7GWD-ad z-s|R-aY|?Wrm-hn)3Y-2`)B8VyE2i@ZA(oHYl!C!P2F($;=RY!9I|-t@wFF6mPLD< zysGBB#bb`EIeYAJHD}oBG?rW$O*UDv($x!ok0cz!`sQ@_8;l-*_mJL7+{~Ur(G%)Y zqF~AKNJ4zdMbe8ts+~`@?e&m8Dm(`7I7G<l?@^mH2Zn&lLZG3qniC z>>dqsafB^+wK8B&=WX}IMkC=7@_SiKCbXBke>(scgaLp_N878ywhx*imhn6?YpIoq z+6FBr|IgXEz(-kJ{XdWd!X<1#VxuAiMUBP_id8TuSx8`4H;Q+>AvIo5w4&|` zD3D;1N_<$w|SZg3cf)Ii?M6HVVSyvRbB8Zaz_c!zGCV+h}e?NwO zo_XeS=FFKhXU;iu#-5B|rdn1|7N6E#TgvId7d2(MeO9b)cD?ICWIp00B(%niWeU(* zF|FyC82UQb5KEnT_(Iu~_NY0oXP|DOpz^N8i}Hk;j=b4DpU)#9*{h}_%X>c?w9}1tSjt3jC(ur?;Vmj8eHN(G zDBZO|i|^Ym@nYeV?Rc#cZHMGv*=8O(T+UBxn94V-b?ez4%pU0z@D8K%awcLT!}wBK zvyoh;nhyIRR&D>o|5@tx(V=3(8IF_i0o&SknSpAQ`Cwbyg#~~_v>$I$QE-H0Q50@jD zzQV!#xdTJq^6J@{9i^Q8dznBhpp7XChnKjSHKHTgixZil%B`Wy?L>9K|GDl}zf6%W zqu?xl8L3wwgNc%ySAooUkb;{d@uLq%!xpI3mJGo&HbTwDs!I-!O%Im55?J_q(jlc_ z@hcVV;VWMS`Jv1=%PK@x(b>+7s5?knBfjx zKTJx6D_8` z0nO_8d(FlpVAMy@HjG;Q+E*y26iHg2CrS85UN}D;{FPx4{tNH|YS8Av9F9aLxz@}6 z_wD|<BP`(R7uAmJ$2i)e4#a6;at`WDY_U5%)>bOFpe z{&6vK?-v1QD3B}=#a0Y*(e!Uqv;mUqtZ*mUk=kDuezJ4Y( z`00Vv@C{LumD@rc?TmY%HjmfpIT?pD4+3>kQL}XL?@IW^;qpcrYE~X^&ps}+Zb9Oq zX3-z}(P(S9vPYN`&%aqo{&4ZK2I-=WWFebq5{wM0fK=Av|jM@t)sZ>V5h}Rsjnsb{?ieKMRA1i z0KzU#ni>@RfnRo9Z#+V=mbe9Out%&huS19OQ<@@}=e;EAkUKB*qOHEatUKe`wuday zc%w#au?pLS^-gE%Fj>Peqh97%f-N530Jja4{S@~4a_k(R9pqW@Ql^AeQk zDP)PGZ#^PV_qqr}Fv3|20lZ9Gg$c0MnjPJ6I2N)KOKhIVu$&Q_%#W?EbAKRBuHa$x zs5#7rk5_9ppeUn%u`7S3Z_U55ji0J5G9Ztdoa);F^zE3(#mi+2bA9`i-nhO=Q9tuM z-rk9xLL@EQ7jrg^ll5475Zlv2fSLOuAd{K<3V>&!XDOH@E-_Kk-4x3z+)d<@o9)Sx zO89TNHgp<=;J4UK~{BAG7-J3gq{ zMjQ+wHSC?paLR!WIzcG7@Vvy8+jRxZ4J1#>si|TgGDxhl-3)tKrlnc^o|jl*H|^vm z&IdWT3`4B2yUj84y-?-2!jcJvbNfB7!ANICT~J_MPERT@2XRjvT=SipkB&%x*9A%y zx;D9zB?q%IV4>aUW5c3a(3*o@M#-|-f1bNX@v_ijB6bF=M;#vRQGG+l;ju-m2&iI+ z5D4b~Rn&Td24-l*w)D+cE@DgIvC^UQB6yp?9QYV=wyuBbVdN22y1?dBr)MGMKK;_ri*|Mr#@w=lUlJq|5Z zgewDZ=7Ys&WBZpZn;Uc}fYXO6Tf>5@-Msj{T@(*wKfGT_YizKxR5mFK^*`V~_Tppq z^KQwa!@9%-G)O@cN+}67(!!UNQ=!T{oxqAfF&r1F`5`O1N6im;(SEju^k8DQ&x!Wn z-@@3Z@vH#~ue%F55CRp^;7G)ZisDzg?2m{A(6_q+0u0!1*?zqdV_Fq#jyQ$I%UE=0 zZ|p)34I?xNjy7)l__@IuZ!`?fn8n}YP;Q5MtJNb_Yd1s*}$xZUn|1!~i$@ll| z+E0M?E*4dV%IZw9U9hgh{(&>QrQ5EBqIjcNdOUYBplb=A4`wR7jb`CvShuZVlgP3k zU^_!9co_g1`&-_SyM_EF@zJgdkvBg^htdRUC;I9QtrpV}XEj+uY0Dp$A&fEQ-k0Xi zX2)d*W2KOACKKcuQ@s)%8_&PWq61coernEf@&}F)A7e)nsRHd|JpWX_n~UuS*6r+! z47c&}CZjfIaTr4ixklJpR-5AASpjVdOLBml%L8?9i;=}I%t>Z)NwU2Mc?6jF_$4a6 z_0P`qtr^R0a~WpGFe$?cOfKJ*K6WNcJSwX{k^^MA7Pd~WiE;cxlV*mK?Pt;?u;#H> zh*WM4XRfUtrDH*H|0pgT|G+})=3M&~1sRE;x5WmrppJjf0ghw+3Nkkk?V@^g&S8PN zeyqm4kmFTy5TKI)<0g=5D4u^MZFe+f(%?to%r)k_MGl0_=1}Fj>e2my^igmfY&hG2 zdKffqHh-cu&FSUN;42&N;L5BXx&ggz6q~d7KmxSaTH+w-T9Sed7rOGBKo?A$711=> zm2rVPO(fat4P}u?zD5to21O5A{mZR7N3MWI)li%0k7F|;y!6N%&G&G;%8m?xS*MOZ zc;p7^_U21+48wGMGjN+nG)x$(9q2!??DOdXdSI@4kuJ%z1FL+^EU72g@wG)aO)1a9 z|6(-5iWv(5`EU6jD9N-+cnbjmQg_ZsjOuL+< zG&AWLEPSTKCZqH6yi5xdnoCZ$P(+b>b^4QXOc`N{F)%V~2Qom7M`{3w2Q8$Hz(i{G zn&?5C=5r`UXRezfL|E>_mr1KUUbE{F9+yIF7$1;d&6;n100wwP{!z4|?d<0^Ua}i+ z^KPMfyw<$Iub7X_32>lNEd?QoCwAj1ud)@} zkJyr|q477G+|*M1=%n`lM>7=WLf#_v$C_hZm4&ME3Rh)BRgT%M%EPEKA+LUu>B@XT zzQ#*jnF5vR1&9$k&+;~U59DMo(AX*D)TE>=3~L}CUxx$`U;h4QJK44nOc=O z$CX*4G7s)n=61@A*pj$ir7m%$PFAUqD|LfPT}7$J2LUa)p9#7=hbRy3V;bqRlqak_ z50EE4(#KM>KhpoWBt6nE@YrRfKivF-njfI%KgB*rN872c@gP_Ac1FN_Nt5bmCvyHp zV~KY-RcM}eW$soPh3*HO7L{qFOyhNclemd&S{YLI%;}5mQe^!>_C}I#itRHhGj^8M zTtn(2ALoyl`1D@Is_Yg!j_=2Gez%*7m-$A~^3LSbD5{N2y7(hxNqr_O#rQw{wcdX1 zW#-x6RI;!1K;MPB%dVWues94Y@s2&f>yA%)Np)yusQ#W|)pSwfR_$hHsMk$v$frC3 zHW4s*uUb>J{t&2pgvofVDexwzd?k`H;%kHDhOPWh4*U@ShI&Hl) zCS;m^Df=&Suzs3xsq9h_Z!kymYF(6A5f#eU>%%r{PbtwIVhTNzu=1?={9DDCD7rnn~Ue8~up41GcW6%gKLqoE?uzt>Yo*N;J|>{Sn?q zs#RLAHT(IgpSn~Vv8B!Qb*c5|QbS5-D7kh|GvG9F`C1>ZU{ge88(9}(L--K|?SkCf zmRw--S?@8E^NOsM41{INoGsQyxjI7)ykSdvUuG?RqiP# zE1k|HTLucimI?NWy1sZ`jIQ0(azQ!Vbh-||GQy_p8T5r6Z5{2&EG65-juz2?mW=U@ zA`iQ0B!3dE)9DfKSaNa24N_ z99=1YU&O6-I(f8Ni`Ejp@OwJkxWaZm_oII>$Je7rw(e1Bmh%#-Y72(O>bbpzH#Y|6 zmIys_QiV3LMcS}HT-KY``k!hiq4nZ?w43I9*Wv+cQCfSr$~9{7Vp`mp<(@{1$=gk_ zEAVeJH9k#XV1e3$y3QXh5I9HMIW72x7#iLuJ|C7w$3?>S|wcG)tOZ41SB=6fGg z&=+|HXG$sSpiXTb_$@sX-HQwLFz*h>KQ_TXnD7%Zw2EEa2>m*CaSczFU0h&E8Y$t| z4USzzNU+0a)#GIzw+l%>2*;SB?V^8KWGT5jTE!m}rQG?K*;3*U`#F zU=jh+tjw(2OS*7~G3vU^zuu7%?;1PnuVdD4v7{~Ki^pEu=MdIUK_}ilw(E{VOd{`g zE9k5>hu&qURK3pcSYEJR;=-OT_15*NRCv~Eli{Z}kt$Vgf79<|iE3MIy8~(0PJd>^ zTJte^ZSqfKw$om-reB+z`9?L^ZEMK;&TLR#-%@V%I^tC9nOn`m#e#0uX>O8aJeQtD zI0v}-Vv^5xnK|z*{ZBKe%+^$ugGo#pJ6dluO}`M?x0}UbD4ukYd!fi3nz!0~8>>PC zDcjun7vdzz-slSKe9+(?#A~&Y$e{SDrO@EDSiN_q_$g3p@=i0#75I=$jiWSj@!XSD zAh=tBBPfu#$m);MO{OT<0pR;ftiR2z%$)Bb7%h3R|8TrQ^z7fq{*0eP{>k;uLly@( z^TOXnu+hQTq(^4xP{$qm2H4sx)aZJ4$;vJE%%IR@r%=~h+O2$`ZDUt|HRlgeNPaWg zwQG$Hc$(tVtcx^4B`>q@(1Trod63rd7NEWFv^1C1(VYArvrSKsMcOb^ND^!$~;&OMPV-$8bDLSZ6g*oGiCi zI`1vFrxt#n)Xo#fun+%cdC|gq^^QAkZ#gy(O#Fe@$f(MZf!bSmA}!kM1z?uoK13H} zw4qdeggL}kG2$)JcE_4)&LA`KM9jZ_5H|c<)!OY#?3b1&4OctfIL3h^<&I(w2E_Wu zpWt7P)=7WXv5reDS#EpS+HB;kp>`nhG!T16yeT=ho5?;cu7jdE8Tg=+=wPou<8E{A z5%Fe`bG8C>rtJQJ&dU15(^l&mpO3)CXx%0Wr_HQ~sGNg*pmqjdI(rri5&0|D3maje z_8GBpsU$A3;@?hPIs89$rG&hR8!W%?Xa2dZ3wEBeFFtk#>|W)6#E!Ac$#3jdGk(%Y zj_e9|65t z;VJz8hR;~t<9|~nn(c%SEhq%xwG?dWAu#<0gY`#@SQV~6dRPkB zw;%#tQ0ODX!t9sq0;8bOIU?o*(bfH~q##vfkl1)(Xn01HLjjEOJZcSlg)~peL(AOgf!Q*f`&W@n=83DAA-2NG+oS-8T?*p}i$ziuy{dv%-I~*JydD5}YK_r#MZ|tsQ^kTO?B`&hT zvzrwhVw~`2y$5jK(uw*3=6p1T&T{13?`behgH}0Hj?+Or|K6vxV`wwWPmq4@T#Z9K zzk)=GN&9M@^D8?o$MmB%r}~Peu7hvvzrZYnS&?f7>PhPVdr3{Jgv|oIaT~H#e;@imhwOz~AGi;ex#QM{=*5n$iR#&7vEZCu zGphUSlLOC=?G|`;Z+lI=*IZ+|MGK|ifSKi9K3g6vgz3x=JmWTlpN+;v_BcMBoc{C$ zosev~MxTbDlZfXY$wzuq=*qt1XLy_pM4GA@**&nZRilJ-gF{GZcYHz6sZ<4Seo(24 zu~FA%6}~Z;h&T&se|%j&#%nr00Eox@iaxv;;qfTtk?Ftugcp=>F$quj z2~Q~DbP^u)6Yf^RSP~xa6K+ug*M8*RPz^Vf?*WdrOXV*&+5*xDzH>RpUv1o+Rw)NCl4g=Renvm(@j0)#n;_!HKlxWYTwXv}%t#*Y=S{)@&7L+d)+C(rY<|QGdU*Uon?H{ia_5!R zU$vThCEmBfU5#>x;qQyRNg_}D%ooiGH-KEP;zgh?zL-l4HU#T?n#*rg;<`}gnJ4yPI#}uT<&ghIySteKY*cvA6Ji#vW(eT1gj*k1Jk~t+;;YRq z5UIZ=uwQdaaz9M9aHET@4JCTDS&wCo!Jj}Iji1~0a!*%#?{S;Q&PIhbkcmQ7!jDcp zMSgMCsBjvOT~y68-u?j)=RBAA3iz0l1Y*Ee6FbQL>}hT$Jg?P1$nGYY<3=s^s4QE+ z93w>0V8fTdk;oA+(vht(-GzHR$>RA-E@JV^{862PLw-K1Uj}9{E+(ljZ@~{Uv^bpk z5=eS8@NB`#p4@-E59?;hia;G9tuks6Wu!~5-hNo1b{lO~Z^tZuk8R}woOu~SV%)oH zd%@kwGy4(Oj)1{0hByybTS2~RSp~~@7#r`qNzj&T3*34%@9YTXAIh&qyt<%;;)S8= zj&%$-=S-cAR zn}6}IsHS6?c}P8-gOejTJ@fs{t&z&F!rbd1TVuUGRkUO_XSUMUTE%qX&W5qov)OP2 z>h9w;jLIpT`8tpfF@5&_siUNPb)Zg`L<0V>@(qC2)Z-?4+@Q%ukL7(tH_jZQfinkk zpBr>=>k!K9gugk3f^_SDi#K^=l|% zu-}`#?Yb4Hy+-5eUGTjR@CXNR?MWmD8;*1%CU)7#WEThD524eWL+7|7fpJ?aHaqws z7P+l~IA?ZL*K>(G*ie|Q*gWaqXk#{=1HM(F z=y>ki{FqB9>h!iZu`M*mDBGcAOTK9i(eofZuQr4A{0mq77FYak6+ckLAEw#FI2HdM zV{GF96ds_M4U(d2w{ zk1L<6@*7>>_fq+Xb}Ro|%3G%RHgK7XUAZ@)!^TEe?gO69m6WSM^Z};hRi_MV4tJ;d z<%K(Kq0zy@VK^vs@Be; zIKZNg&{bs{VsQR>FG;+?Cz|V|{Joui?EcR8RnC}AK6%S_vzzI+?*qadhrh=o+_VV4d*`BgtQ+{0WCFD3jXPRg`0b5_ars@QI|H*rhd|E2bc z)UN!rkm_BTEn=aQTTfbW*ru*6R`1Ewm^dnQ19pEGF03Xk*JlR;r)8SnPnDM>D3~&TbeP!w;hwPls4D~bp01@g_ z@G1C2#YUXrxWB=be_x-ZYF*ERHLto>TWk@IsKzUnq=L!}Fzc9GYW2^luYRjt^O?u} zOtpR{*J_hmz0Lo0IiGakBYq|vpkkew&$Xn~d+Vv`^d>cIru*qK%DDVX)B!WerPmL& zO_bjsLI|2U$l2=x&z_OJgxjCzN3xgHz8dSHZ?it{T6%9=I(7l-S~ugnlK zEhq05L0DTvhBb=8Z%HD9Ov!Ec`Xk>IJy+J`Gi~I)ctuku*3V^22R}R3p8o}1Ak_LZ zqK+ElJ`Hl+Qy-d4$;U#b$TK5wZ&R`tYeBZ%k4rl#YSk*B&v5_EnnQ12?dDLc(&oKX z&5!d!l>58o|6NQ;idc9CD%4&@{Dn5RP*!j(`+l13{yp>^A zos#zgC)@RAJonEPzXuJK>n@A>CvC16AgndhY`Y~}XM2kNf)sbZnM4wK7oJJBG%(|6 zT)RwAeXg&bJ&izjHZpq{?a%Bom?iO3wUU33)2Ee#4$*x8GIr>T61jsf1o#)Ct}lO- z(8VpCvXIAUd@*Z%rlYz=HF%eQ~MlgyyF^ZVk9{>0?kgVw5p1xv;%OZL88B41rO4j=UW(6{cU@c31?aF}seCB>XQ;JJDR?xsc%xLqj z^13nH>c6)$m#qceF`zH()Yb{yiVdBua;=9gwKnzDZ?$VabBLeGajDaNw#Qs=F#-S6 zLdv^2vw;R$P0tT31FFA1o!(&6zuM>+)8urz5kTfmKYcvuVQ)o6-KLrQ`sa1Te>OP& zvtd{MqsAJ{A6()3UKFl5fy?tOBN8`sjXt)A?PPrd%3*k9&3xqdX&y2f9>SJniN^gl zlKB-Mse`2L05(Oh5Ffe3=ObN)OcpPpT;^Bn%mpx(moT94l5ZIaX#aZgy)-OezApq+ z{c0Bwds+}@o#@TEpDBeK4U;MpV00e=kzG^zzlyEmFE>o%q*45yVb!)j=jl{sDTley zHMzswEY~({e!G=AQ}*#i*Z6E@XZ!dc?-Z&3clL2jj82or&)UbWe5o_K(*emGl4>b? z^Lc66a!Qz^ah+z1dl@ThBmbQqG&AKIBZh*F{Cm^WLKRpzgG5ke=UBV>dU0w@h(^p8 z*(su2eT!5YRWLt_W@xJ8tVx_f- zar+|Q#=oFb<*Zw1pt&BGyEVg zo}aKLtgi`DKdGd->I`;+cu}5))ZJuO0~FDaB~kCU6agorQTveM)=*{7*M2Ci-4x5& z@@nB3!#k2$Is8ki_eL>Z=E%5xdzh11tnK3LLbA$t(m8U;1=#MGWC_mWYBjC8?)cda zzqYVp1+|e3z9E!Vx%Zu2Ms9$=$<<)S9d3cULhra5^s_SFH1`(m9T_zZcLOd0LxR0n z9#GQEOA1uX-{3#AFje4O#inzIJF{}MWzmPhKz1=O9!!C<`UkCfy8d}#yJMZ`L!pe3 zi(dR%%&OfSB&mttD&i{m#<;p$$ZYW#_b%)a_Ukp;0ePaYMZ-W=u z`{vLA%BL*Y@sb(!ThZ0VK>SadM4Ha8OOV(vRq1?HYCaFH0<`^hxj?uJbv8EDteU+HGonuj5E2`3)YG$jGtMK0+W%0?B%_8=2+{i~<| zNoRFJn?H*!$7pslEC1Y>iLE58aXOygV>4QvYoHxQ7kDn-4&#UI?zO zrg=d+#am~-qpa`XQI~B2oseTsA~fkm25)I;c0rlU)jtQ>Uu{;M>H<#;(Bj+N04=!4 z3e;&_)>e~Ih@3$N1s!0&%HsJo0?!LuDhFlXA0dl z4~t*hO~jRFq}O2l{k|^4S73OU>t^t_7+LNm;D$$sx%uX8X=ra-=;q6IW?yQ)*vZ;v zVh}7Ql*yA_=!AIwqJ`F=4_7d64aQ*M{Q|6BW_{KkrFex9KBCF)^43=1$@?*h;$*8d zv*Y=H|DEp-FhT0WQ*we!+>VgEDDxzEEAu@rb79D3-aHV*mJWfd7Wbi(pCQMg8pc80A!#8q#|(23arq5 zi%cJSgMK=GRkxB8W^;)sC&bFosgU*SMHuT?mqdo2a9x94S`v3K0c*DB1#Xp{gGLW? z!aZ^biWl?KdR8;19~x*^v*K2JmfY#U292@i1+B)V#m$_=bZW5qEP*!ct3I5}Ez1gS za&n}YGweE{Nfc^~I-K9HG2LrE?;ei#MOU+}Th+(-7*>8WqJwjZCx_yPy?4xjj7x8$ zQ)Qz|8M+70=g<|;L3;8FdQ!8!A03GVB5lEC8*|F~G@1VN$-f0SRI+0>_d($UP1m^k zG=BVT)JA@6Tjug|%-=mpn@t*HV6UXNMz6J|f^UgxNU&ym7AJUl*bOD0zwtkygmnuN z*%>7)*@%HWM~021Z;@d^^^mLWaf^~4j0Pt(NRd2nXpiTY-+|RLl*dJT zH6Qe(qnTx#!z9ZAWI>yHG~%2%;GLe&0dpCAyR1niHc_HapD8Jc5>x*^>w$2>f;G$6pCLF-JP&2#eIc|xG#4_i{c`c-$Qiq zfZQnOj`hCPa2%~5aYq5Lp5;pM@a>l1EZC9u6v5q(>CF<{%I@KkEwfjM*7`t5 zf;np(yy%@6sssD_-B|x}faIxZ_`52fG4+F2;iP%rDxiAJ%I;=Fy$Dq^H~@+%+?h>JK(xz*43%=g3-zLPB2QxbFb5<$@-+@hLj%5kx+gK zSyqrlcp!o@iHA|WZARwzrdsRGxfk|ENt4%D2&272#QNcs|H@>4P`Q9=Wwx!o-bNAA z*$9~-O63csV-e|#Fn#*(6#aFQs4yjD=T};+VOe0g?s*qc(rZ41How+g@tL7YGw(B0 zZ`E^pcC^>DZ-xDW_2F0@W?nQlp4A3F;JW*!sx#^4pg7%}@#{1Of-U+Ahle6QJsDH4+}W$njRL}~?HU(2u&C$MOv%Hf&Tl9$ z2OT{z**Q9c9dlw%7gl~qhmA=mFM;BgUPR2SAM6P1ft?wIdd5eBU^x7AaV7uyR~AR% zO0G_#!Ozj2V`H%X*li*2ee+bi)1Kt8tzcA&& z+s7Vw8*`P8Q_H$fL=u;NKI!&AbV~*a8DM}#BG0PZvX1p#T^-h#abI8GFII?RbQzt(V`AT^fJfX zq@fAa?(GVx;^(#ZV{+8|DsQW8h{rGkux0LXp~{u^goWmHQAcn~Qx!L4`ti>?mfJz` zUVhC4p@+?WQLnjpxkklnVFU*Rt7rG@P?WBAKb+5(4jhM21dxa4Ie4_Gay4L%Oal_i z>2*#X^-Ks=wgl}ck7p$si3GE(W@FXps%T+nyflJu*$r&aYklo=0#oh3s^sO^=V~rk zjO)UwIla!!tH2r9R^uO4B_goa-if>V)I+%Y-r_`|@2(Z$CfD-k^gJml6MZpAo#*@S zzR>ZjAIy;`y?iG?&U-n>np~aqiS6b5Y6{a+A$^J;aVka#Mmwgl4^6)sZ9{a-Irgo4Y4;3ZKz=4ImZ%-~f5e z;mYL%au`?une`nRcy@X4sAW7hIX}g@Gp>rn_g$DtAXMwBn3?mFbych}Kgv~cb;kz{ zaI}nMQ3H17jO0*z(?D`>>qe5?!(Mq$z$K8SfJ;JAd2MTK@8Evxg2%0k>3VGdTGs^_ z`{*0%1l%n&b31>F`MZz5hxz*pf6wr@fxnEN-Fo)y*_}WAm+5}e|7NA1e*Pi*=ac`} zsXbEU=-a3FyucD6I=R%M-HXvLN=*J>m+Mgc{GXoRnP1ibc!bS=_-^@89!7)y8K5Pp zQg1h+IXSH;OKu zLN&pL1NqmCX3yl$2;$>Oe?z9TZT)M_5V z`}?dKXCi5h#rAt{7SE;wyJlLAQ^*Ii3GW0unKX6Nvo?)=_2<-(r7zzJfp-^Yv-5r8 zF5gG)^6oB6Nab${7SXWNvQb%~pPp(m)DkS{`aN%#?r8Epj7ljR2I92b>3^aK2BG}Gl?_$heN(N?XRFSfoFSFZ|fG#sZMm?vTS<{Z--L~ zM9Wh`-Z?zH6FnO(u_U#r@G;`-qX~RXE9Cb)* z3Ij3mLU=ldn7OyYolse&SNePgq9VD8Q_eybDmPfw|({PV!pXMXVwDtZa|LI zgzl(=JB+JDB$YreYpB$qYF`AuCJ#yvl;#>QymkPGWe;pBQo zqz>olAvtPL5!BH*%0L7J{1)4_6)JZS({p66h)YZ`u+Xvk5Q1|L9CDgkb z5DZy+58}8s)l1y{*ZX2I_ASabmrXlPw5{g9h>hp=HmZ4-=2CN2zoN>W`Zw)ti;Dlb zf0kVH%(QpA_OIao*1y5(-=9%C?%qGDSO3lz`syd>t!w{QAe#QK`se(k?mWwOie2dw zzwyWSI`$Cs-+jN{eTOO|K;*{%ayS0OS0^bw-(CLksrbX@2S(`Oyx}NCphmj&rvA1ytc>M;vE7viRW{y~e z2h1C@w7E23El~RkM2UKjLrM$($RiBZSL)qA2i)o&+CbfpnojI!~VYswsi_LmUVp zVmyHEe7g}_Yw{!7+bAaG>8RQ&a?C@0RUmmVdA4bbg3jjalWZQ{RibPHwI4DT=6}rv z$5w#}-Ej-Om+kawbgit4Gr7h_x%22)NL!;eQwP+VfYWvSc}jA&16G=$X#~kg9r3?#@T*HXD~|_!!y9d2Nw!I!dvuL7#GycU^NrZ{Y+%OT%YUh znb5IL4DKP=>PMo0Dl7Rku;5aweP5A`(&uuqAu7ndjP00%{1iRW(69`7COkZDf6pE|G#-v#aO=lw|?S#AD&AHVVZr_r+s#8Q;4N4Y^f zlwF8?KC%DYD6qETjsgpf_OZNct?7%n96@&{eF_oC+9*2Dr;$@N*fmvo8BsWW?rRgI zidJ0R%TwQTq?0|{aly6bT51wGG@FJQQlJDDTw}HLDTe5CDluWkA+_Om^ZU}%{8`pr zZYc#d+q%cN890<@ewy*4uODQMXb!iON;>t0A*JjtKknnI;u5@|LZ1!*S+>9B-ZByO zAWj@83gO(n=u^jd^@;U4e-k`IpXc;MMRsFf_jzOb^OyeT$@X)B`@Agu`78hP7(Pb` zd+#H&or=HkKM_`ob_cnVH>XQ};(yMjq>V*3QovOmB^as>t+}xvqv}A;(&uHwhNyIv zpbn=?xA>)7dT1ohPhYduMKBdT{decvzL@9;E1r83oEk-lf;itycuF?~V@I2}F_l61 zcf*nze-ATZe!b6ZF&|=2+?nv#;YN_S-EyjS4#_R zIewlt^6(v28Vbcvf=8}5&fg8|2vE^iEKQF_ouw(m&Ih|0pD1QHNfTj;HoxKo!~NKK z=5h>uAp8(OZM@YX{MR&Ru3;dA@GGd;xqM&95J)tEC_dgthor0y{u3U%xa0SJ{CJhf*P_(9?K+O`uocC_d%)esrA>#aJS1^eO#&Yxrp^9Af@>or>2PW0}0&?3Hfs?Xy#fo zU-pbThI*v16VI*T+583*zJ~hF^iW433I{ZTY}&g*zQ*V_kvP{Ap>GKX464V_u8DDh ziVaT@SG!sdE^c$^KL1)_(u%{@;6%}MZK4OCU)b@SLhEKVk^-j9n&a5&9iXei zYb;%zt_kZ_$zyCo?WP9}(Y>!q?Y)R)@p5b~`9rUvYgcx|aAi^XA*5w}7~0MEoMLhG z);8VJ+mf!-^RxGY3b*>NQ(u2}L#gmP4Jix!mV2)dki9!VTmcYa&j?k-%3Kb%isXvQ z&aTh}<%s9M2@#rCGqhwJ{{Z12GolgUVPYu0?;>8k(^=))%u~zkZGZc5{7I44MFmd= zgjnM59IU?Vp~pUYtZ6Q=s}CeWH8RxZ?sEuP(Z7h^17)u$>&7CLN?%}UnHQ((yADT+ zep2yU+idT@M`-y<7yE%{yDr_=HRsO?gE=zsL9=ZV>(JLM-N%47YvQT z*Uy(A9}9EUVW9SK_^mN=^I;z%aJZdH;B1-)IGX`e;M`AI;!4ZRiIEh~A1PRyZQX&o zBUQuo0OaDRMo&sL_FE_DvLqm}#!fK%k;lw&O|7N+#`9fMH>s&Qzo||Ja2>dCeS3v` zsKMc580*aQE7f-y?eIXpmo~!Q7}^LE7O{z|+vTdVTFwoir|{QqL4KZhEovm?lEklE zFuOB57>+>gH+(i9%UTxC{-pq$<^W4n1K1Y;EFAnvIGC!6O8dcpG0b-ifv}e@fl$B!x6@ zhKDRg;bvja2ES~^tQIb`3xn(WHC)hKG3tas-E#E-H9gh0X|7-u{$3*UM7fYnGTB!- z)XXCrsNq2WxEru(4$08=p8H)yXNv1Q>IB*M)?%A+JBxE8qmCa+PU1gDkJkBr3{rU- zmS;{7sS)j)sTCP@V@~YTkz>5CO+}q`W20QIs-w7Mgc1Q&&#P z!O1C4y9_vhG~*+%`0yrs#6ot4EfC zj>eg{X`Pu+Q^ia;P$0x}Z{^v1h~`)`!QKjLH-77+-j3&omuM2=KYIn@@E<8LViP2l zy06m7zmQwG_mUj`TFt>rg;=-Y{Zb8JD>BdgYkSA>pMwOPA4eSYzIv=<2pq71;XX z`DJ`HV@ONKB82iL$zT{oI%Qr?Nl}^&pweubQ6GYqE9ZiiHBbnT3mr64MC z1MD(5FTR1C8CV+s$!kaA68P`}hXHVjG+iswaYnRm9H3A8QpM9`n@GM(v7PN(=PNSP;ER#BAP= zr>+HvjaDq7j_CAxUJ6Cpvk(4Aq|t7!U*)@F_@bLcwwCCknAH1R3s9hL8XzZYbdBtA zEB&lC^{ko_=%6~y90lS@*OIi;cD2dgrIrI!%ifkw*Qu3DKFrKe9jc%g-}sWQ;|srz zWebF?tpX;`2j)E%mc&Q=GjFEtAu*++kJB_&#MoyyCoqy#!56$U#cn`S}Rzb~3 zAkJDYxFuL<4Z8kCidIQu9$kc#>pC{t+*oI6Y|)L-*dRw^xAAOhFzAZLa+xkmnKA7D zphk_lqP*M6y>W##t-19R3b{gIAQoHQg$#!#;zf1^RWMw^rQ%rTGN?19)IH4`H?V%f zK(rLnVvC#S^Y3fcJM)aqq7dD&GEwL- z{PN6SYi(az$}RP6!z{GoktM-1@Mp2TJ5h}4KG(Y);s$Tg>z#YoLVvZPQFW=K zo+Cy9d1ovtoSrzJ7V>iU2aI}RrA^O5L^5p_zF62?>>7JltVb-K4&1KBuJjwr>(`28$<5NxCNS}zY=w3_x7us9U8T751wN~$nY+MV-~v%Umxz;JC91<)w87D zR&&V3YBX97F56wI`Grl2WrsNSihpSCUr9GlUqUlp?&ErX*gkJh_9+`RJuB9G)byNK zw!QW=*s#`he;6{Y5cw~p97@emsm;~sQkxUQ;4f%U_Ooop@r#F#w`3XA(QL~Y5{r1~ zGPrKqQ_y8O^$jY~6dQ?qQ&g&-r=|Rax?>&;I@}GS_EsbwAtmW0_9p^zixB zfv$dYf=aHUNSpF9n!j6CpKG5}<+MH)c6v;18l9R?e>;d0BM6Lwb0=3#+E7>DXntsB zXfFySz4%vTPf?2_B1ccm7w#T#6lH!wH1=hgx>kqDb1fC-jsqgo&%y^><+;c5E?JXp z!i98vkUqE1)lkMxF_(gAxLB1K$!WHl+&jcbehndNss+;2e?AjNQ_XiNZ2P5~W%E_Y zcP-Q``^%xi$11p)v<+tc`Ibd{K0SKL8u1BKT0YI`7{!wu)dwAor zf)e{XqS?5l)%SE8nwl=7ky=0QEOGSEARiZod%dQa7LGU))=v2&Uatr~^2{z|1e&1>9Ed*fYw@(&G#Dp|4BT}G;~v7-aQf+3?F#-JygLf%4h>FvmG zcqWfM#;iUa`8#-`{gKTq5$nhp1pY{?P^y|y9;5oRk!_Uy6R4 z*i$cR0s!rDN;%uqpcThFAO>&G08Aa`Po>&n6Zzt8L*L$NL`#Gv3ksmh2^Z5DLI+sN;Zg z)gly&Uv#k_`1-YHU3qLP-sh&?&Ur18(F?%f-ojvcS;~SC4I>kqSd-?K&4WOJ(817O zGublk0rqT$c7>RcZ1yy^FJX5uG$!j&)<@?oF{D_n;wafy`8r(Zg5L7)yKAn*vcg`lNX15KlqQvl1T{8A5uOT7ABW_S--7U4(79`!qJ}29 zh7|rpJQQ0pip)s;LpDqV=f*j;!;v|o^PRA?Lq#s7wqIp56KX7=jQpV|ZVBe(aEpAz z8%AtfzjWZAL>u$3P$drAV)E7!fGb!tE2~?yGF&qzBX&V>OAj36b(pT^AH$mX$%qw2 zAgKnPIAId;YW?sl?P{jb6ksTnyrqNRAZFS1Zs~k#pvE__Q1X{$m5En)!t7JCwMXD) z8yq*D|BrVzc5vBP(LqB9arSZtw_Jy@MXris8Gkdeub2+4so`>5@M&$hRe6I=YwJz} zVu|0pNc{rjvUH0V@|5aC2z;uh*#4;=M09TL4ciIP*u);LcoBtgIxY}JABSrcj^%_I zL^a!fNPml2LM(DH3F(7#oH$JdYPSF==bB=-(ESew4$MgWh;X1VrL{3uKYI!^zcJ>} zvUgH8iNHcR1Ut0Ixt1-x_O$PMne<@h=#p`HbB?v*{CS+bX$>v=AUl-F9ji80RV$ey z>>|B&z>$W2InXC|(5{?|i2vm`_xR^n$Z)&v=tRR477aqj5}{*o#G$qjI6;RnG2WTs zY%o*0fh1M8DLM?gkY4;?S2I!D;`!h0!DMe8;0Ag#wGsU|I?S$53=}w8nnPl+<8@(a z9gkoM30>Inrm;)%Hjf&YH+M>>|1S64I3-!gd&2~NqmFKrAX6*f0D3GWwce7MQI3w@ zcD+Io0N7Kun`IX0=v5snLp3W3ORmeC{j_cydQ<=ad30Y!F!$ip?XZ_c-Eepb4adx5 z0X$IK!pV-V!1qc4FS^MH{I1FR=#TV^PNb-KlAA`l&geFBNyxunzgQ~L#{K4r!-ix$ zb^t`q-`58Y$#{_WU-@Zi=EZ|M&yu=?S+JY%2*<3v?7-mk!lITG5u*^=u~ysKVR<~3 z%ZGizumT?C`|rKZ@-dtj6ebt4eNE{8fI@Q_S}x&K*H1~j849(J6tx$WduwbKq6=Wl z455}>m(YoH?x?CBlO5|D_6B=5W(69*CtOR=tICo;GG>JLf?LWna-xSZ3U|MW#pxjO z!O3enevEyhPgp3g%kfG`jrAhW4CToT5&f+rJ2n(Dy5TwvMw^+N=P2ncnsjsHWD6n( zDeNG(ne+V|(hq8W#PcuhrZYQjW~~23cSY5-WY%=-L%0pPPL{LZ+=!QQ3lUDcZ#@K^ z?t+^(@MHN+kkF`GJ7U~nIiXMwc!A|NUF)FP91t|#dx86!6L(V+%s!sm{L>z)@)`YD zyGWa9?UL_0wWtu#=7ClzYPICWh{cmQ*M5+m-YmBH1s4`3aObXh_S$L3Tseh}o2(Gl zfJcA15Ido`!T$SbZWvGW|$|w-1q&h)ZANL{TH5 zMNAc$Q{+wahUNv&{7*FnTtELt-kKY;7@W4)&@!|H>`u-hB%`IGMQgaNGTs7`~0#S;+)hXB4nKcZ)Orx@40@xhuC^c z1NW`uh)s9RS9iC#grj>8w!)ER5uJWG=QUq?+ZYI>sc1;Xz=MZmyw2Y&{?6g=a{jL8 zTL!+_gm%sBDc5f2_HEO8_RQ{d#+E#>i~MBoRxbo~=Gr6dw65^JX8u}hdCd<4=Z**r zDb46|zhSTe^PceB=W55VPJ+y9whj!`Jwd?Vb{P&K1HmZkZdW;E zl_@Xqkl}sjz3b%!8b8Ph2gYsLvaB>5D0^S5y|2X4zIL)DE5!_$Y1lj4%{P5DrgJM~ z$SKl?fo>hU(+A|VkMV`*WBni7%?g*fFlb%ufo7(k>mFzwo?jYRw1Ok<7X9`#(|EiSy5+Jp#3tGu?!M$t)mi z_R|8=vSnFTbi|{qhPmT}cH-jdCs5W(*TXy#2_CBiVv4*93x&@8KLTBx?95+&8abf~ zo0?0igaN5*!`|WEdzvRRPjg&w9*{E|uvPzpa<}w#<9lu&_f?_OG*WFQbS9G@EZk2@ zd3;9qV8@vSGHW4#F0zTKML_qJ)3YK)h?e89gtr^*S-wDRHHE1RABt_KTATKK=;HWf zmMWy1wO7%4-6nc^6HlrjP{wu3x&IhyP3Bhq0?4cQXhwdhPR%`1W6?djKe_HCmy1@u z`AXM|fi{mnD@z>t9nJP*>>$v*_;1M(_Y4#4kvNuX|JM7` zF0om5u^^V7?n0?GOrnhWve;i*&w){XEx#0mZOO`ZdF59%>%i0j&6dr6xm??rR&#y7 zlzo@^Q}fa!=el#Ab;g)zHvFJmMx6g*bNAJDk9jeOY5W80F1TC*4$OnoyJ!uE3Ygn5 zz=}E9HW_bn1sk5Hh&lUQeQ7f>bCRF*b#`Bqs0 zUDF}YfsVnX$Ye~>eiU?D^6ZN7PKnL!Cm+^2!rs4TnX?c41}}P-rxe}w*$wM}+064Z zdD#;NrscT%`NCD0Yz?76qKI+Lz$&6`UxI-U&BS0j*{GxZALDz=taaG8HRODYE!Ms!+bcIh zVix!79ZBZ(LMU+FOCq$OA_e(9Md@%&UP9E8>N*#CIk*P_mAQ(ZI=H!UZ!^kCVE!|3 zHU{{b&^_tta;nH^(7|cMyBs8hi%c$Nl1{u9S-ft0!QwSG2%JWLA$&gfL|1&WCSFrW z%&|c2AykJ;beZ?5sXfW9YPv~=sf)8{EkH}(@VcC)FF9E?Y{q+@@Y=PCXXb{nm+@%L z?sy}^MzY^D)9`%PFz5n3ibxH^>RY$TR$r@W&&>e^W}x4mXHhe`pz&z?u-Z8nnm4B7 z$-YjO${TrdcKRbxM~J5nuyK0KZ$Fbj8mRr8f>y<-B^8a&6tgwq8vBti&Ty(^`78A^ zuFM+S*jn>z8`LCF`y(Q2!ZJ4R- zG!qJWb4Qv>|1ExR-!_;qFZNu}`SSaai%T3$qFwOO5DG^Vi1MsTZt?*nBncZ6I9@+) z=TdAT7El|f;mfcer$GvYgnDXLPqjpHC7?AfW3UqY0g3s$OFc`eYn0kosrR|mQl;w9 zG+gYNOPBD!nZ#v({D91)Tf82{;zu`!(zV791Ytb) zg-W`)gzl?for~AKbev^kA*w4a1=3WQE4XnO84Iprs=k)&vQ~@GRC5zAdYT>{b)gow zv96Wpsk!l6*UH&y6|BFouU%{8v1gZ<0jY;)s7`Cm zX@lc zX)Dk1E7dx8ITc^7ienWf&sAElO8dD=4^X8AyH(o5uT)-9t{=11k0P@#I8o z3>9tJ+Vdxr`P;*f7j9B=GJQEK%*yMC(>^=c1846+8s{q!rgfW@HZTLFzvQ~^b}UL zu%8pZ&10(0mIs#GlwaFJ6*NQoTCTQGZZ>`vCsn7~iNu}m1bm1J3URTYMjNXBG0M=- z;p}`NH&#hA?_s$~+BZU5q^o3Pd$wC%ypR|tv;zkr7@*eLs&Ot|A{F?OD#R+JSDQ=5 z3n!Zuu`-18F|)|rabwEYGf+Dc-l&D+!cFPDP8pAuiy#TTVb-4_2lWlW6{ziF8ELEe zE#W!@c)n{aREbq7)jzEpA*mwhp#VFJ!;8vmeIvkKh{gHy$y%K2gtyBg8f>>PYempl z`)+g>d0>}C zQ^T|5Gm%O(V4lOxQd9UV7RMxqZ^TddP@=0F=l)XtkPGBB?=ly0q4TZVDMP?`HH=Q` zWZmUL+i$b!NtT)Yxf@S)-c6l9Q!0;AJ1v^{i+x4GzcURJ-?B)Cy?>*Smhi1rNTRhC zL5bG0@~vpSkyrNlE;@VKzf~(A{I<*amwo*8bh!?qd##N*&>QYa=0louG#EX*)82ug zCd|)NTj2YT$Q2L3t-aZ=MvU`G0o^pEvf*p-3RK@5@@KiHxN^eTmY|WlQ zP^J7QUxZ>8qo1!X_4V^Mzlf%0B#t^Z?2s*OH6YY7lZ-$2mjcNjpPxC8@XcO6gs2g} zMvbT|k++F+<(l6g57O)9+!n1Ajz2p=TQoTe&mG3-c(0i^f^Jy;xXk@#(~puB(SaS! zCGX89GGYMEc>5S}v*=LPw4nDUjD5*Qu{)zS4k~#McTF!~?orit97?5XfEDcI{q9=3 z%x`TB;W$W%cq;(mRjO}*R5OyxQk~^j{dN95Q}|?ZQ=QCyEz_6o%7#tSnMm(#G+t&7 zDtYzr61#!0Vrsw`yki>2Qapifo&7+jmgGWaPvcRlbJP;V^P^{rP}iC-nA7}1*ya`c z$i4+LH%p!QlM!yTCyriXzt7UXWVOisYUX2LJ0Moo}wQu6}u?6O*Yk%Orb64|F)$Dr{9j2NK zsk!kgno3SpbwR4ri3Aid2ZrlUu(;JKI7v((+8=6RKfYLy$+AbxvS!Pv-ZYaWKG0m7 zdGb7JoI(~l^7JIQCH5kI%(KF%B#`v{dx*A$fyfsY_TQ(5a5s8QnF6&!n-hLvX|_Tx zB{~C)N4t5O-luq@3zw>0YBal=I8vj7IL>mj7ExZeMEj4}L?EVPI(kbPA7pXEn%8Ff z*pY9o@Ce~aQ2O=e5V%X?Fb19gz4b>>Fi^WEZ@&L}a1`aDGs0e$l!MW6-n%0Uq66k_ z2fFI(IO^8a(Of#RDE4L88$FEb1C8GfF^_&L8fldzRb)f|ziC#$rL`D0Q!WUz!Q9_w zs#E!LFYS|xdwEX@==+Rw9Twoyqo`Qr2R;kWduOMrY zY;PbK#n0C)ylw*eW{oMD!H`lE|BxF0Jg1fm-_^qo@owwIG_5Yh8*%Ay;gHP@R=#Ba zvs$4;WQ5&`M<*JgwiLCb{LKz@l|WrYK`9&AJvu1W-{8Ehc4+#59b#jND82{=8aEFC z!lJ~Eo$6Ap7Czt0XWc*xn!5qje5n1G*XjnabAd?Q!W`~|XE*wl`m+!a%uTMg5$`~~ zoXQjNx(gO$pE3ifB_%>VL4vow=JQjc7w9^Zkis;M_SR}gmR+;0D%P{5)Q*C7x)DJI zAwrRB%@_wFw9H9$Ncj{vlD8pwu{S9Px1tLOb3f7UitDH9y@F_GtT`v1B{}X-0^%!V zDlYd!r(ZwBW+c}^!G?$VM#iCJlo+#=$xM?h5P{z{lOuJf3;W}rW8s~+(Nk)DjP7A^ zD}V8Le#@D-nB~!mi zct4nCD~CX~&C(^M#D~P}kGoO_^hJD*GrIU!dEG|^b7BJ`l_#=UlzCrEHhV-BY3k%ilIX<{XgE_SKj6g{eX4jzF3o@(Q`bQ>!)vTMyRqLrZfiG(sZugd?R05?TQ@mDWC^H3B#U(E$WKxM zdYh{;W@SXVnR*L75u#$Qy&7rspx>x=Qd1lYhndfmJCpABwxfH$ zt$ahUdh{@2VrXgEU%rf{z*W9yh4+%`U2SIAdinBCEV*eB;>cdm+q{>m`N*Q+?;uk2 zeR04i#uRO& zKbs8oHUR1k2MuUU-qlIQtq)ax zF;U$4IDvR7QhBhUgh$d}Ctau>P2$hV&%^yy*V*TK^z*ShK<9t7^8Fi0tt&tNIM>fX zfT>l{d}WL0U)|aG>!Z6gezt4e@tH=xbn;u*-kqu1Tw|AkTtADyK6dUGr@5@wMc8gY zI6Y*Jk(y0>WbA={M*?KBQq`mJHBxt)mj_01vvw81SC!2Sd zKYl<}tbyWbtLCMU!rI_)9Beom;t=~35$#JUiFz?y7W@O!`{{6+dHobS^sKfc9W8x( zvRiG>D^X5L?_4X4P^3Oxc5C7dVb^|WSTz7duPx(V7HJ01H%Kb7bjl%0-lt^p9v?I^ z*<&T>?P#VBE<&LY5ZGxkT(u2nPK+cm!%P=l!hEt(&5FyRO3CuROXlDUnN{*->^MdS z-XFU??7bf;=?K((N+HqY*6!RGqv4V6IzF{qC^Km;M*pC*1+nYB&B^Oc9o+??C)3Hs zvuuZRyYp<~LNuZ{T`S`Ic+z+*Y`mVT9fGHU^5h&-<|@cl1rb-lvI;7QP=R(>v2=ms zR3O5B6CAu7D)}mK(S5xOzaUT8}~^B&`B0465Lf@Y$yeAb5?Ilh$G&S z%QXB4t)k*@x%m-2zzP5lpb%ql3M}XNJDkI7g?AL%NirVL99Nhqk<2Q#F1H_-7$2h~^Ql#pTer|wHU{}AeT=d;YMv|`y{;#UlTMS(9*Synwo3xos``~bv; z&_o<&g#@wMXs%srp0IYySgz}xFbb#Ri(~87i(^CwR9s}9zROW>rnNM%7#-i3g4D9cw#ek9Ayu$ic-+l>88@8=ucl6sKQn zPCGWm+)BmD6hO*$okzLN()`1{O0z9{RYZoDe&n*vIL!eIJB{{8c8bh8#%j57SV&8HGGCQQaQc z(~f1MP6Ctnk{y8sa%6I(15cRZJ2~lOE(mehV?IC^ z6I1aIvMmm4hVG!puhC;oOL>#Ld7DPyq&&0mxAq~&{BD9Mc2BDw%^w+ZvdR5N^K};q z&7bduLfv#%f3P9bmCK+UGwU1(-7Q4wL(Tl;DA!sacR-C|5WafbXom3?Rm>J7K60XV|@SXI(c-!#EN{rL!eg@xH!MMWvp z*k32#Je%b>l_aSvAcM{lXPQ(c_Q5jnRu9V{QxCMQ_#rBkfDTqbioRvqD(H z1R)9tIzqrGh|wS>1ayWZWI_@MB8##`S&Sud>xO$Ax3EZp zkwx54R8X(lV_a~hJEJzT5C667Vqzn4Gd3gvm-?(z~eB<#}>snrqSLeKjypFZ) z@4+n?`U(t+Y%AeKBgXP&ptRp6t5YM#Yi)C~X`eZ3ictze<;lgOco&}4Lli5$*ch%J z!A3ST$!+)=7%L@{i}0+ThOAPP$VO`-tF48rPg@w~ep}r#jt7}qE4c0B^VSjotf^sY ztOlD!uoL;#pZwcMfSuF|Y(Bs`YbK#gP|xwNZosqp@on(g=j9MZFa)tqL0k+T;5TS!-qiw8)e%caYwVvyPXx#QTe72!u|McJbL{uS zLul;paO$z&<%|~GHg&Ygd-T7{5Cvp)zd2uQ{oCyMcg+F)HJmRZk}lsr$k|Z&miq1% zt7cf=twi|HHEntKgG`Or9G1JrTl5&EtoLf?UYA{3&>)PH{o{ULqEC958h`uijL zyS~=K0q|mzoXf!j?RF7#SG_Dv)KfJ?wE+&dhwvmi3`<12WwxXT7X`w~jFXCtzexR+ zqnm1_zsl8FT7Q*W`l~{nto2s~R7x#~`rqiU_y06|yoLTkd^fYPCUUMgx-J{WArskP zi1*}}c3yJ7|KwauREpSmdHjHS%N8Me9(f z*l$qWv9t(K++q3{4hJ@=I{I=eqxDgVjB_t5K_6i{gg)YOKBSLo@k5=e@h$@%ftUEz zpWK~zpK0PP`bgN(2Y83{ku@+)eYB1>O?`xc8KIA&#^w$1h*)FuRyeCYcTaxJgZM2 zH57(eD)|($zh1{QaEhh1RM@;fgg*U^Iwz!qC9l!#Fq<_Z?Yqj-{7{~81Q`SK3|B&4 z_UHs#_2X#FaN0pviqjZl2f0Z(8*SCM_@RxD*Z`ECU9R8#yUOhg*i4D=8Wq)J>9h3uj`G-d)|Ge;~WNnrl7oSF^%JD%2$F zhdxB23goxqAj;%G_~Q$mv1~3v7X=k&^vmLbVd7AX)hH*RFmgtFIn|8yaS3+2&C^ai zh;AM?Ux?uf78T>%wxOG(rxA-`Sg{EIh$uM@CG`g`j@7MC{7r+hdYHUkokoeLJ9fVL zzOTHO%dBRauWa(lRw6eFO+t#XXQ_TXr>afEL>{_P9u6^H(w}?+H|yWV7!Y9y)}f#) zr=zW!o;Jk2q6d*;d~{Mimk>_&p_lFFBzczLQ)efFzVIa>XQSsDm(d<;caUCetYUkb z@ah{0kq#u3%Plk};$gRYn0onNB+GM|%b1JY2ut7++^)RO$UC_HaNbxy7fZ$^(!_}!8KrJd+$)gq#z?mihQl!c0(;C1&Px#Ud3#xJBW5mO^oPUgw zcAwL3+$bwDYV^#5zUBO3+{}N`HAB3?1a~h4PkYXC88@%POSRsaK+BWQjQG=OE*w=vj1Zs`{X-Ocv$~Th$zq%Dd$^mfKrX@EL+#H3sh+;RulV zM4d0So|jVD3zFP81R)pI@%q08bxI$SBrj}Li~>b6ds-@LWvV_N&)u)aBJKbq0RB3p zr8wxuNeP&z&N2>dB$9JZmU#iAuNk@4{(?q=6m`u4+cQ7|LlSQ32g#Dvk`EU!80`r1sU8LNY1j$8EoU-07!&{>u4fFo%=W@a*%JAi;83luUxr2;? zbYE_|D|bXn_hst)ik0nG>T zJ#ZMGAzst*th&NG9h%isSg#pxBBm!(8jxljx~m@OW+?w9SWRN^!q>7OtC6W2z%%uz zw09k*`s+{ikp4 zr6x9bf@~hvt0%FqLJ8q8x1)?64W>PBu2m&Ts_DlP`<#l&^hbREb9f9QRq7(ztEHk= zV1`plig4E3lBb`#a8_BEL<@5OIuk`90K45-sO)Us?W{2qprj0CXYEw$>|`Ih`EGV7 zd-hiSkb&-LJcr%Gu2Yp#PON);*exGu@2MI1;H+7RN4yWiVQK0a!1|5zw5xdn z^1Qi*ain+=muJhX$BlcNGsDIz;9K^{`U55(v2g%l!0Bu71sgT>s@J0;#P-o45ZjB-X{i-maF7eo zEZQGgh0R}@%)uYi{`o1~>!n#h74Uz7-xKiv1kAv64Znc!52M{^t*g+Yz}NPTD-yoN zkJVNSpMV)6Plz0CP|1&IW;ALjiu7pA2|+)v{&zSnUqr|G6L57y=H z;(W%*#OJAn$lUY;4rlv32r|bBQxC?P2XTJo^Yw4gc;iANf3njzidT`o ziasUtXGT=q!-{8bj;{Ces_n;zG@LiAdq<^vgSa)cEa$LXi?<=I2q3M zn=rg_ZMJ6v58gX{^V5U<2p_tt>Jux~4m$7K41u+du+Gx3h7;CLXd`-t_zcj2<$e?@ zG~Q8z_tGGGM~&Jee_g)(S~V>6tkmGp^M2JA&nSR+;Su{X&?lgxpSoJNJb*3duw|fj zJz5oySy0oJsv0#j)o>8#p~xL1Z7kg1#b z?ME0&klpHAPzTEnyiVVZye{a5Jj%L%f+COWdkByFshwvEUsghp1LI8W_5$MoXQyB_ z8}_Fjc~?V-(-8I(!U_w5Uqcv02op^R_YlJ4gpjKtY+0=7t36e4s3n9v3qp~GkU$92 zObC+*fl-seSU`|iuY0ixhOt_!{(MNA{FhrVu2`>MOtxP1go5_vPabh6l-`nl>bt>0 zeV&J>o8~^=NqG>UX?tkJEzim@tXNUR@^Lc<-_osl}v8li1pKL<7A#nJ<|kz8$fGX z-FX~_Z(^GQR8ft(A@dUsaIJSZ)s*H~jdkEmVEwd-buzJjf>^%{(8Wdxs(=Ie^;Ah4 zK!}XeI=B=;?=seW(X9C%plNy+qb4u$EjEsn80`v;yEXt`p>Zn*37L&=Dfo+12%}&j zA}vw*32chXWgZttP!sYQ{UT=Fc|^Dnccm8_Kl1TBJaWM`6n~XdV{v#euz1zPqJ&sH zP5l4BbW~`RWH@V5gqI(wuGpgkDL8C~vv(7K#`Z#=Cj_L`VoaPKS@+5Z93VjOz7WQy_30)c6<-YV1 z>_AsnlLd&c1KntDqYS;8WBm_^=Y5lVdH67{hDKAqoZn%|%0cWSA|>8e_P zKabxl%%)t$?O&Ri&&<$X|;fEg>Z)RMMWCi z+P=K&>j?Xj%O>R1)JCYz=Q=<19rkTH(hFkJod<6z2367NAn8nstUtN#G)%fTfK=+g zuz#%_gtlehX4c}4Sa?P6to6xCfH4&qZ4vqKxiVG1|635$VO4OyNn{nV_#PffU~wl} z4$KwXFWE^fegk&ILL&WSarh@8q#kWKC zlnU-*m7#I}I32i~7b#ZbS!J2HuLr7HFa`+jTpl_iLiVu}F&TZ8A@|Vh>mLwnzEd^P ztkd^FxVM=KY8ED1sEB}UUBRHhA=9(&)wca3#0<;B9jbXP3HS5@89fjqrfj-|t(uoI z1{Xq$2!U(vCxK&AnrrVFxar*{|Kxa8jaNCFm%`V8^Xg5Qv4h_WpKqfQRUbhj^~ow* zm0ZaN)$zRS)a_6WJNRvn=&38&frbs&0hpycebf^GCaw0BRvUQr%Yp}pXJcn9=^g5d zdxQ*I70&=^PX%yTeJbxOu~qeumt%3N9Kj9ms>Qo?CJ6}?Mv6i87t9Uj2x4e&gPLxB z{!)-1+aq&#G3YGD$`2B0S4$C?o%{LsFJ^6Tn-o#T!pXdAN^%$ z4I2RQTuwInlfUT?@w{h%9$GhmqTp1PyiAu&VafTrI? zmGxreep#n4%#n^ojtp~uY6W0n$eOd3I%E@d;w!*x49^a44C3kxQf#ZL!h^Hs1P(Xc zb0qZ|R3$2)Xod@%bgDp_khKsW13jc*vW>`Y0uj_0vezvdV*}8K-jX{mn;GZ^~&{-upDV|IW@<`8gzmlA;o|E*;LaSt#LIb{P zIvX;kxSIE?N9pwQC$1q&p3_bK)elWR15~2j$@c*XQRNxt{tVQpd$j4BD%~eEi9?0X z#xgQI>~+Kdi|{)B6Ag&hk>l=o_K-MNEPq6Th85yZeTYAY;WFgBLu5@q{#YU#M`Sta zG)^Ud&S}LTup-4`MaXj>W`$i?u~tL>0UWnH>p%Ae^z~p-G%IdLd)7XUwOeKRYes!; zasvJ!S2<%xkpDwNzJqkfX(r!I$fF6Fc!$h@EI_vWH92vffyT(BJS67G%c*sDK%z>d zT(9*U@5*`G(@{%Uc;o5|^(kDL;LaIrrGsweEVlA*v>uKBZnSH*qKBgVYw^G8vuODg zV;EaiY3c^u!a}z2nr>m|DQMwFw(x)Ee{T)F524p;=+_c@S}XjIv+xfy-||11{@L13 z&0fGU>217l;cfL9SFAej?Huv+)~nIj1pz~`@r4L3(?PC9)$)%Xuxs;oS*Nf*fUq)- zSt91b(HQW5p`~ndJUFcO;TMLFQ5$e@(}ojvUK}PU{%1U*)|No)emsKN~Z)nQ7`9ogTDba^w_W=N(<=9 z?&RBeTWs7|gFhwU#w2xzhWG*@BHD>+NSzFb{{+Nn^Ug=_IrqPI6m$0v6DfDWmI0E^ zl)!U4*bfWJW=pO6Y~AX>oQ+6}c7|?c3|oOmhppVmR?ab7nGGn7Ycx=2^DYSgo$Am@ zLhIY0FYpgtXAJAalGZC&p|AQtmwAL`{JPBPEb|%Kiyj6IsHK&>Bf_+TX4DRNZ6DA7 zBs`uGsk>?eTG3YURl1?YY-pQqXyZv}$jyeLM)jq-AsMU~)xBHkr;Z4gh7@4``Ae0m z!44o;7#HNr6$IO-75<&VU^##_zFR*IZMYI#4 zf=pz)iYsifW4Y_6^a+|wPVNO?^&c-ir z79j&NP0OJC4DXmsbQ%6)HxIi;7@Dx%VSO~HP4F9;R<@aB64Okc`tvQCn@untS@=}d zaH3E;h?HI{uBK#rZ&3OkI3VX_g7-wU!XSSfBHV^}UUu{AKpfEGv2)KHO&LsgB(0;5 z_VbfpBd3p|AZ#A#w=mk7f4(b*JTw7Ld7ZY2Mk-RClnui6sk}N~zdB2up|QIaybsLQ z*xh&{uses?MTt&7^o$;-WgMsF5I%>KNexUvGXGfds#`uZyMwylbFSLbOW2SI(gVA+ z)z^~^y#oZO&cf@&0GgH#7X=@S6n>>K0N~XCwxCkreGOnwF90x1037Su#=SlQfU{-~ z%VH79J+wzr;T19e`X^Cma@B+V^K=dRa)SOugI-L~87AnkMS2oIi)k4~(1t_Sh*jXe zu;DC~i3>pcI%~cZNU52CL~+@i(5h;y$&30!_On)e5Y`{>Vn6OK$N>W4m-ZAU#t_l- z^{9EjClI{}1Vrl(4^S5zv89ETqdhTGv;Nxj2z60D{JvY z6EIDkuhFO^8m2N^-2-S801e?^<8)U}yyskGVnb7%u=$Us5_0N2{bf1Gnbq0+E{+i6 z3Ntiot}muqXN%N6dJGZ&M);;y8$$TsqTOgVet;I$23`CTa3XM(=1L-q*PuALawQPg zBK-)8OOsKoQFAo_I|0nr0JfX}01He2>^Ti!wg3R8A{6G_$_~`?)$#9HJ%{b73K}3o z)o~j5b-*YvSOdR|zwgZ?| zRi@sE&@YiM%N};`HZlCz@X?TA#7JL8jGTte_H}rnZaf*HF=Gcmn!%6=aZ#^*Bk>M&Z<1oMA3-5R@|iA!HEe@U!n( z1q5tWYw<4yue4!k+eV9OZ*t7g`&Wzv9&%XXcHpS3kfL02y>J zc1f%|_`fzv%-$J=#tJrrw0uUH1Eu-*}z{o(>uml zbGFn@9gEs7xFUB#nspv1&sl1BH(|+%Y(TB=3Q$S4f|L)IplqOgC5IVKO|2(*ja z>oB?S=+KYIZku|}4(ytychcJy7xD-n5Up3=JSY1W!_`yA36q9WZn*OfxrqZ}>P0Y* zOezPmT5cW!+bB1j$wg#vUeAHRCN$CmwJG4W9V6Otv7K8VGTX`5?d)J@aHAgW+fok`pq)I0j%r0nQF^*xw??ijA#>nfB@WsBU_M~mrf zaW60-W#R3~ZNMRlvIysuP#WgGrLX5~H#v{=3{WubBUEVc2H)SNZ;$n~ejjR;hd*TH z8c}51j^e#Qc^EMwYTaB0gdC@;jF^oo?vGvG{jn0sqv3t?j&2{bnwaJ4G0gLq@#JxBlce*~PoTplG9|7OaV&1Y01=uPYxxg}`&V@{O!~Co9ut z1S_?Cc*B(=`Q>VMmg9`sxZ$Qo1G{)wNfViXgCqJ>Pe|Ws`r2vw0ylB2U|tHoxZXU# zfcmzojd*SP7(Q(27(HO#oaZh$~C9liI5?l zT+4M}x&2BKs;jYZx?nh$syWH>&_iAQF$YwCm-Lldr(QU?+5+PvG_6ziGc zYR=_6fw@&3=psFP8o}=;cz^QOUC}vB@FoUGKO6z?=rV~c^S&;#k!9XznWzrjgszs} zkMbuO&Wups5Mje<^`!1)Z7)xJTY3Sf(1HA^h@i3)Wn3wQ`*-msRo03nOh#3!ZvF++ zA1q&pv;5I;tbfh^*YF@*p(8BM&r9GD7E}JWNqhJX5b43Y^*6#0{TMlEW`Jn*k}hv$ zB{)of6!4m2A$WnAw$Rf>y^5V|=o=7#1eet16180?rY*DFHXM-Y-!ARO% z*j{Sy-G9WFJ4CF~qu-nYyU*(HG>wsr1R{gfZ03m1fr`k2Oww{WS9ONuL4;rnG2=AE5&_j^;@R0P4iyogH#to;+4HbyA7dC7) zsen@95Wrdkd)Wx`7tf*x?%&YlPQh2p-lvX3zDEA_X{Cuk$a;0^eK^6)WBZ;YZ_)4s zkus zeKnfsz^UXiZghyY=2nU4qW>uSvL^B+@O7>$06{S0Ut%_YRmOB>K3L` zC_@6GF$9HM7g32fv2Q<@6bx*9V-;WSP}}BF`S0|X#;GN@;1v++MYdcEkVgZD)+Vww zaKv1pat91;NANe)-;w>3@>Z+<$!fcQ?8v9d{uvL>>{JPS=F|Yc7qpj!7iLSVCv=n6 zdA4y`M>))fBE$#!;i|MAqVd8vT~@%IqORFuVwgDO88Zc2RT{4k}yO*A>>VzA~X%2W>75znw z!Rh9+M8Q_I1@H2)ReXkeN@iOw(ri^vHe%oXa04Oh z@=Ne;6><$?EV`I|twB9Am2pG1s##LHK{Z1R(7St!jmzvzkKCPz{0ksN$t}*wvrR zR2vSOlJAiExFh%xiTUXrbqPlL11D`oKkOc|D0J`S6k9c`3LNZf} zJ3`Yel@fJK&{2x`J+SBX%NPZv>7T)&gQiLuUb9|`Vu^sFIJBfopO2u!oUOKMrjeCw zNa_a^WAQ|wL}vK&h#E0P#WJ3Ra^No28oBHM1e9{&rxfo)Wgx`dMzT(0%#5QX2CaXf zMgg3K)|dDIQojArBIVi+Ams%qQ9wo$6rwnU?-WnFS`Z|k-B&XYl+0>O(f zwo*ftsR!NYdXQU2yomd=0Et>B;Aj+r>wrEEV3n%Ic_@b0c0?W6AsuXuDe$lRlJ|&! z*Q+;CkQ)HpziyTkL+;*<1)00atQsk?L+z3h+tuV;Qp*LmKY4u; zh`YOtvOP9kEg_C*7pLi9FG*6>#vd3m_l|o0-yGZxs*~q$38DMy33?5-t3N9dPY5sc zEi&$y>ed%X1_RfoafB8cQ?d$;D;ubX^8aL-spj%z&_U2tQ9JES@ zdJHF8F*R0LKbTI(DH;$ny~7OQB!-$g}~uKg+AZ)KZuj5-`I)9hF6G0jfmF!Cq=)DBFIOVraW<5u;O zU_Z)U2Y^00Q)!(8|cTv##UPoEP2i&g8!2te` z#guhHib}#4-b=1$Gnq7%8x9?e+7Up}I^A)3BG6p~GK4!=dz9)jJz0kLf1;=IS!OcJ zM6EqWfk=G zT&Kh_+I@jI_Hxw|u|mj&KrA3y*`K^F0Z2X%CBZS*T zWQ*)Fr%+_!1%$}5DZAQ*A&lw7p$c>x2LLy4vS!3^wlUUhBP_Bb%r;(xAewD3*|k7c zc8Hk3`y)nhCZ2(Q8s7KufY*$6i1UphoPR(I#CdiEydLIx$en6z#9K2bvN|^9XM7*sAqjAo3kTF@x2^w0Q;naDhX`R>&|IAYKLJ zH`7HN)Pq!fYc&y z`{^nGha>RGB|foQc%F#`KAV6i@!_sV@JhH4Ww;0Bs*@GEj*WGG(ljh&ome1eLW zRv17a*#ttB(0I1sX1u2ch`545fBz*7Kf*fZ$p59e8}9#Log2|}=s`Vje#INA^(#Nc zO<-CtBEAzpT-kFm1E0cP%%0oBR`oESV2Z1sxoBZ7LByk7O+sxeC&;&mso?LcYqgpnd%l%q)9wW_0lB9 zlSFfVw~@rYU>D^xtSnPNV&fP<#PG)86Gp37apDYp1phxAZIJUy7}`ML&wCk_TuglEI0J_e`pjsIE7Drki!Z>#ZaG+@Tu9lu`z7SoV_n*V^^Dv zg$KwKHui)XqAUE3Le~6w8Y>KMh280>5L|%qsA6=TZLDL?r@!M`Yn9Zhk%M>>%tam3 zU-r^VdZg{fSV<4|fQ!qTWyPK|$KxtpidGy3lR9NRN#z`>T?6KZaL7V~W`|;-K1~lT zged0@_0eb4Q9Gfc&Uhd`#(TsvC~17rc10OIXhZ(GaDLrR77|YEr8P+mEZt+CvFc|U zC_F@sUrzNau8~3aP9-zolH(Mj{sJ@pgy)sr8}+^>bK;BUB#J2517b8I zIs2TQWMENxR0=HEabs~~6%R8{b>;jzZzR+{9ICK6)Q6X04TRg!o$6EE1_8FDLM{UD zX&T=B6EyrAw2>{dFb1`P*bS;$vqh#7GO2ZFpHM+-@?z8XUiN~8Iu@W0^`u6?&3ym* zn2M)}@g6^cd(Ij^RH@4Q3UB>IS*mDG9NyhV_3BUEfdbSw1Nc>z8`kbZ@WxsEX6DMzi;jbyWtdAgBQHnPfWLVkb2eaGE7J!Z~ z)p>%^`*!t}>j*IXp?Ky2r|}sS7L0PL6O5)Z^uZkKJ_ugWgb5&ZFR_OW)1*GRSWG%v zIkqC5a~yU}{$zTJY;qj8Uc6sUTi)+Tnp~Lk`Mdykm&-(7QJX? zU{?vh}K@s(`xQJ-PXtw;r6U~+(E<@EtxTFIz`5Y<+KIc4%a|4GUE|M?r0*yyKBKexIt4U@DK66P=Dgtg#W&Vzk={%TfzScZ$j`9 z$;AXe5&df?8~$m6X2Rw@2oZ)?R<*AtC+gLV$GHk==X`b;uRy3*OCLfC*ZRy_@Ep+) zuq!`QjIrQQOz;+^!>!y(??v`chSgMfudZePyxtV*pX2tK{c{M}%h*4sEHnFO53UUf z^^buX?4PebKWhJ&^oHVzouT_p9(=}>mU$^gu+YFsd(1YUs7_T!0GzBr=MM((S61Q~ zUMzL(7et8jAufQ08c@r4eThC-VXL|WZ_HD9K*u*XN&S2e@bwj>kUeFVL>7=@+ii^~ zEmA3Go9q4vQQezlz;smcLbXi|TuQ3PW~eU@L{NPvYS57V;WJG1{{vt+gaIcRtf28p zs(dUM<}2V9mIr&SJJm->x)J0NRimBD*hl;i2z?WiAV=Sg-`^a*->kXb+tl55(?)(@ z<1}trw)*LlV+!Nzo4;^*m*Otp>PPv-hy(mAePy$EsROT9gyoZU zI3SiHjPPpxyR>l@eov0^Ow+$7H(rR}Wig%-{kyC&55LP}JR|h)^2QVN=&kM#TL_upvVeMl1Lh2QAV(iN z@KNsY#OF$UmYTLI*?HzCK3JWX8zHXJaa|6EI&S8tX2*@bP>bul#iqEPhMQJG;`-_D zT3m;qxH=O8gdWHMl)y=PB)^95>RenY6iCAEdhjK*E*M^~38=tqat$7F>y5i7Pu4E- z@uov|bAy6_GzXbCpxB3<%gu5@v4y(Gov8^0_3>!P)P#@85hYepqd1I5-1gY0FhDG^u0& z+iW{IX4sP_$Be`O<@mo6|F6XVYw-W~5&u7i=bDJ$k>4Vp>rrM8{FVuS&ev) z9(zJYzSF3H$8`^6uEsnFg?RuIb2fLPko2aLOn&P4kz8s~mAFra zJ>7%Jw#!N|eBrCMGr)MK+6;Ft;3pt92$2c+Ec10}&EYgde|cZMb>$cpm1_8xsn+Da zCZmHih}$95gHAeM4qtW8XT)c>^cOx^Q%7*dEXFg zs0-tbR4B#!F1%X<1t;TKwt(Uz>L*`wGfNl9p1R*PwaOVwSOKF2LtHQ zzXY^9jV0-SeB}K$7C@nTaAL2TfV{8ij_};z{R8nT2R$hmK0HaXUF`*P;UHJ>yf)6C z*!vd@xQDc^SoJdoTqg`s&BnK$>4ts!ABt^x*zY;$vgI96N6_bzDi1ZE!)Lg`F#o6f z@9rF%1R`My>M^=iuCX*}Hq0Kz`RRHhw|ol)OM)$NJKFSVo7Dnbf(M9fKOkpT{mBW$ zWhro^h0_kuHQ=iO7=ynR2y1v+@vo0*p%we4r-ptzp$9dkj~oE>Q%vY#`^l!Ei(P{V z>z1|?8`1meFFh*o_29ebJX!E@3%QEI-yiqwa-&8&OcoQo739_Ibg_u%wXUbVkta9tsmis8VcsG{fm5NfD8Mlm} zCK5*}5_sK`whSO3y$|E`J*C$a=81zjA$*|a8RwkDhk7lRW>%aFv=h%HK($wZW}O*P z=+^un`iSr!Y13W2JYky$c_WfE0-cBe6kQ^_0%ox8lCNjRX%(*PAAGpY`VGU6R{zDh zW_`_NvFFqV4MpM(^i_84DPD9>GsglKU|F<)F+?(ymmC1&1}-FnCgDRp4|M3Q)CLx( zt8Aw_u@fJ;9JN(FA+JaEAU)Ts*ljcq^{*>cE-rGzm?@@I%ULvkvi&DWb@Pgeh}ml zF=TXqjao1L#hxCj3N_#_33#>!Jb-}5wE}!T09)%7-?(&Z2t|%b4gZ^mBH#ycYalo~ zjPPOk(iGYH1K|IRcB2vBhZe)|?QO$f5eeU?;U7kC1uoX`=MersTESl$1wW&0_ya=l z-QBqJ+r{M@XJ&EaC{V}iCeH_(0?)If{mH+6k0wuQ)nw;zlhO;CKU-mtF#kWaM+kmW z7#;P}H^Q=)L57uZ@(#j(1MNn$>`Am}vMd7roDh8U@8ufUXabYGi2meJ1a@sJU^BwN zB!$MAx@HP%{!^3LnKjQfYli2M{^6Rwu30i;dLGn8Nq7@m^1$gTM-_9q9+O6fxX%ypEW*cGOYZ*J&0shnzH_yMy5$@|>?; z!~KpxvYM@w>(=l24y|tiR?$8G9PmMlP#i8!V`6YpMLJaZrNpUT?O({hS|c*t6dIAc zB$vy9Vr|**4%t$|y-vPwS65vpTInjiCoaidytpt8DMl~kUKiG<9bGvauS>{mZgjZ@ zBJV^yX0MZPSk|>;I+zToLUvitVyyIx3zAd~Z;OM8jQUBg*iMZ$7m@SYj#Oz;Z9PU63#106GDsq;;&)S$B$frI#`975%AWjlL#KrMVFNO|_h$0yeQv8TD- zm#dW#OJJcCVr_Q!F?o{YZY-!ho~jVDUbGjn=e1~TPi0eFS4?CWlPszj2f)%brc{$G#(pY-Lw zfG`PP{wgE4J2FpV$W-8(Vn>Y6v&`jNywaCn<;J9QK@v4tFEtwG8<4x0-S95u;g$Ye zqPh!ROe+ea(RJN23)I$kz>>OLuKr>guXK8wal57; zjKx!|t-1nFSp8?fjp0K9wFZtJjFE8|7l9%G!9ex^qFVQ*9wTzQnyhVarQce&IUXhQ zGchr8uZI` z&`k&32`*zkT)epskoNtfYzBEjk;koc+aciT>0!fS^|bs0wiH*2?X;4ZUu-E3`!BYx z`C#=ycczq1-GX`yf@QrPx}Jmey5^%g>UAwi57o;mHj0>$wsvS&)Il0rR_a%G2oC&` zT2yk{y0&8_{2h~`YvFN}U7fj=2we?KSY}kZRVXW5$VCUVt8s!Py?X`Rmft1DkBuX} z3+*vHN)db)eJjo}9D+bR)<`>qE29~@1)~#-K>Ff-X9Sfm*8%CbRox)60Q)oZU^c80 zTh*6hgK&*?SSlH3I4X!Zy0^kO@H~idre&iWn|{k1$#`JvryZdAVqYjx&r~Grqx-8 z)i*~)>WqJD%k#2rL}U?I$K_9p`3b7ja=e_W8x%(i4RFs0H3-WCJ@j+)~0_Xu=IE ziOT^uxR*sBJ%c1>w_dHknky>!Yxk%_2iUuuMiDC1TZ6rtU_a7e4}A%+Y2p{&q5hio zJM36=MY?dMJsjm!JX&e2#QPO^FH3;!>KTODnmhVwzfx+&8Evb+nH8Rc2NK2O z3FZsk(rs)h01Sv}Uj*El7~Z5CB`55tk`>*uPf%;mp=HX>SdkqY4Y3(X>LSEqS?d)T zQK_e)6-xM7b?nf_3_zUtU*4|w?*r+6se_>BTMR6PN2CNTInX)2>)_9w5z zvw9xvi59>Iz!+#J<^(9tzQpcv;NNo3Fm<_x@E{?W>zh%8aII$WzxY0E$xhKw7O*Mb z+O$2yu>DtLHP?`yA*z=KH=fl@=gJ=xtiC2fVS!Bns9+ia8Dq;ht){5^7ISm3UgclO zoBs~*R4RD*Emn+NpB`X0V@`lxg{jb>=9=$`gpP>rgHZ#Sge7&*(JV0Ks|}E z&jJtQ1LhOSuGXL)Irn#|b{hc|xah~*MF{@XPl3ASOr!nG)SRVx_-8Vo%J@$?|Eb_V zm3hAPY0FTNx5Ltz!N04_zqByb4{vf75_7OYrafpqJ?}w-TN4;AAyjD+%d@!=64{^% z5QM@(t=Y|c9QFekyi)7%N1r0L5-H%malM4{-YHV!yfzFd%uXydDkY_EQzs<&LCyj`DNJI=U32~&|yfn-~{6)y&?wYi<`T zF68kkC^tvUc*IP+V;m=^BKj0(UuVbNLEI=oHc>;r>tlWVfwMiG)F_Y! z-$R0TX3`PVkC+o=e2RT-O$xmA}?KMoF0p++gm1 z?=jkf17WUP$Xw8trjAX;R{@ylgsAMT>MTst1fLW>2Y3p0LbKT><9 zj<=v)42*w<$Re0p{XC3>;;~5$7|7u~wh|-Gm;feYhaY@~n+ld7h;V>qFx1g796Yu= z%}njGP-J^4c`y#3K#S9oj+T%7p4)|#%!B!oYkXa?@f~`>IAVOx6w8d~eu{Q0-DKk6|yWwt5?K{;yZc{0`>V#_}?=k{UJYd6ZpEa7KO& zw%O2LJyYc3?|w5K?jE1#FPCqcDrRKBhN?m|Yyd)p^D@Sl=!giA21`NMm4lHq2Q?bdYFVb$`Vi`7jys zca8ScpRAri;czW@{HM~-q}sqP+`9AR3sggGXy7p z-rVdhX^J&p zfASPOs}<;lXl}c~|HcVi{vFoKzw-gTSsL7-&c%@$5R5hJM=Y^Y|2!2X?!!(sU%iNv zBPh|m*mq{0?=ndI5i=gA*?qD;WHBC$ z{GdhaIXtV+KtS}Y-T>6~+)&SQ%eO4UA8WH?26j6_Lth?3f8o6i^HOL*tp|xt(xU-6}LW z4aFNye+G=f(tKBZe5C^azUO@D3~b%FgeN0AK_1ZVJ}$1J51eY}eCS z(?i$V^9gy{plVPDhIfCMjg?p_s5KbiD2SezRvmTo@GQUi4`L9Yl zAjqkrTg-ux*mZ&FAj`)DczrpV{@7Oa8<5VdWz-ilI^0_T>rfsML57EP{BKuDFVT&F zUno&UoMAX-nATpIW$jg1)?WTH_0fyEf*loRMpo#Wzf#I~Em;#P{+N0U#ltZ3H)xP0 zwV@)r)NB?p#+MU~GK?)WOJB(z6PgMYZBiXClA!RD;F+`g14ESQyP<5@pHV7C#;18yHpUQE%2{3NjUrfkhiiv8^cFGJYS&sCGEgb33=tWd104Vp( zX188c#;f11FNd)p>-eA;222nI2MTPh3otlgDM*50?wl7I)5{9|qwuAn5lOGcl+jGc z`Iwi3H@UK(-vi)C6oBZ6o)pceCeT1WpjYpVuSy2?B@f|*2uTVa(hM!XRmvDhoyuD-cVSgE)9 zv0g%r#*z2{_hz~32?Iemg?VK$SO*0>U=QaNp*i`+kDzj@(HERo#Btw_47+Y82U)Qn zL6+e|d0#~@HZY?|e~0ZsOFszDV|>E%eDZ@U5Mk_JY}FX2xh!WfjKVTkPJ=#EYUCzl zI}<$UYy_3S)oiOu5R+|emg)EJF>O@}pWU= z-yUaaT%dCfpi&K|3QQ0)D3X}5;0tY)snkiK{dP=NjEpVSY0xXk12X_l{V0yPytJ&w zw_V1j#<$v(H#-=sR;>_u!_@DTP;{VrSp5^!XYMr=mUF`ptA+7ai7BJ{Y0|t4lYhS* zIXieB9?4ak+~?pD$n3ERjEZtV{t9}y`!#RQ`E1cPjWv4zXj3dv+i#j#ZHx!O??APw zgAgho#74agj9=6?>Eb2|?lm~eDe|$4OgtcBiupJnn~fYS4qnBrw8+H0g_o z|JOtn8XHTDT}(d-p@1cT+>x70CxN$MGGFGwjI#jiB2fR!ODV2v7r zkxpX)y+=Qpz{_7}S{55Z1#8t_@D#E)p3PROzv0iquM|v2YhqnM>J6ytn8rT*TB`Qx zul>0XP{Gd*y$Zs;!Y>{dgA1u#wgPO6>`(_`2~&&v$zyIUc@}~H%eSyEIOX7?RnyAQ z&aFpoG`q)%rMwk;lgH>BOf1+$fXgR%DG&|mi?F<2sjI@bD*;NhDCS~fa$liN@p44$ z;W$KGFC2`>|Fu#ET1Yx~{7&h#%vw*|naF)TFnB9JLeVR1qNVSI4uO z0Wzblgc1-ai$A)u(I^pujw}@~9J|3e-HFY>DVsUwFL!1C51VzL4IVNAxEoC#CTiHO zUibr?1?S-?g!7;YUp;x4$vhWp%VixAKh2eWztp!gPW5=HEDP`jtgL$uv8IiU8*4by zg5?};y5u{>##`b{-l=+x#RUo6S%NQo6#wkyCfsVqLqy&rypl0Bxl|_bxR7k4)l5AM7M?AWlLcfqG^P z^p{>d;%L;y&C)B+ZAY*4=Qu%}5T4aG_@vk?;#e2m{xbS6q|ifBszVmM=f$`kc}6aF z(09PqiAhkcERlXc9V~`fF&;K%C$+u^O`CgXtwBXt-!1g2#jga5tZ@JbA7ck~0U-kN zy*M@FtdadBe`+EK2(fKHtcq6rd3A~KM-F%VVjNPho=yk;(r)5oprIT_z`HOh&Qose z34@)#fx$f! zgu(YATve5W@nrDlfcAM6JIV*pV$`QTKO zHwqsLiE5VS!<`I|C4Zv%Fb14y%?EOJ76AKldmn?i2hov784nHA`~%^oY{FoGzosF* zZF-g_#kr4b-98U&W*B38qsLFk+2QW^s%V4d;5D|!I~8_~X>5;&8_~5ei|us<;ckH4 z@g8(yd!WW((ju-4~@1I9JXR6=eoy3fh41j^FHIL6i0HFE{?kVz^_flzD`wqP! zLT=4FvQoALqSbgY7KY>j2LoJe6b2av&W)$G%}5NKqcM`$HphCp<1Yof3@H*#p=~_T z+uR;zvmZenb-C$hvlXmeU0fr%C`pz`t5?x~*jaj7ft|fs3Cpr#?20^uq@@rLYm0%i zf0Xc>inA4cPuviqk7Ut7m+6%3uLYU4c<6n^c4uvKt<&d7Qnw8dk{xKhC3KF0j?Owq zlGrOB5V2hvOxV^BX-+cXRM9S{7`eT1P<2s4PTi7JnPpl6Mq44;-vrAw69 z0;;kz$@gw4b55U*dDyy$9_JudqE={!(%*kvJ$$toJGSaI_<-cq$j#t^JqY!P&<^Qp zbS%(eZ->ZqLhL^RpA99H+HM^Rj-oPd@U>ObF$$3FZBKX&KnqRvAwoY7R1}!g?|HVZ7Li z7o=GBY{4C{{aL&!MhCMWUH)^HZDs7#LVIR2_hXLdv8(E9sKDGaUCp?xdTR<-ToAc= zI3(B9-czC`!ov#UZ~6hKyEN)|FvfE_NYZ?H5}#W0h3*f#$^wC}Q)Ycv_HOLqibwcZ z!e7LU?yI6KUu*LeR<@?4H-h5I*Ka*~h+R_?HdKpl>s_Y<0O@X6CN z&)5du6)hCYCP0YlkwJeoH}-PHBh}bh_zjDv(75pZB=sY@VQay)e1T9CyBd5odc6Q+ z0%&s){2?sk8~Ra@o6zUnkgFnY@f<|Jt-aued{@9N&U3ls`apljkWyoTJ#(+w-#gTu zS4n^O#er(w-}v)qy!3ax2X4(B>LHXc>M=9M?{ylTKjjX3DWRgv3bK4j=(4e)SxmwK z!BuK42TgruC$YCc<)SHh*y_~h+CVhc_VHR2lo%f&->B6$Q6$-#XI4; z8e>=ATnRpo($)u^gJ5GO!~@DO5zRNwMZ*y+oWdq1lGt&Xd-1*4n2*VRL~wJr7>pMj z_1K{%03gOoFX3Mu#!Dpsc*d-miM?A(rnKKU!e zbE>Cnw5r(;Otdwz7W=S3cRt;v>u?g2wpuz*_qD7f9 zGNT=xA1}=_`Qd=Wd{3dl1Yf^cOfiC({^LBkL^Sy_&6#40Gq=DIiP1PB2+m|{&TRVz zoLLQyQ3;1Rb0c^K&SVnI3S@SsU^j#v{9 zg;!NiSdSp4094LZpmM(1{|FdVPlNhsD%XN;EPRt8HyGF%l7ajus2_F5RYEeB(W?9! zuGA18Kb;9w8sHmNiA>zeN2Pl0$5f5g{3{F$Ez_YeHJI2@be9YLe8oLHe^`(Xdsv_Q zgpIAfo&r&tXSRqL>Uzu$Y_;T4%~nqu7(IsHaVb1BulsE8AzYh$fmv+pB~nb%Av)zw z0#Kz^ooBTK&as;s)P1_3`kfc8pkZiHgm^j8fte=}Ly413twU^@vt}U}1!}LjA9I?x zbV}*Efd9gclVDzbJwxV{jaUCy{JuUh8ow6$yPZaoic0HmEe~@c?UrKt^;r>y?-?d}Knp_#!&m>rW_GkN z1QE=G?!B7A@B@5W9Gad75V=>6q=uR5UmDOu1oWK-^z9b_^qdKZerc`y*J(h=VI*=A z>!#Ek?<<0h3`q$s+EfyVYfDqNl9v-VNh|yo!meqF-?xy|Fn%B7S0sLqU#5Bd#kT)Dey{iZPx$SHWziD9 zf++m5Tj1Bh#Bbb4trRi*|G&pspO*MxJ!#t4BTd9`m=`lH6~Qm+X$+w-`PX!_wt$i*m|H*y%#F~C->LhjYj(hE3c3CVehE8dT+QY?W*ev> zun8J9#zLNcxon{1&<;iCSmGw9BB%v$q&@kC%~&DsV+5O zR;b{HN#0CwYxx#pPRm+!C;t(9oNv{<%Y~nyC+osC=-D|flAewD6{crS6g}0mgw>?y zV&Dz~dVUl^cOsz|3`HR*{a6I8J-!WsuDkT81cm8&u-u}je0&@9G*6AB=V$zCi=G!} zhUmFja*@SF)AJURtXcGA9E+ZJQrn>Cp-cV)J-aWn=vi|?8}ytRMb9b6py%sLL-YiI zy0MOs4aTp{}VlD&$0Task9AxZo4>=p5^$}7Crfwg!-qK(32QV&xBdw z{&5|Po~hm1=%36P|Dk^_oo&&R-WEM?UKB~sv-s5(J)W`+nk$XtrNrwx3=m>qo9j{`>hq#cCh(?=H?)n>YbT2*%11vp;phoTw?dw~3LS zg1cB4$rOBrHDx7XwX1ed3w7zEmq_n%Uw|G(lO{;J3f-WTk)$c`YyOQMBl0CB~Ib3<#QU&u~>H2G3W7F zo!h1_Yw~~7f0uGX5&F^#+wQ;DE{LS>Y5Z!7zIhjg=qo@kd7BcCLf_&kVfv0auU8=i z+L||7DwxTW{u}ykuYI)tO$e1k1Fn#_$yZU0qHHZA;-r$)8k z^VsdvHQiSGPq%a*9fkg*wEyUsDEjg181%#O)n@yH|8x7VQdzg8KdSwn$8Mkd)os$> z(*1K3`j687qa{)FP_Ink|^cqtJhp z_8%>dq94DGL4W&Wv_JSixBn`YeM|bI+V6Sn_8F(pX8*&T6sDa|R{UO`ZkB17TmTS* z(eDkmcQ4{j_+01#WEr^-Q9L7Vm-t`k!%oa{gdJfd@JV`DP6r%^P!X8MdJB|(zA2m4 z-}j2w`=lLkRyTk%*r*)V0B3dLTJ80gJOk`8^()?(!A9DLIAwF85o5^a5MpN%JV8e9 z5H;Cw)bNonF^iQ~a0bELhkSMLFX6n#Z2Xba8p^l|uP2Vxd&UJz6Nk zai7y6zE+oo<4#R6MH@2CK5QMx`4X6}>Cyf7&3GXKfvP%nqc<4uzLNiR!1%IN59Nvy z8RoLp_PYhOc0eak$hZFFjzsMPpv+yOJ3zhO+}R9dbwC=VWwZB&lo)qM?+wfer8pw0 z04Oj95Q1`?m`B{W3iS?)MJt!-R@T*_74um1dOWMSty-BD)r!k|1FqvTn_13g`e;ZK z3CXGPy_k^tn~=iiPr3n;3~VIL6jHyuOGrJDRZrJdPiEEc05Y1?JpdLaRU?r?THPHj zU4R^fw*y|_OaQ{h_*O(ffpt6aN8M|}3!}1<@UYX&W5$uW8rfr9&rYhTByDG1pq0u@ z>_{A7AAh2dRw&CO2oiS+02-_b*NE{Si8sM?+a-g^~({%zn!dG`x=qjt4C7 z!p>$W0P4DoE=H`kDaGAm#4;3ccl9>e-JM6opfog7lf#3Y8rOqaGe^Wgf11Ac9!|n_@?PB3 z2GQ!Q>9`LeNrC4z9ff#S-9blmug0NYbST{#OaR#aU@G@^wwpdfEhch*N0@{}?t;&F z1P>z01|bLzwdMwd!QG2u@?{JiH?}G!Xa+kGYp@keQ0qIxq_1u7tl5G0_jtc-AHNB4 zyKg{yZfuHo&8&C%Ze7W8otIKGjH;ybYKR)MT6$q0iUoF}B4o(GvziF1h}stn$b+Qo*T zA#@cRK*JcHu3XoHK1O~3ihA`9L8+K1eW6imLZFh`tWlkX_m*ggoCJqyqzEa@vi=JZ zOmGF@70(=_xro-V6@}IU{51BcpT_djkfVOu0vsEA9`(~j_=NLBpgn{6!6IWjC9D&b zjJJXh!A?bg#d;1P4AdJ;aN8Kh-;w_?RMzt`iXq7f;zR7dF^ud&ow=yPCXG2M#r`D- znY+fGxy|W4Kd!|1&3B9Jyova#6}Jo1P5`3<129pcA2)9T({2Sb^9>t@;#K@aZA#|R zWDd5&zdWusPg=MRnQ3r^=lqoHF+JQf_{u-u;jCeFAL7HDb?wS$S0dg9MhikH;}>MB zZo0|!XeMy3ZnBh3p2#L4I$`zG0X-+`CwM<59})ua7{uzp^1rY_4td5dTlaiMQ{maK z>0&mNbV>a-CWG-4JUFao{3+MRUYcDcwA-qS0T95{ihpSOiA%lOteGtVSi4u>sETJ*Ep76 z#v97ItvUvp6PX*qrGv;E;_|Op2K2#EyJq99DELPmPB%5%sy{#hR)XLq*{bXCi|EXp z*cP99$iPToyw{K=c%1SkFAaI`co1aE`g z(XJ3X3UGhMwJwaUW|uw3o?@Ie6`WVax!w5XE`u}HJxbYiBhLbG;CbE1G&YisMs#=G zh4%B2x|}|nIPWr!Q$P8^teYcVs>QcL%`CLas9RU#=T*#oB-o-S;XK6Q z-Ce5cCVaU-opBrf6iH7$=fk4|iFKl#NsfafycFBj5Nejr>iC_v%T z2G*sZ0te!eR7~b_#3(-o%owA*PX1zUhy9=}fH|w4NVdm(o@9^ttdl*)ftjmoXM4|FyNqcxRqZm27ZKQn8_?6bP$F3biR>BwjVd z^nK+!45u4Wt3{BO%)K18=mDNr6$_u~P+;lf92Rbes@^uowiHJ_17h>wb(t;iZTu;R zP8n2!gEyE}5xRg|i*V|610O2!06^20;qNZ|U5UT@ebZLq&jI{ggTIj4Y3uM8`e52) z_-kkX;xE%;q*0$_@gIl!6OJbHv^n;iU36l*Z254Y>S;SNg>1tm(9 zXh4Gj41^^u9q5(>qky0+#)%>#C`vb?A_;b)^xU+gj_Zt$=%}MJZZqQpA#Mp<0x=Lo z1VkZ#LWLH^4ZeM->PMtc{EGGHzWAsjFyWHBz z@;y)$=j{sLS=E3 zW&oLV2R&Ch>F5~~FC*+F%f^$_)&ttS^SvC{}y7@<@j3)pSJjU27k-( zN3g$xzZ(2C;jbBgNAMSezf}CC<1gEHBILE1*8o*8$(Y(~dXUCnh7%R{SJUjAo>r_Q z2ya*8ayHgMITlCtj83vpmc0k)OkSp`M%(VAAQ0vbYcNPGND5G%9;Q9-YH;$rtL+fY ziES+}OY+!UnTN_6ur4v@EHny^n2GR;Wma-^VWMS{F({zf`!d&k9=28%x(*|1-LhQj;xqu}1$&m*1fOFBRF{x&_@s~Hw~v-sFjwYreY zOn5juj7F(WbEp8)Y2M_44_e$o$J}K*4JQnSTg3ZLCc4`89+Dd_smZ12;Dp2ggrNit zwotrZT#%eEEnO7#~l!@QRl`sbEo>2k%c!sbQRAyg*?z6X}Zc)+F$mKVUr-z-`N z$6;&)qF19?@EpF<)fcx})5>>iS($(ObEs<-(3bTuPz3DV;AvaXJF76O74xB!+O>EX zlvLSn-}+3Wav!!kdb?;ArE-IIvwar3+3ag#FD_QMyW(+@Cu$A1V=L@2a_OE>% zN%E>H?yOWdoVZctWG3vqG(1~Z==;2uuW)R+ccPc@eLb^neq3-W&H4FA=A?!cpA|C8>9N;V#r1G!e5uAx7w-J!0{ud9I$%i6O6=nGS-_5|B`uYc=+*~_jrP1c*ny* zofG=*?T4#7>iL~;>(eN7QO>|q3>j(H=Wuwx*4%@hI2)(pGNLK zo^dyV@JS_nfOJu=&R!u$;w@RY65&+=-hVnwmvd#@Jji>wyykQ{nvL<$C-p^`3SU|8 z)83xE?S#H@=fY9ejipqME3x<>N#e2+qj{L}UoBNGev|l~&HBPRJvZ;;IA!!BA!6FK zYYU@d1u8Jd_Rh1>Bg7i~A<6rF%L{A^cLLcS>L<+A=v)DAbaRhlio@{r$lW8h;4y-~ z!&N8mbj&s<)cqkDiT|G7Qaior^Ts-Ad<5N4j*hF56-OIXzu{?s#Q zSCt4$=?(w!ssZ-LY7?9qy396Hn71&=Af@aqop?YuhW<}>ObUDK+f9-SH~_zjU4e7| z_DDB)Rid0Y1rIaxLRbmhMwt^%@x5>xBo}j?@kFfy7jTUyYVzuh$`6QdqvH|b=~y{7 z*{FB}5y=Z#%rq9y=y~jUqwOsZBM5xKI=H7NY1(z>Xsn>G;j|Jt zIugTX7Y53D0;vI&^2mtA0g?{|_FT+jQ*5F8F z5W(_tRF8_|hbB@YmDl7wU#hRQ+nZ0pil8c6lkZ+~Iv`w zV~n0OZUhABN)|1+{Fk!5HcF~-s6Biak7x(qhhO^tBYb!M{y)L@BT4zcfp4Xh^hCqA z1{;t6@9-rjvE|gPF&)E&CJ6tsj#^T|_JGamneT8fNn~hG9v)D*cqFHE2bi#Dsw?0E zvD&U~`IcEWt0Mk}eD%Od|7hI5lY2Q_*M@C(A0vo0n`f+i?MnHUOF#iL0II3G@JeqBi^pef0b8^82e}=K~ErS@PIH&W+1zi=<`ocY@LwL%N zQK?4dLHs!30W({Ux{>@&4Uysq0B2NeWHD?eiuGGPIELU=j9haVUESQenf3v_J-ziE z%}VOEoDh$3WS)0-5#`|*ovZLh zqF+9{o~{n%@FgJhgKs6CgCX?*iQ1L}AkYU{qxut&1Jm1|dD5Au7t(7#B|s$oK1qkx z4C}F@bX41&LE9&;xVU(EKR>(8pSnf5N(Ni>_5@utq2>kZ%g13lj@IVzOabJ+sJAo@ ze`xSGOfQ3hv>)D}V*|kZF5UyK@eJfJAT{H@@b6>>vbo1*fhMBJ2CNqG=q_TlkO&RU zws4q;{1*Kn)PB7`e07lYT;2vdgwCt4FDG|sAbxNJc(j1h{5CZpS^9rzWoU6<2)Rxu z69Wm^G6DhK2mmkA#WTQ%F`Tg(!_2qMcbNX`u7pXOMgO-F}QX z^?+)>rhR~*evCqhzxi_%(RbO^jCkq(&F0vJ{?QBDk^5Pintx2(1+(Bxv?uo#Klq2v zApC&j{!uh8S{IOeeyiCJw~_m|urB`Jk$X+wd*u8keeVM*#S7&tyZqPmUB3rBxoQ@> z_R;0K+I9rKLiFyk?D0kry#D8Wg~uo|hD0d6Z|yATZTQe@gwnhCR0&6`an*8-0(Jq8 zTcTdO>vYIzM%4=%y|x;Z)S~sBu|Zz4Fg^}H+A%QP8D@h)97TnsD=yYrOwSbgKvnRS z0u%4qY>UNQE1BO$4(5mNNLw`bpacNgPVKZgRA{>vViqczi<}?5$%+Qadnj1;jp`^?E>drKkEfI${gbIZbWRfKV5j#uJs$}kXF*+x zHRXK0TMS4>AY}qR)Q|x^|Hkf z8jU3cDJBJbAi9I0Kti3I%w5~Wwvk|KJ@P49&1TGO!5Qt}5yS(lSRZ`|k0B>6z*6Z7 zLUz}sq_LaThB?Af5Oe!xQq|3BC1c?HS>6P41{1irdT^3KQR~&k(}m1AB8*0eT{j(@ zMT9_vFdCP76C*_7v?!8?(OIGrc}})Ew4cDBORVOD{DSsDFTvjwsLrH^k;k*M3Ft>I zlff6s6&dZ|vH*+Yp6#$ue2VB>IS(ho80nT;VW_I{c8oNT_EMTStD$>`_jJr_ItI9? zUS|x>7V#42VQ*)8W|T+gD=1*d`N}ymcg*@>__JC48=uyzQ2kT~XkV*WBR?>u(`#aj z(-%Lgvj_1+^Ojij3(jx3Ak&M?wc@LBlbV686Y#K~S_e%d%5M4_QVH5{8bgr0$iwn<=bmqZ*MB~*3iNF~u>C5}fTn+_!WyDc%pN*stp z0BE3B0HmJB>)V8dpu{xdbk>hQkqx4c=j%RR!amYV6Z$xkeY}``ypMhCEiKifrM;d= zH>$sum1wBFcOl;w%=Z~o(`a_I0L<7@amD%#*N0nfJ)g%=y z6M#!HRZg>pC!*zubeY@u0z4|6H3?Hs;-WgUrejD9zFUN++XD$-&e!9nE}tvy+=EuX zznX`fzaVGJP8^A2@C}l)L1kI}7Kr1mAovsRre%~&{f^j6R+Xsj&abT6o?>mZ0BSLH zZEmIU{mWTV^H;>$PWmY?2n1qm0s*{8ge99Tnn}1tKu^(eyHp@}bDN-s*HGDPr6*gt z5Un`)uof(p)&=iZJ($wS(Ig>d#M4N@A$$yCQB}uRfFN%n5eRZFzLlL&;#nH@psP~x ztBxXuH4RiB-zjCby^J#N>M||(R-d9SZdoCF$LKPvQAY1`N+`I@qTDx+a$n>SgS#lS z-v#CA6|KqWlOL1U394E;Mq8aq!XCeBvE7 z7Pjp&<9A3lo!Ca~@zqA}*;Qt*6B78)}P{nGP($b+fhpxe!@5=>8|7)#(^U2YQhXX9HXGO`Zh|)v^_fH^(fSp5bOWh}ML-sEM*qS1KMI9+_Rh zf*{FnQaSs%_B~ILs@#gv15SaI4(O9_U##ww(Z?ARgPsj)>scInHhYc?aVxS`kJLST z7~kq{^tgH^de(xw+99loNXuMAU)|9y-14e@(((!?G`>iw?i%USo@S;P6$3=6i@C>6 zQ2qV%aU4w3gHk+b(y8x&Ex-JN3Bnnuk`^unT3@MT0>_8{W7J6x4v$1ST~@Y3HBbTo@>VMrV4HdLdIbVe&rR zb6R%yt(^zIquh!W;fSeV2R))ZN{|F5L0#vc4&r$dWf4EUUiG<|kBY({IOy38oEE(P zC8E`OIJ^VWzx@~BSx1pzQ}#a(Jlk{|)~LvjT>x0KAQxuOUeJED6PR=a&;8=nGw#U> zj&MuX{4Ta+sPAUA0QFUOM@22Q=nKt^D}^DOMLX2r-#dZbAOIu%cz-mJvK7U&^EGYX zfeE%fr9qoNdAdfGXE`v?pG46{Os^+UuuCv1oZPKx6^twS~UkjG>@&F`T0D#RU`k2(@&dJFs*S3)4I6&n#slJi{L z58en)Vjd~LcwrnzuPMwn#EE`DII6X0!#R7pdflz5_P<#Q`ndbqp9L&G>L6r&tN)x* zE_8F(DN>xuN~?{j(EY+;UVJkNLxol^V}aflxGs*_PjTyu@bx?@h*BEDbfz9O0%D`dZu)NAYvG`GhTj?By3ulei9A0wu&2BojQk0p*9~sBAR> z(l`G^%k%F5F?Dw_(WyaoDxm%mGXQ~;EMQ^S{VIf+e8`Ss{t{8ZYkki}=gVxv$RFqX zmNNfeC+YSL`i2evwXz2oCG^I!Z=n7(vY$-{Y}AM8(hh7EX~0OD{Wpy^b1@F;4N|b{ zCOGGC&LJw)tEmDxqhc{KVl>6XgRzMxLogUI9=?sGk!c7bWJyo4BD^~}i!kVbS&2~{ z10kH{?gX6-cHt{fk*IGb0EOVU-fBNE4KH$7_B}P8Jn01uq@*iNMH>Bn#8ARrnFG!x ziXY#`IA8NGAPxmh>ev*i)YXSP{bQAjO7RY2V1Ti1kM1UqBH$R2%(xhL-}o+F2k*Sd zm?vM)1%hW6DA~?Rg_5TdZxbP`CEKyw)^!y`_Dr`ZdodAr8&v_= zHNZNxP29EJ{goP3DzvHwC8`b0?x*2fjfI~>(kjYvnpO?ICA=A#!j6@Y&Csc0dfR41 ze5F3|<a*YZqntnC>n5;7q4`Okeh1wHni z40)QXV@fohY`+GRilw+ojlc+CmS+_@1xX6Na$A0ClcWx!QeNke-ja98!a62WjNUb8wg-*VGddQ6sG14 zxE$0R@_n=hS#uUyY7?sr$P@c+$z_my7Kz2DyN-YOHT9N>P0@PF9v zLVtPGYgBPyk?kpLS4LcdK1JInVts57#g81wo<>j{r&upzp?!ldJp_R z!`|<+bF4)mdrv;e=NW;n+=(iz{r9_&Y0!Z#?G`9ZGB4MA?GbFO_YN#eu}|tPOOp$G z_;@Z&e!YYRqtzCi5mF_{o)KMaSjv(0Y3@I%SI$9&!&DH{K745&q!;PS>lU zTZMOIlXsjWjDiwY4w`GX`Hrv=roK|tt}{R^K7ObratVa{6TXlA?%5WECRRArr<$sJe9_kdJb1=zS{E+^uAAEhQrU>;0iXE|JC|56vbSu0y0{d0Jum1 zcD%-;3(CCo;90L)zdIhOhMmvs$7P377#}(-MjrCpj-Nw5v~)+UJ*Ds3lvArZJacfF zn+;5WIjqCn9Yv3uI9Y>fcU2p*5kAuMOr1)C`mj@4Vm%XIl{ zos_7P5JD~8k>vXtS8QIw%0zLnFBadwNs1$cJV!)q8K19{>U9!ANW!rbOSyE?n>q<0 zB#}HLsaPjHu9FZ#(hE9iicY#mCn1C+c>u~BU!s$y=_G`ZL~+U-ljyl3P`T9*4u6*eIe3PLoi{+(MJ;b6 z2(`U6w|jUCP*S?8ha^Q_=`|{-iA7Q>3w2hv>m-C~Jc~l>9C_av%iw?&&1_bqfDVYh z1x=Pq$2WLJsQYlc%X+^s9B-LfosSE(ke9JIcc==iRwxeA!!KF-7D7RR^Vx^EIbH=* zHH`Ubeyfc_dcD`O!AH9Ar9MjQ`LqxOMw5$@U|@@_mR~P2Ko>x&+AmN`S@#F9(AVII zkm8x#RwcbxPfdjx^jmoKA^2~p0+igU#0in2C+|Fqk!CJ44^4{@=M!8m^Y{=M&Ql3= zC*Ju+RJ!@283eq%hSZcRwu<^H^v&2%;9c&$T`^BMgap-4Q?9|{##`ABk-Bf@xzQNJ z;AnH`a~b8RR5pJHb*jpeq$7MTERDoq9(O^nI<#cXdum14o%IawohUZ?twf$Xa9=3J zAmTutw^F`DikMTN`-M38YE2p~V6mu?CPNGlSwK*Ldhb_zt`LCd z?&*brKpKKFV23(!Ld2a#s#d4o7nOQMeW6olsK4se_oGsk`cS9lQ>fXOE2J%rM^o0Z zZKE22$6SGNeVE~Ny07ahOJ8TsH8eZFWKL^?tBNH$f4ho8kT7C&y)(s*NRa|E+Ns z>vI9#YJFE-U-;lZTU&O`(wr{0hp3rg){fq|*3d>vr&#<@-AYA|$fVGU{{A|dq`m>H zifoeIK+4<8uqqy(tXD;Rj6Ftfkg4)1>@gUsRWb1)n~>%q3x2^{x~QbiB=~Kas$-6z z!(XQ`7RR|X|C;r>b`R58yux_9h)e*Z9I@Q$)txzo+2>35!<=6K=1;J^4Xo*+L0~5M zPXWDhZ@Yz4ES~EHOn21QF$E8gTgiqrYpWdfL;NH zsD+aRBFEthrTQ!lk>~NP$^j|T3GNLwMD75LaCzWa5)*T(UG4rC0Sh$Ws`}o=xE&;m zeQ>Qr2x&j{<^+qZ0amz|(V&*01kWWJ)Pwx0X(^JrAdziWG3N*}@8g?9%L!utyZTP0 z=z}WJ=MIv2vpQf9Xl%@=5c4#Yj_bj=R*9pB4#J^W6@JF;NRo=b=Csg$miU&b^i=ho z07*%aojOvee4@JLtka=jCtbzyZLDHkPbzvgcoLO6Ds67g30N>}!ZM$~kGde(r5{nV z_=(nYafrv=jNuJb3S_~pniTA9k6sb~J~tZ{dR=c<_J2lZwdl@Y z&+2(Q zm~q|@j~cwiq8|AapoeA)c%GyjSDy~K{k*>Bff51JmyHOQUzGYV2_9!n-QUx~Q&?9#J_u=8aAg1FfSvpE2e#OMRXem&8|o@P0d^(YIUzt~+kr=;yOxlqhrp z367x;#CWs83TeV|G}?sY9$8uPb7h&NqrSoea!+$iJV5@zAMUU9D$ObzYT7xEuxHym68$f*Pv0h*{JS9$2q9y zkrGTH&5o3(G;y5+w~M3;+1@0#Ia#`p9TYns(AP~WR=VK1N!WnZ;s~^8ZH@3aN4Au5T7`#0Vh#&bhftV zX$%>N#=&T#8oy46<8Y!7Qa3@nv#Wwqq@-r+)bqFyE-%Dj0||2zBdJ{_)qA#j42&j5 zJn=xCIFQEN5Z_8vu){B)MVrMn$TniuMu;X9c1tj{4xdpB7v?*(da+17R zCdnC+?C}=B(E4_!XY$PbCS)4lmMK&t(@{(jHIOjyQ;NY-ddzA`xI$0S!nT9~I^jG$ zvmdo3bk_+9a!Zd>?Yl%ct-4=+H>>&h!aGAKaAA%V8fFWQrBQ!at=GqW)PJ}xPQdn^-&WrZd5~1 zCwH18HKo*F$88;ESqp*2|C7;kGjXvf0h|%ymdKm|c9fVy4*PWJq2d&)j z_WbTeUt)cb*gd|P5}s~@TU3j({uvd6Lry}Inyv@IUq-M8!#kQCrF+B&g9v zEVfA{v74w!OvXRV#6EL^O4PNaqGYv4*RmEhDg(7t^ME{ff!cqSwDb*Iny2$DXPzL+ zR@06ElIbdGX(viy!}8K5!eg^Kf&N0SOvezhCOMxy^%X-1A?c_{-P=Jg!d*Fs3(W5w zlr&CYMqvi(?GEGsOrjux8_IIZg7X(%LnJMlhn$O@)_euxufT*qo3(mNtGUBryuIF4 zs@%5kT;?`M=u^0OiZ@RN6BZ{1=Evq8Tl5JgCg~^$W2|>r&f(w?e#Ut&!#(u#1NVne z`t+l&QoLZ@=(cT_;@*y-21nNE%3Wm#k-FPe8bsaf0|cOTMEl}jch@3B)=v@bgEmxt zQpQVa#)^&=8x|(}_Ld3ha`-zTsy3r}c#SvDcOuSMMl5z1E3Sz(R;-h##RUoNGgt(>-n-e#E=LcOw3Q z4q`dBCb~`Uftg&ZXMX z;~GSBi1Ygs+7Hr_gy}sUW{sn~c~q_HkkKa@pY`QSW1UMKu>xT!#QuzP1j?g;@-RvR z;2K=4=0a3ctCBN}8W{gTMmnt2sGfv>B>+BLUzW_kIdkjktmJ(ev5|fWu zrIT3_y>OWIwJlOr`QB0G8>BMFQg>XzQin}|W5GmEMSJwq@`&)hIGeTXth+Bj;nfg{ zsoS4ORyBn(3GlgIO~J^-$_u7){XtY=fnx_tp-4E3mKex9i|d+#A%D}=f?j$*h~=LL z6Ji!dP27iMlaojFiIt@C&hbPjv?goq!mK#y87>aMD51do#$ld%53>}b%I;xZ+#h-C=4{jju!A2yn;qIqkDq;uCciX-s%yQjX>u@NJDk(G2 zDGx-Q3T^2Tc*5FKaKD-dou7H6qUPR)j7&CGEOZG5JWzs&mq2)wjIJU@e1we4*62y3}X)q0|PJ5+kU` zne9)=h8!o6RLyo#`P?l~UHTjS{`_=OeQ%hsB;1AJfBwQO7t;vq*kGT9%r z@ia^n3+Uc8Xp<7vhW<1L7pWICG+J8WkfLZEKeaygp-vW1`e0F87_P4y^y88CdW6#x`iIlkjEYJ> zdP@4kCzX4;Oc+ABM0u0!Duuy{+pcE5yT>}4MOPzjw~c3oE)Sr*AFh8ZRD#HW{=WX} z{yr4WpRz2Rzpq{A2Q7?}_sN4IM&!j-DeNp@Hgw!Fg$A#LN4WxUB8B75(INK|q6KIGKhQT=TDv*nqh>j?q0}8dehi<7w;9g!)@FiczSY6R?I8Jc$*w}rkr_<|LunW$!js~ovA1beUVQeDHLZ#=^O{55{SY z{KNTnF&E&cCoGH=rIq+Zo5fDgc9mWU{~qVvbCayG6es4>X?&P$cleHnJcUjm6ZqLI zmwBxnH;awxmSoX|QTK(ve7Z)8Nk{!J%YOFWj;zJEwwP*5s?7X0{7?gcm@o^+XQX?U zKk*^DcLiWt9g#V=<-+unAt$wh1-xnsxrU=GPew!UCCE_2{>Aex(Ss_{g&b(`xE`pP z@XxOzD$x=?hTcR{L%sgX8Qi+T5en42&G;%T1tM&r$Is%KY;=$lLmPfoAbud>@Frt}~r2&9a`w|Wf6qahRY?MWl zTfPQkMDbY9P<53qp2XrW>Eekjeyvq}Nu+pwr1+~S&hxSw=0_jrx$>Ie-IJ9XD|b4o z^ASJOw?9@0x-0L5x6@3p-~?mk5h%TmV#Uq%!3*d#{x<^SF)Bx)sIelkwz(%~)>v_M zZ0+9Eq3yJ!Gu+ ze&F$)v9u9g#2U+XW*u=FD*<%fYp$W;A_@rXU3oZ#^>$?M<1w@!97k*Ho&`>`wi-^* z0BKw*$L7E8N0?ZaV)wsz$jl@-@rsg9j1`5wrxckV7nyMDH76t8SoxV+ilSKc<82BS z4Q{9aK6hg4mn&^~Mxj&rx<^z@f(D>NEw4Z#ndwOSK3s>cQH|6!#oJV{R?s^b$9<$V zF{pGN)s-bwf7`wXUi#K9j2P%?)*|n5=A#;Q`LQtKw(gA}ZZ38C;muZwZlMr|DiB_9g|4E!eHAxJ z6&kK>Rd^;>F{*`@086nT%a4~WNR(|#(7HNX9NhVZ|hqJPw9HRDNgR;NthM@FtKzZQztUI{pSu)9i628T0(`qe+W;RiA=ABz!KDiToh8k1#1a$Qz^136T=vXI%`KQ|6gQkrsu`t8 z89_~29lp~c&kSl4s-LGW^^){%rT$62c{W$@dnzQLop4eXX;ruQ zY2|ce$uAtTQNg_xzw_ZvA8Q~N2FYE_`j1EsRVQRc6~QZ+Aw9<16(=Mgoz0Ya@XWxJ zOn`dr0V5`Ou6|94WMv*~LaIe_I)~*0AmusifeNZ*pcz1f>nk5anPH8O6fN(&2QE2Q zAqa?2oabDCIqMf0aUDneDD+<(aR8~dJ=Cd46*yIZpegluyn*=3uy){YXi>&2+YXq) zgi+dS5Dj|Hw>zrJQJ!0wnt~);Yuk(lSo__G1y{=ii#ML8`f?P{0!Egr;ayEFntBOr@NuRd{ z{u9kwGCk~f&Cf?df=2hya-)?WyaJXfpIJl4+ldqTYK*><%j*(A_0yfV%)u4NDf| z^`xP2LrXG!9dhuh-7Ng7o4=uPNGox7ka`-&iReZBY~XGNCpnPvDZbSUIHru?E~RD_ zfH6!<0xJSpE>>?nh*QcY^0~D~sQJ{E;$Y%M?`URo?idux)z#m|>MzmNds%%xPeGY= z0V2` zxHsdSR_}hb>QWiqq1({>Al>{?e5+b?tNJlS;56|`oo7Asd5y>5H1MksJ-nNSHWcyX9=_wZaKu>W36-gpMf$H9p5mkZTh$2TP+7r+E4!@07px#HT~J@ zZFoK8^f#z=-^%n~!}TXugz~NVcXIx9{kO6H@cgs>d;vP37Dj*<5UZhlAsZsx=>|9o z0iegy)~z`E#-(M>{#+d7K#;X&KU?2tmZ?9WK7=Y1Bm3^wwy8gfZ?zsh3Qzr?be;z0 zv8H}I^Ss17?WX=w^p}HGJ3t$2C{GZUF4Hox!UTT1S0->dqG@3bGKqXc9d_KSvuGyh zE$dX>A$HN?z)bl3lgMnABSr2=LXQW%a*XcTarUf+Nr99n*)uzO#(9~8xK(}epE`;d z>`6-K1V5W=yb7^77&?GUsorAgZzC2neyw^HXW)R#3#@r9B2jZ5YkmtYvgWyn(=|UQ zH51WUCC6IMUyLL*lSxN5PMW`u_7atbR36;raKj4 zt#ywU_leDljGjW*tvSMTgHG`Go8_#K`8XPN@Btd&roq%T0ILxI=De8z%uPrFU@pM7 zdJ+I5VD3en28<7&!m9dG8ZJn64V{wi9iobK`Q5jm{7hYbAHLNjtNbmI@}qV6=cRm+ zot%dZwh)u|nhc8W4&14Q<}AAzgD#ga6^0@kJPGRHHzX!Sc5;A)=oT!o2=!v6Jp;mk z9_$M7ApWN^Xx9pt5w5_p3`%a~i^Zr(b;Y1@I7re!N8Xe)>ZJoOXVlrC`zR$ z!h&$XfW_s`RJZ*PU}OSy$=AG)!_k;}c@aoKz4(75qx-ooA{ynXp83Z^D(7N>?An_F znFlmv>hZ1e05L+AJU~PCVr`&NDxJaWDeTN(*w&G6AAW}QZlV?K1uK8T)k%oPy!tWX zV(gGTof9s>mc-YJo4ZdS5|j4|n`kX0;9yP2t(oJ)bhHE>LGvvvn2L;Mgt581xrnMR z>V^UBT*|~HNFX!Kh1tr$sN zPza=^%1@H@QLL)0VVa!0e#Ztz8sJ}4kTgVuC)*~q2gx4zke4pTB)&O(A!zkaXv)o{AoP63&Cgr3HzzXV{(?u$I` ziZWsURi1DO*aBcuz&BJac3CY>kmK)N~jR(D=_CYP8F^w1-w)2cC; z-GxxuT%j)1HN46i8g&hqu!aFv4Q+g)S9A^73IX6#(nV9JmUksFBzRTj4b(JHocBO` zT8}e?t??x9i?guMw9Vk^MCQgdHJl0_c#9JQ-%piPIuK(I zV+VZZ2%LVoKuV8i=?S`Y97`uyrQ6{2BVr<@&8g|?@h)NLXl(i2^>J8J`FKkpeB0pB z-BzDl3aGkqL%2Mlc6r(JbG)EE1?hk%ZUimVo!C1Aop@1q;sJcCatw__XzRos;ZBJ0 zHB1A=n~ZE`r-R;jsO+1E89>dTXY*X<10X*1@P3}F~MlKiK)0-zX^z%31S>IJHsTXK%3`|0Lhyl?3{xflwo z45} z#baH4e}Hu3GMq<(XV3JFxEl=&^BSn&SyphfRB*&tnQ#LVW&(51GQ|ESP!>1S*E-D8 z#aNk$Xz#Z!|A0GDB3Nv!?88pD4d=J6K=Ne@7m(1gdRJ{rx^%AVv8H2N&QG`!na@wj zXOVOL34`$KPq~~SwtX%>U}??HAECiXI#n-#ol&iD$S;QiTr;)bruzr~{52s6Ao~*z z@Dr41P58Y2jQi_7zL5EW39Y$vrf+EW2h{9(`x-09#o={_xDV_Is@Q#ag0yv^H~E89 z_8jpzuP|2TVe|RwUbzXC5E$DOJinUBhG8)wY23&)7P21q`&I)PU2p@y6Ama=IpfsXEX4V6-Z{FA3Pp1 zTL`X^)W)xM;0FfYv;to+E&wfEb((dx-mW~zBA*$M7-LuLlD<;rGvoirnnqfMpVEc5M`dbYraN@ukD}t&F#b9gzR4`75H%#0wb-!0S4}}0y`O4YXv@L z;AyL!j~Mv9mGUnH0HB5`ZQVSJ-TeJBbkl2P3g}GZ2e)PF{H+0f2Qs1Xkf`_rQ&G5x zg)>w2u!`B-RI8@Z47_CphA^Jdvu?R*4ll)3HHq!y3g*k028Y?}>`PjPVOt_%W-6d)ZtVzH=Bj z%SySCfkRds*D`Rfl~TaKqgEi7fxcECi-GH`z8PGU3i>b~{i%-C)Fya6 z`p}tuI6hI=cNgpX;yPh6>SkS{AgaU$miWRiqnXYXY1Q;%_pUK&E#lSNR^fiE>0egh z90vZ!3ZyX5Y6W5#IB5lbT!Fx8D{z2;$E?6k2A;42A2aZ@75IpOKUsl)G05JA9}HJLc^A@N%-N zld9`X-Zrmy;#L-=o2}~nm+0+{g}{;^1%a{FC45|`Wf09xKmNEbq1uYk3N=gq|5VS{ zha<)QwqhV;5cU0p_!#QFGZ^?3lf=MT3?xp{0g5W>J}ZFJ)EG6w%65c-Kiq1S{>WF^`UCruDU#<>wOhwrsM2&yZ?#N+bW>~a z5qZf#pexdIduz(@e9zn}@Wo-$IoJ`nN;ibka*7OH{#kuMl*y-iMC6GUAGAF#h05?# z7rk^b#ejTE)e<<&A-dvmsFbs0q4k&yQF|g20xAEx4$CI3rxvw&s>qY^FkKR}>nA@glXjhjiy*bfJ0%Qv)e|*`0^b%}|;P*+3QUMT|TXijCD=^i#QX zscTrOM3*`|38jiriu(oHWa~kUM0S7;`0gUUM~?(uO*JYik+pqSc?@G6bi!ICZP_^K zYKhvKCSCmk4OP$5jV@%PyU>|X+VjYUu5Ln1xT~wt8}+;{^(srv)}^jwsaH^nUHv`c zTHrMc3$qdL8&d7qh|}zct`)A@7|K6p{+%xUKR+6jCE~^&VcXTg92=iCI$rN8q6THnM|l4uOabS?+=Hj1$0|8IM%pgZfOm>{ zWxU@J@1oLkwjB!U6j~NsN&L%S4|qVyF#;1_wxC!wL;u0`N61^wrUwx6s+)%V9yFj0 zRX@WVah+M#V_0l*HEvOx37KQs8ds^UFfiYa8zKu}A3#3>-l;|ANW7>8htPZ|py^tk z>*Evg=zXeLdto_>z^AWSn=>ZWs6LXIQ;U$sdAb)AI{TaOwftzk z(`exjU1560JE~^rskftZt9r6OkA$cPl4HO^^%xW;809byqeKs5_ca*Cvlt!`xosE^ zV_+JbKuXyJ%N`Q@Vqy}E)$8)(NmpT0;RjBX!sz`DP9?12aW(m0Na1wewKjS>2dXZ* z{lBBl@N~{#`)6D2w@qgv+7I4=`QlvRroMK>RJj}#7n+zsnK54WJ`d%s8QXsnL-k8e z?|teOC|i&|l5JU2_Cqn+dJ}zUKh{5Ua{cq|zrD;pKp|_HU5f^Ajkj_?urspCo<}-Y z*hbv!Q>p7kK#gTn~^57UlA&K48pIg>Li`q0!M^J_X%!z7|TApp4ur1fg+ z;X5aOix8Z+T6ghrq(%_}i;HXdYNl=}fF=t26<}TggT5?jz!BDlO zvvgoKJ7AH6^Vor%=osg;4S(v;CFy{?&qe$Mea&|T7ULKWteBP<#jdQ-8s?y54HPZT*au_6z-21kd-w`+!gZ z=n91j?8+rRB(9IQ#mG{p)(L|~|L9Mtm@^c8W${=1?!65HHZex~oPPNOX+6;k(rQOl zF_yJ@y_KE55rYF4@?X)O4~6yd9$gJ+av*I-ku}?T{?!yNC4l7$H6ukpp2#6vB;y~* ztY!if?U&I+06~L%>Kgx)_z0r0|Eb~+ASGM$~bU!*4kKeQ@<8cF{S;3L6q}%XoT$KTZttaClisHzevTJ)V+6 zjOR8)K=8O3->Q!_p8FA}$CDBs4`(f(GYH(6qtQYf(X26>AXoeLmElI_l)zQ7j({VS zSG(vrES;{j#Lmyn^L9i(LK|`C`v=_aEn8Cg$>NJ6{uI&6&_)ODM<9>)J&xz_ttMl9oEM%r z>2VZbWJdM3iAks3{`27RmM)-nmuY+}P_-bvz z?uhc8C|jItuC7&f1dx1Go4Kua=G8yIN39)!_%7Nm+%mn;{L+k_S;wyVYT{h}STT=p zm#*cqJ`1^BqWz>}KPcH9nH&R^`B&2a+A-d;2&$H8__V z!NT%}J`QuuQvA2U+)>+-7^=Zlpr5rZVgIWF-J!g$Krg5@UjbXTYeVIG%R==_JK^46 z0&7+RgR2b^PP6auI(frFDVTEIVBBO~CHlIQo+2Ex}5VFJdA9-I8 z@_HEFRwG9#8e}!gi&T^f@gfr`*VT*ZIh9UEY5t?~D^7)4CLmQ0@&4OW z)rC4|KPzVs5aT7%8Kc)5u4M|si-@qr40YUO%j~7 zy6}nuoI~bqo^QCa@K9r}l_hwC%k1Wa`M}U&^Dhz43ytCVbzM9>)q$5y%x+x0(rna>(ulAnLc;m1y9zf6g z!P`5unq&R*@1cePP_dkCA&5t%FiRM2xvn9Dh!XI^b7qMKdOcz4dcuX5HE|=>$i(qr z18n=aOdT~QL+`SCQz5+wb#L4`bkAhVeVyNb(tIXa+q;Zx1U z!=Ls8V5qJJ=pv$%ykGq1~uhjWU2CjYwT;KQKNF$j=0j&9ufRAUCNM zIH1EQl3jIm>}!h;C1C|E0L3P#u(WmIFaapw*#Yo`paXce5}qf=3OoxnJPQfW&Vc7} zx9__)c#Z))QICda&j>s_xP}6r1Sc%b3C@q*TLqjp|Ke1)d77R|z`r)B9vCTSq?q^l ziDodKbK>mOfgUc*cbPHnQaoalTtD+sx7o2M;BJMPS?$4efD!IBYE`-`sm^r_D`7R` zn-Q!i|{= z^r&cVQO`naXPv!gVQFDeg;p!)!?LW}zdc<_Qwh8;GrXQFjdh8L7a@i~n&|!<`AGT` zMFn?b-jo}_Lf^71+BU3A(>6~^gsvqr3L6YAU+FC0wBoz=}Eb7%R zAIMxL`>4s>xth#LFMpl8(6r$?{m|U`7n-ZhjoKf=RTmGB39Uv-G`VvR9UgP{*RIml zVRDCDm>QeQH#|1Rn=JG$uSv+=nNWd$OSpy3=D7EMDBuu>Jk%C&PcTgFiW8aRxzUh0 zps%Lvv>e}RzfH>=_aJT+=tzv(5^ss1*>KngQxdEu-tC7X!#oyRUHfeZ+h;0Jsi!S5 zC)9Ehh1{j%u_w5h&ag6guOfza=x^Y+$ULtQix||e*mrOgt-do&c;3l6_NDJ@1i?d# zY~O$|9oqqyX71YW?1f1nY|e&OvytcfTMxPWZXf5LxDFQ&#@j<13QM3Q#Sn@jj#D1SokXYj=YVYx#pFren%=Gj1_S?crY2wt(a~<32;)*Cr--r zi9;vY7x%aPCF%7Ii3Ye5-_ex>9<>Gj2Hd_HJG8o^oOu)Mi*~vFS`89AS+63ENqEXJSb;ZaFN@L&nUzzafN~II|2pJOkj&tXkLbUh4f;v zcvz7M%-Lq{2+JSi%!ys>Kp|ZGfvLr6AdcuI1u#GVox(FS1jW_>C^V9dGT{Hji@oPQ>Cq%f;jP9^B%K-B~|Sewdiu z>I&q8*KKs;g4vc9cTzp!!u)<_Ec*h&A7ld1KQ2v8u`%v!y>Z6St=`JGslS-4l_mqL zt>OLvDg9a5m5l<~vaL3+v)8tE0EU<1)n9dv9td`2P=bIdfihV{rx--%Fxw>2slsoe z5FMFw5*;&(=rjw2MhFhX0-)1xA`=OZAV4(bi6T7C_Jk+uzWEvS2bKIM0t6{k2oU-B zED|h>0F?xjK!DtJq7jUNvZIXzy?tp4{lSy?6o*xt>{YF;kpw6Vk7$Gvf3dhvq_xMJ zsszNmK-(U~4s?P*hGYXz7mIqRiT8!k3k(rEWvp1TfH3(+m(A~ved)+L2J&r@?IZ5m zZ$Y+?xbwd77+i{hj|Q zyf%Is1zXFHXM0B(E3S;~KjpPO-oe-=VArr&RVPwb^b9P|8$jp12H$M*B-S}(Gh|_Z zM6h6i4GAJ#g7YByOoA)?fpCVBhmS6|_m|i?(nFOq|5V5sh|jOuTJ*bA$1w=GP(vK= z;D9qW)yHY8ueudjiTJ7?&)ImpqiQUcL+yz;oJ-iY)CT+5J`aqGJJwQr!e*`pFIRnR z;2&wBJh;3qZN4gy{56-6y76ncjW0ckl&_KE_SGdg#KRZmd{~s{Gue{2spS{9S)xhA zDE~N@CCzlyb;yos*@2b_mJ4*W-LbyI0C(UH$UE@I zFLB;+?hnu#e|+D%-_r|O)_PZMtIeIa)(Cuy!az0L9Afqt;9J6l2MEL;H*YB-3Gpxm zv#Zg%`i~0Dajk`cgn1Z{%NNAK#dcQ~3d2RSB0W~6aLxHp@NVjT6m7T0A<4~oe>R#R6U}WK?xx@SQ)f@5~ z@*dLQ5;BX({mE!$4weS-4@b}Gs75V+H_U(Fozr#)<};A?#n5iV_TG*v9*BV1pS7|l zMn=6FCFhno&~HOvaa5g+F{iY1`MsLvQ{|#zY47>pqR`=3%mEl|6 z0D!a~xQm*0?j<8CJT|pv=>4gl4(nqE;JH!QR71%Kq0m@*4YqE=2ge6`i)`o$3@}iy zB`-mogW6|eQX-EYYSAo|CE|`^d>~%3!;{5Cdk13$wkl2FBb6VsYoNy_U;%nm+mcBK z6ctF>b!JL>IE7e=GLA@@p5YXI7c43zHJs92)<{%}J)F|7UCNTZA=IvKC$@+$RC8mv z@915;Zy(%pBwxJLj{h%N>WUS`otbnch84?U!O_is&gC|{Q*7iAH#*EMs0#`?=KrlK zt;`(t|2eZm*GxeC*O>{M|2i|l^#FUg23hABado19xxj#;wnHCZ^GyB0j|L8STL7EaF#fHfWvrV zZO*Qoqwv3Usrq4s*sONOqdU+^iA%gbi@)Y;muI8ol9SL&^fCUBg71RB@ZR)3o&<8o z=g@d_+>L`+s1&=YKhJ5S!^F!V*y3j8z57%s5dS>FF(aUkDKq}SYi+)oQP0Akr)@PP zfxNNFWeLy(1XIY$n^-7+fpBx9g7i`NO3u+^LE$0bAaGW^`u6&6Sq+em7f!=QH$t<0 z$GaH?Tl9X{_^<#}V{WWZWmBN5$F60CD=^66JJHR1fknojkqfwZCR}?A>KNpGT+c;0 zM{_~z8GHCW zmav%gx3?|ArzdS0hHFjQ5_}FHP>4wrBjZAuxsc3U9cB(bt6*q;CFbukY((<^r)>u7 zTuZ1)>a%zsTp5kjvsX665g6VFCE$tcsJA=eEQ%LRn?33z&r_eyrp8BZkWJMx zLsYJ6&^#gci!o%%BI@TKgt-1?5Qr-;nSfAVfN%B7kD9o4h{dBE!c~G$F$doyuefO* zyh`G}dv`$##%yLu?4-K7hIa7!8S^}h&{`H@Al&3HL~h_MH0QG+$m#jbIclEtoy6nc z#^`mpXAAciwqM{1O05M|$4!zzSu7Z=8%E^^z#3{@p+;8{26ea$&+~PFGfQ7ERRHVu z4@!i*VTY&QH-%?GR-Wa=fAi3b0{=|AS_2HGAiS{9KZMTifdd85lKl#T?ZrLI9&i1d zGQmqu5cd~{U04UMj6#1$av89QSNSt}s{<f_iF|1xkapm5 z7W6PnFP){Q|NidC0x4-xMz#lLD)%B0Ip0T4ZufrLg_=O6qJ0mr<9e&L{tX$wqiU)y z^$OssR`%ycnBs3Pio?VD^)=SW(#j}P{M$(q{09U zC2%|_x3aH?odjLeQBl~SX8bi7n>=NF2=&>xSYHh;g1jpiZyg~~^8z{GxCQsp`r~4h z@i6?~QzV4X^|F5I6TG@c`C}l4XkD}^!?*ezL)Ug(Ymptk@CKqX7mw5q8;|%91y?wi zdOG3%bffYvtUSEQoAXszf6$g+F62qBia%l?EM-*Clnr}AmG)2ZLQpXU<>9W?J8Vhl zv1gw>+jx+=GROM@Mmn)kUx?MG5;2;OqVXgL@6Uo7P_U*8hicx1VB}4QwBLdk5a|ev z0m*K3l{Vo%fsS5^Xx`k*tAA3Gzt}g7Vm0#7X<^uKMIuL>~Q$v;7hjFd}BqOxCzZDtNkv~u{6=#jRTbP zqxQ$l5n690$MX;wTBhyj`@OM|)A;c!SN;ikW>-j$B(rHhIgqA#hG>72(`lHT;}4dfG4~i?kdb{Izf7JBQBUGZdthw3 zqlyzMY%J|cBmvVh)x}7I5>uwE2FdhQ-wVyk{hR7?7BCw_;7@?3-l|Y(apltZJn(se z$LB3U*l3uovKEMT%ph~uQU;Mkopo4HHx(^bPi9geW$mRv-9GRtQ0+rR%Om(t9f8jZ zV0a6X!p`NNXSP-puYM3Yg0t1fI?p=hp{fp5-OD_mG7s@KI7Ypu^SsDBrp_~odEQ|j z?oZ$lqC)3+fO%fjc?L4iGUnmER*3ZaDEmHiG6LDV998c~?lc>6V_&KAwu2wt5Xk`0 z|3hckH$Z1N2N^hnT}!C64-Qowb<=Td+O3;jfxM~-RoWieO$7(90_2v(|LK<)!sWsvwDFS-YlvHGTT@Qi%VgODl+%2eHfepkz}Y#`-_{uo0M z#sV3k} z$0D>C*WP6%;=F*K#I?Zc^4-@HI}Qr0)Dprc2Iov}#nbT%!N*&o7-YKoW(4lF@9?!= zZ9H-c@nU+oc$)an04m;rF@+r{bmjQwV%*&99YkI|#Hkpu7=7}}HLIrI2*DAIX&xtM z)eDiy;h7W`sxvSz)=^c5%x)aV2GUk$q3V}Df_9G7=As% zo6VN{xkxF}Y=FlgaaUQddSg6nfl6B;y?=g4qi?!P6NXRO#Xy=9wQ&j-p;efkjY3r* zMC(x0QPojrSt3~))%B>sX^z30n$U1v*AwQ!_l${)v8`$8ghGxg8Umuiap#{Mqb^0( z78|0i*$eaU4zI}E5$a&JE%ywM+}{;_Do%ikQOo~B+ndKnU0whGfg})tFae3;9u+l+ zViXrJh#5^_B8f&^z!fZtD7K=`C~go@ zG_@D&OQ4s|BlTP~&Z@nkv^^^_w}!8Zt{_)?o6`#I%-pjq$126W^2=|NPyl-%%UK{tf5_VQtEX>Fnx)vhleKCS)61SkE( z4s5xB4Q`W;)a`AVUJ`5~vwsNyX$j@S!T3}aYf!yj*SykMbK)|W?`&SrKbUz9<&-8$ zx2DaS>6h=WyXa%X`294{l#)uz2-#Xk{&*0 zU3=^|hywN9M$RjO1n1sV%x7ixviA4nj$Nsn#9BUYPTWQS@UpxiC)n@Q#f(m62CTt- zo{>nXE?zX{_TIF#88cZ9pP%rl-&r|1IgBlKXPOy;R(VqR$5zQ&9dmm_YIc>uSzYy;+yu; z77h@rHqUOKsR!WVeXAyGU1>&+)AMz*AbIR@CMO%F&8IsRYbbl-3kR|$#M$6Nuk+oV zg+W(q;-{o}E;I&1yJ5pqU`HF<+n@X(KEB`Z;Ug>}kGM04ir^_FzB}8`Q<9-1!bu>k zjIm!uCn&i`ibW{sc!_%tlO9-z+_eZ|fl-^x>GyLzuA(a-1I2oG^4*|Bulji?xYZAm zLsTrNA5_by?`^8hJ|WLYu^55nIs@Qni&sfVvX_MsP|JfhJ-;|f6FFV~%y4-}+LfgG z{Y^l~zv(uv`1@z_2mmExn3h$MqVQ->acBKY$j?8UV!>(`Ean$PbwpGg5u(n$hauw4 zWEcRuXA8T@xxVgwL!nD)vdt+NIMRW23!+1)4cZ8P0Quhbq zIfcn(?oXRGbHAR4Bv_F14uVjmMKMb+^4%@vl@cm0q#`aQO%Iagqpm#(WwlNLa`)m7 zo7?NQ0?%y0^T{^gS>bNCo^BA@Ax(p8l{;q|-2&2#(3)36!HYwXz5t{!d4%gPkPh`A z9Vn2bjRDdT0_i9~5|8+O8kYS9%UkMw1hBMWx}{^iVlc_pdzC^Uz99*P9bTXSLK&nm zM|eli9L{eDR>6Lufg*cg!?o%@XdRDm;?Bm%1eQ+|+p`c8$^408dq1(E`lc+(35DkGhSaAUe6E}UYfh)T zrn$^1-)6W;m+Ik;7h}O(PyXlz_lY!aTC8=FKHSV)a0QvU>_42Ll{*lrkC%(G!!Ne;vK zWAhG%p$0OBad}Z{7*7+mEF4DF|NAgJgGmhyj?mqYssrgZRNK_Uae8^+<6qmzqK$is zym_Q{e*lrF_s)_n9lDgbc+ib2dOd<@&X5ywq~jCsCdF)R&VT1yQaIMKSi^bzB@l;h zWJ%|qdb7Cii!t-t*kU47{%dqJY)yONd3|-wG*bUdSSU~DJf8<*@HYw8wHKa5R6Ml*~Pqu2bePy$^Irm*0Qy^81P|zklE9H=@Kj;n_*aoqpbY%(nN> z7K0g^=g#67mM;Zv`Y1ULk42;^{3&e^$XU4TwP*`glLI|k&LCaV?0;XNGGcbxZl|@b z|2%(KqHSWx`e@?-Uu|!y%_~!DkH1JoFnzfD2X;obpcBbz+Qo|He+xfzO_+DJ^>%3C ze_k7^tSAZ5!d*#@y}}abl)RvWA~Y%&{n~yDrWH_RaNlQYmm&U8mfsWUa>0H zaK^e=Lp3+^E1s=tNIbybll(mbA54_H<8$1(5`qr0kP#gnn*84tK6zcRa*C3m8+xb@d#I-tZ{0l$LngrZlnGE3o3#L}hZA$XJbBdNXNkbS zuZ&cD%aKrp-1`$x&R)icg}Aq#yP(>$R9jFUR5QDfRXOaLS%ys)xw-k_nf@)tcsI4`v{d-vA%o?sLaTh8g3_gc8goTt9u(9Nffnq{${JanG40_GN2mu0TWVPbog1GzIg&^>mqAIrI<0{SE5(D86;HJpfq zns@{Pe0{u7XMO#1FL44LMY$}=Z$UL+72ap5I{DEGav#sPoJYv1vz$hs^Q8MXIcn4m z`&wcpt4;{sZUMY_zX3HnU&k+b8xilff48x2%Vm+-zZW3SQXmFZV1zJV*uI{=dh#(m zOJ+`^*yz)u*!VS-Je~;4`idI{_8g8I{)%y)-GH>|PqfFXUa=>ux(wU0I8S~ShxfLs zhrWhw=@J?bm`P8A~CRoF^OTdsSiRfApbX3{5%hwz85{!_rr+@IabL$?S% zBQ@z9UxcuSf2Rmx57$?fUbHUGw()Ow{NDu7hv7^Nrpsuf-0s}frV`pr>};vBlDkPh zRkN^l50#a}l{<;l%3v{#w9C5xHe`bYFQ%E=b#OgRzr*L_Q})mvHDtXMR~)QglA>Ki zt3ByUHo;{6N6QHhwE9*8fp_Pd% zysm~$Le~ND(Zhy#(w2Cgd!ibq;PMHmAh_NA!3!BP! z80Vu4SRCvJ`TIxurC~lyJ#tmv$yc>3O81 z4v&#C8BBJo3}(VC3$HP3A47Gm*0s-3dGgz&KR`P2i+Jqf+2U6%OUgL|Xx&wf1bsPl zMf-^jdm9@8UrGo<^w+-|m$gF#A5Spo%k7xEpYod$?`tn7$Rku8fpl)?YiP(ESRLf> zq7B-p*94FHMBGxohye7PI>{xN5P41|7;zIvzXe%5n*lGYyEbQ!s^HYT#Ef9oP459! z?TtO#m(?x%fg7yL5|b5}bP%J;;+hUhYw$|IY4XftY<=O--a`Dp+7W~~#==^+KD(v7 zzDQgMw_c9(E4l5Ic#mF-Id&d|N?g?Yh29GZpqOe?Ew&BhmqnCRsw(qojqrJheh16x z@pzEPLo7O%t_+&#s_usRqAZ*wBhU12Uzj}MwLgC!&#(QosP?<_ukNY)xZUZ$y_p-S zmAEY?mRC-GCz&%iTK8i2@@yB?J2gVUaN5@_?#r5tCM$HCUg!C{Zw=?Z5BZhZ=jXK* zl$Tych{fBgNr+`5^j2_$UC?+K;LRJtKiss8lrO}aYL0GHYu!JrNAf1WxFl!bad=O9 z+-EQ1QUrER#`80dyQ-2$6{CGu1-y*AwC=s^5$Db=ikCB@e#w*8*KRrgn!@BsuWefR zeF7KEb7^Ew0spk^&t>6rXK*(lbTZ_5sy>I$iFMcK5p!a=<~HZp$ie@o-4YM!*mbyE zSY%+UX>VDg%?IEmS?eU}xF_K`nD=OmFW zkcF?U-vXWcw&gC6wEWyH{Np}YVNCUTDzXPA^C$DgeZJB-D#xq6Rc75Pv7(i3j67|d z+jjPVflw?P*=2J|%?2JCJ785M(5+4|EHPb`~%L+M`Jr+LW1X%-)!}t@#U1ie^p*7$Xl>f4vLb}T=ecpouUe4@&XI{1^kRqJ2)a`0^%p#L=KX25g zA(oXm$zAbp!}tpnXz~(W{+WDt*D@2G1?Y>J2H8^VLZkW*75oyR6P;sn@8HED3%L{C zJTt#)a&s(uCC3MU*xDycfHxe|fQNqhQCZRbmPC8C%;8(moBJxea#Kq0S)EXOL-%%E z0^650kUZ;i!$;dMJ1hrbFT!qDdwNk?l=pV^TeUe2SzkGMQW z+l@Wv{{{rLT`LO*%xpK1j0?{^?(Tb4Gg2=lQgePnQ|r3+o>%vr{~uL5fvMou zNlV?*yq$<*v!s0`rzeqH<;o!%!3il@Sh$PSz7^j4+buwX2;b8lGhfv2w!UOIA4)L` zn+2i2UkJ`~nG0|pyzUPaHt|zHa&EYfKR5i4kOPqXnZy^bl-uPBceCEBo6M6b$cl|} z$62$!sQln<)!F|IPXilhINEpHy+GkMQOk)ruxYj+J9FBny5UIPu7l^u4*}CX zQ>)u9bwBEW&e3%d_1&Ob4AVNd)}x?i;!&g=1y@3F9WFY>DGX!6mlO}KEg=3^Uc8^h zB&++RC(lslwZ21+I2t^;GI?ryW%lYRx7Qwa_3moIth zrWcA*iMgr7k(*v9OC|P5B_342=Gw3yu>|$s=HZe5KR`?A+UxU-^uQ_{WI!aP=IvOY1qctsMG8xBYPZfSO zMZBV$if?jfz0C)F#%|3HBck0M-}gmel2Vh{gJa)|V!?m|iUjU#UdG!Qp5+zrmJ{=Y zL|b+~#jiB~Z>s$xefzG@hSXw-?-r{=THd*C2Iq$P?S;FmyB48Xro5D9AD;h-6AxKW zdU5MXpQoK6=)&i}?(^OJuO#99PZC!&AwYitL|^Uls(V*o%^LPYx2<>hB0+J zvGr1`ml{I~{&)yM@RmEvDz0XqH8@)<4^v0se;%IEAv{Af;OWj$P{@D6qsXF8@O1wX zcn-FDsrFOwe0Xy>UvIf(Uuw`D@LW4=J9wV)rQQ8jG{n#FuJGLMONIEk(wE&1Ki65k zuJD}R0ndmo@I0D10FR#oLwNdTz;pA6uJB}ag6DlHU3x7TZj(7*Z&|&r@GQP5jh{!Y zVh4VlP)eH-C;f0C};8UL4#&TJype|f6^x7=W>*n$6f252~8sqzC-

kdZ9Ax7DeH7-^pwbOU#OB_qCm;_o;I2jN2W(t?oBRzIK5 z2!~+_;c1_7vH63+WP_f}uOVtSl{z5o9~6rQZC&hY=>$)iiuWzwZc%Yna7`V_=&TkMA0Uv8t+lH=XjC?Q%?Px}-To&gBIqcK4 zi$!p;hPj);#y&1h?F0j^Mo9C;BA1_Rpp|x!3LL9U7ju7Xi!N=Q4wRK*mwca8!MGUH zg*b7S1TsY;{y?OtOM{I@Zh5-DvgIGx7V&Xy+hijZQ*O4kS$vGUlA%E+8^#g~{ipE! z0!Z;O9bgxh)NkvOr)aVW_|&>**~_@{H}=j$j0w@ z5gLd}+G}sOmm_SnOEG^K87S>tX7x+}G);Cm1Xt>*2}cNc7gD6V9ujd8aYaW4akk0l zv3`542Xzl~K)lb|(R;1O#@LJ(IC7@40pSb3@)Vq}XVX?Sbs%P?F?dT53g+2)yIIOu zJEv)-l2gP>$@Z95=u&!7RoAVqr9EVYgd12Y)eP+#auctBg#Wa;A6>ff6ERFAF^&24 zzN}p;D!g?==p!>M-LaHaN~@z6etERc`-_sH8ES~+Me;i6N~g7QM%8(VXX*JFye9Xc zPQUx;QZdlkKz(qx9rf1F;O6#Y*@Q4-uYP7#+?>trZ`DLDEBUu`6f2fawmB~Qzx;9b zZjV5HyNOB`+)ZQ51-TNQde3vf%Pl;bY_$QsFp8Q zJ0hTMZJ|s~C92aXpMgjIiqGHpbuj9lC75QFs_=xO*gt)SP@?>^9%-E>Uwd^R-le#c zAV9+MrftCMSu^?5Gn{j>J}Gz+<%ZV0aOb1aG!>N1^hs~04jjkhYd|**9taou z^}xswEBmk~M+Id->cavdr@zCB-(*EumaUyoGawL{6N=ICKV*q%@LK%Wk-hFU*stpP zY6*=8nBMc=L6fMrI;ZmNjcy<+lo?fymt$%MqEn5ziU?{tsw5FDe8%StJQ138amLO_ z`e$!X({r=qdvZ4YdDK-@fek#N?kJ??D`qCnt@!nlikO?VI+hNFh5Z zvp{RxAC|rc@p5;KQf%U55vjQNL7LEQ{qA*Nv4Kop3kWoW@?s#2>)8t;=3WX?`M zwXc=H8dU^#F0gBA&A28DPD|8PiY9USnW_2Zgx;qSCB%-v-D#x#m4H@*qL6HCq5FGt zF_T9ME5+q-7V#HBtkGe73Z-vZ>-91O@`=@D0(y*jRwP z{HtW0yALXHvbjTv1n)gN6xr^O|8?g~qB^UEK#;t9%G6(A`(4N4WTiBVV1+dhO3D90 zswiBZa!`sb73;@L{Gb)-T@P)K1*`Ark(-{;sYk2ZOcizlMc4j}4c`7Nu2(}9@1*q^ z-!KMJ4>p41e4lkCS6IJ@$pzcCY}8n69o82qddndFk>vOkKm)=NdUA@kw#$64Z}^4- zAe!L*%*KmcHR^u5O8<6!dcGCg=j*+v0t27eRDhsoWHTATsSdwZzJ7yZXGA2(xIx$; zi;lfAPo=oqNCkQlHUhF^rcB*~`jIps7)No3h*FBGs>-WP$)O{!iVVz=3=SecYAnYz zN)$2@-wVRL8{Q70+CndG6$PMl4Ddn3ON>i%wxveDq{&u$1C>BmMO|3rVN!FSLgqAQ z?fNm2Z0>NrcA;1izX3ITjRx^G6=Bk%0Qv4~ah>YhYkbN(X_^cRQ%`(1s*E7HU>0ay7*IWn+6%in_ z`z&xR=#0pP+w0)A7uEqDJkFydtTS^~j$uJCYukPmkNwb{xN>;40!Q~J;a`1aPiyin zKt0b_3U5M{dIqLt(JFp~bZVIipxJcPToEQJ&1$6S~31S(K}>?=OP8 zj^iZkyeL@+O-qlu>;eQ`i`BFMy3~BYdVV4))&GrMZ#cg(3{BKwO>bTkE8K?U?+}#d z>tYFLwTJ-mL(?0khKAzec3`J!afrE(5j{qL|7yp(!}TW16gJ@d-Hxl&?k&&2n^)_| zL9RQ=6-)rkvZL%eU9S5^v6>za&ovTf!G*$}G^zWofXNo}6VTp>!3&=ExKFIeH=>vO z#)+Gv=hz~dfVY>nwMDtzImSXUsl$}u#|C>ukZdM$LN?3IMo>7Z2(3C}cVv9EYm;oF z#=K4GWQ!k%d!~`4V*Ai2^(NWDf#5)$T1(jS_UaKaM7Cw6`ICtvix`6}lJ(0Bm*Mk0 zt1x@`sJudUF^grm7Y~3^e=P$VMU=mJ<;ooeQ{tjj?zpDwl2%C6t(=QozUhXE4y3(= zNVE+vq!w+_h(S%EPyon|s(SjE2Vt_ZPO5Y8}PQpBOe3s(2#9arJGwU&SU74px-00;X{f z;nqts1#~ToalSY=o|A!ush3R}8Vd=v6{%bBqh)Lnsz~Ij(>jJB)8(qCc_vQM#KGka zJpp!bDYgZ>y7*8nyYFUh;;X@P_lijJBDB=+b)`FI0$mW~SCpnxiwd@WJC{Yt2mm2s z#tx--cvL0(ET=aL_mTs@dXC{soS~A7slIe7g-+`>SS4hBA&F00{$G3~6}bG74w{c_ealAlwd}V!!6o)cxEW#`0qDBABQLBd*>;OQ=95~M-F&`Vz#Z+{XV_%tsEPpif$5`jc8cNBbkR)(YG@fx*) z5Ku8MiURU0)QqTZAE2bk7+8KK*p)u^7MoGD5c-bYzYwVn;B$%XspJn_chE`g9`4Gw zUaUH-SK9Qajfpc5xoKux4qOyMpem}th^E>?T8JGQT)~`T7ihQiz%ExMD36bvHRKY5 zkW`j|&G-j_3=yVpqw{Z3A6Aq5u^#($D^gd4N01C`#=W>}1R>MUSFM1|qJ(HIH@2yU zHT)-h&FJ*4?Ydz!@IrE78YNa8^uATe3DSTIN3g91(#itg?oY>Fk;~WcM7j|Xbu&=X zHp^4rUUhMn8&zmC61Ln_q$QxpteVzlMf85>#zyIDl;D-A(MFkZ*aRNs_DJYu6EPlY z05dP<1LYl1!N)-r-ukTc`pK$IaSP2vmsnU1cg;}>Y1mIxZ2>U=?I8SMXJ{v+>;$w} zlS%V5%)|CZz2!E>2cUdMM~g*#<@FeVk7j%1a3Ua~1M(E^&5ZQUO`HE>u8a92-R+6R zHNdP@L`2(UuM+1!fYi;tG}h@EikC2{N5G5VGY2T4>?FS}vIf^IjN=MCxfhT%TPgut zuJzz@jKf1Yqi+{i>Stki+<{10eTn(y!63NL*!o^;-WX8TlaLp(&Q`1oGJUN%fe!pE z;384As-4*OVMcrr3HoHq;Q=i+-A$Z6PMa`lu}SKyx1X2##m3?gebTYCdfu-i#KK{{ zSks1=_!MUAS#)oIYk^%#dk!`UPoy#AOpyu0GN31n*yHWWiq@shl|KqPW%g(`d!p-n z7L+!L>5p>ctsj_)Vl@ehpvVGo$RS-L4l#hcdw=`B(N$hhXNr{)5eTWE?;nLtY7l2#-B%1sqP6HLg$(Ek(jQ6X4t1(5V=^ZG&|cm;%6yXyuj+rM?|iP^=kEd zd}f@H*WC4Bu@~%`ysgUJpL=QS^=C9jLGzdkFB4~}_wk3Z80$(Q9eVzd_c9c8Jg){7 z#GsMo`DInR!y8YucN)|XmflOK#jMlEa`7S}0(F&ttts=-(Z@d-JwW3TiY`Hn`6 z_RXdHpF%7aag#fBLnCM}*PI_;TC~b3mfJzVJn?CTL1^Oieo z#Qm7g9}lE0A3?NN({z`)wp+Fp^u5T3E%ENc0b>IX^-Q{BNuDNUYfwd)-tm{{D(-~fN8$NWj(4q85^zk3Cf(M);* z&3=n78UYl>vouE$Xnbd9w;iD8Pd_JqUcT9h?+BO(F3Tm-2SJ|IeWLgA$+;1NVaKmi zS&@O}XS`tpCKLyM3tfgPXC(*c5Ewjay~=A19?CmDype@K!7H$#IimY9S?=E8(UHBF z(Zc-N+u%c7V#7eXvFe4_#9mAr!YIG<-OdTm?kb^N% z3E5iiQSnH>fmRrMS%2lsLex}9u)#Wfalw(|Y2B<+!5fAHeTz=)OiwjB+q%xG7&Y5Y?9 zibGU?uJKI^PinOJr_rqpZ`}hJv!)KTHLmJarB9AX7EUfWRec1Xm<(<&;J3BONhWrc z)6yGj_M@)H=T2a$miWePC;vt^(YjzL_2=-Ll1sFFA;^*~g2Ab-W6t%W{iRfqv9F@g zrX7HlOh+zAOTrPh&~llk;MCm?$Dj=GA?YDztUM-PWj#3 zWN6%TWp?hoAtPS>#0HvP@A$N*Rrr8%-59C+h{mpqV8W`qLJvSQ5Ad_2tVP{D-c!xReMBbmK8>m*7xB6Jt! zppEezn~Kxef{#uYkrUqM0LGUt-F3mCP?&JVHBhcHph1w9YY3utJ5&A3{^-Kj8>hS0 zXZxKA=8n~}*@a35Ei{Wd_$DL>wM8AD1ctEc| z4*UebEQS%^o-XjRv$vt34_*rKfb2GjBc`k{nho><1;0G_O^PurXvBd=bS9h*7*KWxgDi)>`XDkAdp%bStU7S7WlMnBN@Z)w! zDEa%rDR6hmq|)cSvuk?qS*D`jC~^k4kED0lm^01QKM!33kNu>+D}1glH7TjtO3%e2xbnhWferLI0An+o^9dq|BXXFx# zF>Nw?f&=(Dlu80Q3}d+8Qj{^5sFusBe1@a#VL6J{%KyZ7u;N$@`WdNBV_j4|i6UO{ znzniG5UY!TJw3csH!S!?2QaJ1ie*ZCwm2ujf+6QXId;UePvn?~M!t7DU-+jN@_hu{ zE!kOK#nd?@jZNn0b)?+R7Mse44b3E{{tZ;6S^eZSvG%;=82`ce`WR3tg<@@mNy%d} zTxLH*2^8|7)@`Szc~5)HG$Yd&N)B=cA~DdR)xOz*9cH$z(G}Yf0{hnR(nq%+)f&-% zD|Rz5S@}?_TCeZ>8*zRrzbo%QcrrQ1zWMeIM53SK71Hl62h5#wO)i?`1T z)IxAk@AK^egy=x?mXy?|e0SYrCyFjXFps!BDW<-K@Hy-?wZ;+ar)ZRphJ{v?$Ii3FB}hO6ak+LNs#u zCZ8?0E@tk&3324`-j<;G%j|B&^?Uf511a2V8Pz}ZH63A%?zu^j>TN!${1+j@BN2C#J6NLVqN51SKWR*1)$)(uXnXBkvem$(S&uNs@4+`^==e7~CTh+l&c^HBo0<+6EY~Q9Qh5X2yi@^& zRSsK3do!nl1`d5oN%HLf)D|=zAGe}r{|c5_m1LkP=OiZe@rqX7VpJ8 zV^W)TRWuJGb@U6N@#3xGaW;)b`XJ3HdxXR-EOJQ|<3Sl&RUXi7%Zw5y>b!3bVgm0w zYaSY|1L0JUEJuv`>{7sTsK7aO>5w#9X>+pINkeFH@!>xdmz&`-E^@Rs{|cCpCz1u+ zbk-A|h@4y(vHfdqB3s_4MoZhivbUvPL~csckpWlL=J!vcE)Dkl;Td>mEjdbI=qXyN zeoW_kKVQgW&i+uVH?zt{sp6un<8LYwhy!qcs01pA1NUj$SM7SwU6Xg3Z^)62d>|Iz zn3?Tkt4Yc)mfwA+L|hW1azHdBhKk(`yj|{V%f4TzeHNNT<-o^@R(&=$`4|cQ9v<%t}K#kPVH+Dtwo3b ztLdTN^>J=ghm^t|NFH31FlCcXY#|Ai+oH*ZXE4ggZ(!(aQc~b+UG{E5RUI(ZkB4h$&Vw^AXcF?&bfCtfy zP$};_Ds)Vg3$UVyE>O8u7nq=iv=pADaX`CAtka#NFInI_W`7e^TR-N>)UW&pCbDic z?ou|Ex2!Mhg|Pa4CfyooxbizEL~OM3KtlO&$|Sm)-sHw9rk2>7L%n%79bFle-vn7b|ul2RQAOZk!!rkr*W|FmFgpI#h@*G zUEQJ7wnhE)Jh38?w%K|2ao2NScij6m)?MUCntvm z(DmTF7SO~Q!j)aV?vf;&v0NRJvu{m6!7Uj=(}?*p(cFYgg^qinAJ!(`2y}cCw%lgK z+Ge6Qw%0hC8^6AT2Fvw+;}p;jzst?#pk-P1Z8xegUg@*z!ifH0AaCwwVGI2;pzuLI z+uSFJkj7RFB%O-C9b~uNtz9NSD`smtzXdB&n~X=X{vB;bn?{5bVrgNjpO4=HNd>kI zQNOr60?K>C=o~j8M&tipGAt4QWK#C%vLBawZF8K84G496aFp?+o5eYZS}Z^O!b$5| zes^pg{@ohdO#|EW{I4}tTJCSx{ZS&haI8}Z)hQ~Al-1)m+YR7NSM>2Hi!vC>pXg0JQUHun)i~A;DD+a20uO{T~1iz2h&;lR_+OJrjZqq1XYmfkA$4 zk|m|8QnA}}GYCWJnlU84G1@Kp=ctw7i_-T4g&}yDK{@QIP>tuQzmQ>Av zLcSe;i3m32)zUbGcc_6cHjoyDs8UUSU2$0*vDM=lKA4EtVyEiINb>QkurR0PgZ<yIkE&l`o&6Pi?No)9KFPGZ%(+$4Ue@UD&_HTvB| zM`-0YNB6VZ#l_E@^la%KKi|Qcj|)gUp>YKaJbOAz)w8}YnY+zhX*R$$I$J@q-1VSR zn(Y%rv{`r6#iB4h*hl6c+<}Vse)m@hn@SoJG^5oK^^?;n`AVt48tkUp3tT$9?bp(X zljNVemq%f{v^7J!Gd1{fXiXfMvmEf!D2ydjv9Mj&qw3a^v<-de4J(>KlZ5`*1CQjP zI*IJo)z;#gjv^*sHj?ra#x)1i3j&S;9IVLC#p`0ELalKVl;p+zEDHi=A|!H&8d4skZG zYX$gVup-i@ z5&k~1S7E+%Q-anEPb;f$CD-vwU+Och50z|B;*K4h2CsLcisw#L;S-^hyNUEv=(jJK zG}aN1M?<8ds;6lI01g6`uhdB$3lfgtB3G1^f+EwTcsS#>=L!NyodRy-P`9Z!`$t&d z891J@EP;0T@E1DLjuWkf4wbX;fJA$3;Cj|C^scDi_Bu0CB(PX&aXAP#3F}d3%_dpu&6y+!8OClEG5n@n|Z2b-tgyy z%W|5zBBcQ#7Jy-gXKvmGK4tUf&Byp(N_D2kwHks7qP4JmE2TevkcR}x91{DdIt9)K zAW(7|uqo*TAES`8tzq3_edK%LaTDNc9F`h*y36C*)4yX7y2*2Y26SXKDWNtedzB9L zR`L_=0yi_HOku-DBVuQ6KTUT|d?m{x8!Zs56NRIKrD_s;h~3SbkIA`qDiE@{WYwtjanxC|z88k(j$rOx$ z)uQkWTPXlscFap1`xHb{@ras5(vfzs4-pObV>0x2^ZBc{;H9l(^-NS-PWjNU{u3wt z6*{4`^mGg*Zhf1%MNTpxb1#1h2!i^r*f&d={HiJ33me13e_%R#QAVdd)>Uc#!MNer zf`&oJ6&P-DmmSG{e@Govf@zt?X-1$(E>Na}6|0={Rj`fbpaEC{)i^V{SeI7wg!(G( zs=&yw(PCx$(}ihIdeJTu6(1ip{$)eJw9pPwX7I7)IDz@2+ymb-)|H*Sp3tiqZqGcZ z+kWv+!IwY_&IU@>c*Lbx{a8v={lnZXxKn|iJy1#1n-_F<0{tX23=-Mf$VXkT+m!k= zVgZKh^an4O(Y+T~>%4o?E}mEArsWY|A9{p_Nbo#-RnnfbRWA0T7i0(FqJqyGkF%O< z`6=sq8N;_rMtUL_qkYl#0F0Ioz1>r*3y2H=?591TP12fbB$gw4&|vHV0R${z@m-$~ zlLXOlP<5|>FhJV-v#Ghpl|Q*K7?gbgaqM&qAC=o~WK|cGg2Ezyc%4dLmJyA!l?aEo ze9kDM^F3L-8f5co)LV?l%srbu3m^h`1T*7{GC#)+nz#R9eb|14k`ZTZPM2Kx5B3(` z3J???mxsfZS`EuZq%8uQx;v5>Zs_N`ndmF;zh__}?hqA9KF-yIRDq1ykSi+r@OSqb zBvQNUS+3iboSCh7C zS=+Kdi(%&VWplla4x}F6nK0FvWFFR63rg~{61Z+zn4yT!3zTA48#c%yT-m_+mmlzE zuFXS^auG&|!xbyHf0|hl%#{s7Hg#GP_TqY9_wdavqHX%u9d7&;wn5a(7QjUm29%9=x&cq%itt`L!c!dH(9hu{ylF4%1@{GmO}W+g=N$puz12d`>48q z(92J3)NJXfUkbK!0ul<8$gZSSAmOSs@Iu$ybeaxTt7wcO*H%P%#$Mv2XoxRKnDf}O ztraO~Q^|x|%uze>))%>3xC*Jw;ohT8U{zsD$iY$yg-(lC#9y}{m8P-k#N!M!=U;ey4;&cKY23VTKT z;z2lw)PES7fm3ogIa|Vxl|%TJ1?^KMmuPHnVRl>z5LVnvT*!Kn0kfVLydGw2CHVoBf;`9cNvN=S7sXo$6Ynrd@9b45)FjQ zbtbcYpREA48*iWoGok)?lwcpTX(9t%syFO|^*(h6cX<;`&2_Q&0-?P36VMP&bJL(ZZfK(<}sHq+&wqj-GB<2;CVVteD*F{NHqF>{` znO>O0+4jv*d%(G|WLYxtiJSn)CH=*cFvDNAO3By4FQ%A z9L%GmP{C`#zZ>*0o9x-k`Ob_J0M?*gTc?)qR!9mR>_Ye}m`J#Ov<+}S>@u$2X5fJl zsw~7qPAaOT(J?C5q0aLJz-UGdM0$$;MLR8O4P}E8`{Gg#f(aYtCC^{1DOu4YAivTK z7!LXCp>ZLJsevIAe1}YY`F^`Sz$C{VpX9rY0cAG?u2a!x2R14T`|G-#B-ZresA!>H z*+)_;7fN<;Dcbs27ioc)9Z@=ftQ+8W-Y))}DJO}kuooUGWtBt$AkpC_E^4)Pai6c? zdX=9`)_^MF!U_fo+57nqO@)B-y4xpeNzZF{+5uEBGM*q`a`w*6xVj5!LpKk)VMzdn zb_k(ACeK1O+K#!tk~o!w)k@LSqP(H$5@?;9m}oL?Ut9;-VL0ZjnW<_lHUC2ol2uAh z-WR}g)=CuQ|?~W>&q?+^!ZhVG%cJh5=%;UKFVsIt0agEp=Jkc9{}d7hDp^ zKl0!J>2-)15sdbpR5~4LP?nZtpGu`C3tYC{C1Ki-#oc*=7aC~Z z`Lz&>KfBW0KqvzMlvV{6!24-z7j4Ot2OE1Sgrv6T)8|rZwy0J>cmx zptQ@{xLjQr_?=WlhGpW2n)V-ORAR3e_XCEdUmGOUOTcq?<_o0z2I)sAYSJ^=!Eh{| zX!ES~^fCRqM(41qlI8YuG^%!uc{CXmliNXN%wAI-(^q%m$`S6uhqgn^1p1!>E_Ie4 zjVyZ10sCBry`Y~1R@WV0ym;jUOC)l>y5#chK=z0kI&Dc($7}0LRy!?M z(Fn$&IS|pY4JHBh7Bm@+Rx__u^Jtc?1@c5C$v17@8PzvfqfF~{k*$M3=fmu;K+c1)zIs0d>Yv_;Yi7D<{v(|! z4m2;%lVAr$krVm+m#JP`^xECmi$e(DTTSpk)dfC`HTNFrUBk_Mzo5aMw!ckit(Vy! zfbx8PHkF0ku($J}3@)D?p9n_YC#Qnlx;ek|8b~CDWqE2fc~YSH^+h9K!1+R&6NwLt z8vH;_ghK8#Sz>!8f%vUW2^4h|v>PWIoB^#X8Q) zh$AlPJ$0j;Amg^XU&uVL%zj9**8>l^%pa5x$2cmS`t8mnXCpXlbt3~U8CW8aI*tQg z>KWxwv5|E`$7LwG+%gA=cz+{F<=M3SQ~AC_#MXc`>!#R*n1-=PFrl_JiVCUeWfn)| zw7>>1WeqsLMLVwPPYr@Uk8wMim!LIDB>x7@be#?Xp{(wstl!5MoGYqhfYWTqbpI4a zbF;*ih0J0PnaTj(qvbmc$`jJQ+4bp+---u@ctk|hT;qJQ-Q8`HSY}E$?YI?ykV!3z z6S#UG-g#wghN?@~ABU42(^N^HB72hwr=&pikw_pjVK4;gi>ED)1&LmcX8e|Opcx5vmw=OP+*fHh1I?1TG1 zTCeMsgSS1lUV z&NS(qA8YE4Pa!#(4oiG*RL4JcUL>P7V(B7ap@bi#WwP7RLwML244m&wEkIVqb978Z za0r1ypgjBinqKkbXy3NqTSH-`NtZo>U(_4CsVW>1>Tp@>yu`a{vR_4OHey}8=^kF# ze1@Rvq=JL)CLLIOoQ`9iHO1T)&poavx2to4?nm$;_$Db49dsH= zP@z7q2)6t+}^P2+}CTEjb{8(NG4w*!h^?Hc@0f z?o|@D6mfX@wW->C8EBae_1T zB9NcrKU~SjYgW2cjt?FA_lj+RoG4c+sPV92J5*=alq~~5M#ePQN8YtQCsR#Md-tn| zDR&n@-oIwfx3h6jaWZSVpO_jttt31_f|IT2;Kay(TaAXRU+$V`wevef=zFw%`zl|5}4uRTA^ch|E^>MMATxdXkWLJg8620)CJtjPRU{7e%#xLz(- ziO)>zhTwbTnq zG)6E<(4~z;K;lE=PHmDY_5q{lkiGFkV?SGgK#?@b@B3zt-Xo-f_*b9X=k(PQIwwpx zJc^_HeX(H1Z~aSq+3>9A@rN!zm9`M9#pfo2_c>rK`4Ays8^~3d87p z7FH|!Q>6nsvUq<5PUk`4Y}t_HiNhsjd3Amoqa|0#3kLll5|L-c9@YzsKs-8bajEO; z==W>QF>to#zNTz4r$Y=0%^ZcFJ%~9h@e_|8R^)q2kZKD_Py{g zDJ}^n@bFlNB@f*E{qt3#pVGYHz#sd`+dvp)ByQdLHN2X|rG#3f+&D?f>~A?e5Gg-< zxeD4cMZcz*8Kqtm#P0HIURqG8I+NgAKL+o7_bwGfsraDLm)#*8F1qWmEX0>*Ec_`O z^dAravmtZg#)+EO(CM%uM8v=Gk{poaN!bqJ;g27y2Dm0E+jmvdgu;$)H94I$%Bk@? zG%`K5aIvP*Hz>W+kF;fIF`S1~1fuU)#P*++?myfHm-yUa1TITX7UHmdbI3!8FMuW{ z3HIhicf5;9RIenSqWW``HKB*9a8$&@{LVU80QE~O{bd>5C{9sZwv*$NAE73NKCALm`Se?m@9_i@wFY`g@b!fKUCHT$xl*QzwV; zD610N9#il0rGm9sOh)o2gV;8*zaaB{O{%}6!}26xxmj%4>@x&Te^WXs{19%>S}Qd{ zQ^Qi`ul+*<#eaHN7%h48N zm=u;FF^kgmhh)G`hW&RUmXR$v5nt_UyFz)Ywb_~HN8FSE2%DjcAdFc0N`&$fg%4Nf z)0%np0_J3{%aW8!QSayL-v5}w<(LmJFdsH}Hojr?7Z#e!m=g0Z^^nwJRlLJ9V#}iA zlA#s)dl^wS=F!g^ma$WeEWat;JGw+Dg5Ly}b4zu5epvggeYwd7sF4RYBT__ABgu&C z=Ytn4g_h}qDIJK7l_}*)-8_3NCIhZ(0?|?nmXnchI{R#Cl8_IW&`}8U)r>+POfY6o zDktsVl%z;q{Bk$-P0nC4lP_8=-KED&)V&o!S2|M?y$!OaOUYL-B)B~3Fb*=_6lzFJ zdE}N9^3K#H=`mwz?3mF}`7eQuKHlOGn5&eMI9YO}&}OSU4z;2?QExD&0R{qql-~c6%4n~ zSMcKK(4#vO%`Rc6?(AwoMDTD%fniX0FvGS@LeW1V7STCi*^ft~7^Qz6#vxD)%gnt6 zsNELE45;(gz2f(mU1yd62DbDIufY%7F?wQ=RMZY=Be5TJeP%qGxsv~}HdSA{>5Vum zQFn!NDP!{dQ0FX)+edp(Y}7_mIG!J4G4I8OzA1X810mXxzajV|dzSaH!&I{kchUfT z588SD*gI_ekCw?L)j*71%qnC5&mEaSMkpl_XN-Q?WFF1&0(03i!lV+?9n0#6&i4YC z=5vfpZoS?AACLm?65^)L8&1a_l)EgsJS0H1&;^~3e$=_2fUYW;@>yZ=J2?s5utA%pz-EXzsat`J(Xz$?-2(G*vYW$`n8wm>@p|i z1&@ht#@io(2*hc-IfC%VFZdq*i#S0~7n7ss$e16E)g7&<`&<3ezs}GhykQOIZi1SF z3sWM}uUK}^s8pW}{!BIqvQ$1}CZFse!oqmEp1b>IZO1vXgpS=jNPT*LaP#?=3Z0 zHI`#PBAI6LqI$7u%u-Q=XqCDVm}efg6Dmtj*Y1wPKL1L>#^~tC- z{&&DNrNuO+F}43+)g*wkSI&R3ps zE?eA9Fop03km{nVO>K-`38^TZKeWv=S_3dB;@Didg)>KVxf#gTyn|PN{5bW+Ddaei z)%vnYY#0!}JHebZXyp!rAsq}!%$K6S>F&h&Hk2CPNR)E@Slld+PN);xs=7TffuO2h zQP?dN!f3Q>$N1Y*rge>fHABHlvC+iX>u!m zZ4^jUR;hJ5CY6qou-g108gGNP&wSH6Kid=?Wn@OJw);0Y9jla2|2VZ@eDb(|Z4$>r za)(k}s0`KftLYVyAV4yK-CZ2cw>e#^Kahe8=9V+*x&o}(S`cXSEI zxPSF%f~Mv<7zMacQ5BRMSC?=s`JOnE7?n#1N{+#4ja*4vz7oY0a6D268#dd3NBU$O zEY2BXFIo^RV6cIU!(ijcT_8_StI}e9&w|O*AW(t2Bc0+lAD%yUlJE7bG@|AeoDyZGF6WvoSLV^?UqDb#n63x z!_up}C0ApqrepKht@2}jTi@|>E`m4CopB$zvTC8_;XD?gTO*iAo={!<_Ke3&*2za$d3&;Kn;T+KY^x%G-}sve2OZi@!0Tf8NESR` z;q5Xf(NL6{Tn`SY8T_;C_uj zlv2hisR@G9rYB$(guR#BYjdC0^D#Dq7MjrpiQ^m911?OXXxJQ44m(&`%cwHJ{rzjs znParg|Ek)oKM0GXG#b2%WsL`^@%RC#65ds~YWcip6`M73HQ<_P%n zEq(#uDUx=d4uzPPWse6xWA9P-Oi9#-`Y`KfZYg*(P0yJ}fDYkh%Zlo?#6euR)OCnc&*UgvC*V{r-JKdmHH%>d2DPn`X(Y`yd(BIWTNZNjR*X+7H(=VO zrgOcJ$nc*`+@L)OZ&z+p@RUvA^h1K|s@fjz`RDlDi|j!XS0)|=3vq(mr9kliX(X}As`DF3%v_f9eX-0dcH$eGX8 zQzXTN>$W&iQO+v0vGk+-BaHv2S|%EKxx*6+{}zkY&DtUWmfq5;SCU-S+ZpB$^P{S& zJN+Jr4MrnNnkrs0M!*(iP}CS)19l!bk+2td^1f)hvp4w`QNOsq6+?+8!G@(|e8{31 zgu`6oabxr~gT%1bpAHW0=sddcOZp*{#>@;~#`1KE-T}<^=G8Bki!o({3$`}@KXv4# z5avaGy2Z9dK@QQOgq>{!UK;uL@z;>vM3SZ#175+I@k$*UmFqp%$wq+pkxwGH`Y0&K zbdU>H=lpnQs?H?nr(r$^w5aPs);wtq|2Xf=U3%r>d`7MD9f`-niTy@{2_k8rgLlC% z+HzfSEgjFcg&o&zd$64Pa|&$=#;Ns-GA^0Z?ShOfgV5c8!%)AVq7c-A(c37c**J8a zeUv%%%ITo7=zN$N4*uoV-JJys83W(Ate+A9gEBgBQ~f){XkvC_A5lQ%023L#yv3;X zdt%Hlf!c-pDPNtIKj>LUX$s)ua5JVWX{zZoYBQbxZ^EuF$YLu^9TGKl`>U;b z9sflH8hobq)nJ0tWpA?2kqG-@Zq|`~T%`{l@6B@CGrGs;N3wK$`U$*z0X$F&^^g^l zJVL5#VPH?i$`7A5vVhZUn^9rMBMqn1m&U1LnEckAUr{eH60%B61l%o3gZ-dh18stP z%wo9aNs#3HVuNTsu<15_vwBJLVv~YJ##zo2BeI$=vh#+6k?d z&@*Vf*8I|>+ELxBnB|KWjWG&@**u~pBj6Bx&#%vJexNGAr5NA8wdUtyBoaT&po@wv zt0^jHyj@7$XwxijSyGn+a*aLDpl9knU2!I0=7AatfedT{6hKN8kA)Alc5OO!yrk4z zWauH>#CQW8QtB-x#cvz|1rClYfa)1c3%i`58|$POtA)PNYaOqAt9~4T&8}16B zld22-J{!~Sr)5qR9ZrILZtmx1nSuHv?hTT+1*l5wWYnsVEiFbwE!BD_-<8o#^r5y! zyYX>kjgU}?{S(t=9<+C<6ZHV7GwZ%U7iU$| zOs@YuuW?RqeUhdY*M=iN@HdMbGM#l@3mWk&C_KjUfb#R8z|2uf~Dy=2qy} z{W=|TnFUNi4UEjXKmyX#od7=0j0w)>4)lMlorvMUlopJ%fok~N9UusZqqSK#^ z(n!r6oiWXjsI=4caKWzY3IL7#4`~w`{Wy5lS3ttqxnaY)XeOPKMW$S_C1B7jT1G@i zZsCJGOEgg)?s#>q8bL1}$=3B4q>I)*A&UGqX(Un#QSIjnhEtpH-ZcYeV~xpq&6g+} zWHk>F0pU2kDK{C5WI}JkdGutFof+lYWOKr00uUow*sHN z(#ls-F`C9k{fD{Ai^ojI3iYDwTmc;OMxG&yh*{gNKmyJD;Wx|<l6}B7F@;d!2`QT zp>60Ji8W}c3lL4KpP#P5rMT$5Sko`ccP z&^9X+yptB0eD;E`$SMoYm)PXdv)^2$!+*%v=KdPEXq9V(HP|`A)2|YZ0Tpf_0SIC& zE5?Gjqf;d0;MHOQrK4~}g({{OaCmeT2*+0gg0w%q7_C?oZ>~8YnW0LwCB^d{nt@V1 z?NpHl9ooUw?A>VI!`<*2)(Z%U zrkTHG){2v*-js4<{u zp7r}-lNu?b+@^(p@gW)||47w%u@yPrq)RvUhX~fyFTdezRsvDueNDPtLgLlMSdU+H zYu_#sWA-XQh>4n*JMH<9F;+3U>xa|RN~LMU$Jtsq??h~N;rNej3bSCyYk6!giqh*g_GM?-2pWMKQS42Ld*`hjU z@eOGZPLrwMhzJq+D>fVL97%@sI?B$Ik;RX5EqyXH`)uxCmp8DNW~F&Rz@S}7FRY>J zFEv-+ES_amy&y!Cb_@x2Lo4HRc^X+e7U563hRX1k!R;DE5Ea>41WF%6JF%>V#->72CHp*`!-7)Xk)s90XvCWLs3VqrCx9c&~rfor=TqOPoYP zL}T2lvA9pIGa8cV;DT*vsuLqsTx^D2M*218-imJS7)l~Myf5HF?WRcA?g-6v)C!Xi z=if^5|LmqtcS;RN^Bmsd0~*hYyvOa>@SIvHXah4o@_ngB#b{sM`mwC|maUgniQ?KD zXVppFz4SxfAt=@S78(>8W)f7SrCQ=(!@suajCdMa2bEDm=JYZbNT^oFoqDx0R1ZYJ zgC8g$*YUG(#!=uk(GHOXBIhdw+YU?7-Z|=M#V0*`Y3=zx`p&ypUdR*=E2y+MF7BgbmN&Bj%E!2k61eE&1pzH>g zz_SnkBh}Dph-D2G(B(IosmT-!Bm*TbsYxx45JmZGWhYVa;cDGyj7?T3vf&^-rEFCD@N!tY`h=8&7S;X zv8z6VGq*b3u#2=gnT(ta%cq#CT3k28fiPbXbq~q$URO}=&c7Er!e0g+vs%=))OFHi zQt#n)gm`=qH_VRFAZ98IS8F@}tVP(+o7r{wBA|~K zx<(8N?~Vetc2Sl=8q^YoBy`4}#8t02bMnM$TQ*wmdtzP`2DL_4=LcQsGro8X#BCoQ z9OC#dBJVSJmaTx1v}(`oONvZ-J;CWWYhdT!ZG4DGC%juasv}Va_jHcCdnNKumAT); zm$8Z~#8iP6&#+0QRgwm^!RJV4t;@^BZx48NC&<^y;kbaSPFBs^KjGSGjLzz5nftWn zM_S7Tr-cwN09EQgZA8i=PG|*z^oE?Sw0-hoDjT`KM~uR{*~zrtU`)g2eU#XesC`(J zL|KC7PFspU8cyL(k%a?rD5^dYyUDZ_A-My}fziqci8wtLe3};+su-aX$$>C#h)~y_ z;K~;DCi>%crjajmj`yrQb+o8GgX$_-QL3oEOfU2%#;b_K}ADP6aSoRj=2sSaUU#+ zmQ=Y4c*ybvx!aNlq6uT-tR~@v2D8bE>_;RDw6@r4NF@8?pTQpzU_U#K8qfSDR+RJ6 zY9fYKPNAi084a#_+WWOZ5O<8<;I|mFCfQ{aMd>!NdR1cB>3n?(i?+y(s=j6c6}R7Y8xs_LEy?%fkeBr|n6=j8XXwKSsQL8N zPr)82)!;XRukL(kgxp`NB?)Y@rLorD#ZY$Y$n085j(+g?Rbi*4mSfl0FFi79T3+F3yu~<;* z>63XOA4S(sKHeOs_q$t6i9S=zhJrBIY1zjWX+**mSOqPrrsXWMNs{I6u7*?-coUuD zi7#)r79U(EI`!x_;2X?q+w}=YULl+IO{zH$El{$Ep+{M$6}uQAV*2#p{SQ*VE;;33 zNGYEVqz`|!BI{9VdrD-0ez`N6g#MNA9B`t{**O*FgBO<%|T)O~h2I*N0 z3v_pyT92B>N=V7R)&%%7D`v#zGL@2YvvZtTP7iIBXv{HO6`v$}q)sT#;SCSiBmu9B znEM@q%|~Xj+kF}{=3u!@2{Wy@9;Lh+$vDb9SypsbCXK90IFMvZzzGBTK=#PC+SW{i zmtW(&k z4$Wv$KG0p?u+G8ldKM*f<=Mu&Yo@AQV20Gc$DVAOySH-vMv40*p|O92ICL*lYhH&s)*57WDTcB^NTooi)*Ouh7(}T z3U_? zN<-h(0+kR$rObs>P(JlT{e9+`-KjJTP;43=)?z)1O2$S@TGB&zB+$fZgfry#h&`dR zD@jQsMI5lN7h%pnWH>fV9OmU^PFuuu@1b7UK?a2~ zu4elCEUA6kI`w$4n7c1^>^J^}*|bOjTK;Ix?rjrzEyq=wZ_X*V(!|UyBgFfvko^sQ zqCQ}>5>iA*mK1GpYf;5^s1nqvY0qC2-!z;@Ew^>6;+Ov;8g`oB5)hp=U6P3t#v)&X z`mV=OZrQ~Az_FaCY2n9ASq(LR^?9pMGh@nmFiKhfniRHgA}gj@Z367CHEt~J2J}Ym zn^&5XeKi-_SbllYj{*e6M9QYlTzo!-*k8?Gqm58yKTiu55yeL z!IT?E?sfYJ3do!B&XG0Vf%RBPaEMRuIV%VYjr2*7j5k#{8@AYzd-F)? zTWh`Iwq0^>*-b@^mAoRNH(|dCh`Sob=Z*136TE-$MjQ=%=z4lq`+Csxe#l{@gqV#d z+2-6@3gL77ofAmeB*P&?1-2+PPX?zhY2N(y|2}?IuNKhX|2(XN6XdYZj-b6Z{%UKBHNR;->320QI)yaCz_GukJmRSnJ!gv^x?NEj$k&ji3w-fmbIH}sN$m_bmL(^&T zRMlaBHw*G#uHy&V_^1x4sGY=iwjrCMgDd~Rfp*f^Dy)|>ID+|!x-Sv|Fi7MWXTFrz z;S+8?e1a5gB=5B*UHEQfR^6Nih#m>`fH>VtaxX5K#mDGzgtQgu0;%#34GJ>O14_ky)Tj*rXU zyXFr$(x@*E@d5IpVj@tv@31oNP*CbwO{j^dZ76qt*u;{Q_s^o3&%#3qayfEW`OvwL zIrU5gx=M)hl_Th=TCbpZ0`2BagA%r8&l6DKwccPbVeky}Er0Q-A zTphRuRu955Qso|*4Ry2Et5Ml9hBf{xO=Oepm_||fc!Dwv^YC*Rl?x+@r+}=e4S$xH zQ=E9mI<*hly?>9JrbUI_Y8Q9g@&Ro?gAxCy=MgNYg)=y zAdGTjTlb+Bd1m#bQ+-MK)DUR3mt;nBi6N$x1a#Wr_-Gsfjgx9rf?~lM#u>{xA3hDO ztDO4yQbX#uv?FCT6(xaSu3@bfT7=QAPk*?)uwV2kP#tR{U;MGg3kP;A)Z_fFXihRj z#zur)Tv;6%j(Hib6L)|hz{i}WJ5}z=t-68BqHAsKApFnowi&uo34FM~muM~VV7xG@ zoW#fCPEP;(m$x`_c9LBiP$4o<3!!r$Y0GDCG4ZOALZpHACA3UAz$`n}5xQyR3A zb0sx`>P8{RhYXF`1x%PPrA(LhUUPlrD&3|+Fu(VAlVo~i8Ndgiv1gac44Mb2`qgre z_FJNXJ&sp_|M+Jhb$vudkWe9FcyFo&1c=RFCk=cg?)a6oYd|Y36VVE;l{b4W4-Rl zKba!ne{yPp4;eF0DZVLAyNL|o8=S6 z%eH>u!5pT3NmU&aGu7UHub$IsFB|b{-Zb>WbNY3oq?072Ov1%8xO{j9U(a!FJ|78A zfo5iOi&q~-cHp;7Y45%HfX3bYxrc|!?cvu?rZ(pYZ{1&kg^#P!$vhpV#UEA03Y(VbilK49m>w~ar;yiqDSy^)$Pa4qRF!Ih_^ zeH#_A3*!n48c`zS0?4}lRCu0FX@XEX>bOAuFDJ)O7wQX>>vwo3=UOVTUdyaZP@5Yh_4f$=`BbS~jr3ys=L-_VDV;R9 z`xV*Hz#lo3pHaFHRHsh|#1UBv753X|rZ~#KG(1#f!TikOxnOnj;G7{K=u;2cnR=PD z#+XDS=p$52opy`3&q*9oun_B3o}mDTzFrHCL5j6J`PQn-0B2q*+1~pj=@EZ4AFO#v z%3D~#YlSTqiQ{lQtglpJ-Q*c=Q4_@@dz00~#YgDkR`wp}TyuSLpT$I)_of76TQlUh zIyR>`W`i$u{&1w;8lS;`TU5AI;Fty-x*9k&`E;6|c`d7MR4MmKsSchamRbdnaBEB_ z%CN~Gki$YzgMWbNqIzZpq@L5G8il~}DfM#vLS$W4%sk8L`{&?R=r&1?k)2OawSqZO zvi4pBWx1S9Z^EEc1qoHCzE%yfY!TW*qPJJsNN92^XWi4J7Hg>jg?wXvJv&AXb1MVK zClqQE0o3av(veV42nci|nqR>0Kp?NByc`Z(nLFoHx~kQD0yU6 z0}^(vgnSNkj$dg+kVD9u*i9IzgOyD9;Ma^(K9PoxMN_Q^j%*(Qr~egQ zzvjlcQr#620i-m7R7F5rJuRJD|BykDO1AF*u#10SNTjTzRVrtoFkEK6jA$@eLf|y` zhlA$!^Xn?w0!Sjk1zkRNYy7ULWsf&7a?0iCakYTGlO!d!vm6AgQ!Z7UY!d~B8)i;Y z)hs|w=r>t^^K&(Sqow@h(S2+W>-?~atW>3CDXexzCv5fm7a-U7tl4WXE@np}5QvZb zLGL@&g|ifTQPHP%eWfSk+Gm1+#ATq+YQej~H=7u$Gm2)EgYI@A^oS< z!kl*?&GJ0RnOR^M^#}c zBC*-ml))OrLl=K8$b#LkTgngGU%?ax->o;UsHa1)bWC$`o}sU%J1!4JoPI;q6|q9% zXa0j&O2ShaEW*7*Q6Pz4{8Ni7R0!^znyC3ZHVAG=!w_FL0@83^j5|~}AhbYMV$8e= zaXT!=iyj5R%jzaSfbCyJ_#`AZ>#NSKYx(t4YkbbBqM29 zvGUh;#&Qz2rHmVTpQ$I|!pXnBPQRDgT?|kHMh_zqM;vzvf58b40(`TM1&ib5{!2Y+ ztH8@sMjz{mlJ%S$)vHF&zONwxp8}k!(saTN>C*SAHauFnNT5!hklWibZ%a})_CYpR2IE*T~w?k?uz1JYL(6L=9C~OGe2h-4Gr@Wbz~I$ zTFRvNGJBW1YgSeXF92d9sLDrgSZQ;>8m(x^0=}#h#znaDPD}-c13p&QLwF^XtH+(% zR0~b$Ch|Q(wL&0=o9j-tsNeRGS%Oy}ta``vA?ud*Pp@;bs^r6Y8u7C>lrECIDSD#W z*7$ya|DYm|cRlK?f@ySKTj;V7`+e>hD1d3Pz%Lpc$@Kpk0T@IQttQc?m0u|?=cR$b zF?HMY@;WHHHe&S7dJj|;(QI_~Gx(_U$I6hY{$+3EA*rz4%Ei@RkyS-ucoy(My;%Ei zLNr8gGz7xi6gHGqfPb5oTK*v2^O~cX=vL`jolDQuiX4})@wkusFJOp71EdQyWjw5L z@L1P>vX%vnK(J)Pn52%!=e3F+1*OEQqyms#NMP0Bxm84jh>B6on!r|X(2r=! zK-_~?g%QhN7vAhR1CkYzbT?L@`7xclxg93)v{_V~PPZu(RZ}0QZf`CazHy+VY7*bk#}D;({${3qQyC=~#tW&q;A_wSXm2tnpMK6R!z;K6+otRQ1tjPviE za#Jh~snn0(x6^zcXzZ|bo8_g%`7=6eOf_;p)h!F>Da-9!4Ig@ zff-LA!!jh`$U(^9{lVZ#fj&DRcyl@h2)n%mSp{et5YZj{FiCByNxUP%Lx(^YdO>m4 zo(OQ6)u3qKLqn`J=N zR(s|h)d9jdb;KtuDqIhwILK~=Gv3^6z7_l;C5dkgpEEyT9;Pq=H$ce0J`lt0lzBdd z3?kbAIs?~#yY~sC&(ro8Ek+)A_;8ite`tUy*t_#-R#`Gk?{33|elI&PsfL@6m~kOS z&R?~xIKlQ?lUouJW+i8R>M)|Y8s+r09`AU32Cj<9hXtmb%6B{)&a+qWwNy<#RVu=s zqD?k}iN_Xm#kmt*-P=bE*eq*qeZ`S;p8n5Zw16JNWBIF$WSIRjP0Ta)`Dcg5_x+tJ z^a`h50Slv&@>M;nAm+cj;e^DhzI%ja0 zs+cng?{YWncl5Crj0qkq^=6B61K9gm?4G1*=;Y_Es*#cuwWSy48f$b}#JeFOCu1p5 zEQatX4t}7dAv39Yj|z{-K~Q8CZQ?pUBU1&qaRm_vQpw)Tu+hJSi#+Y*sZ|v7{-HU& zCX_2bxo(bQUr!q}`76^ND!QrFLQNqPJl4g>Z83>TmeNreQOX9EbgSed;0g9=fw?qoo`b}$md-U5ut5mk80jU$-o4JXM6oKu|7^ek?$(>PwX z45z(&<6~w#}X{gQlUw9z>cI-MR8Nqokftsv=|VvWP231GU}oSZ!V?3ak!g2E}rEQ zaklo5szl{b^7{smQ@yzDdiQUpa?zUK3_FJr#rW!<_U)%l9(3$yy9Gr<5ePC5-$${M zm%9hc`c~vAVvp$u;PVfGqCr*Gf%<(o3(p2L6`++PQzKdjrvTe+J6fe z$HO;;5TyKaSovB$Dw8|RP=|e8C%2u(9JcAQSuTqfp#PJ!%Wk|X1IpNfkSx>Nh8?=~ zj^bwv9M8+A}RHO9|Ld6cdhTlkpt}!StkCtGM*w%iQ|4LqiiMfn#waaHx|V zVfQUy9A$Ft`ie`Ls||6xL_ zR*!Gft`*6e|D&)$4Qf}@FwFI7^k|m8a%+L#n!aJwI*|S**&G{0%F2)9iGI{+&-&#p z`0z|Lbw_r7J2nJubaxhZ75GFl(h0M{iziWM`%> zoHb};atA|+&-xxi|7A6ar3bJ|b!gFH)+BbCLT??;AAo7+jHO?wXuvDVUR_jN!|l;v z_M>knG3sY={J6eO7@)4OjU5{DAP*8=!&YAjZP{C*!uYiU^zF6;k_EYPw;N33v>D>+ z%TQW`pg(|}5RQ+X9^7F5a!upi-o|QVZ z`iEZ-#neF-i3w%Be{GHr=o+xS=DuGdXPsc!#D7^kLpwND=##c>=0q=s>Elw8wfF2Y zTxM5Mc-v4fHm=w2FL1-K?+;x^R5xA2*G6l#kJO}?H#Rf2aG>Ux+mF)oiLOl1V`IpP z3zvP;t7jo~fr%lY)kJjE_nYo2$I7oe2(v_*l)m0UmpG+QYE+1mj$_<=1fZNj=0D0; z>Z(ZgM{pOb`$3S3DYgZ@>j@sP)D#yI;2k5_dCG>4G(+4F9;=e?~sA6a6+>gVW z!I5KdINjBymRj~C(;?J{)nV#$aigMhcIah`cT)&}gd;w*x&UJJvg>dYeTJt9!G&RjrZ2b1<-2h0gDG*0hjKt$J4H& zJ5H(b%|_Cp(}Mx!LVEPyLA7X7OVzyTBTg{SBtIlJZW0#wheKg)3p)d9q$YfKEsI6S z8?T(_eNwss#3i=7VM5eK6As5qdnil9mP;>IR8q&2gk>N~qPYG^`6EB2EcMa;>laf< z`@FszX`5Z3cw%e+7goKV$>YT|8zgEKgcmL(Wc=S}U1={!20{_QC+-f;XSrPq$RSZT z+hw549-}-~dM?Pq$P7lmc$}kJ zl^7Y7Ls}H$x4@Vow$6|hrF+JXp%+xn4bQup@FbbBp>o&+=sxx&nWHKYu&V3W9>V{;p) z`x=kK9tcn+i%Z^|KS5Lg~pB zD!zB@jz}{xxkKRwaj|CgAM`T%PGxeDo<^fT!a)QNNVG1Rn8C0vakQtLqLUB0%RG!i z8P*hBAZ~^hWV2U!+mKF+tVJDZG6YZqPWG%>rw11$mzI$|*ybQ*E&h{+NCKV(CGiqo9P?KQD=e7|V*4O1?4*gb;A2;+82T=+N7isrIanM{SRGOIn` zM5UATT%z^Ej!Ww=Vj5&8k4;Iu-0-URw0m2$yKwnY<$dL%ET81_(9iF7TptOC-7n?i(3$S`xVvyKuFFvdxl!w=s*?r0#P6B(9o>nB&5osK^CGC3?i$5(g08uR z)RmmGFnvYT6l{U-!MqEp{<`g=S)_U~UwkJ*^iFjUApw^3Alz>4d!fx!n1LkZ-wfw0 z9`~3sc@ujuzT0>(A3Qdh?sg8s(QP2AJVIAX?jsI_`;I$#!%CoxAMNWnM3bT=yG~eU zR6cKsX}}Jz6~sNHTAHxkKEd|5p43ku1bT25PuKjt)zDZ4{8onImp0zI&H-_AAP_64 zM+T7QhhI+xK#$Z8j*tU5g?ZF7_Nh{`C`y_<(T-#fMjv+eE|0;&ha56(=LqEhF=;e5L>CybplpctzNmh)^wH8+iAdaO??nau|)EV9(k4fO2V zgHAr`IWNA)G>R^5rLbQB4DUFA-EL|hb7FO{JWfE@Ay*sj?)woHq#gwf9q)5q@6k1V zz;n^>{z8+KGKvbIFy*knUh)37Rb3iMBGWwJom4k6TXX{UwfDB-wi=?NGB$Xh^$v-; zI}MsE<;g>2{0&DGV{)06#~raCzOxrO1Mf&VII&%Gk_>%)-N2$L{K06@K0ueYg=E}2 z$*QxezY|ig?hUEN4M7zgWK0741F*yd#aoP*gcEmaN`{97WH;J(Dk8=knFSH+M_yM7 zCSoi@8}buougB?ANvp}M^CDHzL5?CxlTzPztsqg3($=~Hai$1k?du4n|BDncECeu)ri#Uy3H?4% zgA{x{YI+QhExL7U%>PumcpjF|+Ej_JsibddMfU8NtOh_CK{_CMrXu#UxIrey-kA>` z3oYn0zCeVhm~Qs%H_* z<02Robgd4h`G3Q8o6mBBG))#O`T}j$S(zHvnY|V%b{N|kPrQJv!AVfge9VKrM%b$B zSxreOAgSD`b%&`;A8z4F><1A)iMn-I>nCN!EM`$nC;*KUv<+)IHG-6-GODVo$Js}m zW~E+>QuY7EBQG%mBJ-i6|7v;^=;NT>Eg)PyLi^Mkhij}9WIc)&8l~ZaZ&*lFu1Iml z61TWMBX-eCE}E$vfp|J1hyme^!S^9vJXMCWd$LjFf_5qCQ4X^<&^}MIoa`GRhxEwr zBn)>#2@Rw-_r3)ENdqX|Oi|LE9Bm<$+A#k$!6|PGi}wgcZt6S~jAznaZx>}A;!7BW z6bQsP-{)LX_a~&WigXDMw;wY^{$8L^x}5S__Z6ncMtG<`=U!JVd@7nm3O}S~+>=zrs_pryckkXU>gomEj!6|>e3dD*t_ zW>7nMs;0aQdZ#V~J|a9{ks3>f#c2fZT^!oMwsUv@gARIC*!y&&r=A=-lGEci>JE$ZYS_Xid@jRoG=`d?xspf#)S+^XCKd(G@r zpB?S^Le$E&)3O-WJ`7AHRy0&L3_B3v{Mvd3=lvf&#E0SW#skDs-Ln~ zVbv<#Z@p0LVPYTq^rTYFYe%hBP9zI5eFO!Q9Ed+Afnn8ysT}UOk0(T$PBmmnZaELU zEv??OXp*8jKXRI2;O3g591T)J^lYkTNO|ptuL0xpSqo8YN`L?5G~#|Q++os>cBmiN zlnOF){MzA+lLmr9_}4xLMgX6b~^2H-e3N0kX6?sz3vuorg zUF(u8p1>B7nl|_>7|)V_QVgu%?J77KS)Msb!)yp5lCoh#qnTofojm4Wkil((fjnC5 z0ib`i{!6-D+@QPllj(pHN^%K7h(`pP{xYj+1B$qPl8j)D2I@gqWt7i1U%%?dwgjRA z)JMx%@@kdBQALaHckSnKi)qKz3G>i<-@VF!=QJ$B0b=xCDNNY+1gp-d6GN18lpOv{ z%95<)GUa-yr_g|pbBSC1fTf6x2<%aw&O*!{D`6_#U$Xr`n2$O5=K;WY+B|?%;Osg* zYg85q(}1ZN7bnCZOjrkTNks^T$6I)mkFQKBekX*~$0+3gqKIb~;QXa&;V3m~P~1An z`Fddpp$-TR`U7D@(jMoO)}xZD>Xvl8Q14AU^uV-D5oC;|YR=RT0DS7`7=lEIUl{vc zfvo$hR~5^Ue$C(Pzpqth(IZN%TnHa0^MFS$=Fq2_!++&S3P#Zx)rcMtkJ7}NRaqA3 zn#$?ffq4Uh!V_6nAL4Svk5;vp<>#F9|0=6aZ6yc0+d7G>g@TfX zSt9izria0EIz)>%i z;Kn+|q?@SUAsZ@q<|o42(oQ{)FKB};JABAlx(+pyewJ&>>8S-GdSYe8`@+z3jqK=+ z48o7?J|amwHmHLo;~u84!pXU83mRO=+mO=3_ere5^d6VH->9p?$7M`Sv#*5e#p34> zMjf?EJeM17KZ(SpTa@Y7&7+M!EyN-R%>$Myn0RzgTS zm>t#5Y5`T3l$qF8v;NncqtSsZDvaq$ljaXJM3348c|;ufj1(rRQ4e1jKyyZ`33U4a zk1w)`;(+FOeg)Cxh^QvSfI>v!arg-U1Jibr^r|zn{-I023&);2ShXNu zX_a`supPA$(1{Tkg#1Gm_62hC31lcSh}CpK(?BzrL1*=rk=F=&JBCu?SzrusRvZ@? z+JwYDjj~qmSXZVFI{_VcqJ6pP#Z*gD-~E7HFeLc;^nE{empZ?}^;kk+X?*cFuch8N zB}y!!%hUiSq@IC#%8;;$K=X3`kyihJeEjhmlwjpi>ms7So1mKToT@}} zyTAsY6@Y&Ss5TB(+})m-T#G{=E>RZq(ivj^2(47b>Hf;p+v~Pfx^kRmJd72PM!Hpt_lc;BpFZBI23Oa9Ewg3Si*42jUw}L2^d+^y zyu%G3NPkDzC9r52fKI63%ZCK4uXK>sV}2_v?L)ZDBLeWdw(tJagea~&>`$a6Uf1T# zUIuZH_i4_QB5Y=cO9WqznhlSgwih_^2~hXi-^Kp;DLlkzuIrCdXOJPf#V|5fI9u!* z-5(k84ODncy3bpJH_ucQvA%%$?{{Xf!C;Z8p+Lu>iTHqt0qEdM!glE@#kuqjWkt@s z`vu3EqKXg?0IqPv1W$5tONb?0yBXsB)O=|Ogy<@=cVvbJy5ekXo1>V6~_|7BHDSh-TOLS9u=8eaczWa zU`sB`m-$Pzb4q55%|1i^8=8vLXDSIOF&yHl9|Im|YRyWcLk=o2!@ko;?^QWglO5`F z>W_&epkA`CHK1g(M}kbXWm2X9gSAL;EOIYqhB6>b?6hmwf4BYPKM$ubq44O(*g^HX zMfj)+!CuN~+2o@#;zPGn08Cn>_&2OSdfbm3*dWDWLOcMg4zN=+OZ{RnZqtU3)OG^@ zL!oz4Y+^3-cCX%afm5u`2V{n-XCl>d<#JJD*ZS))bGr8$hO1YGjX}rAp`cQlC?Lxr zh?uPy%*-Msb9pD=rtytG->OYD!WWY)IQNOR7}yMG;ausy?AiRgo;9put{j|bFhh#N z8pX8bT(#(qBmU~&A$g@79Vhs{ayb~is_4f%LO$c=qeMTSuvcbHM0>7=s9kkKmZ>ym zAZY*4oN1#kYBlKLRGSBU;G4W>$7U%2okOk!6PI-Hu$v_ zO&SZ}OBO_EaWD;O^!6l3;;7GXv5=y3hg9^D@j@~4zM+?@N0QJO^l(R!zDSM&2I@|U z``hy(G2s|XC(ibHo4((wSjy#{q=iv)ND)|fl_Z&vle=N>9TAi^(I!flY8^Wz{L{{~ zbVOdUT}Aju|R@?R4^Nh1LFK zrW5NjriPIcq`e8*ER(?9#K6>*4u#3We>C_a^uWt&2ZqGHjOK>YY|X&H=lRMfUk}?& znPvZ34XFEJROllRU}hRf1^@fIp8R@3WyVtdhjnQhSFq0SNsai4Qj>@VLh4}5zG1J1 zrxV#ZCbE#v9yTCijv8ZRP$l3a9{_nPTnb&AuH?0y6xglJ$?GVmN|T{vF|+evo30M9 z4t4$eoSR!=ky`fmMen~{0hixVQNN|cVzlxYaj-$mtsyL=KLlG;4A!gRYw1*~A^d>q zQBE(zOX!VVnm!IC_ueIe9SQJV9+NdT%v*Ovre`tU8e@rdO-||KqA3(uBP5`UPFch}h{aTml zI3m+Q-3zWlfI%>Hl<>>M-Obvq`Edu?EyWhVkZ^wl;weq^z1gM_5F3F0@#c8ktl7NG zI<{M>auPM-$Ir-WC#Dy7W(@c4*Ww8`4Lm+uXqpBq-CAW`>J%;0IyMH?eT@bm;P}R> zv~?3A>d9s_H4XVID(%Ck)9JN&okL6Ww}GbR4vuxY#2xjlJUEL$_@@^(`f zU@Eoi+8RkMe8o&rhO#963m$NmcGx0`M+AOU43+*X)8%Oy)X_d{4Rvx9yf8X{;^6*y zHjfPMrlj1bWRD;FJ!3bS3^97GBKO{3MFdC+mOriesN zYj%>y@evZG2HZYe<4cpS0_vVd4C!r6%H>@D~O2yZCz8H*I)KuYoZN$r3o``o?2#dE{QJPRtdJ8?E z!TL2|lJbgkK7H%3Y%0#e9EN$^dXH5pE^l^Y0W(q5#9@$-)mnfo{n?>5xUx7msO2JN z4Sb+MTZQqO!F(6vZy3v(+5P{)Wn`YYbZI}rUU;ACqOsjMqgJH zXX?9{-y7l|Duzajz}I7~2pl{x%tm`&giJs*RGIf{^GLP5j~l0Rf{c>Gf?L%!gp$M( z_XvOkGkNjw90y7T+NdNgOvhYn#6tmc4$JfJx4?Qc*9ts~tQX*Kxr{nhrwQ4 z9(~au8y+ll86Ivf{38h2Ge${~l?bURZl|Sv?S!1224PXHyj{-`stejl7?x!09?&R^ zJ+B{Mx06Kfq8y)3yjNHS-~cT$CR*=zqNzigL&IYk zm!P+`xvfjpeO60STEwBj`f~{8IR5v3>5oWHI6u-zhhR?$hQyQ?SFqNo^NXWYl7=M? z3o+4+iWJ!QqnbaTtC=pq24{-KCkbp0d1-9twIXacacp2xGHh37?+K80rBgc3|Ls!v zV~tgB3Ooeu(zKqNQ4-#$I@_973LeDiI9=jLH!!~_6^D(%we@`G2%;nTYs!e65}lue z0>6J5zr2(&GAA(bo12}boHL7B1v?;>W)Bi0YqTU^en}snco_j0@TzE(Nt~S3X^W5% z?s9p+^sJSY(~C&Z435qo;XW8|)*kGJ-s?loAJ%J-T_R1_zUbBmt6aBQg(rVuSm75 z>9QdJawO|34^m-6_#FyV9AaH<`f(w50}}uC^$$^dJZ|&8va6d0dV!|Rl(M!jSA#U4 z1G#m->1-jpTnX?J;2_%YW6&GSuAt=!DeyWR!dKj!&PdOm)yMcYQWO^q{!ll%6t~mBL!Qi<7&HzbeL}$E7Uoal-UY!_81BgQC7g3A zG>@esGEGv+C!kM&2MF_44Np2{BEki@D9T4b9+pc(b4sxI11uRTajS=CmP|tKPliHl z8O&VH4qMujzQI|+F~K6AeW+Dd9L5eoNp#C6~JArAe zZKmmN)3b-kj53PA-EU!JGCC~HI|{nn5ZIl>198NpcuOc6*!e+O)#R;Z=skx(I51xN z+TNRs@lLx+L2qbM?)pON>7Ghjr8gF;4<@;jUjY=Q8S9ueoSxF_*HMlaG8t{fKT?F| zkGTv79Z*;lN)npB57s|xypqUaSES1)Z~j^(qy?K@ z+8##4{^rmzciM4S)R2=lM?$j{g0cHPQ1dP?0OTqf%YBO$ewmI4sGr zFy7rQp#%)pALG300(h(4f1@XJa5HnMullR<)@2&`<`KBXB{d6EMqkOWu6A{%lP~sP zf#`XL^aX^L?52e1iZxcX%WZQwp5by7_6ok1_N8(|GjeeIB5&$fUdE8>Y?KV6jV3A^ zXk~|rY7^8%pAX!DUaeYKMl4`yn((pFN5o{2WYMw6orlOaOFK*>Ydd=v)F9B=Fc$?S zY6%@vfbY1u5e8jJyJR~{kh*#lqm$Ixk`YB!R+`+UFrN}~@NUcbv5*t|hYd!Bl_|Qp zeZl`eGSjF;7R!uO7|Xo>Nl(-UqZovSE==)Q)+lj|pQ+7Yx3&*97>4%iOm&_=RK?$xQBcZfUC)iH5hg^LC zH?d+#JjUT4Q-CGgADD?AR8VUxO#Pve65Ps9-=-HjX}|;W7XeOS#In%1nF?bWUnE2< zA;zj8+^(on4^mc6?Xlx~RQPrENdA~#V5j){Kp-qn=t~0XBrBbAkxvXaPl-g^0aMshP5yyo_({O`ohPY6_1RHtxFtW3(K>l+YO9g*&VgVPuf+&rOwwp79C8CN+$+= za4^p40w@UJ*?9%k-R8fZq5>N23$=7k1~*rIGN)y(Yd^doIr#DQMmU=r-(Zn+!-t=u z9W9k8`%FA^(N4;Eq!7kO-99j23_0F-3XBp{K96wUg&x`~(9D8m8>RzX$JWv74*VRF zVh6wwP}m~~P17IGL;%aGI@gNlwWGUPLHj>%g5~$ehav$Q3s^$;>PmS#LSS7%fbc}2 z-lxqXCgE}<)>)QG>PZthA6M^@DYS}Ovh@`55C)H)w=jjptw*9|pa=Fn4*4|T;zR3Q z3SFusKtwcJ`%{0P3~OkNVyIR&R;--DX`Hr4&bsR#BUZ`W0b5P+6Ah3 zo={ROftHdM6<2Xr`_n`mj@kGjC+p#xIWmV}P{6p@dD#(FTH1hT^~PP*eslDv#|;E9 z4dMeDl=T5~&H_64Fzppm?~z~Fl0dIZFt7gvX$Ns6ocW6)TxJll9vK^<*zzQBZPS$W zltrN>%gu}JEl7n(-P+ixSjk7V((!&r1aMIG3M%jRMG8@4jW5mTT7~a#2Nl7H0fCn?&8x}KQNrs8f%IpIOs+8P&KT!y6us@dhRJ&H z)cFV=`h(Su*;@P2tG+(dfOnP=JCHn4Fyq9?d!(M;5xQj1!UEbfLufnVjie1W&wkj6 zkP39Pp;t_EHvc)KkMgr{Me56fr1I&`>!pjMxxNQ8 ze&c9oT%QNItLYCG@=?{ymP4j(Ge?Yw03}1tZ<5)bKR7Tc+62eZoq#8@Op2EE_AoeW zrE`A_a1CXkWUDjkB^ZF;I1@FuxvGElW19^S78Nw6rYBlCbS2Fi3UIa$R<(hanf-J9 zBj~!}v}_+;k=mmGzHS%+0}ain{E5l1Pjm|o+WFf74VQ1%F?nRg*a~X7S@yp-SFz`W zw5aGancT*y)JD+8 zb`^XKMeON`mLDABiM1FPc(?*4&)Pz3%gDwzlBj|6Zn=~ECKDxi@U?Ah)m1IxNp$Ki zx~u>&JY#x@;B;}%%hz(zY|Fm!Y{TAxo-ms^u3&A7p$C5D+@5(RY_mZf0N?bIxKhUQ zp%z`PgxCr<%^Ts%5@^(RWCgTFj3FdrC*_hcMSK2V@HvR~S=&xmf^FbSPmdcdDeeqK= zk@vHa&a3UE2pOC3H$~?{5cM8H5~wsf3+%kk_4=B#rc8(Z4|77(?*i>|`*7QiT-W(E zN9$3lc*0j9AHl!=JHIvdS;QY;*=w}$A3Af(AjBgm(aEC~DLmrynm#}@9JF#Q$lza^ z1LNg6QWv9@hgFJ82;pE{9?%^MjWPs^c+)OlNeZ7D!Dbf!*d^AI)}94l74_s_LQe;w zPnDUfis|yJYSD`Lu$G{U&5&vWRKbErf0fc!uTnGz?o@gdv_({&_`Ga^Qko$z5IuJ; zwmE)L2x!=v7HJ_=;*wZ}V7qbHA=jJ#)b_6H{IaGe-N~Og1Q%;?ZWbTl){tvwN`fA*&z59y$JF1rFiul={HPS>KpCIB)RPzJf zXsl`FQT<2Sc=MM4$Sh#ktKm9sJ2crC$|J5D3bg2#2S{f=KT{XS@X`Fu<_2(SiA0Sq zs8UrBqKw=OMtFty%CdNI1LkFryzfyqa9xh?EXAdPnAxCv zh=LvLAi3I|?0h?oKJ3Hj*U(3Ys7#f^TSPTA)t}&^>g{!O$ZV4x8%Di@BW>bRD%nOg zkk?tuy!sNc6g^?55n&Sc)wBMD6ic z>?L7yuZD6jVzuJAIB=>b5)OCzAgpt;@6cP9-+7Dpe}O(wnHh%iYlTMaI8Yxo)wFJ} zLj1*23UogjyDSyEI4&tPs2Bd3>%(-rX5I12Ps;r0<;~WF2Z+9)=d>J5$lWie6}=5n zfQR8Q?18WGyhJ_+VG5{F9u%&JzDF2Wl?`%3YWEiurfAc{2gZkfe)Tf*Qd0Q(It0?B zQWYWL6wI_rO}moj-nOI`IH1UMtF|dhId9||0E9*RmDfar?OUZ)pSOK(GFSZH%u3)q zQ^^GSlR2+EM^ni3J)x8926=Df%a`_1KBxH19>EO7IP>C?jK6)Ob&_oQvi zJMM*StU@Y+0G+q;`5mUtuq{{~-a@O=%GY7LZ!IR(ZZrw6FB+98ma{HlC47LTs4tLY z^?cd{t}tOa>JA7gW_3ph2tCF12{!iBK~gy#2+Ly{mUj?1`?UOKyDEfP48le70{MKZ zKs_F7Q%*J~v7Ap6vzgi?+Fq{_&|GPpy{~wpvqqK<9r{2^*_! z+)vl}A|p-SFmx^Q^1!L7jOLamI2mYIj*;>2@fQR_Z&)?9wc|lUygz{XZWK=KUR!`H zpEVuif^<%FHJ`#Hvh(c2nwqXq{E_~qVUc|L6UJ-C%!yj@GRG8)CW!;>XSCw<)_e}M zR?cad_xqUMEx=3(KKa)y?(L|<;O|2HXtKcn^N{TtBnVdhr-A6Nu>jb5tCdm>F+Nss z5X zzXO#y5Jln_%~odNPRx0J1G=^{R!CYuP%N-+X10p`<%rZZu3_QUO9dH$~LX3j{w`m2vcz1Y>#&&?UgrrQc)2T(pxa@ z4Z7EmoRA_L)Na$3hJ0AJ_QilY=sc+ExD9VhOR_iqm(mR%EmG*OSpM1Dn2a`uHJ2x) zRFujl!fVjNQ_fB}E1}v3MqYi1op-Pj>~pY3KBcYkR#&>aEk?FC{>t(R{%IF3&g{P) zJtzGK_B=S%!HOje;S&G%HGm*hY<|ZyO@&zMx!mvheZp;KhSq5#UqFSb7X-il(JB54 zN0Xj`Mwp&|qT*?mYCZ&I9^;}2&?E|Ix17(;r`tnrjWa>@uk6g#K}B=j_g2b?yq4Z3 z)V0H+)1GTj*+`rx_%6GnRAcgI7zd zcw(Q)K9PcmH!S-7*zNv|Z|*+xmanC#KiuUvXTTjgu&^<;Ya_5X@QEp(m5&Z`|n_{2%gZ7jbqg^ zV`4f|Pnkr!VO2AT!+WA$ggvm-UI2>lp~B%lozo3#XXn%XVPzL!aQpu?4q~YJWb#i! z&NlafCfc7t!^G&ezG*N0YWo8XaBY*hP&!YcgAA>*K*;Y~2voiYGFMxE{t4rP_*&to zKs%&(c9r5*FjU=3Ef)$r@eQ;l8=MCJ1@s(-FdU15Zb-d`tn2(UX=8Dzk>^M0?s~q$ z=TK+YkouLN)WdtLaOQjKV6JTidpTq}V;8CtP!Ka8qLV|0xT^~{JZ6~{;v&~J-;r?^ zc8fKrI~eghk8&OA9yn}nmN~ldvbmB}Dd#9kMtpy3vIz?J)eqkZ;QRTZtEsJrn>HdJ ze1%q}{4&|)06b=7u#l@v*BbJw4^@UE5vTRln{AlkHFQ5l!&x|f%q_Cid&)@necUlG z?41Zq%@YuJBjfm8I}Nb+(#vkLtqm&(s^qI?S)Xo}4mIA$Ze|ujQts6r{TsHh+CiJe zlg+x;hS4>Iie;4%ofXnFeH&}^$|7LoHd#;pmYR>^W0tt zD;CN=-QY3HuDqoaFXg;{BgU7)x+eo`E6hsu7rDjC;VMtAMR?Q)NJrpuS`=aPzN4+0IQZamKttRtfC2FyC$@mPleu1DnyiknR@1QdV=@{)ca4IO`Lp zH33KXGG2o`lg|>f0|(|ue;RJLThJ9GoRkbtUV`}6P;w$xo>o2qXk|L<>AUdB%IhPfCI-A5zyw7NzO9A|rTc~>f=;M2yZwh$b& zH8Att8T*x3#F;-dHq+%-$W%B<{$bTuPOiQN)x>o_!@JAK*gSp5Vv>sRfpQ}#8u6x1 zKL|4}x}P2dm5AStL!3$K-~2?n?UBRWcy{nmy5fgBd+-~Kltb@`IKe`%KoQhh6T+v_ zZj$o^QI20}_K3?cMDifPb8UNL;0%u*WB%p=+p?% z3;>$_;i^%oNMDNWT8+mhR^uYZm;_@dl^_JAI(Ia7(RO+dFzeb4*){>_we9?U&z(#p z)pTgGTx6m;jx>4hC!xC?UsqGiibx(7=75EM1C`KFCMkoG^0K4l}llknJ`BQ*YIe?g(kY|JT*GCnD8t&9#%rRZr-aC#DfzB7!X87|YS>Y+M?p z^@I$rfkViouYc1MSv0_^kpzN(kv&W%X+9r^N0ZI)^t3$PslMmatv+YarM=j^a|O7; zGXQKzqFs5DSS9DatA<@b>P`1HG z?8P31+i|H+BRf8iw?57W0sJ)&#<0DuPIn=3LIqEEMVLM|=U{+sHn$E%L08|~H%Q79?&NPV z)M=aRWv3-L^p47nR0QjY=vquppPZSj=~hv@I&&$&YPujit=f*`qbt+Xjhh|mYJ{09bFj3m!>Sorgck`Al%4}#&ZiNf%az0l0I+{gJ#Sx&@{cEM zIk;VymmEW`sj=1m+2yaOd!4q0^faIFj58J`5@gKU4ZQww)CCgSP^8J&jbcz@I!rfM zDbWMb$7wI?2RKkZiK3Adw7uTp;np>R6JA?%Fvj5;W=Nh8lE`!>E9&d#7mc;nD8q*j z>;RtsdGJMsg>9`~5g9%t-)zrMtV=#Q;T&7?DV)#_mMjH|IGv77zF8~x-q38|Mh!?O zG~iv^Be^|FZIjKa)AybU3k%E{g;npDaDw>js6JiwRM6W~lO>7JE^WM;$b@`q365!t zR9sz|OPLn-ht&aAgr)W|6;1HjA4MLsDtXHGt!1)%wa9a=)f~$YL}*XiL}BJ&$ho+_ zVuY%OvMPUhM(_WRYs_(^$RMN*f~>E9|97DUu4#ALwZAz(7P)$>b1abM1HGONl(Jqc zhJIxAnoEW~W;{Iu^GDpf2E2||@dh5sC#d87ahAJf*ghzdq) z@}eaOwD=fuz47g_DeP{@BuhKRkj$3e%6g8RI4452A2mz|NmIb^N- zqC>E>^GiVJwSwQ;<~dBgmtzQIaZk(a9)D=%eGkFE|I(qwWmr*U%S`$aLiboDv%rXo zHfAn?*P6neQ(N}-IxouH<=R zpWQMbd~+-?l$l+V#Rc7ns=_|ii4}j_`g~3<~W;~%7e|*?mgr6z9+k=k{AGQZ#CvVz2ADw z<~zTgtkE+Z$jh$WVd&-wx&Gt<`1MnyN1~8dZZs#$3dI2%%o;{6Bq`33ikUA;A>9Of z^19Tq=^iH{XTs>wCoq2H+#ncSWYHmsj5sSyIMVGELi@aFHUAlQ_L4J9(P$RyX8J z>4riy&cohBu$Xa+wGRLmlcmV&97}Q(26C`$2@-%vxWS{oOJcl=}MT zo8Avv4Ag1~hsv&ry81(%iX<%Yd`iZ4dSh}@0%8`s(YPX!$KkHBL#QGBnD_9pTmX$t z?c`RziVYutcV9IoBT_Wa1bZ1j!9x8Xv-v?ilMl4A{`X$gx?o*GZ!#x|&ytL?&3*#@ zQZr7`(5!z&r+!)+-t~l9xO9!T;L{I2u04Eeq zm3z`SjhUI6j`Os#ioU@X5Wp3`TeXWYtD+9Hay0kdXg&8pqh-_U;ldecaT>rG7X~yp zp7b)-wAcahS3I`>ceExvLdXMZg4m?U3mq~z=Dx&<0+x~d|cJ>%d!ukYun7r_#&oa_5 z+Z<5uJc`vW@!XwBk>H1%&(Z={VwWt(eqG$%*H8;?m`7wP5r2U9y8Vdu=?btag2`Cm zCp~RYxxZ>ppF)aMQKaY+W>wQ1*9x+b{ts>dJlT{D7}*^^vn@QEYlduM2R zHmq42mDwTxg?XpW907&4L5r%~SCP8=J^@b$HGlr1#5k%;ED;+;L#CTxYCxe2$dhR^x;*704bR{=S|hrg8?gpiU=o8y!WNje-Ap&v}nSCg_0mH_met-({iwAv*p~ z??k7T6IIXk=karEXN-o9i5A8-EJTdQC>&>fF$!K-<>k+I^igma*g_IQH1HIr()w2R z&_oKnXdos|-)_!s&7$8I6|Z4*KvazO|i zadekgT2xZAMpX(eSWpo`Ok#k%RmJ-l#KoTRNf>vn+=nc0zt;i9GRd&AZV`z-&82G7 zd&*H-!g$j$K5m}cpc2N=)rz)Fr56Oa?ZzTX9z_7oCn&TT;J=@ugp;}jC8;mLX{}^# zS-2slH9MF|%ukPUMs;#vHwoTt{=fIg%oHy@CX`+OYgQ*P?DH+g>9n=Frfxpf*YT8_ zUdpN(g}0ZNJ8@ParHWDZVG0$;=vOmoD=h5d=R$Z$rD$knum6pK{Al2Uy<^!kcadd_ zT-szPb0mBJkZ_Vg!kE&h$x9*qe1KNEm$u{E>SRR%cpUG=NrAM_&FI|(CQVwW@N1N> zI2CMvO%*51A6woqlFXHYPljgc8HLy^D6xDR-6*&^mqxxOc8#F2)(Gc7jjwC-v#w2{ zA6Igi{Vnn@bFqbu5QhM#0jr04Ac$G0{;H}~2k>e5GRVyEJO4Hgl}(m7Mzip557LTX zSl6|)cacq>0YC3xmxIqm#fXBl#V=UVYY`KhPL40{AR#j^8y@*1-4`k(hgQ!TosG(c z5sygH-iO(J$MUTtVZ>nYIWS-JmEdu83)kfj=U`$`hSh=v(NOoNUe`Hf!@6~`(DRHb z6VM?|R;Tl)(o!$Y1TPp`R^Q^96y8twvY)5yUJSUG$lW4)9Z9QyEHTCyY}c7r8l-AH zUk%EjV^h&3b0BfTQnJ2fqAKXZC^75+N2`=cKRAwJ*mi8|Brw2Gu{PXktlCp|ltcR? zmdA}sc4+*v`#`i^nTA^p?#0Z%d1%(ti>j4Ei6RBTb!r}^KpM3d*ryJ5d@>}LMRx~+ z0b>Saar&3TzWvrn56Khzoyj0$@@{BzQmoeNPWJxX3#G;~{QZW3vWLz5KFvQqq)M`y zjtICkz$V@5Mm@dBP4A^|YD|h)o%y0{q#Z9+)2rRl&H5V7_``B|1=N!6P7K+UJ7UTo zw2RUa++K7M2mDZ2b;vz^t=XMq9-XxNF=@{E(2L2Upm%Jse6MRMrnzDwE%(fkUk1-{ zkYjo2%mZ>SbIbXKNUjO<6oc;UJA7V`DeBwpiUu6)tbly+fzt?ENigH+YqbL{h$52m zxc{#Ai?77?IRBN5eZ?O&E#pw|M6?%DzBOh5c^9R2QqcrbhlTb>yB$t!c@@SYR!3XE zXBcUR1Nx@W#zZJqU4QL;N1_9p&ojo>AvY~RT)y_^X#MH8E-|m+d_m{Zk|!kf=MI-~ zyh8sTq-R`h-1HwdN6=k8c{WV%bqFe$tI z43m9F;68@*(Qi4?DkeULD+CuN3EdvSU4fuoJ3h;TCY$Jhj+Yn+Oc;G%;X!mq-6Xc_N+V@R9RiUx5 zIIb!io!#~#;)oW9WQ$u!RB2bL-Y!cgA&p0Bm4zOqkAbql@^?5B`l?Zo$0~!pH=w47sjL3r{M^vYm6jA{g|_qHz?7O-TrR~(ka%`S!#+7Q;;;( zLD8v+Sx`6_{Psfbl$}QnCBF%fCxWxF(>fv?m$;L_CRuD^`uBBy{GMQm*}@)eYSu-P zCw-V>)*?hJ9kV{I%5zHQxh$i>Ds1qCx~`F5TtwMF0dcR@q4#P=$?Xf}7J}xWaC6cN zqs#QnAq0oNuYq~t@JWFu$s%1PS&VawOBFu#GTb6iedeFz!G!A{Lr z*>Yhm8oj=iI#O2gS5M8Mn-UbK?3BzbQF?|Of@Q7 z6TZr|q%VQeQXbXlA2Cyw5OnNIQDnF^MR!m5NZwm<)~&pKyon)mIB>~|?g_`9DMelQ zuUdrSekjo&za86jh#!5{hzyyFSVrm-gEoYkWV&FkL)Bo;%l*}`S`C3iZM2Zg<<|uH z*g0o2d@~JL8XN*ZeCB9k5vBki3ZFMSLGP87tK#VeW)l9K8DB4ji&tk8Nw_R21Hkpz zeOEUyWR>@b{>3TuD!79(!M)8U>KmM%GX$K5pr2UZnK!XGl|BPB(3R35i~5Di+?~BY z_ZQzZW47HQ(JS*z1dD~Ii0@UGD)RoFnooc&d@-Gz5@-*m?uF1^$C>C9cw z{#~db+A!lS+4E#`Rk^;|zIb^Qla#AhPD zdqZAp8#Z2b;8cSFmBp3WRI>7gUvlhDE43_rVM~OyUqa9IRE6yl^Z6=1aA&K7g7iGW zPQy%IaEhEIs-3WePkmd^(CN{gk~rIB@Agebx*@7#2W#Q`_>-b|(XqzAsvy+@w)GEs zIXT0ea5;myeGGzb3G*}ZfG#_9MH3i3;k6ad$&<@G3@?>(V3vPat>#= zA1feVW8tVXi^#17*@^jTA?P##jkPHtjpo9WTIFw&9QYAHZz+!|M)4K$Vm<10(-j$g zm&gI5Wp|!{tY))`ZT9JP{+G;MXZtR z@wxl&*9`_!?AMifd1Y?R+Vbu-f}rB_8c|d|>PjD^N-`dCcIM`BehyXl`cl7;QO&$6 z#ylbx(}4J0>oO~TEIuCwB4~kA!g3xSb(;3^OHM4ETp z`_`8j@*@naYIop=&85@Z=n~g*f8)-LPWL7a$0+-t0TZ?;$Kd}|Lvqt-Attc+qQUn)BI8~w9<=SVPp%{`nk_YAdVuvb_*nJII6z9 z*V>TCfo3gUkJARjKUF?ZmtUQm+kEm4Ta3~w#f3hb!$(rDl?NFpXx+W*F?duY^nyw! zq9^m6_(y(toRKyxImbg8Ie6s${uU#uxdHLg2~ZrIp4_}egVCH5>Q(#4cg~|R;Y{%j_NHKH8|U7J^kAvsDGc=6Np+fyaK3_cm}{A-Xwov?nhP%F;%+ggW=`M<&D_k4R)ib-YB? zh0pW|Cz7gT-{e!(0UC1cY_wfb44h zGp-gtkEC4R8o$fJ!%$+Zxk#7dR3H~YcUXadFV>hU}CGLrK+$sGc-aaZ|a`86VF4KP|K}#rT&#er| zAC;#FFG6FP;RguxBr8^sM6Dvx<(&Ssv9b*i8}-5s9aQB16E^ERfq*6jN-VwB2pd*i zrFv3WRUoGhr1+`q3q2%nrS9XiSpT3GIE8yB=4l#bKYg~=wP~oiyLJohBWF~C>#w7d zNL4;qcXT$FHD?QLqydinBI~$7%E+8vLvvZ|ZO(jQNX5@E-IX=?-4Yvq3LecBI=!UDO zOA%N22R^Fu^bV_u7ROqz**O7(qx^{QN@RA3KXYX!X$o-&s_H{E`)Zn#~XU!0IasJ4YM1{id); z{OAvFOd{i3-+t&0& zt4=wVIJ$fcnv zC~rmJz7WjSD|XseT-l1K9ogv=A}$qlJhFUp4qKPsW(=utc3u5b{9huixV5#e(%$-W z|81+CzD#d{XVvT1OIK=1ve*v#fvAE0M#4dGoZG_%NLG;vD27`IE5X-$jfGY5(X1aT z=?SlVbdz>pLYf%5+-W=SWpkFFj^Yc+^#SOz4lq|QHG|b^thkf6vIWhFAJ3x9K+H{a zn+$yWBc-iHjN|@I%$X4EO`5dEY4B-(H(WCR$!tf?SR~!YDQ)nhD$|H5Xr&FXeMc={FHkFEbFPFYA59P?uNi}T`Yvtheg!K<7ju$&afQ?j zhBof#LTrgG!V^LLP4Lj1=dFbSklv^mUudk|Ja7-SEzMuiC%GoMiPaXe1BYMM1nlx?}Y8*;N5**K9 zGB_z_Yo6J0RBc~oLp|!7$c+C4O_w%+o#@Y@No>M#gPhuJ0xY!BX3*L?0c^_d^Q2ZN za*z94lTg^~d9?_$;W5@sr@=Hdg&C}t#uu4H=7 z#pzgs(QGB9lF;6Q&YYdcx07ypS#HcHp1U!UaOB~jDW0l>FblUt=7l$P8W_L#39XK0 zEI;*4(SVoL;WZPyW*g1mAk1mVzu>z!3TK<`zV9f3+*8iwrY3`Y=X4BXnvS^A-~={E zBHRV*C9@y3WgY1+{3LkN`=tkW zkSG%vQfD+tgT&y~pY~gIc&fJ3-4mu}*iclQ!FYdxq=b*0K=ejA;{1>(86BUwM9#8k zL2LndSwqM0BjCCj4&xw*$WpPdZ~Eg!79^ZtK7xe7m0fceQ5^Ul%I(MTcz|-+-lF&vg0-0 zVizV+dx8WKFvLtk6avN*p(4#`m3$-`)-TS=zEaV138h)o7N=toT7zuQ?R^;SRb;~F ziOxyjHuWd942jG+g^(DbDm>V$35hV%JGUAu6w~a4tM#*4zlCbXq`vZK3Nkz&RHSV< z#f`0o5yZE!PV?%-mwcBg0eBqxxqij#zWHBx#3INf1x=zA)Eq`C?2i46MJMo18Q%L9 z;Ts(pQ~$K|)@DfAbogV*&>FH8P{%dWNvuZJ$+f1bdJ}^Se8)mKS|Vut0MH}{>ESQP z&tngjA4J9*u+buqM2_qk_c(pJv4419`ZJr~SOFQK{oIrZN^M^`vwXxRxKi$1HBV~_ zlNyN_0I0L~k7?Er9 zCIP>R<5Ugq2J%W^)JSl-eCc=gh-`Q+fMl%US~t`j!9LaD&znXtA_hkdG@JaaqqN0W zyF=%!MekXvv;h8y@$Fe7@1!Z4XoIx=E+jx=!a7m*({&|s+olZ2HvseEONN+&&iu(O zHc0{h5}|}~=}H`eb>)?8_*|5zv7{d_N&*WsrzJ&TgENm}i)`mB^X({;^*>1L8jC3k z>F8%6nr(A9v#Oj4Cy8eL(g|Ea9a^>Aw3Z~4LrUTr`}LE-_NZ@3P{#;g*agYL(dx=q zt}_Ra_t)u^-F)y|rpY8RS+%5`HHmZgMSeE735WIEdVb4iFd!coD7VM|OGJV*fULST zJ1_^Keml|ROn_F`gTz^*5Jo^>>32#zG?SBOdBq)Il@ucXD{VV^(?=q7ysx`f!cTOP=r1}(d zZHY35@#O*RXLxo#fuR@i_^rv67j#s3+HA|JQJpkx8&bFFxX0t3T5I*+mY_1pgpbUWV$*yyRy`IYafH^p5GCR>a(y5~T@>F^PBBC9tvv(zJn+SLpf}q)PVpy4S3aB~U&~ zhL$PYOz7OCUq~N`aOR>~YD`nMD~qx@olD7U?58o>AiUOQcOe~+5q5^`warRn5O8xS zV{&Ml!YCnp?j%iU*q@=(>vF(5-HqEENG@Sg*kl@1*Wt9Q#Ky#|mG1yXYznIF(l!;4 zM|VSpKq+Am+CMbtC9hQS)+POo+4-L}h>J#iuSN%_&JJ_SF?yGQO3%W8YYC-#!&qc9 zXqc)roxP^>oAPQ@*u^uO{$grgI}^7A!{$&(Xl{L30k#CBzIj#OmeNe|+U{J)TH_G0 z#k}MF#l!^pEJ2Bi?)jAu>$ZaKS(Gf@s=}3JSA;J9{3p|{gi3dI)Mx`DH_6yLiaz*A zSG^7Ml_ZUps(GcGZb`17mRVE6y!p53zpn?A(tBHN+`&3MG9qyQELl5tJ_?+e>kYcg zdKpWfj^`NfHf$*n-W(x!+Qfo#mgs)kHh86Q(igT1R=1onoXzl%{#E4n%l!fKG;@Bt zJheaUqNbvtaa}z;@*}`?n%U)o^PSv1j`MJCvM`9S5)$5A{UAfK z?V{w*Fi*p{WUE%AF|n&AU7Xp>@OOWd9hkp2YK3NQ*NbxrZRZ&|k0X}Difrd*voNT> zf~3Hiv`!2E>bSRMNc&5?gUya_ck`mREE|{Kin#Qob|JJzq#wTZePOxM8w1S<)iR5~ z7`9V=)N33gc_M0T^d!V&*^=Gf{{wUKtF>`>C~@f>Ru%X%rbv&`Rlw8rkMxC4XeD(g z6e=Ra3^r$=LD{BX& zHuPoT5*wibSehMm)DGe-tEYI?;6a*x2H_3rBTz73KSwZ^eVi7Z;5yyS`L55Ty473* zNTg*8MAuy2Wb;RAmJ{5;SA#3)D|-hjeAVg2w6P36Hva`O>r8s@sWr+?`VjNRXn*-q zv$xw=&jJfjJ9iA(mLEJJNG|FX7~t-(SF`^)fb!tYB+0qt`=dr$$u+&2s|}|D6K8+?jKy)O621JA%izAxn(xblwZZtgpgmVm)j;9DYxO%j+s91$&cUvW{SvnSJX=9xn7LI;FV8 znWpPDwUOX)9FiZ^yCz$Ep5n}areQnn^^SUe93Q$vfbZqnjTIOdg6bCe@Sj;Ligy8P z`~-p5BdKWfPiflUMEYA2e`fdFnQ>2fDsSZWk8Qvm6Zq+^-n9sP&a|spno$Bi>?*Xp z5ck9yHl#YL6wyvg>@GL5hI55F(PW5+$zEBwD57uRJiY1@cMv-j5@PGdc zgF5DrubKldG+>l-dh$4mUwJ=_6azqY7@vJ){l#%y*mC6x7s?B&)5M)rU zL~);VI52wstkgq4mJAo~)7@A}ffQb-+j5?Q<-Mm+ho*0f+Gz(#0xnlFUr0NwcS_Er^G8r)O+2w{D-Y(8cc>M-a=h2Dsr2bu+YnuCZ55am5)w{R8cLi`>9Y z8N4x1Gy~nWAY+WDQf#J^{kG8KEXa#N6JN6dHR1R|KBOhxRx#yVxUNlp@~zXg-tD`2 zgB`eMSVJyuR0|tm-KFc4>mZPw%MgNL5!pA-@sV6HYgtSU1PcxisVK64iT_1{E%3S` zVfp~(d8{f|^)`+dh=L?m!#)u)9a6dY@$VHLhDe?j7u4Vq)S)W4G4WFaV)$_gl+i!h zs15d+osB2l7N<&(9L1>jF-18XwVn0ouwb>Vy)^og$&aGF_|%*f`Xunv(5WN$F!fwk zn~dU)d;&=DSG7QVH-*z+Mrh4u!vWwYIvC<>?HC&=10iGBIG2Zl zNU6O`$A_kwvV^8c%)8MfH#>$B5pS>f>5MG2(L-spuZ#)1qeS4ZjMQKdBkdb*{DGj~uKZA;kz+bxg9uHbx!X5%^a* znHp#&WkdM0t%01`#%mwcfPGuTiVuVue>n6Jm>P3{Xce{798i2`i00o1O3I}mq0V3M z*dy_t0|(Y|4!a*lMLNwD;&3aGKr&Mu@X|7yu?iRn|CYC^#8*6qde|~2n#8xSob4)@ z4P!B^UbCO0AU<5*jE*zg=*?z=Vex=A{cGtrlB`$uNu&nRyV(9t2*XX3>>OJ3D{1HHWV=3&To2F(B@~KSC`63j39jW zmo=h+dOiN)Y6*SIt6|?*}-lH_u6L1Z@i6sx=PKQc zom(J!*);^zR%Zod@VIUcA^5h7is;qq*`Mq!@eT)Shs-+#m4r>>OhBhNQ>PMM+o8DO zNh{K=rN0zWARp{DkAk*&>$qmJ?O->f$c+!Nc~=USo7HrP3xTxVoDa2b84*H zdy>Wj51ya*jlxB#;n(~gW@sq!NTdJI==6NxIE6Wc!qjUShMFjmpcp1|v2kW#Zh7xA z#*mQZMown?_+}o|Vt}JgCvycLN_1?L6DO(UXM4~f4%}<9BN92M1q$o&lP$hM(KbI* zEcU)KhVZUa`Is7W%nd(SQ1=SAW@9o>Pa;@0a++<5h% z=Pcg?i2_WluQ{BEV&kr>1Y{I3e1zN>cW{f3zt;8Jk4|;f*zu zJ^@=<9Ej}GDpN_5Ojl9fMtieG)UhqtpCjLgTSUh0BpnrXuNcQ!Vm$Pu#G$VD0={t9 z<-kDlGaGXBkVR_h1mFJq@gyPV??sp1JmvV=M(|}a1mWlA$I#@CqWr@fJ0*vjGk%0a z=0i6~Q(2qEFVRm63Tn&DEzl>!Hfa08yl8rY3D8&scluLvE2N!GN*xOLX)K(7!;@N6cX$~vu9vC!J1$n-$kXDOiTZ3 z2hubF1tg)D$_W%B4Ek5(DwG4mt-@l1WaL)xoqNVsV{>C5 zyIQ4EyivuNz>}*>=3lY-Nh>%Rii>&13)hwDTXG11)k^CH+_wQ0a!KaX$q+Dj0x$m=C+KpO4 z6E6iVl3R)}rTILoyPmGsq;2(kZkRR96E*)_Yhyay_n0xd_zb&-Z}CAQ1=P5|rxV`T zbp>{Tp?aSdPWLt(?FseIJ~|eWq(D3$*6M1i{OI5Om5dc{q|Fm<8=0fft}iqdBuII1 zS!-tATe|bzwraAx=29I!-3W%~p^J8gWe4gi+b~J`8rF(Lh ztVe4%?2P66ccKg`!~*9N)WEb5z*FJmRd>#bA;ptpibjwf@vLz`Kg;q5j z2pa&zmH&KHw1|McOzvZf44#_zGJo64M2MGOr=jgdT zaHp9>4_<%sHjZHqlX7Xkdw?UjcYG^Q|0l}@B)H{bkT<>Ki;KFFO3p1EdP~+fE|s#y za|#5?t~k^#C7ue)JDtO8l|$WQEi1DC$}t)kdO=*cGjZ0)Li8?>M~={d30x)V8q1iU zb4n|LW7tcfMM@swFLJ z_**WlYKX1Shrt6ywsE(LhZbC`ML@@I{C%+P$^dx3U}G$!a>=>1TPY;EZJK|2ZpLYq3ozcUuy_4AArq)-KP^Z;ZVlI{W{`idlikjN{e5O6k4Hhga_9IO1>X47) z#pX0xU8boSRfaV^iqns-io^#eg$7XCuIIOElaL%E?+GkSGI{8>{_HV0$qxH#ABUh_ zgH70I`|z>m!5xM^@J)36@n8(ru6XDV_Vg)mAdcgCN2`Xx5sA3^f~Zop4%@WkMN`QC!>56!0=}bZ1nlsPoQP57Dd?qX69b(=ss|SQ##rZYgEFrH{POvbFYmCk#+$tzL>Hqmf!&AVxu?CW?dDMJ_V#Z{{;PNIrL5pQ<1ykB7Wbl8*|02rm{@MWV9?*yH;USRGeO^v$E z6**dRG!eD9;lM=PKxd2SB(Td2PaW=4dI*VfR=D1w$#EVs zJ^O&5u3e*n`}izo^0w$|X^@oYuTgCoI)G7btiFMOkRgVDOVZ;!MsMGp{d{uhPAGE9 zWoV4=^h39Oi^ww09nt5Tkdrs)>+&xm`Iys|m*nL{%5W^PF%iotnN8n$j)*0g@+No+ zblCAM5jsta`U)quOgI3QfV4VW5@gE;QP5&m!cjCuSe2xGS3TD=M4!JF3|Bd0^6ahC zs^8ZF;db27*u(KQsK!)SN_Sp+)RI1Ow$$37me=qPnSQ`_f zx&)9rxh*~1U0v9Dij3qmf3Rz($_MGyuAZYhG}~AtSFf!H;HD1qGcwX?@eSaAW6O7z zCo(>4&!8O+e2E|3yVfz-^--pF3?mvDuVLLvUaHM@p?SHqN8{V>IIqGs3W(3@9H+hg5XP2cgsL*BcRBD1*@lHbcDIgqZYe5M zBs4!YdV@lPhH=O-#|dhX5XXJn7PwLSk9So4-UhGizcXtKw~~cl5Ip`AVcKD&{Wtm7 zY9>rk<`X>VI9Y`$sAJ=DOXZ!OUF$Bn`ph5>JGs6k8s;TmyZ=2s3CtQpUS)q_&SW_~ z%(e_*wCUxcgR*KZ=f|PNhu2jCzpdU!{Vq*tkVUK+0_YL&5%X~-b_{`2@3u;f?-%<2 zJLHok{YS4d2ILDr|FvAB9p;V(acEQz{fe+|8Dw{l3MugIvl@ek!$-?z8R*JS`%W0n z-q)%Q5lKh0Q~ccdGPX=S@|b34fFHTm8Y;vJ7=&USs1~trG6CuM_3i6K;NzE{OegZm zpU@E?g#kh%ZjR9xU#3<(Xe%`;9;Pmos$N&Tkqz*9A}oH&UD zfM52P?b|sWnFz%SIW1rgffI~rvyr2wv`NkoVp5v9%1zBB*y z20R9|c0CQ6uex(+HpYLQ4Es{voC6Hq$%bfABeGSQ)hl2Vd<-@Ms|>J0l(vDq7PgG; zJY2N^XGlSKqMP)AG6``I2c=}3ZI!Koeu`s@@?n+3-GEu&ToqJ$ByZA|O53sk(T7J) zPIsNsH--l;Zk`%y;0j(XJ~kXwqtEF+NRxDpxpaTCJcM>fX|~jnWy-pY3PuE&&Qi2h zk9I>w(lBV>690YJei`)l&<#Lxv>|1aa2`vK%Jo^UI0Fb9@$YZOqnx7lG1>|h!lIP6 zPI)A>dZh)cLps?0iEk=8R7xho$6noNI4Uf%**SzjIXBZ0AI%DKre1Lw%;x7c(!oMp zSdh7vZq9+d#|hZr-{l0WP!Nv{ShCk|7o^yDt&wefi7rm=R`m+3;2n~4iz*fXgr|NY zoUBrGAnG0OFb#9z3NT{&l92q*$VVPqvd4p|b$UEAPZ*B!s2ARsIGtp#09EOBIzG`%K zGC+$13&YGzV|?a{Ep!>Q%~Zp%vuWRNBtL03Eg zWK|PY2g1*z+mupJ9E+eH(|wDEq6?#R${v{xsSDS+!eZwv6ix{xIiHt4cpbQ>iA=8w z6a60g_Z$60AzV_PS|%F=X(>y#W!t$lmX7U;omm4iF32_WV>LierKj4fI4lCKi13{X z(?7dru+QaAHSq7+X^}!~<0Lgw_?&*Lp=(gI@bGRvr>=J~ zi;~$+B&uHWYQN%3wl_i&PY8_%{p{nJzK&?vU4-@wr?^)oqoiG&#gBkuSXiSgD+8&9 zlk)A=C1|#r!X880sHL^YjUGCfIuyGbIIa@TlIO!BWje;+1kFQ$ zqve`L8zt=(jqICbUdqZaZCxJ+5AvTiJ9{*SvgG$P@MTRNW)blux|5y+>jkld)XwdA zwIuYRo7|RZkUr?QW{-dEYMW30Qp2y@-V2WkxpK8W)%aju%d%nii9`h&u_@-JmkI3|% zNvcX8aF` zZwtY@m#~M&qLu+8$MR3-yUT&=2_5>y zM1@9&jQoffGizxLXL^Jtw!CB>LNoET;NB+4IHs;_G!U~3Xy?|`&eYYHKyTm+qY`ye z6qX5^rHSSJXV~+A!O&7qC37yUbUZVo*kh2q=M>YG#is4;nRrG^M&~Zm)gB5wLhl?C zcFbw&c77ojsmVp-ZhjJbE%8+!j=W6%!*@~I>R}rL885kaZI@;*w;n%5Oxh90`gg2HDDlSxR?c@%7 z9(An6Or5vA5kmcPWcicEPu|GV({hYt@I>GB%V~Szl)v<%45>Zhlqm7|B~uy;))#qf ze?tmg%gL681m~LtT-@QmfY`KG>%Q*VtvJ`C<`3V~83Auvuj*!1ZfIQWx6t2E3$dIb zd`W6cCeXc>Y*dUCH3|GG^xJv*N2yrX*33yxjkLgkRlSHTu#f+;bJPdvHB!g(iWs8B z8mmvhZdaGQqYncweSQn*M#<;^RxohP$)!NF6R^msV1jL2sJn1aFlYl2)1aiG4GFEm z?iD0(=x}jI>S2WbHM+kz8R@~A0eNCyLHru?ICi8D4!XR%T*fv?EKURa4i*CB*<4|B z5XI&OJS6c)z>Z0bJ$tbUh+01JWyK6(p4nXf+EIAl661m5VUVY~^;Yo?SqzAAE7pLa z`Z)@3bjiMYAMMD&shAz|Umd8mJLCyUd7uqw5AfACs2XP3P#{4-esqvde4nU>HY&Ee zUchZrGmbDv=uO|bJGGy?kA_p-_uS9J(g`cH%0F`B{HZ~seDw$S1=({|6^^X2pAQHz zrKg*OjtG2z6q@aZRnrGH!$_~IMkru;4$llS{UCGy(TlN|2Y9LlDc!FCU|NW*6eu~|MF9%N;Vcxe|nxNN;GxKoNEUu`4i)@E>SQwV8c9I68en673G z+HuLOFPg+_sIvij=aMkMAcQ+swQqd@a|Hs23iQ9BvO#Go|5yeHV+#~Et0XjILx6{w z;!#&oy;A}@KAc2$&0EJ^hmU`dKWmfYkzaHIxTa!DIp@Zz zL7b-$?^msZYFk7M^rmj>cTx;xGh>Kr>7OynV_!HQ#t#c8(Y+#s3?)IrLg@+dQ_*K# zts%e&4U%A`flYEoSDzx8GP+xmxc|2@FhSm-QH)Vc*)KeI{+lZO^pP<+;?2vUt=7{P zJ_$nxmUdY4c|{mpVm8vVsFW;@eM4Npxgu%E^V!%V-+F)a7JRchDs^}|Y$ z`D$zY2qiSV>s%WEaZ(M}4Mg40Ku5U!VgYzT_>Oe@`o`Z5{@bW04>0!y-{0!VPP+bI zRR(>R`X!!&Z^aTcjGNN~Lil&v?Ikhh8;kA5o#XaFB)?mVXI*OMZV#}T>d;ruZbiC7 zY~UAI53by*OIr`*J!ApCxna>kLozIA)F$Coe;0rWj&yb(Uo!2&y{XSi02X0rw4XZW z2Zk+R)(K!IK35K*#So1yT~a!r36MKnv~1Eybe-P7&9Js6d^6#8nVgj6Xg$}x-l}ie zXt(hch83P^@Wh-~rQagf#*@Am+Sbgu^#rA1Y=$JEO=*ohH6bC!xIh7brEDA?0%Ylo ztwqAKf-3{M|2w#tnD0l%Afoz;lq{IWI*oox5-q%uAgUkqU$F(8HMR#Tguo*mEerDsdd*x02yZ_9|m(lfoGW0Z-UHPQGh(L zSmywPP)I>XGX83HimtY~2+I%QQO`<^IM2A&xnXHwRZ27r{g-OEcxM{p$HeTx{Xp2v zXxkQj&Ypx?My--EenN#YH zG1@l|`{g;8?LGXt97kCl~E;EbT z48pnSo7n}J49(Tms`rV5LAhK0Hu-+?*Icku2g;H);GuL8+hv`S>gp57jA8=v`{YSN z;@R@I_=Mw|{r!|{j6!2nU;sxzxWDyfr3ti=Rix!6nq0AcBx* zmR{tP_SGz7J=m{J8aIO12kgDC}=|>T0FcQc3^7U-iSNo5XrWuJ3=R zM4dO7d@YD6irk)1`@I0rWaMw=d0F|!;Jsn`6=6zH8l(R2ak#TqR2stYZQ?yGzf(tp zG5^~khMgv9NzZ=fkmes1QfU`@U)w5w1Xxi6jViX$6-#;U=2YaW?9K%6tZz8*eCn47 zQK$UT68~a5>;!rn-+@6D>_=GpO5g|}a@X5Ijuc1HR3?-nbDu#g_e90%(=eZANdZ*I zBf_Fm0{cy46z-{A^J#eW@J|O{%sP{!jfd`Z(O%Y1jp{1ag_^tR{(!oE;A;P zZN1Zuw88rUB@EqmWrzjLKNNONBAFy^@>&XeQ`1mt zK$P!_df@P6%u62O`jASYI+=1r)KLt&4B`fNEoU+nFDV1`f|G(F`a4%rgWFp>skVD+ z7$c{oz-8J9Uk2-Asv?cWh1L}tY*`lD?lW18d1is^GD@DIWrUJXR$e70T8o_l4lsC@4$F)*snFL%< z{Z%)6I4e`NSY@GZ_ipK;iI~RGNRRDdIy`rrygD+QKsseBk=Nny;RR;mdKHICWDwLv z7UsOmw|JV5-R%d&sze^oPnKJw*wNjAnK=mko-;m20%&=T-o2D;h0#TY+Db55%eaek z>O`)B4&jI2<28z6yAZ3`;owms9K~U2mYfpaXb+Krq(*Wd@{uK9?nJjPS8-xqKhsA%Xub0y z$zp9yR``v}OQs-U-v?cLz{Z+7gO~GuSd}ZOPn$ZcG@&Tr1urGB2Z+Hz9Gkj;iO_!h z-KjFg-o}lr31}o$@0^0a59m%?Pk0*;0~YbNyG5D69)Qw8zMZgFs5Et{FCeA+6qb9z zU#{4HHH0vDW~K|JO^k-qeD`vdu&UQB{d?~W|9N~Y2#%HKiDonJj-hwILlQX(`ul(?GTe1DH5cp%Q4#a_kZ_aLDlvSH4()5 z@F$U$lS!s%$zUDwT!%sB3|($zGs4rMPWa&QU@ZU!S)gxSO}seM(^Q$au(7`v&N)=(tCX5l<8}RFI#PEA{PiS^*~^PN@9r^Uk-N zz|c{U$nI?^SpMjSbPWMPh=H;*Uql-hgOdjVOsz42;~~$R=!ZGU1>)a~kBlzKQb9lF zJ=Co*sbZ9JTJV6$L$T{(Xz2z!aME>iGwTOwy@n$Cy}rm+Mk`~)tkM(5LIT#WdP3S4Ms-}tw`DLf-lG@4 zn3yB@AOnL;KbE)i;{!5~pn5EX`+73x3d$m{wh4BYk}%;o@mO_rV*9vr!Km!_G3diQ zCl)jIbVL{AGy=rK%87ZW;DMk-p%?w-YAFu4efyW!oN*sWFe^tZQjBl@m?~oqgu?K} z7SYU!Vtkk_uZR%!&*m*m+RQ5|`S5x6{+y;Azk|AAsuN8b-eqXM|Zuj z0E_qf+7E-$S5HGyoFt6*t8EFGMRgxbv%vU|lyARtOcPE;J@BqH#eS@}^ik3H)u#>R zTDi{FxDGnpu#&W)V<_FTX?qoQVm(2{PRGRJ$HZT}_n$Jp+MW7f>MB};hs#BDt@Ri2 zdT$o6^cRD!=5*}N_v6$1{Y!`7tQNKXqw|5r8DNAxupkzET<#JJ0mWl0-Lz=B9>r*8 zGR*_5TgwYh_jzI}5M1bLuxY&)rqlf$d1;h#?2891XfmMLQi|5USf<870678bOQvEOX>xF3$5WkmKPPK66?+W9^2~t2y>9u7;AbQCXlOW?C&PGNM$*2c8 z_D{NvWzD` z>ma#Mea2PoaRqjcEt<>m3AdF93DHn|X+sSe2hRsW;eQgufqnuzX2t0`t-1KArMthZ zQ3$bG^;VTuNY+QE_j{=;Tq_sMBs2QFefQuMohOENm$yZu(*uCxfHZPisLfxGpA(M# z{afz6#8~C?cb`Aw^tx=)DOXw%s(Zc2vmOVHB>84rNJQ)@7EGE)p zC2*TRV$ggsF-msXGJ~HPj-7Wf3mdT(20;hd*siX4pQ{&njvf0bzMOitGumzwV>K}@ zY^ZUgX>bbxx8_7=q7T_bL*ld6X9yW+NQ?wooz3Q-I2Ci1D6jyzPvFWjF9s5zg3y_h zyvPTE;u7CMO2z0$b3gC47g4$t3okZ->I)_!Aj}vV9wzFLHr62{pP7;&ptcd?6w_qy z^`TTdOddejx}v;qgP8#tOZ>l&lQOMFK);4J_R~V4{5f#8CcIqhdDJT3V z1dhp0f6yspi>mAed*uaTgpLfTk+k}`LP$iaOHQ6B>PM;R*`b>R zyxz!zf8_Z@j*A~*{-JmJC-fNgYC$gj!@5opaQgqndufSX>BLw56ZWdHtW(haMOs+u z4V`Amdk9*Wer_fX*=5QPxsF$WxJ9oP>WL|SPFlyxEg?8`xHj)kIm*X4YG(q} zl*CYmNPH~!W?HKzPDVP;CbVo$LHKejmYDhY$XqiTk%Tdf+<<87Z^JVGWWS zttBL&wzyh=hF}1V+7iVo{lN9SYJ{Y0*Ek`p*iq`QL)1((MRjD$K#+aCkM1c1mYkb` z-lAsiMAxU@CG7cByCD~6LZ<#N>O?~k(c2kMi@Xi}HbpQ5k$>zds!&S-O#ueG{v!Of z;DY8Jsbkq-C&z{Uz^h2#Eqrh;6S}Po|E@)*I*nl7gV?X_i^A~*AKsL`-YzygK|Wa% zonp|9uWoI2Z*yJ>(fN$_5hJO;R&{y7hwu5M3BmzZA6nNCVRNtvOg9{5t`NcIgIX+o@>ytvKZ3_m_2bOBWC-^|YDfe{Fm zUW5(3)m4*eAbE<+sCBc$Z4Vp~+~86DYrK{HI#P&eCTb8$ZJ+_m)+-cEm$SL8iPFD$ z6gh_Jl>6HYruJYKDWcdZEd(4@*1T$e=>NkC>zxA=`y++yDCQfWD8r!)13{y1j*e|#PUbvA@%g5@R34bdfK>w-X>XnM!bO5FCd{b)gSVN z*z=uEfiWH(G>xk{8iu4CN~#%K?B1P#W|J~aelPb~hfr-eK|lGTPu6GMoO8cGSRrs` z1wu)*c;T^gzGXbaQ(?+Dd}Yneb{Toxno;zZIUjD#DSv#-GC4ec`<&i5g+Fd2^hNHaK16aL`ED_P~_5(F4F|OEfk**(VztwBUXl0*-_2%h^b7v<6wa zo6Sgz4024q$<_#O1H9#IK)(>Lm#OGB68{iBAuU3KlqA8t>(eHC)|y7i(9%G%TcEEn zO&g)ahN5fT&PrfQOork<0A@%SzU7>ay4Gn}4f{*~#b}QWbI$-*3n8DjHNiJ+I%W1@ zNLv3|D?>g1X*#-cxx|4D@0l3->6(Y`{mN=BpyJ26nL}nAY(Lr7T@%Y&;f*LvzkI8m zs~rP_@b$You>K?dh05*CW+WS*j8h335Vs2yT@evpQRs@Sp7jH7Xa8dj`${8yQB_`b z!H*z*PTRs^T}z7c&RLkM4+F0>{M6RHu^iw#ZKA}{e4sic{7<2q0yR*wsncBftCK2y z2E2LWXpPF$=@|SzDnYw|>{vAjXsJb(K)D0iPX(r%w(yyxzM3?+JXeb#9Q?E}<+G|g zkV#U@x_Ie_fDYfxP8lRMLd;8jB^PmGx(NZfn>`BY;Nc?^SKS*snH8>H)tipDc+vx& zMz@p)mtqdr1%?-ZRd~sn_>vbFTx+QH?vt|-Cr^mjf@SYWU%DB;dUHg*#$q6(Ox~D= zRGiLXfa`UM^Kt&y$5#&3IL?>6kRdb`V|(yT-lDxxeYg%FuC5Zg_V~1^(lz0$oY~g; zWu0LJe3O)Ur-Nonn(&lwi;Q=Ai5sUNBZg3nWsxEr?J621nL7BYmE|in$hu+`f9}7Z z;}<|&xmfn#p-u@C! z8v_rxYZ#&j!q8RTTHV|vf8(#QK3hk$*Mwh>?*3}yH zKd<>kB$DZ}JYvKHs#edlT)V}B(|%So85l8Stcm1{5%O2;OAw*CU5Ozm2jFC2b;u22 z{?H&>KW|cw?pkD9cgk^Y{}2vF?{gY?3DJF5x>PPJE-Lk{W#Pen8 zS!G;8gZt5q+Hdd*<_^Gr-&WZ(C6bKkqR72ZHS-=1qK=!lMNzvdi1NR^MJfG2w_O<5 z#7co`nqY*$Z=Ev4UE~|>QhU0|bS%x}4bmNnu{lA4e@abS5XW=47I(pB;KV~HLBU&I zzqNk37f7tt$CV64RIm8J#Rh~ipg$YQ_?Mll3N#Eh5!RxR2fbJO<@cthJgzxI5Q^(B zD$O69GIZ+4smv>v_I7|UOp*&5rA%8YN`bO~DLe0BTlIJ^PeF>oN_05*h6+89uIdrS zRX;^47QEV&d9v>m+T-%(Jlr6Y7hrl@q_y^qFE}n~korI^;1ym!7}Gsuu7h~UbVpQE zO36_tzCdykmxJzgPYI9UG9=Jvh?d!+lt_wEIarVqanhji5yR zVz=p?Th`=0`q5(zeG}zmpV+AaQoxU831dT0bV!LvVcMA0_%N>Nk*|w^(Gb@zAPj1Y z2A+Q6L~9xx``joV+*hpDWXn2;aR0`_jdC@IH6q-_FA~;y`FG+O1JLy&$BgaWB~Ivm z3W&{Pu&=0*V6SvF#-~0%LVw-@gxvfLQlT2NFL}^n&IeeELrxoxewq;ElQ<}?+MU&} z%gGGGlYosq#x`H}vN8>(o<=d>$dQ3QOW%|3wccAb#TO8qD5@5Qg)w5%AsWNp`GYL5 zbJf{uBa4ifW#fCLu7l}QPJ?e`O>=1Jn=qzbkLov(7S8d(B&PEaAqhmvqMj;vwedz< zo^zDnn_TG32H=~Y)56E3)^H9sU>^Fe>b})1Z7V&Dz+=y3kZ;f7qkj&b!#0RfulVs=Wf=|=P4CV^R~b4~ z3(87wYO(nA4ng=)8>>Ri0zN;0Y3$nss0jmqU(mWc_k}yCe;JOgb8-pB!L4Ud4n&v0 z7XKtQwyzFz&c;829<}+`z)C(uG7Y^a7xHFJ*_y>bq=&;7Zxb_YO@M~$)wn}Y$#Ys~ z5(AfXwrOVZG24%W-F=Qh-L?nC))_BHlZ}WuP3tENz9z1Igt)8w(>}EqPp$zg8v-Z% zf`&-Xhb~5lhb>+q?3UoZo8m&!n(8m>DEuL~Ut5@6(kdR@m*LWhV!AMpxMsCg#<4+9 zwL$&kVQs0oF044W^h1<3%4datK%@isEn=94-1Op)Hey&S&Re-w#{kT`fTnF>206f9 zQbHke<}Ma_(vql#V=EIwzhg2l@;}{6LZQ%{JaeU30%B#Ay|PBb=B zUZPll=5D9Go!{t!B0bCz*zfk-DYZ&F+MEag+oL$WaiG(YCAo6%z<;Sub>BYfTfv_U z(~dNx&6i?Y)IxmDHLExc5Uc)z?~~M@MH>-=!cmj0X<_Fb4 z9AL7&So&sg>;4@QDvYiQ}v7!nl6E-st$JR=y~x-B$?=+SFBjENDmpnr5fWvmX(CMQY&S#_L|YqnAsU%fIWq>cCZ~Y_+w1|@yPK#_#;{2N zxwer*S_bK_qw_P?h9}AG6OL-GO2P=_tCu*R-amtd6$cvFehz>`U;IzBM&k(H;PUUy zOc<1K(XL(=dpP+?ibi~QDPdh>*e#4x(a#Nxi!f?>#*0da zp8dAW8b3|hNb(`NTXU(Bu?#OiIgo|vc*GL+WpFP80kV^%5wiJD^4QetGRwrOs-Po3 z1wic;x2-zrV}7Eqq<-gdB>X zrABta%2X9uCDmJ?);CHaJbRS~oAA|0$(s<@%gsju=bTwEyX5&m?9yuV1NtSy?)l@x z&t~@kcSSnXXl7NblRMx(VG7e|2x_!<>Ve#SnFdJ5cVt@6gZ49KG|Q+%U_3UGYkr0s zj#XeE6cLg`4n;vPW8J*Xiwq+$09aH`#8ylp4MphkaGIV+Q8c^OVa(@Pf zoaluNz=0I`##^xXW#o>^+C1n2&*4NEJLB85N)dv};{B^mX@{Q=;(xL@z_B(--vXqo zn>Ds$tJ`a3FY3TRoWp=+i7J_#(XL=B6^{;J-$}pVq?`!rn%P1veLW+b`oe2Wl|PMS z^V6;2sDs1YNTXy=Y78v&+uJYzZx_8PULkCKqXFejykwe7AAAr>SAAk2^|JVULLQLA~n z7pQ7->lNF<*sN~(W4?9-kskN@n5`dVK&ENkStVjA7+IOO+?he%rP{^=v|d!Lm)y#d z<_zd_o5fwwW=suffbJcbk9%LqC9GE16mT>2%1u(N-Ps#N^_c`; zg*^*of}#D@sf5otpp~k!Rj}s-U>M&G3P0m1Lu)@mwRA2B4=bt)x!!&uRqD%wH9xpm za9tR@P40!nl4)NaJMce))eQ{K%(=O>P>P;Tj_#^_{n}|_dypCV+|kOxEU zSu)CKh`O~C^1X5^#0u{&+n2l?mI5ZHjwUokH{=pdDQ-RUq9wKwnz;`w;MOc0zN$1cq{lKyhUXhUcZ@8?Hi z?X~gKA^vSSsWUCJ!lIf=^qloZL4FVaXi?2++B7mt587EjzMfaKH3AFI$95!bCA%DL z2oJ-Z<~ImWm~L;7yLCXC(dS{uG_*S<5U+D?Ut})c91~v*U_hFg6hBChkt6TAJJC1M{M{{WLOOKP z4&}{MXMWk_#ZRM&<&5AGv-R;4%ChjMxIhJ{1t^#Sch5_O1nN5@{Xb>6$+WNnhlhKP z3Kz?oA0~AsZ|bH;4quDee3`Nrk=qaD-+HO`J?o<;3q!uklxj}Z{e*U z@Luk^IM2r9s%k)Q6__^B2L4Q|#!%JohyKqEIeq_i$5~IEt+w7#u~Q|mNq2{_q?sdu z;RayJANP>XcWx`Nreh<+O~y9dzE3CuVXon)F&@ZthN!b z6UJTy7`04q3X}E1F)b}p-eoR0ui?sCZC(?~ zIr1t#BU0cRY6g@YzIC1e6ZES%$1%!m2${s29o7rA9=zi9j7pnItb=cq_r+}MD69YL z{FB-z#mFH@mP|3~^c6g)?VaR}1Tgb@AkSoa5Po9G>%Z|uVBfh^CI*X#GYed)Jls!S zj$H%7$~Q{oj0^IBsm+Iw zr}(qE6{xa}6)0AZm5=rTRMoe@jv$I?Cmxp){51d2mbUoGjBz3o;!T1eO(>NNpU)F= zK!O$A8+5JW&pZTF-=^aZvl2wun@9f^@QTUb;7-T(`_lYUpB9Rz=`hKeMu)E0r5E8z zSm-kypLHZ=wETf}9l-5dPh?QuUKR7o0A1|9U*~hYtY$4|+W`wF#@M-rd0X{RgYQYw zCfL+1>Xfu@N4f;-JG(N^6kf){|r;)^JUu8{WijiNDJ%8 zUwy9+Ij|09OyMm}R1QO6r@IEgtBEq&*3hC5S)7;GU3vqYMA;Uh)AP{;&4USwb0qSg zyUK&eI9uWpPW7aXWVI_UA$tKO!zrBIng%LAK;?7E|xr zu*El>#|ty~aP1WVi6^IZ=1`au!pzS9?E2Ry_V?LOV5k-_O!nAJWbBf}QG1;ykk_JE zR#L|w#UJeq7cfJQ?TTeS>si_bE|g&lA~)O(qhLL{hkq_~(Ht>+ZX2-n?*DUSLd7a+ zPhbOs(~)~3;s1H?z4@vYV?Op7`$Y5cW#yjvnUNvZA7&kj9OR7D#yg0N1le>vj}c`M z8;h?G?uj^YzO$i$k3TDypkyb`Md3V8_w~dm%<<6TTbT354Giwy!zG^6z^(LsfS_l@ zAedo5SX$3vle`W@0M;r(rYUz)rfavcHwkRY+$JDRg{v+a3a;516<%?%CZNQ+nUSsW z4twecxZkriiR;-uZ%Os-s|al^|K&1?F(>$SP29jc z#ryC{(4d$$3+hL=9x06?{=*nj)+xb5wFI~|7R9X5xLL^hXy(?HeQ6MEPW^TWk3){b zgY(jZ2gC41%QOkG?7}=C?na#~IV6v2d)~}t8$)aHZ))c!7|r5A*Mu}qkI%@tN+cD7 z{cb{Jqu!MKM2-p^u%Oo3zs<-r?>rF%KscO{`VUDJr28`cx6fU9_K?w7uZviN0~_%E zz`-BNV;yat$r_~amOmF$JNFj4DnK18{JHsz6cDp7zxQrL4(3rUMHe2q8v-%M)S2#2 zBu6`)>cPeOwn)lL_nPXv6!rCRIw(w+rBxqw+b>1S8YM7pPzLi*Wohm)*+?~$2<5Y| zTko*+Pnwjtz4M4XCWDJ0iJ2YSFnkoN1K-p{{S{^H#jq~tbuXb8+iA}>ZFyNc7z}4t z>Fya4jtvKT_dzrM4EZOc3lngg4vygpVkDzBIHtfxBc>rB)UYnb7g!r5lOlFZ-@Lzv zWF6Mc1+|LzSBSyL{8M_26?GIAZ_ZPu)lz-xr8<(FABPxR%Lzxqbj-7J$i7p3#MIIK z|4JrVf~5^4evwsG4qA^?+Pmn=;k&;(y6O-a!>@OCg_c*YTnqnm@nPyoA~}3dcvNM0 z?~cYG%{SAPxte$1<>B#YsAj#;Ja*k>%gkTiZpmJ?!M3dFFocrTT zxpnKI=R}Kc48f(5qn+b~2?UR`kQB@}g5D}DLm8C<*rJdTgNJCFx`GiS6n$bPhi!^w zs!+9VC3Bq5r>X@M$w-G>E)+-6;Nb03Pkv*6EUo_(b|=dCk!Sn5y|Itw{F9HrBa9Un zRYpn*bF&qHa>_#3(yi1v1!LJhkwYG*6utmwzMQaI_WZusRGrpn&pQ}5XH#FK_up_c zySGwtTT&9gs(Xmf&EwJ5-FvL(kgffJcu$cftM)7nR*z%PWs z^dFUkc$-p&DflC7d1@027$Un+mIRIAX>6kbYD3Se&PU!uHfJ5lK_=zsZyP=K#hMg%h@G0 zYKY%wlv*RW!meKf-LT|$VQ_s>3bI}igZ3?KGc^8pXZ*&^$K7yfgWiV=hy`J>zTL#x z%7isE;!AZs98VUrl*s16I_)tBOpt3&?0qsOGR?J@-o{Ct&F<{Au3dvb{@32w?NDRJ z1c+yPT)Xay?CFkMw=dLD7@<6l-Fu?1?Q(6B8Nh?LpHw4Pkj^D;(8ULAy^wx-Ci9=YC7&lN173nx`|W zJ#D?@R8ag$&{4Ho1P@dRrqe=6g^8W5JRMtc*pIv^$Q7agOgFj3$h} zrHxl70PF?mlIM%eRX7~Ru6rgaJN>~}okIWXxRVQvz=qf&Q;FLxvH)Jnx7hx}7XdTR z_5qxM`o@~nRJ{*8y{6i2&!S0yXfSksfD4hhZrOj%D17sl4fi0tDk%)5NJP zy9sJh7P2^0T6S`FJO*kCzqv;RWX_{EGp4ba$eF-GVQKCK4S=h))~uxwSwEKXV-O%l zS7GkD3L%!INv7F0j1#9DV?)rcb}Oi)9DRY$>1%-V4wi;hwQJl7iF~$t>*r4qpy#Yo zaGSi#7vZPxGo5DGsCXz1qqZ5))it>U zMjmfKj`&==5y4km7A=vXc>U`cA^ZcFsbqJ+o*W}jRnS|v?uIhi-pS^UeMPB*knD$G z6fA z9PLLBhp`@X6pLBsSZ?N-693R+%0vZkU!V}SgvamYM|-V&u@@=#z`)A#AnNu%x40eh z8+jwlWi{E?v2d(?t=daz9oj5tZBZi-jJt^I8|&NOv^2)V>P_yna?150AxKi@Xro0C zvKT7`KZ>61n)G40u`GX^aFzgj!7lE9ZF*25REG^U9bdIg5!V}5ue=K~%$yiZjN~2P z&oqQqDDkKd4zTfRJXi;b0-d_>V4wdo1VCDIGtXVZw&d77?@Y%+77ruxt*Ac%BX$wk zZs#BMb|`{2i6zz%%n@jc7*`@jWq$m_&D$@?pDf?ETOfPgQcfK^6y%~uc$Ag4ND-;; zlh@=0b(SvuM$~?^zuCzIxtMSoNHBRDfhZnkVdNgLW@(|ZZ*){C2oqAgP~LYW{GbWR z?@_&d9JCAA1xYDW?B`pkmyeZ$7+Xed{Xl5@F!S~n$mRhw6tb@R__Vdm57UFMOYChX zIai1x-)F>od^WUEdeTDJ<6>o!rWEQA6lTlc*-Uftu1z`Xn7+Uf(&g$tWr0qC5$)!& z9L_7{yoL}N+5}ps#!R;qg$V|Xh7r$We1E+y-bWAz%0dawi#tP39mf9HN5s19FC+8o z;?NF{-7YG{o)7r{+h4VHGqjqm5ezQmAb84iMjIvOpx~@+Et3sQTx-0EnxS0@cg;97 z`@KkwIjJNsw_#;=Mt-!JDl*Ux<^X1MWf+cQv3#Tk0ALf#EgXE3Y2U>RHzQOjsY%ue z0(`TXC)@98JOuE?CtT?phnd}M(jWvmF$slfr0;_XtU#P8t*$w*c;^K=lToBY2t+4@ zpb@8$xev{27pqdA$dVOC)^0r7v;vc~XK)QO$K4;rG1XAow!XTQ+PSBu4TKv~iQG#- z9u);sNp#TA0piUYnx%F-i>D{_8ya~B&Ou1{9PN?6z7*5zLn#-(Ow(bGlDI)tQN&#x zRGyvuLGFgJ4Pn34UNoPbpUSNEU8Z|JhLkp_dU)EMQ@XW|x7zs$!y8D}Ga&m~1RNm#ic0p==+^nTG2|aY-CU>)b;&T0FH=uzOPA2;Id8+h9-aEaYB0hX}M*$w~;;ZL^ zdHErB_%rrJa@_72I=?qzUKN|>PU%iT&J(Sm8f6X~B-P`Sej?5SDsCF9%6_s+mlv<+ zIZs5r-bPd;6L!E>Au8fom{ce9&ad7>MhX3A%S?k1-)=xhAgru{Gcz!X4zQR}#5j~f z`ZJvb$vX%g|7UNM+AX+Pqt>BkxGg@c$f}qZt-j`BjKxOY5157gzSqcUd6V|1>@|CX zCwWyP3=DbT*fXgHUG;wln+|+}faWH`PqmyKbO=*f?^CQwN%W)4588g9hg{qd z$N*&h&%8Lna@yq+(}0##eqlgGg6%%Zz;z2vSFt_)TL*??LhBZn7A$*#Twpl{0rKSW z2~m*=J8a5aD5=Rc0LcY48hu}~#DD~2Abp?f98el6#<<7BB#s|iJQ$fj@Kw^C`WUhO zrec4>kc+Xok-=^`_cHhBtA^(bku6G6^`ONH@2xUjl=dZ;*3?s*iMkL4#&#+LL>24n zqmcuI!#dYKjJUT%v$$*}dag^-63dk18Wrn&sOG_2&}M7BzXuNq%g%7@iFK2G?L-DA z{>&X;JsO_w(wJLxgbLKKK}JV zTSU>ne$)#Z3@ktLF;#@&F}uL2Yd=g1U`^beMDGyPa^t6~e7unj+oI9m$aLKN zb}>g<2n_o*V{UId6?-bNy3(ZGXi`cg}fM$PG$XYwtlRULYq zL!v4$h9Z;xRF%Hew5NPYZhBPUxFP7c;B)0?zBnlROT>ggxgCiG#lpdsa}zOD-*G&_=2()6Ph7>*yc0@5c}>P0yGA+BMjphm#%%388JHC|Hw>*MOJ% z6|g|%G6R&=`eyXt8@1QTarW8PLCvlD7p$VOC?0IOUmhUsGk9tSD@G6b8JF1^VP6Xd zV)QZe!dK9Hv_@~GWxwG^Y|4!^|M9#*K6p5q7zc6MsWV-A_UZ~QhnaU;htVl5O)-bc zGuMa4KHLuao8U2OAvW`!H4ZhwP2`E*QqQ1FaY!L4IHiaSa+WvW8`hB}3Q;P_dqi7U z*N3WkcYi451h#$lfO`I3zsQ#s$BG%tNl1wtWkx0sJ*kAKcm^Pw?_{Yh<}{c9hZ{9K zOSHt|pYO7-40$FqM{EyRN+tpeAq7ad;*_C6;`yeFI7hXQUzdmc)9S+~hzAxmS_n$F z(iTC3mgz61bDGIh8^wWJ;9FRSw^9hcsIOa+rx{JC{raSK)CN*mf?1?F4m_}4wrZP6 z-aou@RC$~6(ttW{oLg(CpMgSc2z58)qv$@nP&Q`4Uk5U={1oeT_B7af2Fc8*{V(a} zbR=r(SZ9q7mHl#^-3N?70pWzpAu{5n{Yw$KEObuk;$Mq3bq@5E>~{qm*7I{cQB)Q1 zW}6$mXU$ce$77AJcy8!p@s+^St2Eg;ac#HczG1QiglRtKaA__b5zAj*JF=gLkW|;- za%@l$!STFdh0vEe2XJ1$f*l}3r!sYDGpbjEOl&+UH$c*$VUSB z6tzCpMr+2yR^EpX0kme8wFAb+Z@^;CLdj2lU`%_i8Js$1cMGgIHjxBN?jTLe6Gmz^ z62D`MD1qQ`_O2lk7Hi8&QH(9-mUx~wXG->QrGNd(qBl~qYPvx zA2SD0x>OLQ+_|4-f_9xT`vFn1?k|`MDKROqM6+Q6xyiv%`f=00TZ{k>Gs<`Z9NlKv zu~Vw$rgm>;&!Q7xdAHByHW*T)tr|KVg{1m(F(uv3cxb1w;83R7&^z%fTuQ4<*58mU^oL~1){{&V%A}e)%^WBae z7!jI0-E{B{du_PPa>4)5@{oN4S4lc~TY{!4G;5dk) zPV#)?Dqx!A?2~a;8WXg33+MLbS};7X-Rm9$IlYIKG3dK-_}&RuX|}QsgP8?aDR5hd z8_s}D7OZ3gsC|lqtAiZABOOC8(@iP)rV?o7cMVIMAJ9m&TrlVaVPLNFKE~LTMb_#o z2aElLO+$qW<=(0HKbU({g}qhp7+=ioi_gX(Vy{6U9>+krOovjAI!j;MsWllP!yOwi zk_0uBAcmDGZDi6j1Qe0)OV+R!^jLnkYcq}za>j3f~D74T^ET57?DQ+3ZXJ%!k zNWPJi@WPULZq4AHy?m*vzsblw3^A}#%OaoM&x(H|gw=($p@AK{h+{#F^@UxHPe=Yj zT3T)mPF*87W+#E?m@;ljXT4$^$Xgdb3}$$PP2H~-iQxoIj0UKM0T!q-g_^RG;pAA` zJBkg*hFhlSJ3yeAPHzrha3k$$gq9KrChlY@D&NDd z;7W-Hnbk&|G<+T|IOor-yMQb5B}0WJF}ku4V&S}{-tTPKa|YKbuBd1)Q|wJ z0HEy3OA85t>k!l%e`q<%cb%1G_YJ$}nMszM7=qV1QB*;)=wg4^2w~U0bhq#2(C{MY zq!FM#_ymVq(RyUO4}!)}HCr*e>}%(@J?uS($G;cwI$i$(DS~U4IYb2@I}N=HH_Cqo z4?SLgWZpgY>6A<=v+vs?iYNG%{_wxAJ$VB)v7oMiDa{67DS#ug%KpQSS3YoMQ*b^x z6obPC#58Ao>ruC$9uJ?zHKgd$m8hIvQjmQV-*O!3%Sdq(ViOcARL(X2AL#rCjC&&>C&6};JX zu;HQK*5#vte!-h0MC3V)L;a_Yvdn$+61snob4X>{1SvO4+NRny#ioN|#?NF0zm=0p z_N1TCHkz@n$)1jAw7 zaJc#q2movSoTGD-+T1QbF@#ocr}< zoH6M}#0qaz*tdmkSDk+(@@08KNM8f6HnthHoYjY`sbgVl5vs~L!&smHdpLJ7-kifq z`FB2t!dGQqK`^K`20&0}Y#Hx$%9b3PKzWR?-h)E(7Q-kJM3$g_|DB_1wX+blj7^T8 zqCK=(pG!=h{V~p{0X#6lCcYpJ$w%(!f^ira0fD)F+k9x*_D|uVO%76ea@977x(Jv; zW41&|4W@jfe?CT-jyb*+bT(?ZcmG zmeXmLzH5xn;@+6G#^tHq<-sawmHes7ay$)AMCvPd-m3Z+$O!#b38QSan? zF1a&(nxY@(OR2IbGa^C;KjAA&H;oN5V$jw$1)z+w9uD|kj&>GpnMO?)7xIf@YX8Ka z4M|QFlv;3idYLVaDBYHw#ByEE*xBNDPjMWOP`AzbCfs)d|>P2hB5)QEk#VhpxCzL2nKs+WA#Eyit znHXO^41hq;5ODbsAnOk>DfPv)%l(wzk3Uq*Uhu-lIrnPm;gTkZHUM6#=}HZiXj{h# zdMcB(@;&xqt$7LFE+tqdF_z}FKQtLCYi3(g0dWsD5-~?PqS}UT%VR>m!#L0;aW;KHEc%Xb zi^chHTQ-GpH>xihXDi7$wZ_xV)4~H1quCp8!^ux$}Noe*M)!GER)u6Y%fyN6B4kJgPJ97&!4Fc~Nl<07w&ivP4a z@_ZTk&xh7sAVfM4SfXd`4a1hVSJ#?%p=>&w3&jb1H7@=z-)>6B{`qDFj6u+}TN&U<0iI;rQOtOE%f9iX@o5@(m|Opb*r<4HcK?5%r{ zt}cl(Oq8^_F19MP)f=v>9^yXUe^*KM$_cBr6V=uA<-RDezrf-HAW#O1l0#@mXRJDT zkf0D3$ayZ5UevA3CpJocRSa#U?H@EnGH7H5YuZ>R2rUheqDC9^iQ_UV}YP#Ut+oUG$BC2ed&w zXUM7gRaH~DiEmHV&V*b+x9ZYhNYlCw1=5?_U%#b=X3XGI+mmJMpE1BNxEKG-Y7p~> z-4I+=pR4NwBV}-YD3vx~l#DflF2fOn_;>;P?zGvBP*R4vEe1EDeC4Z00HejKVzZ|n zi=fhBnuQdLu4Ai})R`{@hlCGwIO*DWM~EXv{ft6$2Wk()&!8m#(ylhUMS9~`L+o-q^bBlE{h z8ITsCiaHb}tq7jA35~5lz6yp==bH`IH%vpn#t5)eY=G-l6J0@awb9n3yH0?2)BR22VLK|;UTcIn8#gae2VsHZ zunM;uSJDNiEnB%(wV02fv8Ju~KIQxD-KQ)th0O&qlye1B4qYXwAyrLPU@Cy~@}V!I zV|92(&9KGDHK8rkYU)_@mn|e~>ws`AgGSE5`CqF<-33DEJz>a|}t6s3BPaA36{WI^0iVw_2?o_>CV zdL%h1ey1b_35>w5bn;bijTw?F_{Giw6fTxLN#`&x`WMOF9&kyk8V=S`>^u z>Td20Ugs6w-lB?P+;T|rbd$Sbc>cuc)8Mj)VJd>uR{18F#m^UHww@LUBxwmI%7yrz z#|EAD?T-_E+=?Fq04Ddm4(3KY5DrH%VllXaLJIwbVQX>%~Ki)jqLhn`0Ig zy}e1T!;pDGwn2{lnI5iwaJ?1J5+1j!8XHfoDGps!2TkWgQQ_W;$TnjpFno4)SO$~w zC6*a;#&LxQoKY!N?Xr-D$g~9~g)J;kCoNS8PDG8ru+ep8nCreMc2P!#e>mcMKx_Ot zrb#ef4kb1KhS@b-=SCLHUD#Xm3_2$!Y|_rki$Z5pwH?nc;)@2J8kg8T0mTVg-khye3(=4 z$f3l8>EDbw|1r6@17d+*zgq;kw?;e}lWXLrq+P#G9_LS@LtrYD`724Y{~j5^DFxmy zkVzzFpDn`^XRN1^$1IpPx7do-309;KgYH4`ZE^J0<~g9j zt}fA-5f8eu6s+a$I$)u}>&|4k;5JAfKxRMCPnI|2E)qYF-APW{KNt@iWLC>8^4gLLPo)X_plt`Y!duC{bJlT>OyyD-OZUt#PC%C5i z%^2kTX`jYnP$SrDU?*PpYM_z>y5o?)R8+4p( z-}=K(kjFA}?rLM>$3;J)6sp;g@WWY#!$5^Cv0Yx7N{U&f^XxmNAeE`=u@_5IRy^PY zzogvLo@ip#*g95hap!np9i(@BBc1?IFpn_uTCxclW(O{I0*YvUIu)dJk51i~()=`T>PhJxcT zCj01Th?|JXzHVHEzm3U9%kq)*R1zu-dAc77ql<74!g&4m*B4&itT3!;rPs7lXwa7V z&{VDoMzu>FBs`sXG) zFNtoIZAVgv+F+P)^rPK^BzaNMI`D#h0pk!s*5nk_`Yer-6eKIqE?8d`EAbnG%NrCL zNZR#*PjJWM5`lyNpXFVgum0EPsYfd zt%u)OHy$#d6uN#JauoOMu_`g6F_`du;epk})$GIV-tz;zX~AVg&q6f8{B|>MHY*3NgB>)=MX?L-~Yg4?q^0aUdS~ z+V&}3Xi}ZzCo{~!URj`2JC@$`IJ5n{@8uN$4yKK}P1z%T7p)hjm!e8?n2uGp{ac9e zFqWE$$BLr&`4Yh`hscVq(pkjAbIL*n`qs$b=YeS{6-v3aA5cWiXE*)b4)Gkv4#(Y& znzQcZ$0$(Qfjy3_0$t;4fV!|Tw;HTb0P(o4Wa;!p~ zFfh#)lHHyDlLwu#h0}$GOGVm;Ea^9E*C|}4Z?6HHwen$H-BQxe_ zC^Gs>(-p{^3WAz&c%?61hh%B~x3#~Ro=*nMCB@G$Y_ zX|{@-_#*7=sJ#hdxr@kZ&EU!5v)hdNWvq^kO7$Xrq+|Irjo(~}gVED$wOPuos4{}{ z+6y(v5T6PNrL!LvD>_^DI%Hgbz7aY=mpMRnEU%Uu68CIkl)^rkYQ*OqL-#$*Qaas$ zH#?56D@G2A;;xy}QLT#Rs|X}|Wcj#0V1WsBT-F}O6z5Vi#S}!dh;Gz36P$=NTF5J3 z`Ct_+VLEz%)Io$lifGy-QkR|$Xz2j!!-#IpV0FW5nvSV;IKoubPbB$(+y`{WY85m~ zY=H(sC6DUmp;)8`MilxRRQdbYmU@1?T}KL8F&l+yWcY3F6}p9<1HeDD*D<1>(F6{f zDd>y5ggWpI@-``*D{|BbhJr%{Bq|_Dkp#N7cDLtnHZeFHvJme5)>$yw-Eodcc++~M zohAGHp#2@pnN(?MWDwq~LjJkx7yK2>6mkjY)8u35)+`Y+WL$QqDcE!eTLA!Oh^~$Z zELs;SH`KT=g08%;6L~{lkx_wmL=q^{*cwBI@N~JD!c`eYHv}GW`0%w~kQkko{yM*U zcuq-bZ^CCGIoc7$C@l?o{4FMGw%o@j@$mg){gu1K`9|*(If-QfkPTp}5j>~TbW*Fe zpS^igFK7U_f232ME?3X6xod(X=sOS&y2PU~MvEE3V4`M;`m2Qh z#rUt4tRlW{EeUO;wcECv9F0%zQ`%yXLGSOEyU;?Ad%gAygMjdd55}g*Zko|yNU8xZ zAfeiz)7AT0@^lsvu-PE{8qd}MZN(dBKmbr_6PxOVB;2q%k*s0wo(AnJA0VE2Z5M(J zh2Fw(GB;mAlMq=?Z0QF3S|Q}=#NSeiXxpZ#;-gzhFpDPnSUoTSMo;jteyt5VzHO6M zL{M_1PUq7<)0l^^j0iVF>xqiZ9Ia6Ohv?(~p5MeNYgP&*zP)}9%9#C6>~3L5=Q?os2eWCe(j zSCAj@mfe8VUOno$wa_j7KEhpWHYfU>ZUy5n?c$e_Zj$JAMO`XTs|lQO5kDax=QgfG5i(ye%_;R`mT# z8kW4#+-7BOa47VjcY2sv@R;eoi|1`<%<_!R_Oksvl}bFV_%_-FBH1R?(Ltht$3OAF zv#4TI*A6y`K7J}-)EN<&$Dx_LsQScgp^tXPaup^8)>ZWGxzP3LO?QqfrCCMwy`B& z3R%hh!y@iPSfz@u@80Cy+ohW(-oGk1Z{NDrF^*@QFsy^=Q%kxHuMWM5LNjt&w}TwU^#Swvk8c3 zKIFhirv{*<*S{YEn3#Gt4h*MukixfO4;8$jzC#24FpQ=}CQregX?Xgtti<_yMP!*q z^nQm0}>6cuwju= zu*ZY>2j?+TT@_8~!V{HG3+*cM&$Y17YTbw>u+`kq5vG@_@=VR+FGGfdd^}^kw97j4;2)n8J?!kMv`HUI+|6mu1+R+v^%fhQq3_@$ zZ`N_UMbrJwM$MmiGs-~V&Uh(~nOCx+6#M#3UHG$@I6Ii#h z!4|(`7?x_D9tVZzkaY2eU5)umtK@I#h0_a8*F@9B%Ae!?ibuGSy}WIdkc@*G{#YZl z_1MV@V#VgF1q)ivq1Zbaj&l90O>qTrkF2UJ7)afZjn72~1p4kujBP%-^9sYpa}gl) z7V|+8nRldD7I;g_}-)RUN zG|0a@azei&pphm;6e<7}Juv$1g-kN{UfT22hg4;kC58;O+`wBeHEgLeNU$eqk4*XU zRl4Dh(E3G7G?{OiYF$ODsEx}r;rGFfb?hMrU1$5{c_68$YhH4yaO)p4;Wyazef7+M zP$4e&e;we;@*(H!f->iK91~FRiBhB}9zNq)!4I+4zyj2{|unZ&jj0d*A z3k6M6TRS!u4ioVn?t-3~w0f%GCqXPWc`d9R&aiB|k&q0MXC&VvB4dqY9w?74UM~`kM1YX<~&krXm-WA`tv=LDfChfo(3#u8*Z(pF5g;=Ou@1w&3f8W9nQZ5lZ4k zSQx>m2CxQy70Z`$rM9$%f#eC_3L)p{#;JBp4ViB9^S^3Eh{r6(hkjWE1D9KdF z`-O1auIK#(Ez7>#M`d??1z-AhnvwOrjdE~kBqdu=UQhCq%};57sXVrV17vTsz^&C{wPC`O)0%vcwQy zH?0QFTz`w})bHVdKae*mxzg4v z#AaPalYwmEK&G7W5KaMQ?NiO&Yw zfXV%1vk-_)fN&OnAbW=*zL8R4PKePBo4>-Nm)z)DV(5mOL-$Tt2>+Pa+@+9l-aYPE zAV6#=Cc&|XUl+2lJ+*Br5OGH{%&`x5FI4HB*~h;}eXgWa13R4u{?f>5E(+&nFa=z05JOsPoQ#|0 z?e)gfQm)C){KKWzFz>0rPa=Hm?d@#Am4omP8Qu@xl#lEZzB4o}g}53M4UrOXg?`|y zLa1Rt8QDI0l!c`9*VaDhFirpN`Dt?Oo&|uN3|YFYkkPq$9$2L8Umj{u9Vb-2kEhQ$ zB#taAqfQImb92FQ7RFSdL==LeH}O-8P8$k#fu1}0`6NQXraT^J&ooPT7?ioG&C=|< zfk-&3vUwSUI4wNj^0)p}@A`;<`=@*v&&8J9O-FJ<0d{eBFbY-Dq8;}PO_-QQQ^u+) zI=DCKY@3bqTEiXr>6s|M$b+qzB^GQ`waIF5j+oqt_LX$pK>SKf64wk#CR}$IAB5~t z=1Q;qw8N%8ISr08e?v1L9<}FFU@L?BIn@-NVcG)cM&S1D&C#r!g?#{GMCY8jW4HCS zOr=PxxaZwo_0n_3p4#vFjC6li(d@j32x}WSM#A%W;m(&tY0G9}9^)ltUK3<}X(rw= zS(DUQ4t(GEhY~-xSkPXsu}#CE-h}sP!=RCxg&?8On`k_S%(sXQuw_jjJs!avI+InX z3g_TB>gcY-eV9J+H?4b=yk~~f5H9XED$WOvbFBP##m#Uu$qh$>ClF* zLcEICuJ2pSHth=4=oT!%vB_Iw*>&xrzAsfI zZpV;kB4*I>Wux*lJTA=qZ9YarDq%NB+d4(Vj4Nl=WrbkO=ZE}0-pkg0C$CN;X=wBE z84G|5To*&Hn&PHyi-~+5A6~~!xfMtIY{D2ZMPJ>J)l8!oAEBM(6jl^kBRQ)eR690M zFF|r+w{E-o!z0!edz|ES;;}&QpbCbumP7~jT%_f%X1_mJ)|x(k^biFkM3vRD5ko^I znOEP)?wNEp@de#;K4C1eJSq^ZeKWvF()BrarxQ;V&qA-#Bg=?Fzt5rMGPcQNs`Ch< z$fyU5?ms!`Z<$FA;W9cO=|7r)56ELLfE;ZJVLc6XS7H>NDC+)+n0^)p?Fl)V;Nrl^ z)y9fYR@k8YMuUzUPe)*akx?f~ntF#UPp$su%5ng`aX}fX2F#7$IH>BrV@yj2TJ6Zr z!8BRc*1ZF~s-Cp$rWJ&W-olaIs^B&eY2WX#&y_T*Bko175j{qC3y9w`q4Wk_fn32O zi8iER4fV6m!`iWr=p89iuX!P%9dvmG>LB<2(u^V3utkU+j>(w_Y}eW?bp&-4n3syC zp-Wp;T|3KW(TI#M~;(XIfMALgFWW$Hf!3(l)ExoYM?@&!A2x zhHHYa3G;wPc%$BO40?mizjK>X)}8*nr~-hfV<@7EaJfYt$yAzpY*tSI{ku3C-&5GS zxF(v6F6ZhaH>1u{Eifp`R)K9z1rfxJniPF8quSn0{r+NxpeuP@wK^3l?L_IuziPoX zaPu4&05n*1rw1pxa3ZYhkjdE?$ zMp10<{--olOvqQPoiU!%S-$0h0&Pefa)I&x?M{MNyb!M&FfjmE0IH@ofoR^{9E|s> zRZ=;|S#gtsCa+tRmHw^xSW?8xSL{fEHVEnyT>^>i{-Ae%{*U4arxi_-ak z8aj5!;#kMtO)KNu(P=@$FbyFRuQR2(cvGo#x>WKwq;5PDJzMV^AR1FKr0mye_99*> z6&1CAHDpgW%Cr5W>i-6Wil{9=-$>+Y5TWVFGmr|KkA+yRapFZrBNXil93(ObJw`2* zdOm#$@xIB`K zL0G}WW*hx$6nw!?s|cw!zdTF|FF1J5SWDySDjyr6Kb}$%^tAFymv=VgAv<|6!j6?7 zeDgr)7KNw|anEPm#rz=){1{h2h({LH2)CZ(&mY27*&j;XR@J2ym9zcbMZG#Rw~f=$##tA(?Q8l!`IVIp#%`%)X| zSlv)xu>V@lAyc)D9doEeD42vA85V9z2;!AbGM2sw@S$DEZ};wjU0#Dd)O8LU|4U&*Aq*mLOFe> z!zY)KxQJl=+P%BR&p8d!YeoTd8gdZCn7w**jG>P9y=CW-On91s2+HM^d?9&Q$tkx; z&wb3h-d}ti2}x1l@C0-yZ|p?PCc;`f_zorN&!#f2h{fv$9eM=CYJvAO)U;6L$I^Rp zT=E>NVXzhX9I>rSE+9Fb_Ux@q8~zd4V+8OCB_mMhgf9bLs9n57F7-SnNz`S&dER%S0Pnq z*cVZa6HNgJPP|3itdR@0ggCo2FCLQUD$-9%^x~l_iH;~au(E)`v2+2Yorm0$7G|q( zYk_nH=gF&^enH%TobTO%MS?~tQK=1y4COXQKhr5z3qf0Nu%5?2BWW}wPR@ibq^WUQ z1T_Jo`L=I+(iOD7?{CdBog?b&CHM+#s)*aJoR)9S*_wXbQ(Cd$QT_RsIF5K-j`*=0 z_3n_=;i!A;8a&Hb%;1q(CNZtUpNwuWpRAxjP;LP2UoLM)`$JHj$|HK}zUT&=p<}z+ z4gpw((watRX+J5F+t`kZjXBtqC?avky9VURhiamuF7d{3hEtf{*VgzgX1U+oiz*!J1xA{JL93ZLybMd2w zA+VhSvL==oP+GUn0@N&0QYEUj{4R&cS}<7U}|)eZKo;)x>a77Hl;q2?IP2$ zK@lp2C7*REG(n#(3Bzv6zP)QDVrGmZI(iY!%S+-16BrlOS#N)!6*BZBnnG&K{z}?y769$&v(yUqs z0BM7)Y>QBC^-Md5v(?Bbiaa(DIzx zj8uf@`Xan9P=cXy_1~$zz;d%#VYqRdUkBZSD_J`8;4T9rl{F_Yb~0K}#385Qf1f~> z_kuoddrGs=HNbm8{XQ(%u zz{!T>0n*LZCYO@`Lce-PAcvAFDYM)JpvRK1clKPt-3110fMkR^2(XvAJ#gP>O3;13 z1w~F1oQ!|Zj5$5#q_6n3L4Q%^rp&>6twNKFs@ZCA9stvQ@`x>QN>U=S*T( zX3AR5+5z!;6=$NR5%RqK#0iF+#6a`i+GR>$=~AEMm(?nMlaS}=oADQJG6*GZgxtWp z3wi)JKh_o=u|Hq~&(-llbl?E^)~n;-X3+;$M@K-$w-$eZf<1^yr{m#Rh!E~Ef(sH^ zSk4}bW9#RD8>Dlp##&Nx%d8_rggxrbr#O7B_y@qyUXlTHJzRRQZL@9TUn-nlzD7{# zc6!yh)$$;^j^{G0R8ph4agWLo?^vdo|2{WfFlV+tf&iiA|I#uS;FR}TC*B`E9G z-^K1ZJIt^{TvyCC%Xla8YOW>31}%lKaGM(n3O^84ysHZcdMG+&AuVLc>P_LgY^Wpv*Y}) z0+E6oRv~(XFa_GbQt>S7(u}#6Vd=!=;BRuF_-qF?9X%egEn5f%Y!tdGCfKQhl^N9i$#Cqnvr0!rqV?im+g7K1JiBfR_}E>buT)_9r=Ah7{2|ZZCRw{= z1>^D#;#bjGuUBRc0-C%&PK1H?j(tY6D1iGcV#~? zid}MjQhSf{=E=6+Rr_%Iu~)WR{Qx=#*bnsw`T!-Myr()Y_YHJ)nO%vG_G&7wTwov( zFhWR&0vK|=0n>Zre33XpJ@!PEc)??4ra0JgGS>x7hQ*a)`uQX&;xgJVY(H6vfkd^0 zv59dFGZgpXy)35hd1D&O<&+$EH8O)7WVj|sFI4Ex$orJ206qq@64`(mUij4#$+-QEyL21Ri!*OcMrAN|Bg^s z&3@4~#Qs3c?cpe@6-2umSOlDQ4ce^gG~TvA!rt+qE9e&C*;S51dBYAMiB{^5P7M33n)iQ@j` z3C0|M<&rH2PG>s?4HiQV?YWq#a7M~%Fl%#4=f{`YPxAZl?30ZbKFehfq=iD?76djW z7UF8f(7U?Hu*1*A&lxKNb5-8TcLDI#JIAFQskeQM|1qvScHUMbgOV2_HQaS>_M%l zv!|F02T|K&d%zE(bM!S#^m8FB?aH0Znw=C@iuB;dnt^!nnC-O_q_5r&HvO;wqx85X z2Gb%kTWZ(z@wj$>SP4;YowfZJBaPrri~+| z*divhKa_+LF4YGKP^UDzKo+@##YN8WPDA+XIIDKsi*KIEJ6rlc6x~#n-8&EGf4MxivOf z(MbQ^+Vkm5fWt6+uu(@w>}sz`p7USUiM#JZbTkhYcA=d9+88n-p+a5vAF=RqkdLdkxo}eq>(F%lCM#lrq57 zn-{EE1Fj;%e6P9@I}+%4x`g7Url6tDBtHd`gOL zu}Qaqz&)Vs`Jh3b+N)Gr7bmAX0T7K{>X6Y4%Bhz9mB3Q!g+Mu6yq_CcEMHBnE9BI) zZ<_`1{*X0H`jjFP^@<@7YSB?ws2Zqvn&*U$sd)wR1hwUtNx(u9{^a2y$~z}|=be)g zl<%>~{CY^xk^-X+;{K6KDeT)q6ps#TyZ%ag9~i@lXmsxY7h?SJaKrz*^~#*bX|~ic zI}J4Ur>iQw=nCN_r?iT&uuuRrt^rr@L}|tF92PK3x>1_p`-7jNS}t`RwrUln7F)L%p6%akVGDcWKEBm15l!C5L>Ytf`-BbV;Dzjk)_Cr>9WZ_aXl_kB0L{H+ zTWXr(lR7r%Gi-Ix2w^%~nM)I|FI@O1*CTi{9rx|V`n0$?1W>BEnRVc_;smiSawbW9 zLzQxvNiDdkM&!WcvGoR^SC=u%&{m9q*L@G(^KzH?QIAc1R-8Wu?4z=9Vms4Hm-S?>ukkH={&!i} z1am*IO8>JxDhhN0hl+=X3o;i5S^+;MZ2=i7qs}l?!Wd8$+dZr6_l~!zW0UrVIs`bM z+GyjNG@LYKq5cOCN2R)Ag~?1W)$NWj4Py#q{EmJC8Sg)`f6{rleLv)X@K!Zh-*}7W`;jIu6 zwbn+Z=*70+C}s}T9U-{#&s3c*DPR{UM_pBdIOEnNH~2V66QRxBBH($(@@Q8oZ54>_ zKrMbA9MXFte?#<7&@`cYNK54u#y$VycE^4fqi>D4Hue7~BT*f5zm65UNusWdb%=qJ z0!;t7T5ZMcHCABZGkFb^eo515TFY&Q0|C%aZ12sJNLP=eAX}ls`jF@I`)iI*dM@hM zZidP_yie<6ruS0~2&EndB0qRW_2%DzBpzf6TH3~o(`AX?F3~&*`_EOhth7yKiSDi8 zCYrxILDZBoH)J;-DgJ|iWLI)|071iyAkzf(B}49@!(NVBWB-_#XUglUa8^CWT}Sol zo&Zg=|7LlZ&I&OmUKwln`KXL4ID}L~p5!kz!hy>>C2_TMM6k%}r1*@j!4h@3!I!q+ znVwEN8Sq``0Tw5nll|&M&9h~)PvROL<;{H_GM2E|77q%Y2a!(?vR& z5ALsdm`Sk2)MEfpa2_fYwguMNrNcp+e8-}TFE9K6yeO(?d@t)}336$8S{AkU6QH{< zidS{}J0O-TS|d*!6TU{TZzt{Zzat|Te$jJ8n?_=vGkAy|LNXSlC3;w>50h+Lqa;Cr zz}vX%S@o$HE1a_Jc2_e_CgM?i$jw|NuM}b)P+I}B7S4h=3Sh-Cy96G={*=36X`rL` z?~Pl6J0^4Au{bxwz8^|pnS6AuXqnVInl#B&(FUo<9B)uFtd9;>Y?4#Eb3{2lCcgYA zWHfX*9Mvco!T%CVKH*EyJbY$|E&181!_OdrB>3Dd#WIyRDlUmyn4n*{I~%gJ`)OkQ zjo@`t`Rc6Ver&K$`yWl5Fm6JHXGgKl*vJ=~WmHuPx9*-~n>5C2thJzjYcF$d9mnFI z*`m8Tjbi8KFqyZPr|0JW7)?f&#tk-|ToT^DCrInM3PpQ_l>Jh1IK*Maiw%Lf#eI8_Rh1|hy% zzUvJ#34ei+B(Q=b8G5lv73KAJA1zD}G*f8y3MGKhWM z4_l6t+g<$2EX~rv1P@p`uM%AJ(iG-{c(ouVSteh6zG!~ZU*q9t6{$s@6R)b+L@gc1 zELR6@!;F+VnARbAho|g&BV3@QL*eaY>2@F z$xd~^FtExaEeLBf?B#AC9-?ABM>D2LjDU3F@x!wA>1>s&hw28lVn_>vVPAoc=SFDF zXDSE+OrH}#{$;~1mCL`oQmZzYYeE*mbQ$oCRh~mppC>DEth%HPBP3cFRpS|nQBaS! zgx&nkO($2kJt#iBZuK{!NG={jvY8b2QX^i=Dr=K$;HRQkRU19A z%Om*{(*B$KTSA|Cn5je&aLL{18t#=F7atvOa!*F@ zM|Pq^X@ry;7o0Niel4z~Q7S;hks^{%2)tX=uQeT}WKpO!F#eYCI48i~p>&Hz$GY6d zPv;QN=u=~$^g#bL>So<{i~0>r3mIH~-cp5|cWfoV!3l=4`aN{itL~2VWIM@hdpP)x zPCdV|OePIw?qT2Fa|xXvOzjM}zt_q4t{&b&7Jg8`9(hpY&Bt7R&E&~yQJOp#-dr(o z!IXr0QTyoFkpyf7ZZKTUWKQ;TRNbm%F2d`z#?HWmh z=w_oS8o%-(9OXbd0`7VRr94rZ`7Q^myd{4Aqt7ejK;hD8g`b`F)9aK)kg@u&2Q!x% z81yjXwswuyR9XRl8K~5NB({?T#0y!~VKD=EZ!Wb}IjG4q)?=0c<4UPYUjiOHcuj9~(K^@qyYIQmQ5D_raz1dtZI9 z`@iO8(Q$_7iD8pd;~7G%D~YW9qpPU8@YHXs-{r!=;=$TVT1i;gKrvp|Y=M!p8R|bK z&T=dR2h#&+%gAU6dCt{9fADze+`We0rW|#THcxz1C7vq#W&MTbv78sV9&a;g&O$^` z5+@v8v1_0axm-ryx6OcAF{1?7xcBQj`jW&uX#~YnBJQquHKKGR&6wnk6=;Ln&&TyK z6Mh%hc(c3L(r)Cz^Ewk@-{^Y|(|yi1Sj#l{lo?M5gM!zdLex`M(?f#gS#R+|r7fax z1Z6L^!j?Vq7#kwCmo*CwF3GCJY{aV45~S*j%*jFgFj=T>K#@yAama{MTXF+MZA!} zJsm7m;Ag>Es_&M`f=&GA4(K)a<9XXPe3O$Gd;QzR_$8h}wgh`JA0B$0O{n~hDVuMf zmufcYjq%^b$K5N)1dUjF8~vRz_%u}jXn>XL*tJ!P-hs+njoOB&UQG)sB>@Uk=%JwM zHU6~!8)KE}*s&PamGy4veGHd<*9509(^2BkBi z-FjQ-&$#e)y`Pa7<^vYLnbM0u#m1(T>}^d>;-xIP>4uC6nDwv zg^!J5tnK<|4lGk>W>8UvF0iI&YNV>H6+!G=vL)`#^d4}=mAsz(ePF~QHY0?um# zk?R8|jaDk>rN(R^m=F6?&(WT~SF9Hc?{P&p2{;=V*x>jOlPh%`_ z6yvglQSnr{-ayK>lqRKwQR*^005?^n(Rlp-ha}ZMUpF= zMPY&BruB~Qb*K*lFA!s}FfHsdu`oqyyqQ?x!x}|Ds{T`7+^nqG!Xtk?I*a8eYm)fF zE}wZq*XM3VXcK0lAJk1Um}8y7y{m29qF2@u*Q#G<`4x@*A-WWo$Xt;Kp^EbH>C25*}B}DAmh6_UNu{kyi;Yzcd8Wc#*@G? zQ-BP%b}9akQTP_ldOKN#B7~PKzRYAFtF|E|tJ%Qv=v)Th!E|wbVfuJwU#qq5uc%Zz zCMgsD7USHI$p~1*MR&o-?7+6_LaOY7S+%L2d5-S~wnU;`_ALCPGR`KlirjOle&s<| zbS{sGAaKe6T=AU!MbG2hd~)~)Rq-BlitJ2l87~~gM;NAl$wQ9Na4U+j6TnkZc~JpXVPQ9viM469hNuG zpf{?$e(FN9eBeiCxDX3&ApHL9)nBe1Nc{M}!q`s;2bM)L>KdRxfHpwh)PQMZOvArg z)=sOqp2r?k6Cb%8;1W=2{o9%XkL+o6JcESdnxTMgrk+e;r4jk{bwoZ2Xu(gq&P}lg z48d_Qp<5^%i9F7pdFy<}$|ru{L8%bADI+oD@(HxPX1?sndN;B729R)6IQ{y8SzSTn zg`bP787CX#$CSY+{6f3DZ>r!sglvP`rbF$q^95X_0pu_fDtDv7mBsTJPc!bdM9?{3 zs5B_$N^OpzJ+R!geFr>TUAwOmMD$J&C2DlhOOyyRGJ_yW3egD>iB7a2jM0TCAxb0? zLJ%b(dKbO--g_iUw7X`cc;D~+zI*OD_xSzx+I!aC`+5HBSx;Si>^bisDJ_3vO;!Bs z8H4L3WGTVtYT|k>>_}h5{3swrkEd~O%Z~%!9t%^XhJ*42-srcHFrPL~TFzaPjV&Cp zhPoH_=dV!)bbYC+Y|;>+zE^v8IW>k{(>ncwjO}g>F79@Dkh6lE$MhAc&@zLN8;W;W zNMAimTGR?GY?ibobyE?(C$ZUy$)?5f;bX3;x=yHE*Pu_JZ$i_hh$vrX8pHizx z0a>m3yt$<^nq;}UXB$nbkDT&eWDjKr9I-cQp9vKENSx#GfEfP#`-orU_u%_NQEfg{ zn%^p=0y35_9j@KoTiB=hP#vo$2P!99q<7;y= zZrTDfeU`e0ZkTt{7THP?T1}r%&(d1sjmnZUh2ekit|;%nUQ{0=uJF0p4? zqfS7(YEJ$F^ie_P^%p}K6k$)Zs?C(%KaPRjqxx)V`op+=$}>dBFpHZeJ$k<|Y0IO5 zNpmX#Cquczy3@?`h%~Clp-#ghov1w6lA%)Zfji{gVnxygq8nF zO(`8Gv`qVP$ZIRL%%I|4hY#xO;%wI?Zl3BsdS>=^S*1yB@l477QoX-#c94$mdFgsn z+ZbZw0FMq8ktJy6?c@*^7t&F&ht`;Hk+Mp?q)v{uJ zS@W?FT5ipQo>wh$kIu7yx6OGGigfXh9~4cu?&iS#oQ=)YX*z5_uM+$M-?K3k6Rwld z5?mKKddn^3QjLtTeTwL~%cCRj9Y^D@m)@>i;yjXFeYr!cmV+nySdVM-A#OpVXUr3! z#OnieD~ZpihHXakFBpt*RFT1L-(^w?J`A`l=dw$u8+f)Y85&=nI2eB8Ea84uB%>~L z`4iIXTBP!!f09nlOSKfr_ZNNN)y|L$y!tBapU{sh)mjyM+HG6ltpeW1)aY%@{ZT>o zxXOG#f=@HOVvW<}*Ze{~+$RV=d%RG{Zsg%$4c_-n|2$b9QGdbDn$was4MkK0~;iSlj`DRU#KEtha`s7phxQ?rt zjb8SqF8LEK&99uXwzKoD^#KKkxd!qJ*o5wLkOC^f_Vt79yZI91PGuSLghJ}7?+0Pa zO`hK_u?843M@b^D-wCx)Rz6qpO776e;4BBW^^?ans%!$cim$YdUA}55a4kMF%=`>% zy>?y9c367OcTc-;#?kR1@VHcwSD=(XC#~gM4cnnwv#eiEaxQ7h^Ge-fty7oa5lbD7 zBTJ0V#w87-?mlm8Bi=ekKF*Ff@7o));nw7Lww`)Zo(3A6vl_p^h2ZLAvz2}AwrWGg zGgpPD0b>l3U#Zn?Gd$&lQz)7A;6*v|NfoAyhzH*#QqQaGO}wdPLK|-+mS#T~&mq-~ zFXdB!x1)AUCtdh~({EvA5*pK2UhI+Z6cS70C)GLAcUmhwadMLp{HrdL%BpM<#jQrf zxNaX@U+Bq~kcd&43k~B}+YUIM>bvvv(Kic2v1%XVW$QX6N*OI~Hy&)*7%o*ko_!He zJil1zRmz}0ekjX68%}#o$>==XYFZ%4h>+HL>=sTQu}GrO3cL z!-B>H2@In=vZjhuA0>~xYsL_`9;a9xX)}h;J=$@p+T3~G`!-z_YlZ4qV*hMhk_dFp zOpV_ZU*Rj$QR)#XhrSPkW48(;+$2gW#~2A%We@TBqU7n@ZzAf{~RALCnBg9M0AmVnC z_N#jVK_61(iS=~q5NoBD-VcLUo^CXTyS}{Qt?2+&K5NidFZbQ!lDm@|jwnV;bN>!OQ;xV!$4BuQOXRIV-PAdr23^4dc+3rLW28cF|am@$mxZzZd#ybY>#-*#(Fv?VIr@l_U9r`MLv z{R-@Ah6-J_6GN2CB(JuF6Ut(#CAXcXRR7toKa7*Ni0Y<;}s2O>S!8 z&^@W=>8{izbf5X*!_S}aapbqR)z_&IJdbIoZ0+VUnxQDtOk?UQlzmowT~?yJXl7o+ z()R(AZpm!Sl?U~md^h=+HWS(JRmw!LBf@lU+)tgjce9i>JMP=}GK!aDe%b5Q%eQ@Z z-k*7C)=w~7=qY}cPSRB0%u4liB)d+3>G;Zd^^X^)Z(Y9DdslsZett`JqL-8Q8d-fs z^kdR9lCspF&KXZ9O+HX|e_(>YADEuneRup2s|<^kr|MLl9#s^yVUxV~D!jzFca1sb z+e>XqzUW%!d!Hh!{GNR|w^+=lBqn;biS&z)jTijtJG%n;&fyfl7{(X3p3SKU`MeOv z{2tfML{3>TyUgNrtwklh}wo7BV3hljyWr@Uzp#bs1L)HDnl5JE6QpTJ)t;~Qd4lnE7!oyt8BVwL_j1c#M04w zZ+0{@?#SXGxtpl=ZM}wQcw=9l@*`v$KUPj;xzv2_#fy{-P#YQW=I}td5${0rXE-b1 zytm83v0A+H!-SV_P#`x6s9qb72SpGj5Q`9w_A_nrub05H=aO?I zjXxP&*i+F%W;G8Ft591v_dT7I+hV?sOGf&&XjzSc@ zFYo+#xt5c-Vd($nC`7BjwY6TV?74gv^SRf2frU)LqDFBd2Qw9Ka`vlO{I31r<&g+U z-J}`vzTg>3aa%GyGb3av#+H!}Q4oV4ZYmjQkk}s zk$s~S(~^fF#62UbuF!f5(TXikUPrS#uc>;^GsUo`ZtB0UShkl?3KgF|czi=-`f9yM z+sFQ|@fz7FN?y9kt469zqhy7_4hiFa#oOO`=^+)?KeCKm%#B57SwhNbYrl!#dySJP zWH!KBVJ{y&;lC$tk)Cg+ez;irI9;)9dvtki*7}s0_nrN&H$(II4HP+zM-h~!DzP@_ zwuK10*rB@8tSlF@K0RD2n$thMmPK^eSrI>+g|hk(7s_0szwF!yCI!CF}C z@`cchz8_gtHyJo^1{>C1FAd*(QN>?A#NH%MuEM$D$oC`K) zCG0#gc*Q+MO))-rYuxOxNSU}gdft@m1DKZL>o-@`50Z2~<@alH4fJ*9e;hj1a~rl~n!777FSpj_37wA2Trt9L*lh|-8UDs(<@Iq;1ZL*FCo-h zB#UKytV1~SM3nD)5YnoANG0*}m_5TV_F{?=_s;FRb2}2U%x-pT_bjE-Pj_EgrHAaT za)^0b$|z5@=3B7|)KF>3C>#5T`|!j2>0XGy8EUKhSZnoVsg?9%%(7cEi*6S?HwxLz!-a#c8f@hVo6bcXQx={I{T!@{YT zbxdqOH9TOqh%$=f!7kF)-E5p!?NMa=lrOe>qb~gM`nn10kQeW&_p?}t!EQIjjh@-SGCM^nERkE)m0nV}WIM@Eg;)%2y^psZ-k)UW z7`2enG!-!h_QmoDTvuU)Sz@+W5iSD9XvJ2#x8jrl?}IRiY+cX&^;-&| zdIMQrUxqszFGTS-%d zrk1+emi?y|<0_aAxLTI0KMF=5bo?-LpOOcM$>U7;u6*JODn`9+u7|oX1{5as81atv8qMTqJu{Qsf z<2x?yhnLqZ_9ctSxz;c;_9%_%s2#b^!kT(wFGGE0%~ml8A3nlh?thnmL~TZJ-S(mPn$v4tKHyD%$<+B_;K!gdMg=(=9}3g7t-o6bL~v(i&mdstJ#r! zVQg0AtsL->KX*1naQfMsoQOwyY4hnt&Y9#k+>4q-G8WU&cLg_2%c0v}N&f5S#qo4;yiQ6*| zrGh&n9luB`V6=(K#B`A*c&sR&`Pe3H>Na zFXRg$tY)_CtEY)HCQ70>WJUVs&j^t1j6V8WaFnI~QI6vbHsRY*#c#<*L~FKPlDV8T zwEVkVrTu4$MrY3oDqO1=mPpDt-*nJvR=nyHy%YN7^eWX2N}X`bGbv$C2@}MDYsKH! zh=UlKOPVUycO@E%TNcjoS5T@3754|=%*1X9#JGIj(lK5|Fsw2je!}izz2&AhKvg*D$XJZI7#Q+ddN!))^Se&Z*_Lt$ON z>J&^S=R-|DYK&aj6dP^F7j`MDYSsl0pA7Z9xnjn#ClhuqoZ;CDw|nwb#1jv-k1>VQ z%L8_f*$egV7RiRgN)XO~QZ9+oLK=;2M5u$qi}BEJ;O4TqQaiae37eQ8KDQlcyYokEDYr zi;N;Vb5>LN)m8?;tD!rI0#kX1soqGEy`qqi3HJ{mvAOr*^@XE54B-#BTE)np6HRcv z_pR%?D1e>%$=*?qKFwk)_e}tK_R+Vq9hVM59r6g{-wyjykKMmbyDs@yLDKQz^A8rE z#F|;Euh*>dwE7|CaCI;P?>9(<_}VErjc6hCUo)uVa65#mkxoc93aCfi$get^@I375 zT$jO=Ef^kN5b|162CEbte6g6hCI5*WfR56}4S1t9m9BSJ5ISQA? zfh*oq)WqQB0cB{alD(o%{+6!p?#fP<&K3U0E&i#qleTU=>r!KH$iABEDHUJY8JQfB zhZ+!*afsW*IDl;nCE{zla+Jfm!WQ2?Y4+i; zR?tQE7S&h@Rw-v;Q5{rAn(!;1W~EQf)xBeKlb%p{mucqmEgPL{&HlE^>(4~#8h6`N z2cAL+7qp{1B2`#~qteECmMV!Ve{lN!pxYFv>Te5l(2T+Ko9&)de*M9MO4cpNA^vmpPS0Xbefl~Cl(zXr_Mjh=eQL6_W%Zqb zLRl+PBgzt!TMannfp|G$Pjfr(IEaktYlr80oSk?&zGW}&C0ZC7lwx7q9q`h|E z^$qXGVV8zDDJ<}dgY)9D<#(v;C(m0OWs@-KPd_33O!+jP+Lz5GC24WJ!aAB>;yHbF zM2Ww9f$kcF;LQ!f`M_U}k%sX{+tjoC?TJlK96T(}~RZG+8QsIr|k z?W6Xw(5Z)Iz)e7rSJJd$C^k@J#aPQ^uVepajivHwUorzBo~cIN>foFFH{}cLb6&j>KT_y;=UB#K*M8B-|KsWb-CF|X0;&=chi>XLf3if4H=yU6HC*~o>`7t7`Mt` zLDHNhv(MAHdxr1lcAwIGn^P0wdft^o)%bm;m!S35y&3=5n6ErC2p=qLr`Eogbo&uu z*W=%%4W~OgmutX(EUnsU6DBv+=FrpkyYmsN+UcLXlzQH zW+$?832BC`EWF0az4uM!q{Us^TqKDK60wNIllPvA*Nh=w zJ;O5&=-tZ>?GpUVBatp=>Tp}Hyp7Yzkqhc;cy6b*ljpq- zy>X|KCp3M|%Cc$>2KHZW6P`W7GBkXHC|~Tl>;3X$lB~f@gKG&5FJ=~FL!86emV?+k z*FPd@F55kkVDKJG3704TXpwM)5$o8%%yIq{_N_}ztHX9zWfHH3nljN+$?%oj61iwA z-tV*P#{HErfs3QC?Q=F#zwWNn4Ca_4em2+HekVQgL0|GBj9B+O_uiO6^2A)vx6qHU zKXp*Jb5&j7q6*6yaZB0Ac5GI^;l0~lP!fYO;m@%8L`RBbnxaxihunw#8ja3=mt}jw zubH~kwb}*i_EX-$NI+VbxMak=Ys8hL%ISaiSfzy!m~%u12&`(rzuvze+bMp$}q4j#Y=G$M+TXdKs@ZSU1${3!GOv zl%&F?KfgPBF&Y_tB01$^srvKkmO>=c)v=^ zZR^_$o=??liDMSxF=D(}5=33Ai7N9#PoxrxS2~r&S=>gi&xep162338!O5HUPvC9e z%O2%JXmo_cZ({qqB3Yg&7mJ@Y1n(og$1N6$2rbI(=2cm^y}od5YmDj*a)H-M<5V{c zOCllrwYlF~!K)dJIns|rVQ=#nbr`Z=Ijnl(rRRNOR)$@jBx@r2)}aF9w?!O8eGU`U z%D%ERc)uEp|3-_lzwgUW;cBvX@5GfQ^3Pr$nOpI>kbGA@<+U2;F6GD_%O~mz-c|31 z+c+=pvXT-g9JwpMgGzk4cw=fBJdrPo!~bV$)utNfS)Y;O)`X8H~2=FAlho zkPlSltW0OMBQG<}oA_kf1)YfuHJibM=5@#=_%0Vd->&&eACjipUR`pQ_}W0ht$ZTs ziqSilT(Y!jE+*hF_6cxm;Z0=VsYBlz{)q6oD?WixRq9cd*(#z)aYuZ#!Cy!X^pjKl zFm=0!CcLhWMrkuIEByRZotHJnzU)!#l* z8-!DbYqmjzt9C$GrHX3slG)}&hzzyDCa#4lZdu#tF3u41tt-r&4Q?KSot-H)d=S`@tN zrB1e{k8@qxD&-kXONBLu247CmH_s0=ivO9bl##(Thg(HHnz~=*g36FY1MizdbZDj_be_kRH z%d1}PW_-7;kb5ub@HN0YV0`W6)L?%+%7eQrynFb8&m|l6B`>ce|8m zDTn?f&b}AkNimKY8V+F>+h?>s7Ydh32lC`>JD+P`HX;2&J{Yc2MpdonZZ#>=<3IR0 z{Q>79aqJOO@SN71KX$lZ+r~R%cZtR=N@g^yf6 zs#tc3eYhF_^v#MOIRU#zT_phu<>{}eDXo%Q{TKq*F1r#w3A-JHEfK^dq+r2pv|qs= zJm(|YcLOZML7&Or(Z@*o^5GM&(dKf{^`oR}u_U*(GSQC;Z9{GKS7G{OJS0!B~N#U4!a(fF~d?(QP-9<>LilDZWrxYTAhevPK#{I_kd5e_J=R|bV z19eknYl-}X-Tn_&FG32u(`p-Gey40B&09j{gg;f1`h-nkV&Hk*-6zi~4dFb!OsL0b z(9754RHmTN(kZnWIe)7y+ND$Sff&*Gd(o9O}mwogY{a& z#*gn@XV$}`eFC|fGi(q2B7dxyX(YItg#`0-5?r%6cst*`wp84QH<%j}o0Gr7(H(7^ z=zPTG{w__f{;oRVDUML2cDvH@ga!uk-YemRNgI`Q^NUZJKGb8q(i+fq#OG4ie3d0y zwm77Az)c=lXtEco5k}ZDU%ys*x1pdQNj+2HgCUdgcUGReMamVku2xKLQ@pM(9q#aG zV>fGdHg^$J<@cBwx)9c7s$Vu*4B-~D7*(d6yu!jKV|VWDwr;&;L#$WALb4OJDe~Ty zqFRg#Uc|5;*PWYzja6;oy~zRB;-xPRemGnWkfDl=b}{^PFIQ7#B$6e!l1+5BVr?`^ zOk&#hwSjVM2)!5?jl63!)!DBLS-a^=@vCblMxFLHn9j5LN*P~pR~L2hc*t$SW7etW zh94I-lI-)5Cm=QIUi6z?&7=w^De37g8gw;Cz2R)L&a!TrvRp6zr5}F`H(g-Og2E}j zZq?_e(@WS&L2(JG*eE|o+B*eY-&S$FFATm5L0nH^qO)e+t(9I7eX)|_d^g!#W(5QP zOJnJyN?1$&_Wmg!)5hCgr-jm=ee~qL1>FN*Y33_piKmGSLZ;RQ2hM#N*32nk20v(1 zvPSyO1S@mDEiNdmWB*+Nug_s>yFGm>H$a2`5OO7{=X$BS=Z%Rd?HN-bB%o7-q^T47e)D;`!_!j zYT5MS%5hgZ))1}CxRdhC3(?6WHN&ir8g;p3>kK}mMAp%=d~7Q5e@Lmcd}b|;``lbS z?LNO?6l@)Lp_zE%Z7ZcKY5NXcXrYK)YEdFt=USCx|3X9KyM5bWI&6vuDex_NeKQF` zCE1;lbs2q?hdf0$A=y%O-FXvQT2FcJdyL{GQa#4ctySC1el9_|W;Uc%5~_N6G;YMR zxr)zF{;Tgw+I^q2(~6ZJ6BO+^ZO^?A@1ZRm&hwsV;q^TA=4JM&g1Eenm)I{~oJ-io~HOj?n1DPM5``&Z#I0p z)9#gQcZs!Mxm@avG~ay|rQ7En45U>|s>egew)9d|WiEX06XEZyOUS&@uJO%Z<(251 zPB2~zx1qa1V>Jp~h)UN^Ppt^6Vwx=S z+eT=;tydi7lPkKor1-o%^DCDaZ0~Z>(2n0BQQ_ZZ7dwLxQr5ZUeRJ_p7h~&^ognxP zxknB!BqYU0w3h~F#;d9TsoHHp)D=r;;W4EA>UR9QnPB|_{ zIz#tsfcr=T6IY-ksWt^~XzqLtPr~--LzAY52qH+yw?R2KYMr8PKDlp%LVkQxS?Atj za8Bo}l}^dd`S+c(nlZFE^@_jn#!$NIwYo6{*-0!jF`4nuQ}d!b$%ALZ$dGb3&bInp zkzVF1RyOCg{n9i~GTlDp-*K5DSoCd^(oWyZ1zNVa=_1Cn@wWq>^L4{|8&>&G8D4YG zFEgZe$M1&2H`j0{2l$2eJtvCvu@qK4Fq*_3SNOcV?${_-MXnVX?9SbbgRA#|N^&H0 zJM@W5vZg@|_PCIB^s9^RM?H>MDsmQ{gi^yj4YBM3o*y_P6&&AC!bA$ik->pv$X-wL z_F?u*-j{-j4OCMDJ`T6fh@8ic%$ClQe<8IsE)qRzqP@#yVjWq|l~S}}I{2uC0V+D` zUcxUgp7aC_QRCu^#zJL^MvaDHniLBx*j z!-_`287YQxdG`UUXhACa8#fNTt_Iq*Q2MUjMTAR41skQ`x;CNLp*Y~obJ=V*!(zLz z+=nHfRN;=){8MqqFGCgckCt-q)9jzBlDaN%>iGeOMF{p8!^Z@oG)C6OfedC^_+iBxrxQ&rsumH zIqFB@Nh#=sm(%47gGd$V;VSL8ENU&gVO2RXM|jXQL`_kuZ2H-VS5e(w6Zd_6R#v}| z$~XLi|C(Qoqg1!`Y3iWbWCF;&cultuOK$AQjVdB`ujjjb{FZx)g5;$vKJVrN9C^$x z(2ifk+7}EWpO^}0<1Y@w--|NhvV8D*cELZJ<;E98)a~|((EPxSGm@W+et{`vKef@F zK|Ib@{a&~yrmKaf8k_hm%T00jLqlc{@ZRE16`H+EUea{6>IH_H&8g>}-Q5z#XSJ2@ ze)3`LPUVQ1$b_8oa+}w+%4sJx&q3b;tgikP$dBH@mWO&A>VkDC;YdyyMjLO2()A|x zIW5s!A&Di}v-(FP{seBqB-dZkR4qrHd00D2!P;x3P!vdTU0>|xm9OLv1Lm3v$P}EI z*@O-l^}L!X_Oczx2A!Mu9OvF1St~m(2_M-EN#E~th#%ZHa@&-5Kw_~ML}umFa~nQO z+1}Y>_QLla1Hbtdi*fqub(=7IE&+koR2p%+;in2d@-iPOT*YGMnWC;lo_Zw`xGkp? z>zBu*K^v>+#H<)$WZ($rQ5h7#;U5q%^pC1_t$vk6IfoeM9y>GfP zVP?jZV0Mb*eONH}cfoS;(c}zzQN49(Xg>Z{wb zN>Wpdzj8eHxMW{`9->tIeNP}z8nR;@sK#0(zg1?2l*ZC(+3D$yST2A2IVA~?l#2Kz z$L-tg!|w*ps)x){Wb(@m$$68QPM$qtpqXgxh8E3@;}3|*-{gD|DglFsF;0oJ?h9V) zv+~MkJ*ABK;b3Fj*F{4CK^NDWameqg;CNH~@y%=9&u*3Lt9x)tMXC#{XW@#Fn0X|W z4qPjh4C)B@Q5Qz~<(8no-eZxv>Blc*R&MQ>DoIiL?uD{9F}l%9;Lh93kJ_vuomDoIoYuYPte`Nuy3hM_hb;6s3$V#Ndb*nL- za|XeRH5UlzceA;eTjdU9*Uz5`XkD2q()=ThFo$%Fi8Rhm1xUEb#uo01{E zUueQrbQ+e?R;DiQ#Qxooxlds<83`5zrV0H}T4dzFP=zjlclAM{-2hx4*1*94`%nr4@ zxn$!G@F^GwOuok5FPi$0<8IM^)kVH|m~n=(H4>wo(9uSiM40QlwV-Untq0xCR2Eli zM1}3Fcj+*?o-A1P@;5(X=Gq_H%3*8JJ%3@hUqEYVy)*1%Lbum-)p)wu%Ga%K=_|QU zk<1e2gyxY_J7Hyt30FR2Vm@PVs9$>i8IO$6Ia&#iA9;pdgGsy4nX+NkcsqV(jfyz@ zX5F(4JDV4L$_AR&TZgSJrqe?`=Rpb3WZ1gv#l|y)f}pk zQ$LJUjGxYaJiE1F8Wp~mkjZ5A<4~3&B`kYKmgvD3Jqv_ki|b)MwMIzsUWZ2TJd7SQ zRGq;&18-i~aXOT95)xEzdI9f>1bF{CfkWghG~(;4ScW`HTFV&QkD=iixmEAhB@!Pm zF>SZygzKCpVDU|(ibFuwN3n1-((!vtAMM5yd*8nwS4_Ys;lt?}>7(_D82T9VyQ;8s zopP)3yRHF4n2T6I_KqFxk7;&m<-XGPMm4ir=ZDUgjravp%TTXg;V@8ny@WyBPM}Nj z14+(ZcRl zeeH!|qRs5846^#u!9LOQR1xDgwci>}cM)e|4h=9GSS zXVAETK>S#i(VZ!NG(3xK*pclCHD^{jEoU`aVGW#omRN$caAg`5<{8PAHsU5TK7ty` zr!ItA0-tdyO}|Qr_$tMVaX(0v3;*tC8Fwyn@M9;*;H>t!_qVOSeto6J;$-=GVd~to zr*4xBw6>|I3|K;^wL8U{GI`l;E^I1NIu&>aP(tD+ng-;p4&g9-k`yxU=qET=3nN5y z-MN~i)4Szv^F49qh!D}R^?zC(#!>sAgJ6p1l}2GRotz};!EUhgp-{AmzE)Ho+1=|{ zw&cM%F>fUXy{PZtSIrKov|!R{6lRu)yEs4P9d}(QtYbXu=6Ef>moVo=VzkCe^?JG? zV@$;WJi~Uw6fRhkeE!J;PwFfNjNK77**M#8pnIzAio-(L-ln}F7T#^!os@1d+u=_3au(14ZUk@B9PU?QCH7j^T6QPw3Wk%^68>O$hI|ZB&l;@*grq5~+Xb>bbVZ=0j zZ}GUjAB=y?|E^LnKcCtwV;QDr8>I`MYEwo1d^xJrE-SygYO}H!JoW9%7nQx8g>!jR z3@_!>KSv4=rIF^o=(}4dRxl_YH2G#08tOj(oO7z7^&sT%i(Q`SOX>0HD3;i?H(A8J zk|derygNCjlj$}ocRB|%G~yrK#*Jw8d;gx=_74!FY)b}iJ0qTvqWm;QZb|xAq**nmUGF_L^zET}nBI+}U@$t% zE<0$X5do!NCVEOClieMp@j9%~+G}a(7cU4UPINcbB(PCFBAf$0<6)XJTJ0p7>GkF&ZXXZe(FSeJgF$ zeYV@!PTBHBWXb&kE1c;CA|j*KwHFXk!@4;4XUGj%`gehZLrKK9%La;k&U~S+ub|cJ zhca0ChaVMutGg@OYHfb-(#=iyYBX0p&FGxaz6CjQ0D}-Z!(YOp{%l1>!*?xvh_nPW)k<_`?Lps8iTK`%uSwU^_$| zfWHHzdnIN1;k(FFDF!GQ7L!Vn!WdbQIqdT=db7)EbE3-ukr zfRQLxfUOCJzyrGu7()FtoJ4ULhR`L2Aq;6@NM1G=(i9*FF$D;aC@e^TWwZJh+<%V` z1rCJ_VEKtm5RI$}1sofVhXPzdag2uog{KDtBD4jv9v~YSi4p*&)C9H;IEm6Q*ssD6 z4bYBxNaeU34ABYgSb*YJKq@D}hXH8EA{4&^QaK?9?O1|V&d5RWo8b6Ms8N9t{ntnH zYgB*s|9*V`DF43;9_l*}CId*GNE&D))OQdAEqq2<^rsW@2f{}Q{-J*Pe(NGiuu4CT1gPYH#Yp}EA4+&| zp$fQABV4ExE;NLib6}r8jT1HRz&L>+W1_I4?Du~M+3_6z13oanA2BdbW1J_N^OVH! z*+m_b_#tpHFs^H%uq)^&=t7WK5JVR&M3eyq5-BSRb`V4*WSawusDJ=FMRY*6%}+xy zE5QedZzl#6(Fr<8p_o-aJK%^~I7v=D6ww9xX`z_aVBp6Wc0;#0V2D~MX6?@|2%-bd zT?O^+$AF?~HlnXXk)DT=bwUt}P~Ub8;1-x6m5aoh2eZLW}93yT-3$-0e)(-XUI7ZxqM%<1@+>LTj$1-mIEdhYI8;!X01maqNm==w= z2TC@NBKC9kF@MSIm^DEBH)OvNqagu2zYz}r#ACk^&mSZ1go5~n=!cSZKv7zR(u@%_ z;(j#Z5vcFbPsCr25d#ST#64)lT_+G%pwR+C3n)S`#4MbL1CCgN)7t`1RSBn827#&t zPOk>S&>$)-&H{J51oo9+Yk?s+VTk+SLKSe8ItYt0AS^ntf%s;_Mv4lMv=HPiHf9L; z$b|}(g8vjM|2WkXNB`0OEZqOt-@;$)55#{6QW@}f0_;6e-XdxnWr1Bw#3zV@LkKXW z?Qtlg(i}o!3&yby3=!3VSp`Gvm_tcyd(mP;bfG(e5u!WCjyr)R&O#Bu48dK!knI_? zmF^s$>qCF8L4AN@?xSs>7uW>wSQT*0#^dY*PBslETY-~pL4Er$ASf6W0ETA+dXfQ# z1t?h+s-qo6%npnsN0}LQKjsRQtPX<2g_89Fyue8SRY1uBtqWBU z;3?6=_~jq~7T_R&KZBrhAVedeqXwMB2}gkorE3R9b!@*AKm$$^1U7&oI041{Wxr@^ z?*dNwm|zDWsB?l~1qvEn2NV-+5zy^P81NV;5Q1@{2u?yVf0-8yfigyr&KwgQ00a$A z5Cnq*1c42pl@_`^b*%lrhdgjha0-ff>|}r03JfubBKT*hRZzMvC?;@}z$8G>!5oK^ zEx-{qaI&v(vOSc;LfHflE*#POD-OXCW9T@9N?Ax0YoH{TE8!%Uzk+QKa@0)Xp9V4* zkY7O%DyPj!)*4|5XHu{S!uFyC`=S3|Ci2hraUu|b_<Zm=_H>jG#`+B0X``BzsGbE{%<}f;s56I zliZ0h4gML^PqjjisR_-i6BU>KI;LN|{xYUty#6w#U%Y;e2_902LJUJpp-1+U8w|0C zX4s5o*mWETD^Yz`g%A>@~DJP6&1$hWK$(qtTWL=&eH#RjB*> zK}Al!*&M^{LH8V+>MzSc zU30AH$HT8hQ>Z|>4>VykRW!3k^qFHCr_ntf=$?^ds_32pbWbh1hZfyaiSB7ZA2)!I zc7iJU%t;(49pf>LW2`?F^_VL9uAk#UAA>+Sc!KJ`;5f$m6UPaxC&zP)_2+od6#C(q zAP_FV5R=E@5RPbt0GA0v<%fNL!eRe$I0Quq$>nYk1~tpt6K+PyZ<_L1c#_x>1ECNC2VRbCAjvW;kXgI`pGUMo{OV zj33l>fGMhy{Y@GapvU#%uRQQ4i{pM!FaApB{?ZQ$#a}hapDGcgn9$0JKm40e?uiUt z0RF5a!MeaN{=bIuoBu!Z0sMdQ`8)p>v|vz$^skx^WTeo_$v^zNP$e=Mx}5u26@o>H zU;IHWhZf~;{{P4a@c+fRzUF!X3}>V zq?Xliy6>o(ANVIY-R{q-YyyNMa6Kp3fm#JrWazcaqT~rJ{RjR3X+LLd|3Udd z;f8xM*vvmdslD(Cf`2=NApaJeoV@2P!NT+ZT=S0^f$|Gogn?Cs9khmnA`FynKbJ~? zhX17~LljMiWfn!)6ubp>440xC6h{nZCSie8!r-Vw>C0(PLBLm42b9wC(r z#|8*&08Hj_4T5Myn+Kx(_XXfApbx?nx=I9#sc8L0q4`Mxs4!TA0Rlo-jHuOMl!Bqw zn|@vZiheX|fDX0XhVu3;a0DoUdO;ltM}XR@3$1f-kTjrlZWQR;E|hK!wYC6ipK-8( z=)ehfUw`V{E~?x?l{){Zb0<~gPvN0Z#td``RbQYg5a7Nf=Yabn`(20tM^saV*anLi z%{5iX?FLlRf-aFkcE7o`hN>pel0dI$0VjouZ-3I#6Jh^P`gxtwa_*~$*eu1Hdk^y}~SKYvU{T0kfzQ4holtoby7EF=$buYT19y zdcj$=Oi^e5lJ{DmW@ZtbM(N#g?sYQrMH>jZd&L5MDR4AY6w^n?iSb5FRpWL8`t(js zRr5B8(mluS2$lYW!2`2t+y<2)s@iSdu0*SAHR>EN{sz>!<7y6^t3qo}1$sRIWr5%v zDE?8^SMzo?h+4p#pw0~ef&N}G0U=t{dFtrsx9@rYjt)b7G=Sgl$7tXI3&?+9NcN3M^jiCI8uNegq98sTyV-x| zMSoxL@4V>m3s7DZrNm?){D1@*6{bPBT*XsFFh?eq1ZnURYH{H56nsKV<}XQ}< z6eg;LVUnVD+L+9!-7QQ()Xo%B9<{T<)c6;Fjl{t+m&AC(3>1>YzYRPIhJ^UBxqt_= zkdQm$B;0mjb6Hm+;l=RQ9dOrB8>;C8yp}ppM`Ng?LDbP4>Szjew1zrbMjdUVj=rOsL&#Bs zBVv=piwtb~q@Xck291>k%6mE|(G;7%vx$4Gfq|n+=SZ>lPar zGM6bE7&Dg*n;mFBuz7=#fP+#tl-)x@Ub1C?JzCbA$5V$3_Nssxm^#pasRPsTZzk-o zQ-s7ZHvK(6VgJMV0rJCH8vAz>r0{!UG%n>$NW2@))3jkb*{o88mu= zpt&Ot8cPk(*xdn*i(T!(eVp#mqodlDwa(g^wV~RPwQ11DmyGK3xKC9K_BEBRwhc9t z_rw~DPlJ(y)52hLV+Q9H}nL%SD4@Un#6e~33{9hIFk7&_HfCE~tf1JjDPrgq_PRRG*KD!d? zv&Vg$TgQ8L2e3aOV=9yY5AI(8+e4I$RZ%k5M9KKAH|mtf{k&wS3;ad=^h~IQIwE7P(mI= z9rd7&Mp2UX`NJN?hCQc8C)1!&Q>4u=bHK zR6tM>g9dFCwH4$oikLtv2_#TuRkn(Npg<~Z0R?SKix6Y9D(sP}CO6zF799 zD|^xcDU^NvKhNBotxXH4@Be+j@3X(2o4Ipm&YU@O=FFKhbLU22*AK?%zpe71Fo1oc z%%4{c^Da()7U8!!Amf10|B|JF!CD1<-FPxj{rk5FbvkvAG_6IJ9y!O z<74hr!m@567kI}Q>_fE35eMRIChZiKrg3DRyGRn9BNs_(A&6!D;kXVIVe*8gqd1v4 zTR3L29v0JaO!p%&1I5C+&z2~dlX39K$HDg)cM`uavK+?s2e>7Q2I%^O#)kQr9^cFP z>-t0HhMT!13R73(dKV`am|EX!Y`D(c@DH~QYCx?}c~L);7Od&V1?&`thG?V7f>^n_ zDR46y?2EMN&?=6ZtQazB4%6C83&eygY*5kXN*lS#JxbyCb-QPi(aq?1_qbX z-K9=rsd3s^GHAKu{2>-JN0e%|R+>>Q>v5yivnaR+F}s*?L$A$@B0jvh3Az3!US>7W)s{ZKyUR zt^ks^4RTxtd3G3V!zvB72`3Hq8*5+g572+S{@0mmYr4_1r#dD>PYUZG?e{cXt1lE_k> zqvI*4nug%0Ws|vKzPaHVFmf~1YZ1AVE;6H^31oF}XD$#r#t3g-mbOgE#os!)lgnIp zC^Qj;=xXnu6eKC+7_kim^gOd&zVDjajy-T4FUt)X`EyZ*^K(?9n*Ajd7!`r8G^b9 z*+Y+63RpW@D$Notikr>2d0sRtZi+`sg|mfTL12#1X6Rc5fbDpi4?tflU5wvN_+5?P zB9S8(#fcn>J{CDJFB}Mknl>B?)u&vINUM|^E#JuHmbtN1iohk5o9@n$?UMsVwq&tt zzhZSFg;H#Sd?Oc2tt5z7H2uY^JJ((8eE(txYFKVG_2Lwv>Mn1Pt#f?6sh@Xz9b0{T zb$|{GT`*BMas&%J#0DA$Wv*bbl{tcOFHuwp<6e>+nCBjlzf=ZfG1vxUyb^XQw>e@yfz&VsS0P|mm)9U&k=qzlWm@s zj&achAwb|(-9Kn^5&bu6@0o{Xj?ERNDTc=tjKuV*hDkjQ=0krx44|!LmdmWCwkASW zkJCR^Prio{D&ps97l?RDhqg>%zA|U1RY|k-6Y$w7^9{wo8HJfsP4%pS1VDkw>N#4z zp}uM{U=4dk;kCoW?_W@ofs}I@D&;AaHXUwcEjd?^fI&g&&KK8`I(Lo)5s)bjtejPH z{p8B3L72a5Gk&aM80a)zx&|4g%5{4-dp!U3S!TR~$9nYdUI(|ElUP8W}lu85h)W(ZU6|Fo+H>o3%T;HvLTbZ&K5ja6t%WssZW@2VLud?Wp8x@trt`1xwO z`J(AB7}U?lSA$~xeKix6VK^Nc(9c)%U>&}icNBUw7xmSEz#7h)_ptE5=24tAm4Cun z6WD(A>mvVQM~r_j61HNQ(9&*Ou@ZN%BQMJlgT-@s&QiA{=3U6Zr8{E!LNaSQVnnCc zIQmkYU>f*OntfdjWdR&9zZS{4IHUzO2mQofu?}V`x#lXl_*-)_DO^9bcwyod44mh% zT>b{~!cf@h%HjA+`_0b_qaqSyE<++&^YyO73p2Y8FHD&~Yvux>iXfp@ z&9F!qk&bc91)7LL7@EJ-?S;9H{mb7Av)0!OW5CQ>=P|Q$tNUMu76)oSkN>5b)=^v| zE3hO``}jcXv4MitUzlooV9HQSHV@4jHjkeN=3%9nnjVEX;fgaLygLkMLOIN1AqOe zO1WfgHTTPoZODbxMB(wtwEM^XBD=9X6N?0}$1|~@I{L40zXVzz#QKKc_<3oLmH@*X z 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

s};^#2x0ZK^CE<>dd7JPLKu42 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 literal 525312 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