@rsc-kit/core 0.1.0

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 (200) hide show
  1. package/README.md +95 -0
  2. package/SECURITY.md +60 -0
  3. package/dist/action.d.ts +90 -0
  4. package/dist/action.d.ts.map +1 -0
  5. package/dist/action.js +137 -0
  6. package/dist/action.js.map +1 -0
  7. package/dist/build-rsc-vite.d.ts +39 -0
  8. package/dist/build-rsc-vite.d.ts.map +1 -0
  9. package/dist/build-rsc-vite.js +172 -0
  10. package/dist/build-rsc-vite.js.map +1 -0
  11. package/dist/cache.d.ts +25 -0
  12. package/dist/cache.d.ts.map +1 -0
  13. package/dist/cache.js +108 -0
  14. package/dist/cache.js.map +1 -0
  15. package/dist/cli.d.ts +2 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +85 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/compile.d.ts +55 -0
  20. package/dist/compile.d.ts.map +1 -0
  21. package/dist/compile.js +141 -0
  22. package/dist/compile.js.map +1 -0
  23. package/dist/devServer.d.ts +18 -0
  24. package/dist/devServer.d.ts.map +1 -0
  25. package/dist/devServer.js +70 -0
  26. package/dist/devServer.js.map +1 -0
  27. package/dist/devUrls.d.ts +11 -0
  28. package/dist/devUrls.d.ts.map +1 -0
  29. package/dist/devUrls.js +68 -0
  30. package/dist/devUrls.js.map +1 -0
  31. package/dist/embed.d.ts +21 -0
  32. package/dist/embed.d.ts.map +1 -0
  33. package/dist/embed.js +119 -0
  34. package/dist/embed.js.map +1 -0
  35. package/dist/errors.d.ts +24 -0
  36. package/dist/errors.d.ts.map +1 -0
  37. package/dist/errors.js +38 -0
  38. package/dist/errors.js.map +1 -0
  39. package/dist/export.d.ts +41 -0
  40. package/dist/export.d.ts.map +1 -0
  41. package/dist/export.js +100 -0
  42. package/dist/export.js.map +1 -0
  43. package/dist/files.d.ts +39 -0
  44. package/dist/files.d.ts.map +1 -0
  45. package/dist/files.js +146 -0
  46. package/dist/files.js.map +1 -0
  47. package/dist/headers.d.ts +81 -0
  48. package/dist/headers.d.ts.map +1 -0
  49. package/dist/headers.js +96 -0
  50. package/dist/headers.js.map +1 -0
  51. package/dist/host.d.ts +86 -0
  52. package/dist/host.d.ts.map +1 -0
  53. package/dist/host.js +590 -0
  54. package/dist/host.js.map +1 -0
  55. package/dist/js/ActivityRouter.d.ts +47 -0
  56. package/dist/js/ActivityRouter.d.ts.map +1 -0
  57. package/dist/js/ActivityRouter.js +87 -0
  58. package/dist/js/ActivityRouter.js.map +1 -0
  59. package/dist/js/DocumentTitle.d.ts +22 -0
  60. package/dist/js/DocumentTitle.d.ts.map +1 -0
  61. package/dist/js/DocumentTitle.js +28 -0
  62. package/dist/js/DocumentTitle.js.map +1 -0
  63. package/dist/js/Form.d.ts +54 -0
  64. package/dist/js/Form.d.ts.map +1 -0
  65. package/dist/js/Form.js +225 -0
  66. package/dist/js/Form.js.map +1 -0
  67. package/dist/js/Link.d.ts +29 -0
  68. package/dist/js/Link.d.ts.map +1 -0
  69. package/dist/js/Link.js +112 -0
  70. package/dist/js/Link.js.map +1 -0
  71. package/dist/js/PathnameProvider.d.ts +8 -0
  72. package/dist/js/PathnameProvider.d.ts.map +1 -0
  73. package/dist/js/PathnameProvider.js +24 -0
  74. package/dist/js/PathnameProvider.js.map +1 -0
  75. package/dist/js/RedirectBoundary.d.ts +18 -0
  76. package/dist/js/RedirectBoundary.d.ts.map +1 -0
  77. package/dist/js/RedirectBoundary.js +34 -0
  78. package/dist/js/RedirectBoundary.js.map +1 -0
  79. package/dist/js/SegmentBoundary.d.ts +8 -0
  80. package/dist/js/SegmentBoundary.d.ts.map +1 -0
  81. package/dist/js/SegmentBoundary.js +38 -0
  82. package/dist/js/SegmentBoundary.js.map +1 -0
  83. package/dist/js/SlotBoundary.d.ts +15 -0
  84. package/dist/js/SlotBoundary.d.ts.map +1 -0
  85. package/dist/js/SlotBoundary.js +17 -0
  86. package/dist/js/SlotBoundary.js.map +1 -0
  87. package/dist/js/createViteRscApp.d.ts +8 -0
  88. package/dist/js/createViteRscApp.d.ts.map +1 -0
  89. package/dist/js/createViteRscApp.js +185 -0
  90. package/dist/js/createViteRscApp.js.map +1 -0
  91. package/dist/js/errors.d.ts +51 -0
  92. package/dist/js/errors.d.ts.map +1 -0
  93. package/dist/js/errors.js +93 -0
  94. package/dist/js/errors.js.map +1 -0
  95. package/dist/js/navigate.d.ts +118 -0
  96. package/dist/js/navigate.d.ts.map +1 -0
  97. package/dist/js/navigate.js +780 -0
  98. package/dist/js/navigate.js.map +1 -0
  99. package/dist/js/onlineStore.d.ts +23 -0
  100. package/dist/js/onlineStore.d.ts.map +1 -0
  101. package/dist/js/onlineStore.js +42 -0
  102. package/dist/js/onlineStore.js.map +1 -0
  103. package/dist/js/pagePayload.d.ts +15 -0
  104. package/dist/js/pagePayload.d.ts.map +1 -0
  105. package/dist/js/pagePayload.js +39 -0
  106. package/dist/js/pagePayload.js.map +1 -0
  107. package/dist/js/router.d.ts +29 -0
  108. package/dist/js/router.d.ts.map +1 -0
  109. package/dist/js/router.js +40 -0
  110. package/dist/js/router.js.map +1 -0
  111. package/dist/js/section.d.ts +16 -0
  112. package/dist/js/section.d.ts.map +1 -0
  113. package/dist/js/section.js +55 -0
  114. package/dist/js/section.js.map +1 -0
  115. package/dist/js/segmentStore.d.ts +69 -0
  116. package/dist/js/segmentStore.d.ts.map +1 -0
  117. package/dist/js/segmentStore.js +127 -0
  118. package/dist/js/segmentStore.js.map +1 -0
  119. package/dist/js/slotStore.d.ts +35 -0
  120. package/dist/js/slotStore.d.ts.map +1 -0
  121. package/dist/js/slotStore.js +46 -0
  122. package/dist/js/slotStore.js.map +1 -0
  123. package/dist/js/standardSchema.d.ts +47 -0
  124. package/dist/js/standardSchema.d.ts.map +1 -0
  125. package/dist/js/standardSchema.js +41 -0
  126. package/dist/js/standardSchema.js.map +1 -0
  127. package/dist/js/useForm.d.ts +43 -0
  128. package/dist/js/useForm.d.ts.map +1 -0
  129. package/dist/js/useForm.js +164 -0
  130. package/dist/js/useForm.js.map +1 -0
  131. package/dist/js/useLinkStatus.d.ts +2 -0
  132. package/dist/js/useLinkStatus.d.ts.map +1 -0
  133. package/dist/js/useLinkStatus.js +3 -0
  134. package/dist/js/useLinkStatus.js.map +1 -0
  135. package/dist/js/useOnline.d.ts +8 -0
  136. package/dist/js/useOnline.d.ts.map +1 -0
  137. package/dist/js/useOnline.js +20 -0
  138. package/dist/js/useOnline.js.map +1 -0
  139. package/dist/js/usePathname.d.ts +9 -0
  140. package/dist/js/usePathname.d.ts.map +1 -0
  141. package/dist/js/usePathname.js +32 -0
  142. package/dist/js/usePathname.js.map +1 -0
  143. package/dist/js/useSearchParams.d.ts +2 -0
  144. package/dist/js/useSearchParams.d.ts.map +1 -0
  145. package/dist/js/useSearchParams.js +60 -0
  146. package/dist/js/useSearchParams.js.map +1 -0
  147. package/dist/manifest.d.ts +66 -0
  148. package/dist/manifest.d.ts.map +1 -0
  149. package/dist/manifest.js +13 -0
  150. package/dist/manifest.js.map +1 -0
  151. package/dist/prerender.d.ts +138 -0
  152. package/dist/prerender.d.ts.map +1 -0
  153. package/dist/prerender.js +387 -0
  154. package/dist/prerender.js.map +1 -0
  155. package/dist/redirect.d.ts +34 -0
  156. package/dist/redirect.d.ts.map +1 -0
  157. package/dist/redirect.js +108 -0
  158. package/dist/redirect.js.map +1 -0
  159. package/dist/redirectDigest.d.ts +20 -0
  160. package/dist/redirectDigest.d.ts.map +1 -0
  161. package/dist/redirectDigest.js +66 -0
  162. package/dist/redirectDigest.js.map +1 -0
  163. package/dist/request.d.ts +93 -0
  164. package/dist/request.d.ts.map +1 -0
  165. package/dist/request.js +308 -0
  166. package/dist/request.js.map +1 -0
  167. package/dist/revalidate.d.ts +43 -0
  168. package/dist/revalidate.d.ts.map +1 -0
  169. package/dist/revalidate.js +99 -0
  170. package/dist/revalidate.js.map +1 -0
  171. package/dist/routes.d.ts +37 -0
  172. package/dist/routes.d.ts.map +1 -0
  173. package/dist/routes.js +28 -0
  174. package/dist/routes.js.map +1 -0
  175. package/dist/routing.d.ts +52 -0
  176. package/dist/routing.d.ts.map +1 -0
  177. package/dist/routing.js +146 -0
  178. package/dist/routing.js.map +1 -0
  179. package/dist/runtime.d.ts +36 -0
  180. package/dist/runtime.d.ts.map +1 -0
  181. package/dist/runtime.js +86 -0
  182. package/dist/runtime.js.map +1 -0
  183. package/dist/safeUrl.d.ts +10 -0
  184. package/dist/safeUrl.d.ts.map +1 -0
  185. package/dist/safeUrl.js +40 -0
  186. package/dist/safeUrl.js.map +1 -0
  187. package/dist/streaming.d.ts +62 -0
  188. package/dist/streaming.d.ts.map +1 -0
  189. package/dist/streaming.js +108 -0
  190. package/dist/streaming.js.map +1 -0
  191. package/dist/types.d.ts +82 -0
  192. package/dist/vite.d.ts +109 -0
  193. package/dist/vite.d.ts.map +1 -0
  194. package/dist/vite.js +1909 -0
  195. package/dist/vite.js.map +1 -0
  196. package/dist/worker.d.ts +2 -0
  197. package/dist/worker.d.ts.map +1 -0
  198. package/dist/worker.js +863 -0
  199. package/dist/worker.js.map +1 -0
  200. package/package.json +223 -0
@@ -0,0 +1,96 @@
1
+ // The wire protocol, as names rather than string literals.
2
+ //
3
+ // A host writing these out by hand is how they drift. Two of them are not
4
+ // negotiable at all — the client sends them or asks for them at fixed
5
+ // addresses, and a host that spells one differently fails silently: the
6
+ // request falls through, the decoder never runs, and a button does nothing
7
+ // with no error on either side.
8
+ //
9
+ // PROTOCOL.md describes what each one means. This is the same list, importable.
10
+ export const HEADER = {
11
+ /**
12
+ * Present on a request for a Flight payload rather than the document. One
13
+ * url serves both, which is why every answer must Vary on it.
14
+ */
15
+ rsc: 'X-RSC',
16
+ /** The layout chain the client has mounted, outermost first, comma-separated. */
17
+ segments: 'X-RSC-Segments',
18
+ /** The boundary the answer replaces. 0 means a whole document. */
19
+ segmentDepth: 'X-RSC-Segment-Depth',
20
+ /** The chain to send back next time. */
21
+ layouts: 'X-RSC-Layouts',
22
+ /** Identifies the build, so a client can notice it is talking to an old one. */
23
+ version: 'X-RSC-Version',
24
+ /** The slot an intercepted navigation is targeting. */
25
+ intercept: 'X-RSC-Intercept',
26
+ /** Where the navigation or action came from. */
27
+ referer: 'X-RSC-Referer',
28
+ /** One named region of the current page to render and return alone. */
29
+ revalidate: 'X-RSC-Revalidate',
30
+ /** The server reference being invoked. */
31
+ action: 'X-RSC-Action',
32
+ /**
33
+ * Go here instead.
34
+ *
35
+ * Used for a redirect the client has to perform itself: a failed action, and
36
+ * a navigation whose render redirected. Never a 3xx for those — `fetch`
37
+ * follows one transparently, so the client would get the destination's HTML
38
+ * where it expected a Flight payload and decode it as one.
39
+ */
40
+ redirect: 'X-RSC-Redirect',
41
+ /**
42
+ * The body's real type.
43
+ *
44
+ * The body itself goes out as application/octet-stream so a host that parses
45
+ * multipart cannot consume it before the action does — reading Content-Type
46
+ * instead leaves an upload undecodable.
47
+ */
48
+ contentType: 'X-RSC-Content-Type',
49
+ /**
50
+ * Where the browser posts server actions.
51
+ *
52
+ * Not a convention this can choose: the client runtime posts here
53
+ * unconditionally.
54
+ */
55
+ actionPath: '/_rsc/action',
56
+ };
57
+ /** Flight payload. */
58
+ export const FLIGHT_TYPE = 'text/x-component; charset=utf-8';
59
+ /** A rendered document. */
60
+ export const HTML_TYPE = 'text/html; charset=utf-8';
61
+ /**
62
+ * Every request header that changes what a response body contains.
63
+ *
64
+ * One url answers with a whole document, a partial payload, a named region or
65
+ * an interceptor depending on these — so a cache keyed on the url alone, or on
66
+ * `X-RSC` alone, will hand one client another's answer. They are materially
67
+ * different bodies, not variations in presentation.
68
+ */
69
+ export const VARY_ON_RSC = [
70
+ HEADER.rsc,
71
+ HEADER.segments,
72
+ HEADER.revalidate,
73
+ HEADER.intercept,
74
+ HEADER.referer,
75
+ ].join(', ');
76
+ /**
77
+ * What a response says about being stored, when it must not be.
78
+ *
79
+ * `Vary` alone is not enough on the platform this targets. Cloudflare ignores
80
+ * `Vary` for everything except `Accept-Encoding`, and this package ships a
81
+ * Workers story as a headline feature — so one url answering with a document,
82
+ * a Flight payload, a segment and an interceptor, keyed only on the url, hands
83
+ * one visitor another's body. Anything narrowed by a request header, and
84
+ * anything behind a guard, says outright that it is not to be stored.
85
+ */
86
+ export const PER_CLIENT = 'private, no-store';
87
+ /**
88
+ * And what a frozen, unguarded page says.
89
+ *
90
+ * Explicit rather than absent: with no directive at all, whether an
91
+ * intermediary stores it comes down to that intermediary's heuristics, which
92
+ * is not a decision this package should be leaving to chance in either
93
+ * direction.
94
+ */
95
+ export const REVALIDATE = 'public, max-age=0, must-revalidate';
96
+ //# sourceMappingURL=headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../src/headers.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AACtE,wEAAwE;AACxE,2EAA2E;AAC3E,gCAAgC;AAChC,EAAE;AACF,gFAAgF;AAEhF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB;;;OAGG;IACH,GAAG,EAAE,OAAO;IAEZ,iFAAiF;IACjF,QAAQ,EAAE,gBAAgB;IAE1B,kEAAkE;IAClE,YAAY,EAAE,qBAAqB;IAEnC,wCAAwC;IACxC,OAAO,EAAE,eAAe;IAExB,gFAAgF;IAChF,OAAO,EAAE,eAAe;IAExB,uDAAuD;IACvD,SAAS,EAAE,iBAAiB;IAE5B,gDAAgD;IAChD,OAAO,EAAE,eAAe;IAExB,uEAAuE;IACvE,UAAU,EAAE,kBAAkB;IAE9B,0CAA0C;IAC1C,MAAM,EAAE,cAAc;IAEtB;;;;;;;OAOG;IACH,QAAQ,EAAE,gBAAgB;IAE1B;;;;;;OAMG;IACH,WAAW,EAAE,oBAAoB;IAEjC;;;;;OAKG;IACH,UAAU,EAAE,cAAc;CAClB,CAAA;AAEV,sBAAsB;AACtB,MAAM,CAAC,MAAM,WAAW,GAAG,iCAAiC,CAAA;AAE5D,2BAA2B;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,0BAA0B,CAAA;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,CAAC,GAAG;IACV,MAAM,CAAC,QAAQ;IACf,MAAM,CAAC,UAAU;IACjB,MAAM,CAAC,SAAS;IAChB,MAAM,CAAC,OAAO;CACf,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAA;AAE7C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,oCAAoC,CAAA"}
package/dist/host.d.ts ADDED
@@ -0,0 +1,86 @@
1
+ export { revalidate } from './revalidate.js';
2
+ export { redirect } from './redirect.js';
3
+ export { matchIntercept, matchRoute, sharedDepth } from './routing.js';
4
+ export type { MatchedRoute } from './routing.js';
5
+ import type { MatchedRoute } from './routing.js';
6
+ import type { RouteManifest } from './manifest.js';
7
+ /** The built server bundle. Only the parts a host calls. */
8
+ export interface RscEngine {
9
+ /** The route table this bundle was built from. */
10
+ manifest?(): RouteManifest;
11
+ installHostFn(fn: (name: string, ...args: unknown[]) => unknown): void;
12
+ handleRscStream(component: string, props?: Record<string, unknown>, layouts?: {
13
+ component: string;
14
+ props: Record<string, unknown>;
15
+ }[], loadings?: string[], parallelSlots?: Record<string, string>, slotOverrides?: Record<string, unknown>, from?: number, pageKey?: string): Promise<{
16
+ stream: ReadableStream;
17
+ segmentDepth: number;
18
+ }>;
19
+ handleRscHtmlStream(component: string, props?: Record<string, unknown>, layouts?: {
20
+ component: string;
21
+ props: Record<string, unknown>;
22
+ }[], loadings?: string[], parallelSlots?: Record<string, string>, slotOverrides?: Record<string, unknown>, nonce?: string, pageKey?: string, bootstrap?: boolean): Promise<{
23
+ htmlStream: ReadableStream;
24
+ }>;
25
+ handleRscRevalidate?(target: string, page: unknown): Promise<{
26
+ rscPayload: string;
27
+ }>;
28
+ /**
29
+ * Run a route's middleware without rendering anything.
30
+ *
31
+ * For a frozen page: the host reads it from disk and the engine never sees
32
+ * the request, so the check has to be asked for separately.
33
+ */
34
+ runRouteMiddleware?(component: string, props: Record<string, unknown>): Promise<void>;
35
+ handleAction(actionId: string, body: Uint8Array | string | FormData, contentType?: string, page?: unknown, takeRevalidated?: () => string[]): Promise<{
36
+ stream: ReadableStream;
37
+ }>;
38
+ }
39
+ export interface RscHostOptions {
40
+ /** The built server bundle — `import * as engine from './build/rsc/index.js'`. */
41
+ engine: RscEngine;
42
+ /**
43
+ * The route table. Defaults to the one the bundle was built with, which is
44
+ * almost always what you want — a manifest passed separately can go stale
45
+ * against the bundle it is describing.
46
+ */
47
+ manifest?: RouteManifest;
48
+ /**
49
+ * Functions the app's server components call as `await rpc('name', ...args)`.
50
+ *
51
+ * In the Laravel host this crosses a socket into PHP. Here they are just
52
+ * functions, which is the whole reason a JS host is smaller.
53
+ */
54
+ rpc?: Record<string, (...args: unknown[]) => unknown>;
55
+ /**
56
+ * Props for a page, given whatever its url bound.
57
+ *
58
+ * Defaults to the url params alone. A host that loads a user, reads a
59
+ * session or resolves a tenant does it here — this is the one place the
60
+ * engine cannot supply anything for.
61
+ */
62
+ props?: (match: MatchedRoute, request: Request) => Record<string, unknown> | Promise<Record<string, unknown>>;
63
+ /**
64
+ * Reads what the prerenderer wrote, if this build has any.
65
+ *
66
+ * A function rather than a directory, because not every host has a
67
+ * filesystem: on an edge runtime these live in a KV store or a static-asset
68
+ * binding. `prerenderedFrom` in `@rsc-kit/core/files` is the one for a disk.
69
+ *
70
+ * Checked before rendering, and anything it cannot find falls through to
71
+ * being rendered now — so a partial prerender is a valid state, not a
72
+ * broken one.
73
+ */
74
+ prerendered?: (name: string) => Promise<string | null> | string | null;
75
+ /** Serve a built browser asset. Return null for anything not found. */
76
+ assets?: (pathname: string, request: Request) => Promise<Response | null> | Response | null;
77
+ /**
78
+ * Identifies this build to the client, which compares it on every
79
+ * navigation and falls back to a full load when it changes. Without one a
80
+ * client keeps talking to a deployment that no longer exists — worst behind
81
+ * a CDN, where the shell it holds may already be from an older build.
82
+ */
83
+ version?: string;
84
+ }
85
+ export declare function createRscHandler(options: RscHostOptions): (request: Request) => Promise<Response | null>;
86
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAK5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAIxC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACtE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,4DAA4D;AAC5D,MAAM,WAAW,SAAS;IACxB,kDAAkD;IAClD,QAAQ,CAAC,IAAI,aAAa,CAAA;IAC1B,aAAa,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,IAAI,CAAA;IACtE,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,EACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,MAAM,EAAE,cAAc,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC5D,mBAAmB,CACjB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,EACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC;QAAE,UAAU,EAAE,cAAc,CAAA;KAAE,CAAC,CAAA;IAC1C,mBAAmB,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpF;;;;;OAKG;IACH,kBAAkB,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrF,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,EACpC,WAAW,CAAC,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,OAAO,EACd,eAAe,CAAC,EAAE,MAAM,MAAM,EAAE,GAC/B,OAAO,CAAC;QAAE,MAAM,EAAE,cAAc,CAAA;KAAE,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,MAAM,EAAE,SAAS,CAAA;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAA;IACrD;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC7G;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAA;IACtE,uEAAuE;IACvE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAA;IAC3F;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAkGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA0lBxG"}