@peerbit/server 7.0.2 → 8.0.1

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.
Files changed (49) hide show
  1. package/dist/src/cli.d.ts.map +1 -1
  2. package/dist/src/cli.js +87 -7
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/client.d.ts +2 -0
  5. package/dist/src/client.d.ts.map +1 -1
  6. package/dist/src/client.js +83 -6
  7. package/dist/src/client.js.map +1 -1
  8. package/dist/src/remotes.d.ts +2 -0
  9. package/dist/src/remotes.d.ts.map +1 -1
  10. package/dist/src/remotes.js +8 -1
  11. package/dist/src/remotes.js.map +1 -1
  12. package/dist/src/routes.d.ts +1 -0
  13. package/dist/src/routes.d.ts.map +1 -1
  14. package/dist/src/routes.js +1 -0
  15. package/dist/src/routes.js.map +1 -1
  16. package/dist/src/server.d.ts +8 -0
  17. package/dist/src/server.d.ts.map +1 -1
  18. package/dist/src/server.js +83 -20
  19. package/dist/src/server.js.map +1 -1
  20. package/dist/src/signed-request.d.ts +77 -3
  21. package/dist/src/signed-request.d.ts.map +1 -1
  22. package/dist/src/signed-request.js +420 -39
  23. package/dist/src/signed-request.js.map +1 -1
  24. package/dist/src/trust.d.ts.map +1 -1
  25. package/dist/src/trust.js +1 -0
  26. package/dist/src/trust.js.map +1 -1
  27. package/dist/test/api.spec.js +359 -3
  28. package/dist/test/api.spec.js.map +1 -1
  29. package/dist/test/cli.spec.js +90 -1
  30. package/dist/test/cli.spec.js.map +1 -1
  31. package/dist/test/remotes.spec.js +65 -1
  32. package/dist/test/remotes.spec.js.map +1 -1
  33. package/dist/test/signed-request.spec.js +204 -23
  34. package/dist/test/signed-request.spec.js.map +1 -1
  35. package/dist/test/trust.spec.d.ts +2 -0
  36. package/dist/test/trust.spec.d.ts.map +1 -0
  37. package/dist/test/trust.spec.js +29 -0
  38. package/dist/test/trust.spec.js.map +1 -0
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/dist/ui/assets/{index-CjZwCewh.js → index-DS8hXn9k.js} +6 -6
  41. package/dist/ui/index.html +1 -1
  42. package/package.json +6 -6
  43. package/src/cli.ts +102 -8
  44. package/src/client.ts +98 -10
  45. package/src/remotes.ts +12 -1
  46. package/src/routes.ts +1 -0
  47. package/src/server.ts +123 -21
  48. package/src/signed-request.ts +564 -50
  49. package/src/trust.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAaA,OAAO,IAAI,MAAM,MAAM,CAAC;AAKxB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAwBlC,OAAO,EAAY,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAwGnC,eAAO,MAAM,WAAW,GAAI,QAAQ,IAAI,CAAC,MAAM,iCAO9C,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,YAAY;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;;;EAoHA,CAAC;AA4CF,eAAO,MAAM,cAAc,GAC1B,QAAQ,OAAO,EACf,YAAY;IACX,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,KACC,OAAO,CAAC,IAAI,CAAC,MAAM,CA4rBrB,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAkBA,OAAO,IAAI,MAAM,MAAM,CAAC;AAKxB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAyBlC,OAAO,EAAY,OAAO,EAAE,MAAM,cAAc,CAAC;AASjD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAyGnC,eAAO,MAAM,WAAW,GAAI,QAAQ,IAAI,CAAC,MAAM,iCAO9C,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,YAAY;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;;;EAoHA,CAAC;AA4CF,eAAO,MAAM,cAAc,GAC1B,QAAQ,OAAO,EACf,YAAY;IACX,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;QAC3B,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;KAChC,CAAC;CACF,KACC,OAAO,CAAC,IAAI,CAAC,MAAM,CA4wBrB,CAAC"}
@@ -9,7 +9,7 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
9
9
  /* eslint-disable no-console */
10
10
  import { deserialize, getSchema } from "@dao-xyz/borsh";
11
11
  import { peerIdFromString } from "@libp2p/peer-id";
12
- import { fromBase64, getPublicKeyFromPeerId } from "@peerbit/crypto";
12
+ import { fromBase64, getPublicKeyFromPeerId, randomBytes, toBase64, } from "@peerbit/crypto";
13
13
  import { Program, getProgramFromVariant, getProgramFromVariants, } from "@peerbit/program";
14
14
  import { waitFor } from "@peerbit/time";
15
15
  import { execSync, spawn, spawnSync } from "child_process";
@@ -27,11 +27,12 @@ import { fileURLToPath } from "url";
27
27
  import { v4 as uuid } from "uuid";
28
28
  import { getKeypair, getNodePath, getTrustPath } from "./config.js";
29
29
  import { create } from "./peerbit.js";
30
- import { ADDRESS_PATH, BOOTSTRAP_PATH, INSTALL_PATH, LOCAL_API_PORT, LOG_PATH, PEER_ID_PATH, PROGRAMS_PATH, PROGRAM_PATH, PROGRAM_VARIANTS_PATH, RESTART_PATH, SELF_UPDATE_PATH, STATS_PATH, STOP_PATH, TRUST_PATH, VERSIONS_PATH, } from "./routes.js";
30
+ import { ADDRESS_PATH, AUTH_PATH, BOOTSTRAP_PATH, INSTALL_PATH, LOCAL_API_PORT, LOG_PATH, PEER_ID_PATH, PROGRAMS_PATH, PROGRAM_PATH, PROGRAM_VARIANTS_PATH, RESTART_PATH, SELF_UPDATE_PATH, STATS_PATH, STOP_PATH, TRUST_PATH, VERSIONS_PATH, } from "./routes.js";
31
31
  import { JSONArgs, Session } from "./session.js";
32
- import { getBody, verifyRequest } from "./signed-request.js";
32
+ import { ReplayCapacityError, RequestAuthenticator, RequestBodyTooLargeError, createAuthDescriptor, getBody, verifyRequestBody, } from "./signed-request.js";
33
33
  import { Trust } from "./trust.js";
34
34
  const MAX_LISTENER_LIMIT = 1e5;
35
+ const AUTH_DESCRIPTOR_CACHE_MS = 30_000;
35
36
  const getInstallDir = () => {
36
37
  return (process.env.PEERBIT_MODULES_PATH ||
37
38
  findPeerbitProgramFolder(__dirname) || // same util used by /install
@@ -267,16 +268,50 @@ export const startApiServer = async (client, properties) => {
267
268
  if (!client.peerId.equals(await client.identity.publicKey.toPeerId())) {
268
269
  throw new Error("Expecting node identity to equal peerId");
269
270
  }
270
- const getVerifiedBody = async (req) => {
271
- const body = await getBody(req);
272
- const result = await verifyRequest(req.headers, req.method, req.url, body);
273
- if (result.equals(client.identity.publicKey)) {
274
- return body;
271
+ const audience = {
272
+ serverPeerId: client.peerId.toString(),
273
+ bootId: toBase64(randomBytes(32)),
274
+ };
275
+ const wallClockMs = properties.signedRequests?.wallClockMs ?? Date.now;
276
+ let cachedAuthDescriptor;
277
+ let authDescriptorPromise;
278
+ const getAuthDescriptor = () => {
279
+ const now = wallClockMs();
280
+ if (cachedAuthDescriptor &&
281
+ now >= cachedAuthDescriptor.at &&
282
+ now - cachedAuthDescriptor.at < AUTH_DESCRIPTOR_CACHE_MS) {
283
+ return Promise.resolve(cachedAuthDescriptor.descriptor);
275
284
  }
276
- if (properties.trust.isTrusted(result.hashcode())) {
277
- return body;
285
+ if (!authDescriptorPromise) {
286
+ authDescriptorPromise = createAuthDescriptor(client.identity, audience, now)
287
+ .then((descriptor) => {
288
+ cachedAuthDescriptor = { descriptor, at: now };
289
+ return descriptor;
290
+ })
291
+ .finally(() => {
292
+ authDescriptorPromise = undefined;
293
+ });
278
294
  }
279
- throw new Error("Not trusted");
295
+ return authDescriptorPromise;
296
+ };
297
+ const authenticator = new RequestAuthenticator({
298
+ ...audience,
299
+ ...properties.signedRequests,
300
+ isTrusted: (key) => key.equals(client.identity.publicKey) ||
301
+ properties.trust.isTrusted(key.hashcode()),
302
+ });
303
+ const getVerifiedBody = async (req) => {
304
+ const verified = await authenticator.verify(req.headers, req.method, req.url);
305
+ const body = await getBody(req, verified.bodyLength);
306
+ const decoded = verifyRequestBody(verified, body);
307
+ // Consume only after the signed bytes have arrived and matched. This keeps a
308
+ // raced bad body from burning the nonce while remaining atomic before dispatch.
309
+ authenticator.consume(verified);
310
+ return decoded;
311
+ };
312
+ const closeResponseConnection = (res) => {
313
+ res.shouldKeepAlive = false;
314
+ res.setHeader("Connection", "close");
280
315
  };
281
316
  const e404 = "404";
282
317
  const endpoints = (client) => {
@@ -293,15 +328,36 @@ export const startApiServer = async (client, properties) => {
293
328
  if (req.url) {
294
329
  let body;
295
330
  try {
296
- body =
297
- req.url.startsWith(PEER_ID_PATH) ||
298
- req.url.startsWith(ADDRESS_PATH)
299
- ? await getBody(req)
300
- : await getVerifiedBody(req);
331
+ const isPublicRequest = req.method === "GET" &&
332
+ (req.url === PEER_ID_PATH ||
333
+ req.url === ADDRESS_PATH ||
334
+ req.url === AUTH_PATH);
335
+ if (isPublicRequest &&
336
+ (req.headers["transfer-encoding"] != null ||
337
+ (req.headers["content-length"] != null &&
338
+ req.headers["content-length"] !== "0"))) {
339
+ closeResponseConnection(res);
340
+ res.writeHead(400);
341
+ res.end("Public GET endpoints do not accept a request body");
342
+ return;
343
+ }
344
+ body = isPublicRequest ? "" : await getVerifiedBody(req);
301
345
  }
302
346
  catch (error) {
303
- res.writeHead(401);
304
- res.end("Not authorized: " + error.toString());
347
+ const status = error instanceof RequestBodyTooLargeError
348
+ ? 413
349
+ : error instanceof ReplayCapacityError
350
+ ? 503
351
+ : 401;
352
+ // Authentication can fail before the body is read. Disable keep-alive so
353
+ // an attacker cannot retain this connection by continuing to stream it.
354
+ closeResponseConnection(res);
355
+ res.writeHead(status);
356
+ res.end(status === 413
357
+ ? "Request body is too large"
358
+ : status === 503
359
+ ? "Authentication is temporarily unavailable"
360
+ : "Not authorized");
305
361
  return;
306
362
  }
307
363
  if (req.url.startsWith(PROGRAMS_PATH)) {
@@ -727,8 +783,8 @@ export const startApiServer = async (client, properties) => {
727
783
  }
728
784
  case "DELETE": {
729
785
  const removed = properties.trust.remove(getPathValue(req, 1));
730
- res.writeHead(200);
731
- res.end(removed);
786
+ res.writeHead(removed ? 200 : 404);
787
+ res.end();
732
788
  break;
733
789
  }
734
790
  default:
@@ -835,6 +891,13 @@ export const startApiServer = async (client, properties) => {
835
891
  r404();
836
892
  }
837
893
  }
894
+ else if (req.url === AUTH_PATH && req.method === "GET") {
895
+ const authDescriptor = await getAuthDescriptor();
896
+ res.setHeader("Cache-Control", "no-store");
897
+ res.setHeader("Content-Type", "application/json");
898
+ res.writeHead(200);
899
+ res.end(JSON.stringify(authDescriptor));
900
+ }
838
901
  else if (req.url.startsWith(PEER_ID_PATH)) {
839
902
  res.writeHead(200);
840
903
  res.end(client.peerId.toString());
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACN,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,QAAQ,GACR,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,OAAO,EACP,qBAAqB,EACrB,sBAAsB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACN,YAAY,EACZ,SAAS,EACT,cAAc,EACd,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,UAAU,EACV,aAAa,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,OAAO,EACP,iBAAiB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAQnC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAExC,MAAM,aAAa,GAAG,GAAkB,EAAE;IACzC,OAAO,CACN,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAChC,wBAAwB,CAAC,SAAS,CAAC,IAAI,6BAA6B;QACpE,IAAI,CACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,UAAkB,EAAE,WAAmB,EAAE,EAAE;IAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAChC,UAAU,EACV,cAAc,EACd,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EACzB,cAAc,CACd,CAAC;IACF,OAAO,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,8BAA8B,GAAG,KAAK,EAC3C,OAA4B,EACZ,EAAE;IAClB,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEjC,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,CAAC;QACJ,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACb,UAAU,GAAG,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,MAAM,CAAC,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC;QACrC,sCAAsC;QACtC,IAAI,uBAAuB,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;YACtD,SAAS;QACV,CAAC;QAED,IAAI,CAAC;YACJ,OAAO,CAAC,GAAG,CACV,kDAAkD,WAAW,EAAE,CAC/D,CAAC;YACF,QAAQ,CACP,GAAG,UAAU,gBAAgB,WAAW,aAAa,UAAU,8BAA8B,CAC7F,CAAC;QACH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CACZ,yDAAyD,WAAW,EAAE,EACtE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAC7B,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,aAAa,GAAG,GAAG,EAAE;IAC1B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC,CAAC;AACF,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;AAC9B,IAAI,KAAK,EAAE,CAAC;IACX,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS;QAC5C,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK;QAChD,CAAC,CAAC,KAAK,CAAC;IAET,+CAA+C;IAC9C,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAe,CAAC,YAAY,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,uBAAuB;AAEvB,MAAM,YAAY,GAAG,CAAC,GAAW,EAA0B,EAAE;IAC5D,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE;QAC3E,GAAG,EAAE,GAAG;QACR,QAAQ,EAAE,MAAM;KAChB,CAAC,CAAC;IAEH,8DAA8D;IAC9D,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC;IAElE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;QACpE,QAAQ,CAAC,IAAI,CAAC,GAAI,IAAY,EAAE,OAAO,IAAI,SAAS,CAAC;IACtD,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAmB,EAAE,EAAE;IAClD,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACvB,MAAM,GAAG,IAAI,CAAC;IACf,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,UAWzC,EAAE,EAAE;IACJ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,YAAY,GACjB,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAC1D,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAEvD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC;QACzB,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;QAC5C,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI;QAClC,OAAO;KACP,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,gBAAgB,GACrB,UAAU,CAAC,SAAS,IAAI,IAAI;QAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,OAAO,GAAG,IAAI,OAAO,CAC1B,gBAAgB;QACf,CAAC,CAAC,IAAI,KAAK,CAAqB,gBAAgB,EAAE;YAChD,aAAa,EAAE,MAAM;YACrB,WAAW,EAAE,OAAO;SACpB,CAAC;QACH,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CACnE,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC;gBACJ,MAAM,MAAM,kCAAC,MAAM,EAAC,CAAC;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CACZ,gCAAgC,MAAM,yBAAyB,EAC/D,KAAK,CACL,CAAC;YACH,CAAC;QACF,CAAC;QACD,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;YAC5D,YAAY;YACZ,IAAI,CAAC;gBACJ,MAAM,IAAI,CAAC,IAAI,CAAM,OAAO,EAAE;oBAC7B,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBACxD,OAAO,EAAE,GAAG;iBACZ,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACF,CAAC;IACF,CAAC;SAAM,CAAC;QACP,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;QAC/B,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE;QACzC,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG;QAC3B,KAAK;QACL,OAAO;KACP,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;QAChC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,aAAa,EAAE,CAAC;IACtB,MAAM,YAAY,GAAG,KAAK,EACzB,UAA+B,EAC/B,MAAmB,EAClB,EAAE;QACH,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;gBAC3B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;oBAC3C,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;oBAC1B,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;gBACzB,CAAC;gBACD,IAAI,EAAE,CAAC;YACR,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3C,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;YACvC,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YAC7B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBAEzC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC1B,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;YACzB,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAEjC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,GAAyB,EAAE,SAAiB,EAAU,EAAE;IAC7E,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ;SACvB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;SAChE,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AACF,SAAS,wBAAwB,CAAC,cAAsB;IACvD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAE9C,OAAO,UAAU,KAAK,GAAG,EAAE,CAAC;QAC3B,6BAA6B;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAChC,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,CACd,CAAC;QAEF,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,MAAM,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAEnD,IAAI,WAAW,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAC7C,OAAO,UAAU,CAAC;YACnB,CAAC;QACF,CAAC;QAED,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAClC,MAAe,EACf,UAYC,EACsB,EAAE;IACzB,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,IAAI,cAAc,CAAC;IAEhD,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QAC1B,OAAO,CAAC,GAAG,CACV,+HAA+H,CAC/H,CAAC;QACF,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC3B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;YAE1B,2FAA2F;YAC3F,KAAK,CACJ,OAAO,CAAC,IAAI,CAAC,KAAK,EAAG,EACrB;gBACC,GAAG,OAAO,CAAC,QAAQ;gBACnB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;aAC5D,EACD;gBACC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,OAAO,CAAC,MAAO,EAAE;gBACtB,GAAG,EAAE;oBACJ,GAAG,OAAO,CAAC,GAAG;oBACd,SAAS,EACR,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS;wBACrB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;wBACxC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;iBACjC;aACD,CACD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,QAAQ,GAAG;QAChB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;QACtC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACjC,CAAC;IACF,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,EAAE,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC;IACvE,IAAI,oBAKQ,CAAC;IACb,IAAI,qBAEQ,CAAC;IACb,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC9B,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,IACC,oBAAoB;YACpB,GAAG,IAAI,oBAAoB,CAAC,EAAE;YAC9B,GAAG,GAAG,oBAAoB,CAAC,EAAE,GAAG,wBAAwB,EACvD,CAAC;YACF,OAAO,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC5B,qBAAqB,GAAG,oBAAoB,CAC3C,MAAM,CAAC,QAAQ,EACf,QAAQ,EACR,GAAG,CACH;iBACC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;gBACpB,oBAAoB,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;gBAC/C,OAAO,UAAU,CAAC;YACnB,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACb,qBAAqB,GAAG,SAAS,CAAC;YACnC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,qBAAqB,CAAC;IAC9B,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAAC;QAC9C,GAAG,QAAQ;QACX,GAAG,UAAU,CAAC,cAAc;QAC5B,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAClB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YACrC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;KAC3C,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,KAAK,EAAE,GAAyB,EAAE,EAAE;QAC3D,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,CAC1C,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,MAAO,EACX,GAAG,CAAC,GAAI,CACR,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClD,6EAA6E;QAC7E,gFAAgF;QAChF,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC;IAChB,CAAC,CAAC;IACF,MAAM,uBAAuB,GAAG,CAAC,GAAwB,EAAE,EAAE;QAC5D,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC;QAC5B,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,CAAC;IAEnB,MAAM,SAAS,GAAG,CAAC,MAAe,EAAwB,EAAE;QAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACzB,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClD,GAAG,CAAC,SAAS,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;YACpD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YACnD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,GAAG,EAAE;gBACjB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,CAAC,CAAC;YAEF,IAAI,CAAC;gBACJ,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;oBACb,IAAI,IAAY,CAAC;oBACjB,IAAI,CAAC;wBACJ,MAAM,eAAe,GACpB,GAAG,CAAC,MAAM,KAAK,KAAK;4BACpB,CAAC,GAAG,CAAC,GAAG,KAAK,YAAY;gCACxB,GAAG,CAAC,GAAG,KAAK,YAAY;gCACxB,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;wBACzB,IACC,eAAe;4BACf,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,IAAI;gCACxC,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI;oCACrC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,EACxC,CAAC;4BACF,uBAAuB,CAAC,GAAG,CAAC,CAAC;4BAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4BACnB,GAAG,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;4BAC7D,OAAO;wBACR,CAAC;wBACD,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;oBAC1D,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACrB,MAAM,MAAM,GACX,KAAK,YAAY,wBAAwB;4BACxC,CAAC,CAAC,GAAG;4BACL,CAAC,CAAC,KAAK,YAAY,mBAAmB;gCACrC,CAAC,CAAC,GAAG;gCACL,CAAC,CAAC,GAAG,CAAC;wBACT,yEAAyE;wBACzE,wEAAwE;wBACxE,uBAAuB,CAAC,GAAG,CAAC,CAAC;wBAC7B,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;wBACtB,GAAG,CAAC,GAAG,CACN,MAAM,KAAK,GAAG;4BACb,CAAC,CAAC,2BAA2B;4BAC7B,CAAC,CAAC,MAAM,KAAK,GAAG;gCACf,CAAC,CAAC,2CAA2C;gCAC7C,CAAC,CAAC,gBAAgB,CACpB,CAAC;wBACF,OAAO;oBACR,CAAC;oBAED,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;wBACvC,IAAI,MAAM,YAAY,OAAO,KAAK,KAAK,EAAE,CAAC;4BACzC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4BACnB,GAAG,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;4BACtD,OAAO;wBACR,CAAC;wBACD,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;4BACpB,KAAK,KAAK;gCACT,IAAI,CAAC;oCACJ,MAAM,GAAG,GACP,MAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oCAClD,IAAI,IAAI,GAA+C,EAAE,CAAC;oCAC1D,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;wCACvB,MAAM,SAAS,GACd,MAAM,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wCAC7C,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4CACvC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;wCAC3C,CAAC;6CAAM,CAAC;4CACP,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;wCAClB,CAAC;oCACF,CAAC;oCACD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;oCAClD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gCAC/B,CAAC;gCAAC,OAAO,KAAU,EAAE,CAAC;oCACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gCACxB,CAAC;gCACD,MAAM;4BAEP;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;wBACR,CAAC;oBACF,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;wBACtD,IAAI,MAAM,YAAY,OAAO,KAAK,KAAK,EAAE,CAAC;4BACzC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4BACnB,GAAG,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;4BACtD,OAAO;wBACR,CAAC;wBACD,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;4BACpB,KAAK,KAAK;gCACT,IAAI,CAAC;oCACJ,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;oCAClD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CACN,IAAI,CAAC,SAAS,CACb,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CACzD,CACD,CAAC;gCACH,CAAC;gCAAC,OAAO,KAAU,EAAE,CAAC;oCACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gCACxB,CAAC;gCACD,MAAM;4BAEP;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;wBACR,CAAC;oBACF,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC7C,IAAI,MAAM,YAAY,OAAO,KAAK,KAAK,EAAE,CAAC;4BACzC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4BACnB,GAAG,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;4BACtD,OAAO;wBACR,CAAC;wBACD,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;4BACpB,KAAK,MAAM;gCACV,IAAI,CAAC;oCACJ,MAAM,OAAO,GAAI,MAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CACrD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CACpB,CAAC;oCACF,IAAI,OAAO,EAAE,CAAC;wCACb,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;oCACX,CAAC;yCAAM,CAAC;wCACP,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;oCACX,CAAC;gCACF,CAAC;gCAAC,OAAO,KAAU,EAAE,CAAC;oCACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gCACxB,CAAC;gCACD,MAAM;4BAEP,KAAK,QAAQ;gCACZ,IAAI,CAAC;oCACJ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAC,CAAC;oCACzD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oCAEjD,MAAM,OAAO,GAAI,MAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CACrD,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CACpB,CAAC;oCACF,IAAI,OAAO,EAAE,CAAC;wCACb,IAAI,MAAM,GAAG,KAAK,CAAC;wCACnB,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;4CAC1B,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;wCAC/B,CAAC;6CAAM,CAAC;4CACP,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;wCAChC,CAAC;wCACD,IAAI,MAAM,EAAE,CAAC;4CACZ,MAAM,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CACzC,OAAO,CAAC,OAAO,CACf,CAAC;wCACH,CAAC;wCAED,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;oCACX,CAAC;yCAAM,CAAC;wCACP,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;oCACX,CAAC;gCACF,CAAC;gCAAC,OAAO,KAAU,EAAE,CAAC;oCACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gCACxB,CAAC;gCACD,MAAM;4BACP,KAAK,KAAK;gCACT,IAAI,CAAC;oCACJ,MAAM,cAAc,GAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oCACtD,MAAM,SAAS,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;oCACxC,OAAO,SAAS,CAAC,OAAO,CAAC;oCACzB,OAAO,SAAS,CAAC,MAAM,CAAC;oCAExB,IAAI,OAAgB,CAAC;oCACrB,IAAK,cAAiC,CAAC,OAAO,EAAE,CAAC;wCAChD,MAAM,CAAC,GAAG,qBAAqB,CAC7B,cAAiC,CAAC,OAAO,CAC1C,CAAC;wCACF,IAAI,CAAC,CAAC,EAAE,CAAC;4CACR,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4CACnB,GAAG,CAAC,GAAG,CACN,gCAAgC;gDAC9B,cAAiC,CAAC,OAAO,CAC3C,CAAC;4CACF,OAAO;wCACR,CAAC;wCACD,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;oCACnB,CAAC;yCAAM,CAAC;wCACP,OAAO,GAAG,WAAW,CACpB,UAAU,CAAE,cAAgC,CAAC,MAAM,CAAC,EACpD,OAAO,CACP,CAAC;oCACH,CAAC;oCACD,IAAI,eAAe,GAClB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;oCAC3D,MAAM;yCACJ,IAAI,CAAC,OAAO,EAAE;wCACd,IAAI,EAAE,eAAe;qCACrB,CAAC;yCACD,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;wCACvB,iCAAiC;wCACjC,MAAM,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CACtC,OAAO,CAAC,OAAO,EACf,eAAe;4CACd,CAAC,CAAC,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK;4CACrC,CAAC,CAAC,IAAI,UAAU,EAAE,CACnB,CAAC;wCACF,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;oCACrC,CAAC,CAAC;yCACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wCAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wCACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,CAAC,0BAA0B,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;oCACxD,CAAC,CAAC,CAAC;gCACL,CAAC;gCAAC,OAAO,KAAU,EAAE,CAAC;oCACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oCACrB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gCAC3B,CAAC;gCACD,MAAM;4BAEP;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;wBACR,CAAC;oBACF,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC7C,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;4BACpB,KAAK,KAAK,CAAC,CAAC,CAAC;gCACZ,MAAM,WAAW,GAAsB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gCAExD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW;gCACjD,IAAI,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,4CAA4C;gCAChF,IAAI,KAA+B,CAAC;gCACpC,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;oCAChC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oCAC9C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;wCAC7B,IAAI,EACH,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;4CAC1C,IAAI,EAAE;4CACN,MAAM;qCACP,CAAC,CAAC;oCACH,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;oCACtC,KAAK,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;oCACxC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;gCAC7B,CAAC;qCAAM,CAAC;oCACP,KAAK,GAAG,SAAS,CAAC;gCACnB,CAAC;gCAED,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oCAC9C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAAG,WAAW,CAAC,CAAC;gCAC5C,CAAC;qCAAM,CAAC;oCACP,IAAI,CAAC;wCACJ,4HAA4H;wCAC5H,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;wCAEnC,IAAI,UAAU,GAAG,EAAE,CAAC;wCACpB,IAAI,CAAC,UAAU,EAAE,CAAC;4CACjB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4CACnB,GAAG,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;4CAC1C,OAAO;wCACR,CAAC;wCACD,IAAI,CAAC;4CACJ,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;wCAC9C,CAAC;wCAAC,OAAO,KAAK,EAAE,CAAC;4CAChB,UAAU,GAAG,MAAM,CAAC;wCACrB,CAAC;wCAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,WAAW,CAAC,CAAC;wCAClD,QAAQ,CACP,GAAG,UAAU,gBAAgB,WAAW,aAAa,UAAU,8BAA8B,CAC7F,CAAC,CAAC,sEAAsE;oCAC1E,CAAC;oCAAC,OAAO,KAAU,EAAE,CAAC;wCACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,CACN,6BAA6B;4CAC5B,WAAW;4CACX,IAAI;4CACJ,KAAK,CAAC,QAAQ,EAAE,CACjB,CAAC;wCACF,KAAK,EAAE,EAAE,CAAC;wCACV,OAAO;oCACR,CAAC;oCAED,IAAI,CAAC;wCACJ,MAAM,WAAW,GAAG,IAAI,GAAG,CAC1B,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CACzD,CAAC;wCAEF,MAAM,MAAM;wCACX,yBAAyB,CAAC,kBAAkB,CAAC,WAAW,EACxD,CAAC;wCACF,MAAM,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CACrC,WAAW,EACX,IAAI,UAAU,EAAE,CAChB,CAAC;wCACF,MAAM,YAAY,GAAG,sBAAsB,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxD,SAAS,CAAC,CAAC,CAAC,CACZ,CAAC;wCACF,MAAM,WAAW,GAA0B,EAAE,CAAC;wCAC9C,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;4CAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gDACjC,WAAW,CAAC,IAAI,CAAC,CAAwB,CAAC,CAAC;4CAC5C,CAAC;wCACF,CAAC;wCAED,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oCAC5D,CAAC;oCAAC,OAAO,CAAM,EAAE,CAAC;wCACjB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;wCAChC,KAAK,EAAE,EAAE,CAAC;oCACX,CAAC;gCACF,CAAC;gCACD,MAAM;4BACP,CAAC;4BAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gCACf,IAAI,CAAC;oCACJ,0CAA0C;oCAC1C,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oCAEzC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wCAC9C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;wCAChC,OAAO;oCACR,CAAC;oCAED,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;oCACnC,IAAI,CAAC,UAAU,EAAE,CAAC;wCACjB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;wCAC1C,OAAO;oCACR,CAAC;oCAED,IAAI,UAAU,GAAG,EAAE,CAAC;oCACpB,IAAI,CAAC;wCACJ,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oCAC9C,CAAC;oCAAC,OAAO,EAAE,EAAE,CAAC;wCACb,UAAU,GAAG,MAAM,CAAC;oCACrB,CAAC;oCAED,IAAI,CAAC;wCACJ,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,WAAW,CAAC,CAAC;wCACpD,QAAQ,CACP,GAAG,UAAU,kBAAkB,WAAW,aAAa,UAAU,8BAA8B,CAC/F,CAAC;oCACH,CAAC;oCAAC,OAAO,KAAU,EAAE,CAAC;wCACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,CACN,+BAA+B;4CAC9B,WAAW;4CACX,IAAI;4CACJ,KAAK,CAAC,QAAQ,EAAE,CACjB,CAAC;wCACF,OAAO;oCACR,CAAC;oCAED,IAAI,CAAC;wCACJ,MAAM,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oCACxD,CAAC;oCAAC,OAAO,CAAC,EAAE,CAAC;wCACZ,oDAAoD;oCACrD,CAAC;oCAED,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gCACX,CAAC;gCAAC,OAAO,KAAU,EAAE,CAAC;oCACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,iBAAiB,CAAC,CAAC;gCAC9C,CAAC;gCACD,MAAM;4BACP,CAAC;4BAED,OAAO,CAAC,CAAC,CAAC;gCACT,IAAI,EAAE,CAAC;gCACP,MAAM;4BACP,CAAC;wBACF,CAAC;oBACF,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;wBAC9C,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;4BAC1B,IAAI,CAAC;gCACJ,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;gCACnC,IAAI,CAAC,UAAU,EAAE,CAAC;oCACjB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;oCAC9C,OAAO;gCACR,CAAC;gCAED,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;gCAE1C,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gCAClD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;4BAC5C,CAAC;4BAAC,OAAO,GAAG,EAAE,CAAC;gCACd,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;gCAC/C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;4BACpC,CAAC;wBACF,CAAC;6BAAM,CAAC;4BACP,IAAI,EAAE,CAAC;wBACR,CAAC;wBAED,sEAAsE;oBACvE,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;wBACjD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;4BAC3B,IAAI,CAAC;gCACJ,yCAAyC;gCACzC,IAAI,WAA+B,CAAC;gCACpC,IAAI,CAAC;oCACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;oCACxC,WAAW,GAAG,MAAM,EAAE,OAAO,CAAC;gCAC/B,CAAC;gCAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAC;gCAEf,IAAI,eAAe,GAAG,QAAQ,CAAC;gCAC/B,IAAI,CAAC;oCACJ,MAAM,IAAI,GAAG,kBAAkB,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oCACtE,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,IAAI,iBAAiB,EAAE;wCACvD,QAAQ,EAAE,MAAM;qCAChB,CAAC,CAAC;oCACH,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gCACnC,CAAC;gCAAC,OAAO,EAAE,EAAE,CAAC;oCACb,eAAe,GAAG,WAAW,IAAI,QAAQ,CAAC;gCAC3C,CAAC;gCAED,OAAO,CAAC,GAAG,CACV,4CAA4C;oCAC3C,eAAe,CAChB,CAAC;gCACF,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gCAClD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;gCAEtD,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;oCAC3B,IAAI,CAAC;wCACJ,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;wCACnC,IAAI,UAAU,GAAG,EAAE,CAAC;wCACpB,IAAI,UAAU,EAAE,CAAC;4CAChB,IAAI,CAAC;gDACJ,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;4CAC9C,CAAC;4CAAC,OAAO,EAAE,EAAE,CAAC;gDACb,UAAU,GAAG,MAAM,CAAC;4CACrB,CAAC;4CACD,IAAI,CAAC;gDACJ,QAAQ,CACP,GAAG,UAAU,mCAAmC,eAAe,EAAE,CACjE,CAAC;4CACH,CAAC;4CAAC,OAAO,UAAU,EAAE,CAAC;gDACrB,QAAQ,CACP,GAAG,UAAU,gCAAgC,eAAe,aAAa,UAAU,8BAA8B,CACjH,CAAC;4CACH,CAAC;wCACF,CAAC;6CAAM,CAAC;4CACP,QAAQ,CACP,kCAAkC,eAAe,EAAE,CACnD,CAAC;wCACH,CAAC;oCACF,CAAC;oCAAC,OAAO,CAAC,EAAE,CAAC;wCACZ,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;oCACtD,CAAC;oCACD,IAAI,CAAC;wCACJ,MAAM,8BAA8B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oCAC3D,CAAC;oCAAC,OAAO,CAAC,EAAE,CAAC;wCACZ,OAAO,CAAC,KAAK,CACZ,yDAAyD,EACzD,CAAC,CACD,CAAC;oCACH,CAAC;oCACD,OAAO,EAAE,CAAC;gCACX,CAAC,CAAC,CAAC;4BACJ,CAAC;4BAAC,OAAO,KAAU,EAAE,CAAC;gCACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,CACN,gCAAgC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CACzD,CAAC;4BACH,CAAC;wBACF,CAAC;6BAAM,CAAC;4BACP,IAAI,EAAE,CAAC;wBACR,CAAC;oBACF,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;wBAC/C,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;4BACpB,KAAK,MAAM,CAAC,CAAC,CAAC;gCACb,IAAI,MAAM,YAAY,OAAO,KAAK,KAAK,EAAE,CAAC;oCACzC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;oCACtD,OAAO;gCACR,CAAC;gCACD,IAAI,SAA+B,CAAC;gCACpC,IAAI,CAAC;oCACJ,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oCACnD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;wCACtC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;oCAC9B,CAAC;gCACF,CAAC;gCAAC,MAAM,CAAC;oCACR,wEAAwE;gCACzE,CAAC;gCACD,MAAO,MAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gCAC/C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gCACV,MAAM;4BACP,CAAC;4BAED;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;wBACR,CAAC;oBACF,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC3C,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;4BACpB,KAAK,KAAK,CAAC,CAAC,CAAC;gCACZ,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCAC3C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gCACV,MAAM;4BACP,CAAC;4BACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gCACf,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCAC9D,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gCACnC,GAAG,CAAC,GAAG,EAAE,CAAC;gCACV,MAAM;4BACP,CAAC;4BACD;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;wBACR,CAAC;oBACF,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC7C,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;4BACpB,KAAK,MAAM;gCACV,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gCACV,OAAO,EAAE,CAAC;gCACV,MAAM;4BAEP;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;wBACR,CAAC;oBACF,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACzC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;4BAC1B,IAAI,CAAC;gCACJ,6CAA6C;gCAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;gCAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gCAEjD,6EAA6E;gCAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;gCAExD,8BAA8B;gCAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oCACjC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;oCACrD,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;oCAC/B,OAAO;gCACR,CAAC;gCAED,6BAA6B;gCAC7B,IAAI,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gCAEtD,4EAA4E;gCAC5E,IAAI,WAAW,EAAE,CAAC;oCACjB,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;oCACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wCACxB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wCACrC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oCACzC,CAAC;gCACF,CAAC;gCAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gCACrD,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;4BACrB,CAAC;4BAAC,OAAO,KAAU,EAAE,CAAC;gCACrB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;gCACjD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gCACrD,GAAG,CAAC,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;4BAChD,CAAC;wBACF,CAAC;oBACF,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC1C,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;4BACpB,KAAK,MAAM;gCACV,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gCACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gCAChB,MAAM;4BAEP;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;wBACR,CAAC;oBACF,CAAC,CAAC;;;;;;;;;;;yBAWG;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC/C,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;4BAC1B,IAAI,CAAC;gCACJ,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gCACnD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAChC,CAAC,MAAM,CAAC;gCACT,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,UAAU,CACjC,CAAC,MAAM,CAAC;gCACT,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gCAE/C,MAAM,OAAO,GAAG;oCACf,WAAW,EAAE;wCACZ,KAAK,EAAE,WAAW,CAAC,MAAM;wCACzB,OAAO;wCACP,QAAQ;qCACR;oCACD,SAAS,EAAE;wCACV,OAAO,EAAE,SAAS,CAAC,MAAM;qCACzB;iCACD,CAAC;gCACF,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gCAClD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;4BAClC,CAAC;4BAAC,OAAO,KAAU,EAAE,CAAC;gCACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,yBAAyB,CAAC,CAAC;4BACtD,CAAC;wBACF,CAAC;6BAAM,CAAC;4BACP,IAAI,EAAE,CAAC;wBACR,CAAC;oBACF,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;wBAC1D,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;wBACjD,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;wBAC3C,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;wBAClD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;oBACzC,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC7C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACnC,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC7C,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;wBAClD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBAEnB,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAClE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACP,IAAI,EAAE,CAAC;oBACR,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,IAAI,EAAE,CAAC;gBACR,CAAC;YACF,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC9B,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC7B,CAAC;QACF,CAAC,CAAC;IACH,CAAC,CAAC;IAEF,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC,iDAAiD;IACtF,OAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC,iDAAiD;IAE9F,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACxB,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YACxB,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,cAAa,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC;AACf,CAAC,CAAC"}
@@ -1,6 +1,80 @@
1
1
  import { type Ed25519PublicKey, type Identity, type PublicSignKey } from "@peerbit/crypto";
2
2
  import type http from "http";
3
- export declare const signRequest: (headers: Record<string, string>, method: string, path: string, data: string | undefined, keypair: Identity<Ed25519PublicKey>) => Promise<void>;
4
- export declare const getBody: (req: http.IncomingMessage) => Promise<string>;
5
- export declare const verifyRequest: (headers: Record<string, string | string[] | undefined>, method: string, path: string, body?: string) => Promise<PublicSignKey>;
3
+ export declare const SIGNED_REQUEST_VERSION = "2";
4
+ export declare const SIGNATURE_KEY = "X-Peerbit-Signature";
5
+ export declare const SIGNATURE_VERSION_KEY = "X-Peerbit-Signature-Version";
6
+ export declare const SIGNATURE_TIME_KEY = "X-Peerbit-Signature-Time";
7
+ export declare const SIGNATURE_NONCE_KEY = "X-Peerbit-Signature-Nonce";
8
+ export declare const SIGNATURE_SERVER_KEY = "X-Peerbit-Signature-Server";
9
+ export declare const SIGNATURE_BOOT_KEY = "X-Peerbit-Signature-Boot";
10
+ export declare const SIGNED_CONTENT_LENGTH_KEY = "X-Peerbit-Content-Length";
11
+ export declare const SIGNED_CONTENT_SHA256_KEY = "X-Peerbit-Content-SHA256";
12
+ export declare const DEFAULT_MAX_SIGNED_BODY_BYTES: number;
13
+ export declare class SignedRequestError extends Error {
14
+ }
15
+ export declare class ReplayRequestError extends SignedRequestError {
16
+ }
17
+ export declare class ReplayCapacityError extends SignedRequestError {
18
+ }
19
+ export declare class RequestBodyTooLargeError extends SignedRequestError {
20
+ }
21
+ export interface RequestAudience {
22
+ serverPeerId: string;
23
+ bootId: string;
24
+ }
25
+ export interface AuthDescriptor extends RequestAudience {
26
+ version: typeof SIGNED_REQUEST_VERSION;
27
+ serverTime: string;
28
+ signature: string;
29
+ }
30
+ export interface VerifiedRequest {
31
+ publicKey: PublicSignKey;
32
+ bodyLength: number;
33
+ bodyHash: Uint8Array;
34
+ nonce: string;
35
+ timestamp: bigint;
36
+ }
37
+ export interface VerifyAuthDescriptorOptions {
38
+ nowMs?: number;
39
+ maxPastAgeSeconds?: number;
40
+ maxFutureSkewSeconds?: number;
41
+ }
42
+ export interface RequestAuthenticatorOptions extends RequestAudience {
43
+ isTrusted: (key: PublicSignKey) => boolean;
44
+ maxPastAgeSeconds?: number;
45
+ maxFutureSkewSeconds?: number;
46
+ maxBodyBytes?: number;
47
+ maxReplayEntries?: number;
48
+ wallClockMs?: () => number;
49
+ monotonicClockMs?: () => number;
50
+ }
51
+ export declare const createAuthDescriptor: (identity: Identity<Ed25519PublicKey>, audience: RequestAudience, nowMs?: number) => Promise<AuthDescriptor>;
52
+ export declare const verifyAuthDescriptor: (value: unknown, expectedServerPeerId: string, options?: VerifyAuthDescriptorOptions) => Promise<AuthDescriptor>;
53
+ export declare const signRequest: (headers: Record<string, string>, method: string, target: string, data: string | Uint8Array | undefined, keypair: Identity<Ed25519PublicKey>, audience: RequestAudience, options?: {
54
+ nowMs?: number;
55
+ nonce?: Uint8Array;
56
+ }) => Promise<void>;
57
+ export declare class RequestAuthenticator {
58
+ readonly options: RequestAuthenticatorOptions;
59
+ readonly maxBodyBytes: number;
60
+ private readonly maxPastAgeSeconds;
61
+ private readonly maxFutureSkewSeconds;
62
+ private readonly maxReplayEntries;
63
+ private readonly wallClockMs;
64
+ private readonly monotonicClockMs;
65
+ private readonly replays;
66
+ private lastWallSeconds?;
67
+ constructor(options: RequestAuthenticatorOptions);
68
+ private effectiveWallSeconds;
69
+ private precheckReplay;
70
+ private consumeReplay;
71
+ /**
72
+ * Atomically consume a verified nonce immediately before dispatch. Call this
73
+ * only after the exact request body has passed verifyRequestBody().
74
+ */
75
+ consume(verified: VerifiedRequest): void;
76
+ verify(headers: Record<string, string | string[] | undefined>, method: string, target: string): Promise<VerifiedRequest>;
77
+ }
78
+ export declare const getBody: (req: http.IncomingMessage, maxBytes?: number) => Promise<Uint8Array>;
79
+ export declare const verifyRequestBody: (verified: VerifiedRequest, body: Uint8Array) => string;
6
80
  //# sourceMappingURL=signed-request.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signed-request.d.ts","sourceRoot":"","sources":["../../src/signed-request.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,aAAa,EAKlB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAK7B,eAAO,MAAM,WAAW,GACvB,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,QAAQ,MAAM,EACd,MAAM,MAAM,EACZ,MAAM,MAAM,GAAG,SAAS,EACxB,SAAS,QAAQ,CAAC,gBAAgB,CAAC,kBAiBnC,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,IAAI,CAAC,eAAe,KAAG,OAAO,CAAC,MAAM,CAWjE,CAAC;AAEF,eAAO,MAAM,aAAa,GACzB,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EACtD,QAAQ,MAAM,EACd,MAAM,MAAM,EACZ,aAAS,KACP,OAAO,CAAC,aAAa,CA0BvB,CAAC"}
1
+ {"version":3,"file":"signed-request.d.ts","sourceRoot":"","sources":["../../src/signed-request.ts"],"names":[],"mappings":"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"}