@corca-org/ceal-host-win32-x64 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -142,6 +142,7 @@ var CEAL_OPERATION_RECOVERY_KINDS = vocabulary(["none", "reconcile", "compensate
142
142
  var CEAL_OPERATION_RECOVERY_STATUSES = vocabulary(["not_started", "active", "completed"]);
143
143
  var CEAL_OPERATION_PROVIDER_READBACK_AVAILABILITY = vocabulary(["not_started", "not_applicable", "not_available", "pending", "available"]);
144
144
  var CEAL_OPERATION_OFFERED_HANDOFF_STATES = vocabulary(["accepted", "rejected", "unknown"]);
145
+ var CEAL_OPERATION_RECEIPT_AUTHORITY_KEYS = Object.freeze(["instance_ref", "profile_ref", "principal_ref", "execution_subject_ref", "authority_revision_ref"]);
145
146
  var CEAL_OPERATION_APPROVAL_DISPOSITIONS = vocabulary([
146
147
  "approval_not_required_by_policy",
147
148
  "interactive_pending",
@@ -398,7 +399,13 @@ var CEAL_OPERATION_JSON_SCHEMA_BUDGET = Object.freeze({
398
399
  max_string_length: OPERATION_SCHEMA_LITERAL_MAX_BYTES / 4,
399
400
  max_alternatives: 8,
400
401
  max_enum_values: 64,
401
- max_literal_bytes: OPERATION_SCHEMA_LITERAL_MAX_BYTES
402
+ max_literal_bytes: OPERATION_SCHEMA_LITERAL_MAX_BYTES,
403
+ /** @basis our_policy -- bounds explanatory schema prose carried in one catalog. */
404
+ max_description_characters: 1024,
405
+ /** @basis our_policy -- bounds regular-expression compilation input from one schema. */
406
+ max_pattern_characters: 256,
407
+ /** @basis our_policy -- bounds traversal work inside one already byte-bounded schema literal. */
408
+ max_literal_nodes: 512
402
409
  });
403
410
 
404
411
  // packages/ceal-client-protocol/src/operation-validation-primitives.ts
@@ -418,6 +425,9 @@ function requireIsoTimestamp(value, message) {
418
425
  if (typeof value !== "string" || !ISO_TIMESTAMP.test(value) || !Number.isFinite(Date.parse(value))) throw new TypeError(message);
419
426
  }
420
427
 
428
+ // packages/ceal-client-protocol/src/operation-json-schema.ts
429
+ var JSON_DESCRIPTION_CONTROL_CHARACTER = new RegExp("\\p{Cc}", "u");
430
+
421
431
  // packages/ceal-client-protocol/src/operation-contract-validation.ts
422
432
  var CEAL_OPERATION_AUTHORITY_POLICY_KEYS = Object.freeze(["profile", "instance_binding", "target", "admission_recheck"]);
423
433
  var MAX_OPERATION_INPUT_RESOLVER_BINDINGS = 96;
@@ -518,7 +528,6 @@ var CEAL_BOUNDED_SERIES_CATALOG = Object.freeze({
518
528
  control_commit: (root) => join(root, "control-auto-commit.jsonl"),
519
529
  engagement_signal: (root) => join(root, "runtime-state", "slack-feedback.jsonl"),
520
530
  runtime_error: (root) => join(root, "runtime-state", "runtime-errors.jsonl"),
521
- provider_retry: (root) => join(root, "observability", "provider-retry-queue", "queue.jsonl"),
522
531
  turn_bridge_request: (root) => join(root, ".ceal", "turn-bridge", "requests.jsonl"),
523
532
  channel_log: (root) => join(root, "log.jsonl"),
524
533
  thread_run_events: (root) => join(root, "run-events.jsonl"),
@@ -527,8 +536,6 @@ var CEAL_BOUNDED_SERIES_CATALOG = Object.freeze({
527
536
  gateway_capability_audit: (root) => join(root, "capability-audit.jsonl"),
528
537
  gateway_retrieval_waste_partition: (root) => `${root}.jsonl`,
529
538
  gateway_access_policy_publication: (root) => join(root, "access-policy-publications.jsonl"),
530
- gateway_event_lease_journal: (root) => `${root}.journal.jsonl`,
531
- gateway_control_audit: (root) => `${root}.control-audits.jsonl`,
532
539
  gateway_profile_connector_control_audit: (root) => `${root}.audit.jsonl`,
533
540
  gateway_profile_connector_scope_audit: (root) => join(root, "profile-connector-scope-audit.jsonl"),
534
541
  gateway_profile_connector_activity_scope_audit: (root) => join(root, "profile-connector-activity-scope-audit.jsonl"),
@@ -543,6 +550,11 @@ var CEAL_BOUNDED_SERIES_CATALOG = Object.freeze({
543
550
  gateway_admin_access_token: (root) => join(root, "access-tokens.jsonl")
544
551
  });
545
552
 
553
+ // packages/ceal-client-protocol/src/gateway-installation-activation.ts
554
+ var CEAL_GATEWAY_INSTALLATION_ACTIVATION_CODE_DATA_CHARACTERS = 32;
555
+ var CEAL_GATEWAY_INSTALLATION_ACTIVATION_CODE_CHECK_CHARACTERS = 8;
556
+ var CEAL_GATEWAY_INSTALLATION_ACTIVATION_CODE_COMPACT_CHARACTERS = CEAL_GATEWAY_INSTALLATION_ACTIVATION_CODE_DATA_CHARACTERS + CEAL_GATEWAY_INSTALLATION_ACTIVATION_CODE_CHECK_CHARACTERS;
557
+
546
558
  // packages/ceal-client-protocol/src/host-registration.ts
547
559
  var CEAL_HOST_REGISTRATION_RESULT_KEYS = Object.freeze(["credential_generation", "host_access_token", "host_installation_ref", "host_source_ref", "ok", "registration_attempt_ref", "schema_version", "status"]);
548
560
 
@@ -1131,7 +1143,7 @@ var CEAL_ACTOR_KINDS = vocabulary(["human", "bot", "app", "unknown"]);
1131
1143
  // packages/ceal-client-protocol/src/leased-consumer-vocabulary.ts
1132
1144
  var CEAL_TERMINAL_DISPOSITIONS = vocabulary(["completed", "failed", "cancelled"]);
1133
1145
  var CEAL_LEASE_DISPOSITIONS = vocabulary([...CEAL_TERMINAL_DISPOSITIONS, "deferred"]);
1134
- var CEAL_AUTOMATIC_FEEDBACK_INTENTS = vocabulary(["reaction", "progress_start", "progress_finish"]);
1146
+ var CEAL_AUTOMATIC_FEEDBACK_INTENTS = vocabulary(["initial"]);
1135
1147
  var CEAL_LEASED_MESSAGE_DELIVERY_CAPABILITY_IDS = vocabulary(["message.create", "message.update", "message.delete"]);
1136
1148
  var CEAL_REPOSITORY_VISIBILITIES = vocabulary(["public", "private", "internal"]);
1137
1149
  var CEAL_RESULT_DELIVERY_OFFERS = vocabulary(["pending", "offered", "transport_lost"]);
@@ -1372,6 +1384,7 @@ function skipWhitespace(text, start) {
1372
1384
  import { createHash as createHash2 } from "node:crypto";
1373
1385
  var HOST_PRODUCER_FRAME_SCHEMA = "ceal.host_producer_frame.v1";
1374
1386
  var HOST_PRODUCER_MAX_JSON_BYTES = 262144;
1387
+ var HOST_PRODUCER_FRAME_LENGTH_BYTES = Uint32Array.BYTES_PER_ELEMENT;
1375
1388
  var SAFE_REF2 = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u;
1376
1389
  var DIGEST2 = /^[a-f0-9]{64}$/u;
1377
1390
  var PRODUCERS = /* @__PURE__ */ new Set(["codex", "claude"]);
@@ -1391,18 +1404,18 @@ function encodeHostProducerFrame(frame) {
1391
1404
  validateFrame(frame);
1392
1405
  const json = Buffer.from(JSON.stringify(frame), "utf8");
1393
1406
  if (json.byteLength > HOST_PRODUCER_MAX_JSON_BYTES) throw new HostProducerFrameError("frame_too_large", `frame_too_large: ${refusalFact("frame_bytes", json.byteLength, `at most ${HOST_PRODUCER_MAX_JSON_BYTES}`)}`);
1394
- const result2 = Buffer.allocUnsafe(json.byteLength + 4);
1407
+ const result2 = Buffer.allocUnsafe(json.byteLength + HOST_PRODUCER_FRAME_LENGTH_BYTES);
1395
1408
  result2.writeUInt32BE(json.byteLength, 0);
1396
- json.copy(result2, 4);
1409
+ json.copy(result2, HOST_PRODUCER_FRAME_LENGTH_BYTES);
1397
1410
  return result2;
1398
1411
  }
1399
1412
  function decodeHostProducerFrame(input) {
1400
- if (input.byteLength < 4) throw new HostProducerFrameError("frame_truncated", `frame_truncated: ${refusalFact("frame_bytes", input.byteLength, "at least 4")}`);
1413
+ if (input.byteLength < HOST_PRODUCER_FRAME_LENGTH_BYTES) throw new HostProducerFrameError("frame_truncated", `frame_truncated: ${refusalFact("frame_bytes", input.byteLength, `at least ${HOST_PRODUCER_FRAME_LENGTH_BYTES}`)}`);
1401
1414
  const length = input.readUInt32BE(0);
1402
1415
  if (length > HOST_PRODUCER_MAX_JSON_BYTES) throw new HostProducerFrameError("frame_too_large", `frame_too_large: ${refusalFact("declared_bytes", length, `at most ${HOST_PRODUCER_MAX_JSON_BYTES}`)}`);
1403
1416
  if (length === 0) throw new HostProducerFrameError("invalid_frame_length");
1404
- if (input.byteLength !== length + 4) throw new HostProducerFrameError(input.byteLength < length + 4 ? "frame_truncated" : "invalid_frame_length");
1405
- const bytes2 = input.subarray(4);
1417
+ if (input.byteLength !== length + HOST_PRODUCER_FRAME_LENGTH_BYTES) throw new HostProducerFrameError(input.byteLength < length + HOST_PRODUCER_FRAME_LENGTH_BYTES ? "frame_truncated" : "invalid_frame_length");
1418
+ const bytes2 = input.subarray(HOST_PRODUCER_FRAME_LENGTH_BYTES);
1406
1419
  const text = new TextDecoder("utf-8", { fatal: true });
1407
1420
  let value;
1408
1421
  try {
@@ -2429,6 +2442,7 @@ var HOST_REGISTRATION_STATE_KEYS = Object.freeze([
2429
2442
  "status"
2430
2443
  ]);
2431
2444
  var HOST_INGRESS_PATH = "/api/ceal/v2/host-ingress";
2445
+ var HOST_REGISTRATION_STATE_MAX_BYTES = 65536;
2432
2446
  var HostRelayGatewayError = class extends Error {
2433
2447
  name = "HostRelayGatewayError";
2434
2448
  code;
@@ -2545,7 +2559,7 @@ async function readHostRegistrationAuthority(path, expectedHostSourceRef) {
2545
2559
  const stats = await handle.stat();
2546
2560
  if (!stats.isFile() || !ownerPrivate3(stats)) throw new HostRelayGatewayError("credential", "Host Relay credential file is not owner-private.");
2547
2561
  const raw = await handle.readFile("utf8");
2548
- if (raw.length > 65536) throw new HostRelayGatewayError("credential", `Host registration state is invalid: ${refusalFact("registration_state_bytes", Buffer.byteLength(raw, "utf8"), "at most 65536")}.`);
2562
+ if (Buffer.byteLength(raw, "utf8") > HOST_REGISTRATION_STATE_MAX_BYTES) throw new HostRelayGatewayError("credential", `Host registration state is invalid: ${refusalFact("registration_state_bytes", Buffer.byteLength(raw, "utf8"), `at most ${HOST_REGISTRATION_STATE_MAX_BYTES}`)}.`);
2549
2563
  let value;
2550
2564
  try {
2551
2565
  value = JSON.parse(raw);
@@ -2628,6 +2642,7 @@ var HOST_RELAY_BINDING_QUERY_SCHEMA = "ceal.host_relay_binding_query.v1";
2628
2642
  var HOST_RELAY_BINDING_RESULT_SCHEMA = "ceal.host_relay_binding_result.v1";
2629
2643
  var HOST_RELAY_INVOCATION_CONTEXT_QUERY_SCHEMA = "ceal.host_relay_invocation_context_query.v1";
2630
2644
  var HOST_RELAY_INVOCATION_CONTEXT_RESULT_SCHEMA = "ceal.host_relay_invocation_context_result.v1";
2645
+ var HOST_RELAY_IPC_LENGTH_BYTES = Uint32Array.BYTES_PER_ELEMENT;
2631
2646
  var HostRelayIpcError = class extends Error {
2632
2647
  code;
2633
2648
  constructor(code, message = code) {
@@ -2647,9 +2662,9 @@ async function startHostRelayIpcServer(options) {
2647
2662
  }
2648
2663
  function encodeHostRelayIpcResponse(response2) {
2649
2664
  const body = Buffer.from(JSON.stringify(response2), "utf8");
2650
- const result2 = Buffer.allocUnsafe(body.length + 4);
2665
+ const result2 = Buffer.allocUnsafe(body.length + HOST_RELAY_IPC_LENGTH_BYTES);
2651
2666
  result2.writeUInt32BE(body.length, 0);
2652
- body.copy(result2, 4);
2667
+ body.copy(result2, HOST_RELAY_IPC_LENGTH_BYTES);
2653
2668
  return result2;
2654
2669
  }
2655
2670
  function serveSocket(socket, admission, bindings, mintInvocationContext, quarantine, active, sockets) {
@@ -2673,23 +2688,23 @@ function serveSocket(socket, admission, bindings, mintInvocationContext, quarant
2673
2688
  });
2674
2689
  }
2675
2690
  async function drainFrames(socket, state, admission, bindings, mintInvocationContext, quarantine, active) {
2676
- while (!state.closed && state.buffer.length >= 4 && await processBufferedRequest(socket, state, admission, bindings, mintInvocationContext, quarantine, active)) {
2691
+ while (!state.closed && state.buffer.length >= HOST_RELAY_IPC_LENGTH_BYTES && await processBufferedRequest(socket, state, admission, bindings, mintInvocationContext, quarantine, active)) {
2677
2692
  }
2678
2693
  }
2679
2694
  async function processBufferedRequest(socket, state, admission, bindings, mintInvocationContext, quarantine, active) {
2680
2695
  const length = state.buffer.readUInt32BE(0);
2681
2696
  if (length === 0 || length > HOST_PRODUCER_MAX_JSON_BYTES) {
2682
2697
  const code = length === 0 ? "invalid_frame_length" : "frame_too_large";
2683
- const raw = state.buffer.subarray(0, Math.min(state.buffer.length, length + 4));
2698
+ const raw = state.buffer.subarray(0, Math.min(state.buffer.length, length + HOST_RELAY_IPC_LENGTH_BYTES));
2684
2699
  await quarantine.retainMalformed(raw, code);
2685
2700
  writeResponse(socket, errorResponse(code));
2686
2701
  state.buffer = Buffer.alloc(0);
2687
2702
  socket.end();
2688
2703
  return false;
2689
2704
  }
2690
- if (state.buffer.length < length + 4) return false;
2691
- const encoded = state.buffer.subarray(0, length + 4);
2692
- state.buffer = state.buffer.subarray(length + 4);
2705
+ if (state.buffer.length < length + HOST_RELAY_IPC_LENGTH_BYTES) return false;
2706
+ const encoded = state.buffer.subarray(0, length + HOST_RELAY_IPC_LENGTH_BYTES);
2707
+ state.buffer = state.buffer.subarray(length + HOST_RELAY_IPC_LENGTH_BYTES);
2693
2708
  let request2;
2694
2709
  try {
2695
2710
  request2 = decodeIpcRequest(encoded);
@@ -2797,22 +2812,22 @@ function validQueryIdentity(value, schema) {
2797
2812
  return record4(value) && value.schema_version === schema && (value.producer_id === "codex" || value.producer_id === "claude") && safeRef3(value.producer_installation_ref) && safeRef3(value.local_session_ref) && safeRef3(value.local_turn_ref);
2798
2813
  }
2799
2814
  function decodeLengthPrefixedJson(input, maximum) {
2800
- if (input.length < 4) return null;
2815
+ if (input.length < HOST_RELAY_IPC_LENGTH_BYTES) return null;
2801
2816
  const length = input.readUInt32BE(0);
2802
2817
  if (length === 0 || length > maximum) throw new HostRelayIpcError("relay_unavailable", `Host Relay IPC message length is invalid: ${refusalFact("declared_bytes", length, `between 1 and ${maximum}`)}.`);
2803
- if (input.length < length + 4) return null;
2804
- if (input.length !== length + 4) throw new HostRelayIpcError("relay_unavailable", `Host Relay IPC message has trailing bytes: ${refusalFacts([{ name: "declared_bytes", value: length, expected: "the received message length minus 4" }, { name: "received_bytes", value: input.byteLength, expected: `exactly ${length + 4}` }])}.`);
2818
+ if (input.length < length + HOST_RELAY_IPC_LENGTH_BYTES) return null;
2819
+ if (input.length !== length + HOST_RELAY_IPC_LENGTH_BYTES) throw new HostRelayIpcError("relay_unavailable", `Host Relay IPC message has trailing bytes: ${refusalFacts([{ name: "declared_bytes", value: length, expected: `the received message length minus ${HOST_RELAY_IPC_LENGTH_BYTES}` }, { name: "received_bytes", value: input.byteLength, expected: `exactly ${length + HOST_RELAY_IPC_LENGTH_BYTES}` }])}.`);
2805
2820
  try {
2806
- return JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(input.subarray(4)));
2821
+ return JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(input.subarray(HOST_RELAY_IPC_LENGTH_BYTES)));
2807
2822
  } catch {
2808
2823
  throw new HostRelayIpcError("relay_unavailable", "Host Relay IPC message is invalid.");
2809
2824
  }
2810
2825
  }
2811
2826
  function encodeLengthPrefixed(value) {
2812
2827
  const body = Buffer.from(JSON.stringify(value), "utf8");
2813
- const output = Buffer.allocUnsafe(body.length + 4);
2828
+ const output = Buffer.allocUnsafe(body.length + HOST_RELAY_IPC_LENGTH_BYTES);
2814
2829
  output.writeUInt32BE(body.length, 0);
2815
- body.copy(output, 4);
2830
+ body.copy(output, HOST_RELAY_IPC_LENGTH_BYTES);
2816
2831
  return output;
2817
2832
  }
2818
2833
  function exactKeys4(value, keys) {
@@ -2849,6 +2864,9 @@ function errorCode7(error) {
2849
2864
 
2850
2865
  // host/relay/src/host-relay-runtime.ts
2851
2866
  var HOST_RELAY_CONFIG_SCHEMA = "ceal.host_relay_config.v1";
2867
+ var HOST_RELAY_SERVE_COMMAND_PREFIX = ["serve", "--config"];
2868
+ var HOST_RELAY_CONFIG_MIN_BYTES = Buffer.byteLength("{}", "utf8");
2869
+ var HOST_RELAY_CONFIG_MAX_BYTES = 65536;
2852
2870
  var HostRelayConfigError = class extends Error {
2853
2871
  name = "HostRelayConfigError";
2854
2872
  code;
@@ -2865,7 +2883,7 @@ async function readHostRelayConfig(path) {
2865
2883
  handle = await open4(path, O_RDONLY4 | O_NOFOLLOW3);
2866
2884
  const stats = await handle.stat();
2867
2885
  if (!stats.isFile() || !ownerPrivate4(stats)) throw new HostRelayConfigError("config_not_private", "Host Relay config file is not owner-private.");
2868
- if (stats.size < 2 || stats.size > 65536) throw new HostRelayConfigError("invalid_config", `invalid_config: Host Relay config size is invalid: ${refusalFact("config_bytes", stats.size, "between 2 and 65536")}.`);
2886
+ if (stats.size < HOST_RELAY_CONFIG_MIN_BYTES || stats.size > HOST_RELAY_CONFIG_MAX_BYTES) throw new HostRelayConfigError("invalid_config", `invalid_config: Host Relay config size is invalid: ${refusalFact("config_bytes", stats.size, `between ${HOST_RELAY_CONFIG_MIN_BYTES} and ${HOST_RELAY_CONFIG_MAX_BYTES}`)}.`);
2869
2887
  const text = await handle.readFile("utf8");
2870
2888
  assertNoDuplicateJsonKeys(text);
2871
2889
  let value;
@@ -2934,7 +2952,7 @@ async function runHostRelayCli(args, signal, dependencies = {}) {
2934
2952
  }
2935
2953
  }
2936
2954
  function parseServeArgs(args) {
2937
- if (args.length !== 3 || args[0] !== "serve" || args[1] !== "--config" || !isAbsoluteNormalizedNonRootPath(args[2], process.platform, true)) {
2955
+ if (args.length !== HOST_RELAY_SERVE_COMMAND_PREFIX.length + 1 || args[0] !== HOST_RELAY_SERVE_COMMAND_PREFIX[0] || args[1] !== HOST_RELAY_SERVE_COMMAND_PREFIX[1] || !isAbsoluteNormalizedNonRootPath(args[2], process.platform, true)) {
2938
2956
  throw new HostRelayConfigError("invalid_config_path", `invalid_config_path: Use: relay.mjs serve --config <absolute-owner-private-json>: ${refusalFact("args", args, "serve --config <absolute normalized non-root path>")}.`);
2939
2957
  }
2940
2958
  return args[2];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@corca-org/ceal-host-win32-x64",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -3,12 +3,12 @@
3
3
  "product": "ceal-host",
4
4
  "version_source": {
5
5
  "product": "ceal-host",
6
- "version": "1.0.4"
6
+ "version": "1.0.6"
7
7
  },
8
8
  "source": {
9
9
  "repository": "corca-ai/ceal",
10
- "commit": "2aee0ec87546db2083a7da20804a999130e805d6",
11
- "tree": "b80bef8e8b094d98dc1bc6a620402a22ba80af10"
10
+ "commit": "2f5fdf77dcc3e3ea15c920e429b40b5e7645c4f0",
11
+ "tree": "087f8caa9b3c20febc0ec07ab6fdaa4aed1a2972"
12
12
  },
13
13
  "target": "windows-x64",
14
14
  "required_features": [],
@@ -19,7 +19,7 @@
19
19
  ],
20
20
  "executable": true,
21
21
  "path": "bin/ceal-host.exe",
22
- "sha256": "a47ada6e3875cd2f6dc7f9b2f8d38c2e16fdbb4a49315dae2b500ea4d1a7649b"
22
+ "sha256": "7131f5da87869cddedb7760b8baf9399126869bb9ec4746a89f5e3f7d5029b72"
23
23
  },
24
24
  {
25
25
  "owners": [
@@ -27,7 +27,15 @@
27
27
  ],
28
28
  "executable": false,
29
29
  "path": "libexec/ceal-host/claude-hook.mjs",
30
- "sha256": "06efc085ebb5e7ca968f0c85656b8a56b6a33666b071df7bf5bf91fec38ebe49"
30
+ "sha256": "ed39b7cc61467120420956cdf110305f6d338dbeec74ce94902ed11be3bd9ddf"
31
+ },
32
+ {
33
+ "owners": [
34
+ "claude"
35
+ ],
36
+ "executable": false,
37
+ "path": "libexec/ceal-host/claude-invocation-authentication.mjs",
38
+ "sha256": "cd3e714180a62b24f3b248f63c5f0111dbd6d60ab903f273d25b99d809479eae"
31
39
  },
32
40
  {
33
41
  "owners": [
@@ -35,7 +43,7 @@
35
43
  ],
36
44
  "executable": false,
37
45
  "path": "libexec/ceal-host/claude-producer.mjs",
38
- "sha256": "5bd0c2fc3d7b34280952017d74f52e9cfdd384779ce3abaded00128b91bd00ed"
46
+ "sha256": "d87bace242f088ead68e6b648c590255673b1169e06d17255fe54c1320319c2d"
39
47
  },
40
48
  {
41
49
  "owners": [
@@ -43,7 +51,7 @@
43
51
  ],
44
52
  "executable": false,
45
53
  "path": "libexec/ceal-host/codex-hook.mjs",
46
- "sha256": "fec05d5ef3a8a505304f80064dfc512f92eff7fbf8f9861bc1382de35323a30e"
54
+ "sha256": "b91ec9e7c482bbb3bb8a4a365070babcfc898ce6533083bb214dacb518b23665"
47
55
  },
48
56
  {
49
57
  "owners": [
@@ -51,7 +59,7 @@
51
59
  ],
52
60
  "executable": false,
53
61
  "path": "libexec/ceal-host/codex-invocation-authentication.mjs",
54
- "sha256": "5e0b6b11692da9d1620912fd6d156596f1ef8c50a9287aef98a7ac0a5dd493e0"
62
+ "sha256": "2ce3f609ad07ee0c2eb03bb4bf1bdfbc3726bd4ffb9a08b3a357614bd0d36978"
55
63
  },
56
64
  {
57
65
  "owners": [
@@ -59,7 +67,7 @@
59
67
  ],
60
68
  "executable": false,
61
69
  "path": "libexec/ceal-host/codex-producer.mjs",
62
- "sha256": "c77b49e10ba0a8ec2d62c19da0ca45559c697d30c7ab24ce812191ba4b39343a"
70
+ "sha256": "9d17c53f736030fe0950082de48aac493565700490f5600f848c918ccdf7ddc7"
63
71
  },
64
72
  {
65
73
  "owners": [
@@ -67,7 +75,7 @@
67
75
  ],
68
76
  "executable": false,
69
77
  "path": "libexec/ceal-host/control.mjs",
70
- "sha256": "85c98df73de9cf0200cb11657bb7ee2a21f1856c61a7472a3866946f0f15e004"
78
+ "sha256": "3715aae4e5622e4b11ad8d4f0b859edfe7e8c4d0aaf00c4ee1c539d17d3064b2"
71
79
  },
72
80
  {
73
81
  "owners": [
@@ -83,7 +91,7 @@
83
91
  ],
84
92
  "executable": false,
85
93
  "path": "libexec/ceal-host/relay.mjs",
86
- "sha256": "84d10378bec458539727e38e1d540a4c8c79889466293cae41aa2b9149caf027"
94
+ "sha256": "e41da7308e4c59f67b86b8e6fb5516fc5ed8218817dda1790b2e619071f776da"
87
95
  }
88
96
  ]
89
97
  }
@@ -1 +1 @@
1
- {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"2843821707","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1789468462","inclusionPromise":{"signedEntryTimestamp":"MEYCIQDISN8j6f+dwuRrpGHrjYPhscP8P7OTjzCcQzp3CthYngIhAOtqT9lQ1ppeBt+pytaQdVJVJeryfqrw6VDWiKIJCJLH"},"inclusionProof":{"logIndex":"2721917445","rootHash":"LreL4qsEMxCJ4/I1F0Ov60iQdkWPOtg32ZDf15LgVc4=","treeSize":"2721917468","hashes":["8Neh7YNgUtuGXge9fh93zxTg0sZgvyUB4r/eUOjB8EQ=","zbiggP+mql0i7Y+5nGr6r54f0piI3MJvYJlMIPkXh9E=","o/1iD4U/UnXLz0LXG22qwpks2jZJkmzGlR86cAiZT1k=","zuJUcjody7am72GU4r/rXa53RE/0vUHDKlHeV+nzV7c=","gArxUBxn/e8dXCV6cA0Xo7nxp6aLoqb022u+JLgGmcA=","sMWDcqgC53nwiF3D/JdUxtNTmQJRB5fGLd3EK2fo93o=","q1v3PfFuX/cbpr8wfVdaM/j7NNPPLzV7gsu7dS0jBgM=","IAEM3sWjAFgZqF+NiNqPdcAXhG1+y9RjjAyPIppwyJI=","o847b4T0CUnQMqyTEo+N11E/qtGpIfzQBUjZIBiie9Y=","ujLsO/42hJyMS4huOpBwfzzG5GrzhF1f6jOEzjxkRbk=","gEZTY2s6ScuVaaQOeMiRTZFBEtxv80Wlsfxc1CH5zmw=","VhkSk24YjS8fGaHS9XTETgZu/JDurA9yGwTR2dVodds=","nYTPvZIJ0KyadGa7HUZQkBGa6F+j+HJYLpzZYdGhPcU=","jhevWFOJ2cWU6SvzMnAe08zHGcVquRlP7gAed39+wI4=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2721917468\nLreL4qsEMxCJ4/I1F0Ov60iQdkWPOtg32ZDf15LgVc4=\n\n— rekor.sigstore.dev wNI9ajBFAiAR3IDAc5YkIXwBdcEw9/fQxRn2crYcDRKwK/eEhHCqsgIhAIkmUgHuLQmw7SyfgYv/FjkRYiXj0rRZBZ5e9shmAjoy\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxMzdmYzc2ZmRjNTlkM2U2MWFkZDRlNWI4YmIyYTY4NDBlMjAzZGNiODg4NWExZDc1ZmJjN2I2MGQ1MDg0Yzg5In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRVdaeDNMbnBwTDlPTW1lbWF0V3dubjRFQkMxOWNHbXFTeWtHRDI1dCtOd0FpQjVGUldQSTBtMldCY3ZVOXNQeVh2ZUs3aDNDNmRhc3VYNFBxY2dGUlc2d2c9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaEVha05EUW5CUFowRjNTVUpCWjBsVlpXaHdPVTlIVG5STGFFdFRjRFJNWnpSTVdraE1PVXBDUkdvNGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVUlRGTlZFRjZUa1JKZUZkb1kwNU5hbGwzVDFSRk1VMVVRVEJPUkVsNFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZPUlhkbk56TnlZUzloY2tSRmFtbHpUR3B4V0RoVVozZEJOMFpVVVdFdlZHOW9UM01LTm5SblRWbzFXako2VFZCMksxWnpiR2RxYW1aNU5VSmxTVGRqV25aTWRqVlFNa3h1V0dsblFXOXlUMHBaUW1OeVRtRlBRMEppU1hkbloxZDFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlU0VDBkVUNsRk5kazlCTjJzdlJXVTVMMWx5WkhGV1EyTlBPVTlWZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDFwbldVUldVakJTUVZGSUwwSkdkM2RYYjFwWllVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKT2RtTnRUbWhNVjBad1RESk9iQXBaVjNkMlRHMWtjR1JIYURGWmFUa3pZak5LY2xwdGVIWmtNMDEyWTIxV2MxcFhSbnBhVXpGcVdWYzFhMkZYVW1oa1IxVjFaVmN4YzFGSVNteGFiazEyQ21GSFZtaGFTRTEyWWxkR2NHSnFRVFZDWjI5eVFtZEZSVUZaVHk5TlFVVkNRa04wYjJSSVVuZGplbTkyVEROU2RtRXlWblZNYlVacVpFZHNkbUp1VFhVS1dqSnNNR0ZJVm1sa1dFNXNZMjFPZG1KdVVteGlibEYxV1RJNWRFMUNPRWREYVhOSFFWRlJRbWMzT0hkQlVVbEZSVmhrZG1OdGRHMWlSemt6V0RKU2NBcGpNMEpvWkVkT2IwMUVXVWREYVhOSFFWRlJRbWMzT0hkQlVVMUZTMFJLYUZwWFZYZGFWMDAwVG5wVk1FNXRVbWxOYWtFMFRUSkZNMXBIUlhsTlJHZDNDazVIUlRWUFZHdDRUWHBDYkU5RVFURmFSRmwzU2tGWlMwdDNXVUpDUVVkRWRucEJRa0pCVVZkUk1sWm9Za05DZVZwWGVHeFpXRTVzU1VkT2FHSnRVbkFLV2tkR01GcFVRV0pDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0V4YW1JelNtcFpVekZvWVZNNWFscFhSbk5OUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlFwRU0wcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRVGRDWjI5eVFtZEZSVUZaVHk5TlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMUNsbFhUakJoVnpsMVkzazFibUZZVW05a1Ywb3hZekpXZVZreU9YVmtSMVoxWkVNMWFtSXlNSGRoUVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWVVSR2FHOEtaRWhTZDJONmIzWk1NbVJ3WkVkb01WbHBOV3BpTWpCMldUSTVlVmt5UlhSWlYydDJXVEpXYUdKRE9IVmFNbXd3WVVoV2FVd3paSFpqYlhSdFlrYzVNd3BqZVRsNVdsZDRiRmxZVG14TVYwNW9ZbTFTY0ZwSFJqQmFVelUxWWxkNFFXTnRWbTFqZVRsdldsZEdhMk41T1hSWlYyeDFUVVJuUjBOcGMwZEJVVkZDQ21jM09IZEJVVzlGUzJkM2IwMXRSbXhhVkVKc1dYcG5NMDVVVVRKYVIwbDVUVVJuZWxsVVpHdFpWRWwzVDBSQk1GbFVhelZQVkVWNlRVZFZORTFFVm1zS1RtcEJaRUpuYjNKQ1owVkZRVmxQTDAxQlJVeENRVGhOUkZka2NHUkhhREZaYVRGdllqTk9NRnBYVVhkTlFWbExTM2RaUWtKQlIwUjJla0ZDUkVGUmFRcEVRMEp2WkVoU2QyTjZiM1pNTW1Sd1pFZG9NVmxwTldwaU1qQjJXVEk1ZVZreVJYUlpWMnQyV1RKV2FHSkVRVFJDWjI5eVFtZEZSVUZaVHk5TlFVVk9Da0pEYjAxTFJFcG9XbGRWZDFwWFRUUk9lbFV3VG0xU2FVMXFRVFJOTWtVeldrZEZlVTFFWjNkT1IwVTFUMVJyZUUxNlFteFBSRUV4V2tSWmQwaDNXVXNLUzNkWlFrSkJSMFIyZWtGQ1JHZFJVa1JCT1hsYVYxcDZUREpvYkZsWFVucE1NakZvWVZjMGQwZG5XVXRMZDFsQ1FrRkhSSFo2UVVKRWQxRk5SRUZ2ZUFwTlZHdDRUbFJWTUU1VWEzcE5RM05IUTJselIwRlJVVUpuTnpoM1FWSkJSVWhSZDJKaFNGSXdZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTWs1MkNtTnRUbWhNVjBad1RVSm5SME5wYzBkQlVWRkNaemM0ZDBGU1JVVkRaM2RKVG5wSk5VNTZaelJPYWtGM1lVRlpTMHQzV1VKQ1FVZEVkbnBCUWtWblVtRUtSRVpvYjJSSVVuZGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbGt5T1hsWk1rVjBXVmRyZGxreVZtaGlRemgxV2pKc01HRklWbWxNTTJSMlkyMTBiUXBpUnprelkzazVlVnBYZUd4WldFNXNURmRPYUdKdFVuQmFSMFl3V2xNMU5XSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlOYlVac1dsUkNiRmw2WnpOT1ZGRXlXa2RKZVUxRVozcFpWR1JyV1ZSSmQwOUVRVEJaVkdzMVQxUkZlazFIVlRRS1RVUldhMDVxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxR1VVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWSm5lRVZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NazUyWTIxT2FFeFhSbkJNTWs1c1dWZDNkbGxYVGpCaFZ6bDFDbU41T1hsa1Z6VjZUSHBOTUU5VVZUTlBWR016VGxSRk5Fd3lSakJrUjFaMFkwaFNla3g2UlhkR2QxbExTM2RaUWtKQlIwUjJla0ZDUm1kUlNrUkJaSGNLWTIxc01sbFlVbXhOUkZsSFEybHpSMEZSVVVKbk56aDNRVkpuUlV0QmQyMWpiVlozWW5wd2FtSXpTbXBaVXpGb1lWTTVhbHBYUm5OUGJrcHNXbXB3ZVFwYVYxcDZUREpvYkZsWFVucE1NakZvWVZjMGQyZFpiMGREYVhOSFFWRlJRakZ1YTBOQ1FVbEZaa0ZTTmtGSVowRmtaMFJrVUZSQ2NYaHpZMUpOYlUxYUNraG9lVnBhZW1ORGIydHdaWFZPTkRoeVppdElhVzVMUVV4NWJuVnFaMEZCUVdGRGEyOWphM2RCUVVGRlFYZENTRTFGVlVOSlVVTTFZWGx5SzNWWE9Ga0tlbTRyV0U5dGVUbGFjVFZsV2pOS2NsRm1NRmRIY1ZGc0wxaDVhVEZUUVdsNFowbG5TVEp4TVZOU1dUazBVVmhSY1c0MFNGZEpOemR1SzA5bVltVnlTUXAyT0c5d1FXVm9aMHN4UkVGeGRrMTNRMmRaU1V0dldrbDZhakJGUVhkTlJHRlJRWGRhWjBsNFFVNXpTMmt5TVdObU5WRTRkMmd5YUZaT1VqSmtTR041Q21GNVNtYzVkaXQxYWt4aGRDdE9NMXAwVkROQ01rNVFUVFJaVTFReU0yNHlZbVZxZGpaNVVDdDJRVWw0UVU1cGNIcEVhVzk0UkdKcmRrZFhjbFZDVVdZS09VRm9TSHBXUVU5R1VHMW5PRXcwTHpGMVpqTktUVTlsUmtacE9EVXJhREZCV0d0elNEZEhSMnMyYW1jeFVUMDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}]},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"E3/Hb9xZ0+Ya3U5bi7KmhA4gPcuIhaHXX7x7YNUITIk="},"signature":"MEQCIEWZx3LnppL9OMmematWwnn4EBC19cGmqSykGD25t+NwAiB5FRWPI0m2WBcvU9sPyXveK7h3C6dasuX4PqcgFRW6wg=="}}
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"2851888129","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1789510321","inclusionPromise":{"signedEntryTimestamp":"MEQCIDcq0UrNcfJYFvDV1Q35U237A3dQipvp8jh+JtL2yUSCAiAszez0/m0TPCDqHGGY9bwM1VGlfaCYG5EqK816geSKug=="},"inclusionProof":{"logIndex":"2729983867","rootHash":"BWMsQSDbDO+CY0Xjrw/yRmRDdpI/wzCulHx3nBEm51w=","treeSize":"2729983901","hashes":["qBMs6bSw4oDln9Bk2LG4x+viJMw8cP8MfINxAx5iKPQ=","EEn510aK716yngy7I0dH/VCFttNqs2oF4kFtNyh8QBM=","DrUWEmcHY6htBPWM50ZMD8z5NHsGXsyu9QMJfiwq3Wk=","gEOpkugWzRPWUAV4l56159JQYhgSDoteupVa3ssMk1U=","RfrCtWBBpDwtcvbYR6H6R55eQYl9qBvHISBKLjSYl4E=","gB2Y9IQA4brii232OIp5gMx7QECDRrXKoez2cFtz0Gc=","XBY4zKkaEqbQ7zd5qRGJdZOjvKS2UKY+k0zr1xeRcOQ=","dVjH9qnbfId+AIuPJ8Sowkd363iHT1K3qJOOftJ/kKQ=","8VnTUl1T0pyYKQHDaaPvGphiQJ2blvqTAWLeSk8ShMg=","6eJ2wL6DyCPmR2paAMnCoA9UB5Y0dP2GZBKq8nB4J7A=","0yXg08Rdp0sMymnXs60CJ91pj8Cy8YByJ8mft2+xzAo=","/r6e/oZDAaPAU7ZiHA4nPHqwTV906BhyF7AXKiKFTbQ=","8L18Md5aGoBwBlDMyr6RWGH1R8FxNVJoQVNZAdUiGp0=","jD8cvGxxxWJBKtdGs1KwTri/UGL3fv4a/QLD3WyZKbo=","xPjCST8WHvK11hCFqS6gbNPTMB3aUPaNdWFbeH72kgo=","Ty12lwhXheAvfCO/5aYZ9leO0iPQ/txxYFtTQMlm9JY=","oCmst3Ks4vD7eWBowjSTm262iNrZs+SVJ/DUgAa87O8=","UHTD4gppDpUbvjVt5JlrR1znuqkF/Be+5C53hqcVmDA=","jhevWFOJ2cWU6SvzMnAe08zHGcVquRlP7gAed39+wI4=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2729983901\nBWMsQSDbDO+CY0Xjrw/yRmRDdpI/wzCulHx3nBEm51w=\n\n— rekor.sigstore.dev wNI9ajBGAiEAxTdulSQ1dQVy65L6C3tZv6CkFXKWBNoHlu+uae0FmSACIQCGFD4VNhH1x76AtCKOf/ifZ1A41rSt419pHJpQy5VDnA==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxZWFmZTA4YWE3YzQwZjE4MjQ0ZDk0MWZhNDU4MTMxYzQ4NTcwNWY1ZmUxNjg0MDJmNDdiMDlkMjkwNzkxYWFjIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUR6Vi9HQUdkY01kR1cxdUtaMjdwYzV5NzlueUJiNkovbWg5K1BlcnVpNlZRSWdJTnQ2MjBLall1eHdMUCt2N2s1TkV5TUt0RE1SVERqY0w5WGYvNC9qQm5NPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaEVWRU5EUW5CUFowRjNTVUpCWjBsVlNUaDNRa2x4VXl0UGFVd3hWa3g0TUdoSGFWQmlSRzF5UlhSUmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVUlRGTmFrbDRUV3BCZUZkb1kwNU5hbGwzVDFSRk1VMXFTWGxOYWtGNFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZaY21WbE0xaFdRVzByUkVwb2FHZHNNMjFqYTNsNVJtd3ZjMWRJWlhacmFUZE1SRzRLZDFSSk9VbEtjV05RV210SmJtTXhSRlZrYkd0cFlsY3ZRVFZuWVRadVdIZDFiVlU0V1c1UVUySnJhMk5aVFVabmEyRlBRMEppU1hkbloxZDFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZ2Vm1wbkNsSkhaRTVMYUhSek1Hc3dTa1ZDYzNodWFXeFFOWFIzZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDFwbldVUldVakJTUVZGSUwwSkdkM2RYYjFwWllVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKT2RtTnRUbWhNVjBad1RESk9iQXBaVjNkMlRHMWtjR1JIYURGWmFUa3pZak5LY2xwdGVIWmtNMDEyWTIxV2MxcFhSbnBhVXpGcVdWYzFhMkZYVW1oa1IxVjFaVmN4YzFGSVNteGFiazEyQ21GSFZtaGFTRTEyWWxkR2NHSnFRVFZDWjI5eVFtZEZSVUZaVHk5TlFVVkNRa04wYjJSSVVuZGplbTkyVEROU2RtRXlWblZNYlVacVpFZHNkbUp1VFhVS1dqSnNNR0ZJVm1sa1dFNXNZMjFPZG1KdVVteGlibEYxV1RJNWRFMUNPRWREYVhOSFFWRlJRbWMzT0hkQlVVbEZSVmhrZG1OdGRHMWlSemt6V0RKU2NBcGpNMEpvWkVkT2IwMUVXVWREYVhOSFFWRlJRbWMzT0hkQlVVMUZTMFJLYlU1WFdtdGFhbU16V2tkT2FrMHlWWHBhVjBWNFRsZE5OVTFxUW14T1JFazFDbGxxVVhkWmFsWnNUbnBaTUU1WFRUQmFha0YzU2tGWlMwdDNXVUpDUVVkRWRucEJRa0pCVVZkUk1sWm9Za05DZVZwWGVHeFpXRTVzU1VkT2FHSnRVbkFLV2tkR01GcFVRV0pDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0V4YW1JelNtcFpVekZvWVZNNWFscFhSbk5OUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlFwRU0wcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRVGRDWjI5eVFtZEZSVUZaVHk5TlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMUNsbFhUakJoVnpsMVkzazFibUZZVW05a1Ywb3hZekpXZVZreU9YVmtSMVoxWkVNMWFtSXlNSGRoUVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWVVSR2FHOEtaRWhTZDJONmIzWk1NbVJ3WkVkb01WbHBOV3BpTWpCMldUSTVlVmt5UlhSWlYydDJXVEpXYUdKRE9IVmFNbXd3WVVoV2FVd3paSFpqYlhSdFlrYzVNd3BqZVRsNVdsZDRiRmxZVG14TVYwNW9ZbTFTY0ZwSFJqQmFVelUxWWxkNFFXTnRWbTFqZVRsdldsZEdhMk41T1hSWlYyeDFUVVJuUjBOcGMwZEJVVkZDQ21jM09IZEJVVzlGUzJkM2IwMXRXVEZhYlZKdFRucGthMWt5VFhwYVZFNXNXVlJGTVZsNmEzbE5SMVV3VFdwc2FVNUVRbWxPVjFVelRtcFJNVmw2VW0wS1RVUkJaRUpuYjNKQ1owVkZRVmxQTDAxQlJVeENRVGhOUkZka2NHUkhhREZaYVRGdllqTk9NRnBYVVhkTlFWbExTM2RaUWtKQlIwUjJla0ZDUkVGUmFRcEVRMEp2WkVoU2QyTjZiM1pNTW1Sd1pFZG9NVmxwTldwaU1qQjJXVEk1ZVZreVJYUlpWMnQyV1RKV2FHSkVRVFJDWjI5eVFtZEZSVUZaVHk5TlFVVk9Da0pEYjAxTFJFcHRUbGRhYTFwcVl6TmFSMDVxVFRKVmVscFhSWGhPVjAwMVRXcENiRTVFU1RWWmFsRjNXV3BXYkU1NldUQk9WMDB3V21wQmQwaDNXVXNLUzNkWlFrSkJSMFIyZWtGQ1JHZFJVa1JCT1hsYVYxcDZUREpvYkZsWFVucE1NakZvWVZjMGQwZG5XVXRMZDFsQ1FrRkhSSFo2UVVKRWQxRk5SRUZ2ZUFwTlZHdDRUbFJWTUU1VWEzcE5RM05IUTJselIwRlJVVUpuTnpoM1FWSkJSVWhSZDJKaFNGSXdZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTWs1MkNtTnRUbWhNVjBad1RVSm5SME5wYzBkQlVWRkNaemM0ZDBGU1JVVkRaM2RKVG5wSk5VNTZaelJPYWtGM1lVRlpTMHQzV1VKQ1FVZEVkbnBCUWtWblVtRUtSRVpvYjJSSVVuZGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbGt5T1hsWk1rVjBXVmRyZGxreVZtaGlRemgxV2pKc01HRklWbWxNTTJSMlkyMTBiUXBpUnprelkzazVlVnBYZUd4WldFNXNURmRPYUdKdFVuQmFSMFl3V2xNMU5XSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlOYlZreFdtMVNiVTU2Wkd0Wk1rMTZXbFJPYkZsVVJURlplbXQ1VFVkVk1FMXFiR2xPUkVKcFRsZFZNMDVxVVRFS1dYcFNiVTFFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxR1VVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWSm5lRVZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NazUyWTIxT2FFeFhSbkJNTWs1c1dWZDNkbGxYVGpCaFZ6bDFDbU41T1hsa1Z6VjZUSHBOTVUxRVNUVk5SR2QzVFVSQk1rd3lSakJrUjFaMFkwaFNla3g2UlhkR2QxbExTM2RaUWtKQlIwUjJla0ZDUm1kUlNrUkJaSGNLWTIxc01sbFlVbXhOUkZsSFEybHpSMEZSVVVKbk56aDNRVkpuUlV0QmQyMWpiVlozWW5wd2FtSXpTbXBaVXpGb1lWTTVhbHBYUm5OUGJrcHNXbXB3ZVFwYVYxcDZUREpvYkZsWFVucE1NakZvWVZjMGQyZFpiMGREYVhOSFFWRlJRakZ1YTBOQ1FVbEZaa0ZTTmtGSVowRmtaMFJrVUZSQ2NYaHpZMUpOYlUxYUNraG9lVnBhZW1ORGIydHdaWFZPTkRoeVppdElhVzVMUVV4NWJuVnFaMEZCUVdGRGJrbEpWekJCUVVGRlFYZENTRTFGVlVOSlNGTTRWRUZwT0hvNFNVZ0taakJqYlhWQ01VcElOMUUzV0dsNk9XOUxiR2R1YmxNeFIzWlBjaTl5YkV4QmFVVkJNbmQxTWs5ck0wTXpWa0l4T0Rjd1VpOVNiMVo2VEVseldVaDNNd3A2ZDNvMFMyZHRVR0Z1YTJjdlJtZDNRMmRaU1V0dldrbDZhakJGUVhkTlJHRkJRWGRhVVVsNFFVOUZkalpKUzJaRU9WRmpjMlYyWTBWUWVrZHhRMGxGQ2tSbk9IRmpOM1paYW04ME0yeEdkeTlrYW5GWlRIUnROWG95T1dKbFJ6WTFORlZIY21WQ1ZFSnlVVWwzWW5aTWJrcFZha0UwY21ZMlNYTk9lRE5HT0d3S1IzRjNPSHBXVmpSUFoyUXdSMHBPTWtwS01reFBWMWxEUzB4d05HeHVVelpFVEV3elpuQnZXbTFhU2tJS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}]},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"Hq/giqfEDxgkTZQfpFgTHEhXBfX+FoQC9HsJ0pB5Gqw="},"signature":"MEUCIQDzV/GAGdcMdGW1uKZ27pc5y79nyBb6J/mh9+Perui6VQIgINt620KjYuxwLP+v7k5NEyMKtDMRTDjcL9Xf/4/jBnM="}}