devflare 0.0.0 → 1.0.0-next.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 (198) hide show
  1. package/README.md +737 -1
  2. package/bin/devflare.js +14 -0
  3. package/dist/account-rvrj687w.js +397 -0
  4. package/dist/ai-dx4fr9jh.js +107 -0
  5. package/dist/bridge/client.d.ts +82 -0
  6. package/dist/bridge/client.d.ts.map +1 -0
  7. package/dist/bridge/index.d.ts +7 -0
  8. package/dist/bridge/index.d.ts.map +1 -0
  9. package/dist/bridge/miniflare.d.ts +70 -0
  10. package/dist/bridge/miniflare.d.ts.map +1 -0
  11. package/dist/bridge/protocol.d.ts +146 -0
  12. package/dist/bridge/protocol.d.ts.map +1 -0
  13. package/dist/bridge/proxy.d.ts +49 -0
  14. package/dist/bridge/proxy.d.ts.map +1 -0
  15. package/dist/bridge/serialization.d.ts +83 -0
  16. package/dist/bridge/serialization.d.ts.map +1 -0
  17. package/dist/bridge/server.d.ts +8 -0
  18. package/dist/bridge/server.d.ts.map +1 -0
  19. package/dist/browser-shim/binding-worker.d.ts +7 -0
  20. package/dist/browser-shim/binding-worker.d.ts.map +1 -0
  21. package/dist/browser-shim/handler.d.ts +21 -0
  22. package/dist/browser-shim/handler.d.ts.map +1 -0
  23. package/dist/browser-shim/index.d.ts +3 -0
  24. package/dist/browser-shim/index.d.ts.map +1 -0
  25. package/dist/browser-shim/server.d.ts +25 -0
  26. package/dist/browser-shim/server.d.ts.map +1 -0
  27. package/dist/browser-shim/worker.d.ts +14 -0
  28. package/dist/browser-shim/worker.d.ts.map +1 -0
  29. package/dist/build-mnf6v8gd.js +53 -0
  30. package/dist/bundler/do-bundler.d.ts +42 -0
  31. package/dist/bundler/do-bundler.d.ts.map +1 -0
  32. package/dist/bundler/index.d.ts +2 -0
  33. package/dist/bundler/index.d.ts.map +1 -0
  34. package/dist/cli/bin.d.ts +3 -0
  35. package/dist/cli/bin.d.ts.map +1 -0
  36. package/dist/cli/colors.d.ts +11 -0
  37. package/dist/cli/colors.d.ts.map +1 -0
  38. package/dist/cli/commands/account.d.ts +4 -0
  39. package/dist/cli/commands/account.d.ts.map +1 -0
  40. package/dist/cli/commands/ai.d.ts +3 -0
  41. package/dist/cli/commands/ai.d.ts.map +1 -0
  42. package/dist/cli/commands/build.d.ts +4 -0
  43. package/dist/cli/commands/build.d.ts.map +1 -0
  44. package/dist/cli/commands/deploy.d.ts +4 -0
  45. package/dist/cli/commands/deploy.d.ts.map +1 -0
  46. package/dist/cli/commands/dev.d.ts +4 -0
  47. package/dist/cli/commands/dev.d.ts.map +1 -0
  48. package/dist/cli/commands/doctor.d.ts +4 -0
  49. package/dist/cli/commands/doctor.d.ts.map +1 -0
  50. package/dist/cli/commands/init.d.ts +4 -0
  51. package/dist/cli/commands/init.d.ts.map +1 -0
  52. package/dist/cli/commands/remote.d.ts +4 -0
  53. package/dist/cli/commands/remote.d.ts.map +1 -0
  54. package/dist/cli/commands/types.d.ts +4 -0
  55. package/dist/cli/commands/types.d.ts.map +1 -0
  56. package/dist/cli/dependencies.d.ts +90 -0
  57. package/dist/cli/dependencies.d.ts.map +1 -0
  58. package/dist/cli/index.d.ts +23 -0
  59. package/dist/cli/index.d.ts.map +1 -0
  60. package/dist/cli/wrangler-auth.d.ts +36 -0
  61. package/dist/cli/wrangler-auth.d.ts.map +1 -0
  62. package/dist/cloudflare/account.d.ts +65 -0
  63. package/dist/cloudflare/account.d.ts.map +1 -0
  64. package/dist/cloudflare/api.d.ts +51 -0
  65. package/dist/cloudflare/api.d.ts.map +1 -0
  66. package/dist/cloudflare/auth.d.ts +35 -0
  67. package/dist/cloudflare/auth.d.ts.map +1 -0
  68. package/dist/cloudflare/index.d.ts +107 -0
  69. package/dist/cloudflare/index.d.ts.map +1 -0
  70. package/dist/cloudflare/index.js +13 -0
  71. package/dist/cloudflare/preferences.d.ts +46 -0
  72. package/dist/cloudflare/preferences.d.ts.map +1 -0
  73. package/dist/cloudflare/pricing.d.ts +15 -0
  74. package/dist/cloudflare/pricing.d.ts.map +1 -0
  75. package/dist/cloudflare/remote-config.d.ts +37 -0
  76. package/dist/cloudflare/remote-config.d.ts.map +1 -0
  77. package/dist/cloudflare/types.d.ts +161 -0
  78. package/dist/cloudflare/types.d.ts.map +1 -0
  79. package/dist/cloudflare/usage.d.ts +77 -0
  80. package/dist/cloudflare/usage.d.ts.map +1 -0
  81. package/dist/config/compiler.d.ts +146 -0
  82. package/dist/config/compiler.d.ts.map +1 -0
  83. package/dist/config/define.d.ts +44 -0
  84. package/dist/config/define.d.ts.map +1 -0
  85. package/dist/config/index.d.ts +6 -0
  86. package/dist/config/index.d.ts.map +1 -0
  87. package/dist/config/loader.d.ts +52 -0
  88. package/dist/config/loader.d.ts.map +1 -0
  89. package/dist/config/ref.d.ts +160 -0
  90. package/dist/config/ref.d.ts.map +1 -0
  91. package/dist/config/schema.d.ts +3318 -0
  92. package/dist/config/schema.d.ts.map +1 -0
  93. package/dist/decorators/durable-object.d.ts +59 -0
  94. package/dist/decorators/durable-object.d.ts.map +1 -0
  95. package/dist/decorators/index.d.ts +3 -0
  96. package/dist/decorators/index.d.ts.map +1 -0
  97. package/dist/decorators/index.js +9 -0
  98. package/dist/deploy-nhceck39.js +70 -0
  99. package/dist/dev-qnxet3j9.js +2096 -0
  100. package/dist/dev-server/index.d.ts +2 -0
  101. package/dist/dev-server/index.d.ts.map +1 -0
  102. package/dist/dev-server/server.d.ts +30 -0
  103. package/dist/dev-server/server.d.ts.map +1 -0
  104. package/dist/doctor-e8fy6fj5.js +186 -0
  105. package/dist/durable-object-t4kbb0yt.js +13 -0
  106. package/dist/env.d.ts +48 -0
  107. package/dist/env.d.ts.map +1 -0
  108. package/dist/index-07q6yxyc.js +168 -0
  109. package/dist/index-1xpj0m4r.js +57 -0
  110. package/dist/index-37x76zdn.js +4 -0
  111. package/dist/index-3t6rypgc.js +13 -0
  112. package/dist/index-67qcae0f.js +183 -0
  113. package/dist/index-a855bdsx.js +18 -0
  114. package/dist/index-d8bdkx2h.js +109 -0
  115. package/dist/index-ep3445yc.js +2225 -0
  116. package/dist/index-gz1gndna.js +307 -0
  117. package/dist/index-hcex3rgh.js +266 -0
  118. package/dist/index-m2q41jwa.js +462 -0
  119. package/dist/index-n7rs26ft.js +77 -0
  120. package/dist/index-pf5s73n9.js +1413 -0
  121. package/dist/index-rbht7m9r.js +36 -0
  122. package/dist/index-tfyxa77h.js +850 -0
  123. package/dist/index-tk6ej9dj.js +94 -0
  124. package/dist/index-z14anrqp.js +226 -0
  125. package/dist/index.d.ts +13 -0
  126. package/dist/index.d.ts.map +1 -0
  127. package/dist/index.js +298 -0
  128. package/dist/init-f9mgmew3.js +186 -0
  129. package/dist/remote-q59qk463.js +97 -0
  130. package/dist/runtime/context.d.ts +46 -0
  131. package/dist/runtime/context.d.ts.map +1 -0
  132. package/dist/runtime/exports.d.ts +118 -0
  133. package/dist/runtime/exports.d.ts.map +1 -0
  134. package/dist/runtime/index.d.ts +4 -0
  135. package/dist/runtime/index.d.ts.map +1 -0
  136. package/dist/runtime/index.js +111 -0
  137. package/dist/runtime/middleware.d.ts +82 -0
  138. package/dist/runtime/middleware.d.ts.map +1 -0
  139. package/dist/runtime/validation.d.ts +37 -0
  140. package/dist/runtime/validation.d.ts.map +1 -0
  141. package/dist/sveltekit/index.d.ts +2 -0
  142. package/dist/sveltekit/index.d.ts.map +1 -0
  143. package/dist/sveltekit/index.js +182 -0
  144. package/dist/sveltekit/platform.d.ts +141 -0
  145. package/dist/sveltekit/platform.d.ts.map +1 -0
  146. package/dist/test/bridge-context.d.ts +73 -0
  147. package/dist/test/bridge-context.d.ts.map +1 -0
  148. package/dist/test/cf.d.ts +130 -0
  149. package/dist/test/cf.d.ts.map +1 -0
  150. package/dist/test/email.d.ts +75 -0
  151. package/dist/test/email.d.ts.map +1 -0
  152. package/dist/test/index.d.ts +22 -0
  153. package/dist/test/index.d.ts.map +1 -0
  154. package/dist/test/index.js +71 -0
  155. package/dist/test/multi-worker-context.d.ts +114 -0
  156. package/dist/test/multi-worker-context.d.ts.map +1 -0
  157. package/dist/test/queue.d.ts +74 -0
  158. package/dist/test/queue.d.ts.map +1 -0
  159. package/dist/test/remote-ai.d.ts +6 -0
  160. package/dist/test/remote-ai.d.ts.map +1 -0
  161. package/dist/test/remote-vectorize.d.ts +6 -0
  162. package/dist/test/remote-vectorize.d.ts.map +1 -0
  163. package/dist/test/resolve-service-bindings.d.ts +68 -0
  164. package/dist/test/resolve-service-bindings.d.ts.map +1 -0
  165. package/dist/test/scheduled.d.ts +58 -0
  166. package/dist/test/scheduled.d.ts.map +1 -0
  167. package/dist/test/should-skip.d.ts +50 -0
  168. package/dist/test/should-skip.d.ts.map +1 -0
  169. package/dist/test/simple-context.d.ts +43 -0
  170. package/dist/test/simple-context.d.ts.map +1 -0
  171. package/dist/test/tail.d.ts +86 -0
  172. package/dist/test/tail.d.ts.map +1 -0
  173. package/dist/test/utilities.d.ts +99 -0
  174. package/dist/test/utilities.d.ts.map +1 -0
  175. package/dist/test/worker.d.ts +76 -0
  176. package/dist/test/worker.d.ts.map +1 -0
  177. package/dist/transform/durable-object.d.ts +46 -0
  178. package/dist/transform/durable-object.d.ts.map +1 -0
  179. package/dist/transform/index.d.ts +3 -0
  180. package/dist/transform/index.d.ts.map +1 -0
  181. package/dist/transform/worker-entrypoint.d.ts +66 -0
  182. package/dist/transform/worker-entrypoint.d.ts.map +1 -0
  183. package/dist/types-5nyrz1sz.js +454 -0
  184. package/dist/utils/entrypoint-discovery.d.ts +29 -0
  185. package/dist/utils/entrypoint-discovery.d.ts.map +1 -0
  186. package/dist/utils/glob.d.ts +33 -0
  187. package/dist/utils/glob.d.ts.map +1 -0
  188. package/dist/utils/resolve-package.d.ts +10 -0
  189. package/dist/utils/resolve-package.d.ts.map +1 -0
  190. package/dist/vite/index.d.ts +3 -0
  191. package/dist/vite/index.d.ts.map +1 -0
  192. package/dist/vite/index.js +339 -0
  193. package/dist/vite/plugin.d.ts +138 -0
  194. package/dist/vite/plugin.d.ts.map +1 -0
  195. package/dist/worker-entrypoint-m9th0rg0.js +13 -0
  196. package/dist/workerName.d.ts +17 -0
  197. package/dist/workerName.d.ts.map +1 -0
  198. package/package.json +111 -1
@@ -0,0 +1,160 @@
1
+ import type { DevflareConfigInput } from './schema';
2
+ import type { TypedConfig } from './define';
3
+ /**
4
+ * Extract entrypoint type from a TypedConfig
5
+ * Falls back to string if no type parameter was provided
6
+ */
7
+ type ExtractEntrypoints<TConfig> = TConfig extends TypedConfig<infer E> ? E : string;
8
+ /**
9
+ * Extract the config type from a dynamic import function
10
+ * Handles both `{ default: Config }` and direct `Config` module shapes
11
+ */
12
+ type ExtractConfig<TImport> = TImport extends () => Promise<infer TModule> ? TModule extends {
13
+ default: infer TConfig;
14
+ } ? TConfig : TModule : DevflareConfigInput;
15
+ /**
16
+ * Dynamic import function type for config modules
17
+ */
18
+ type ConfigImport<T extends DevflareConfigInput = DevflareConfigInput> = () => Promise<{
19
+ default: T;
20
+ } | T>;
21
+ /**
22
+ * Worker binding reference - returned by ref().worker or ref().worker('entrypoint')
23
+ */
24
+ export interface WorkerBinding {
25
+ /** Worker name (resolved lazily) */
26
+ readonly service: string;
27
+ /** Entrypoint class name (if specified) */
28
+ readonly entrypoint?: string;
29
+ /** @internal Reference for test context setup - contains import function and metadata */
30
+ readonly __ref?: RefResult;
31
+ }
32
+ /**
33
+ * Durable Object binding reference - returned by ref().DO_NAME
34
+ * Named differently from schema's DurableObjectBinding to avoid confusion
35
+ */
36
+ export interface DOBindingRef {
37
+ /** DO class name */
38
+ readonly className: string;
39
+ /** Worker name that hosts this DO (for cross-worker access) */
40
+ readonly scriptName: string;
41
+ /** @internal Reference for test context setup */
42
+ readonly __ref?: RefResult;
43
+ }
44
+ /**
45
+ * Template literal type for matching uppercase DO binding names.
46
+ * This allows the index signature to return DOBindingRef for UPPER_CASE
47
+ * property access while keeping specific types for known properties.
48
+ */
49
+ type UpperCaseName = `${Uppercase<string>}`;
50
+ /**
51
+ * Accessor for worker bindings - can be accessed directly or called with entrypoint
52
+ * @template TEntrypoints - Union of valid entrypoint names from config
53
+ */
54
+ export interface WorkerBindingAccessor<TEntrypoints extends string = string> extends WorkerBinding {
55
+ /**
56
+ * Get a service binding with a specific named entrypoint
57
+ * @param entrypoint - The entrypoint class name from ep.*.ts files
58
+ */
59
+ (entrypoint: TEntrypoints): WorkerBinding;
60
+ }
61
+ /**
62
+ * Result of ref() - a lazy proxy to the referenced config
63
+ * Supports dynamic DO binding access via property lookup (e.g., ref.COUNTER)
64
+ */
65
+ export interface RefResult<TConfig extends DevflareConfigInput = DevflareConfigInput> {
66
+ /**
67
+ * The worker name from the config (or overridden)
68
+ * Accessing this triggers resolution if not already resolved.
69
+ */
70
+ readonly name: string;
71
+ /**
72
+ * Raw config object (for advanced usage)
73
+ * Accessing this triggers resolution if not already resolved.
74
+ */
75
+ readonly config: TConfig;
76
+ /**
77
+ * Path to the config file (for resolution)
78
+ */
79
+ readonly configPath: string;
80
+ /**
81
+ * Get a service binding to this worker's default export (WorkerEntrypoint)
82
+ * Call as function to specify entrypoint: .worker('AdminEntrypoint')
83
+ * Or access directly for default export: .worker
84
+ */
85
+ readonly worker: WorkerBindingAccessor<ExtractEntrypoints<TConfig>>;
86
+ /**
87
+ * @internal The import function for lazy resolution
88
+ */
89
+ readonly __import: ConfigImport<TConfig>;
90
+ /**
91
+ * @internal Optional name override
92
+ */
93
+ readonly __nameOverride?: string;
94
+ /**
95
+ * Resolve the reference and get the config
96
+ */
97
+ resolve(): Promise<{
98
+ name: string;
99
+ config: TConfig;
100
+ configPath: string;
101
+ }>;
102
+ /**
103
+ * Dynamic DO binding access: ref.COUNTER, ref.RATE_LIMITER, etc.
104
+ * Returns a DOBindingRef for cross-worker DO access.
105
+ * Uses template literal type to match UPPER_CASE binding names only.
106
+ */
107
+ readonly [K: UpperCaseName]: DOBindingRef;
108
+ }
109
+ /**
110
+ * Create a typed reference to another worker's config.
111
+ * Returns a lazy proxy - the import is resolved only when needed.
112
+ *
113
+ * @param nameOrImport - Worker name override, OR the import function
114
+ * @param maybeImport - Import function (if first arg is name)
115
+ * @returns RefResult proxy with lazy access to config metadata
116
+ *
117
+ * @example
118
+ * // Basic usage - name from config
119
+ * const mathWorker = ref(() => import('./math-worker/devflare.config'))
120
+ *
121
+ * export default defineConfig({
122
+ * bindings: {
123
+ * services: {
124
+ * MATH: mathWorker.worker // Default export
125
+ * // or: mathWorker.worker('MathService') // Specific entrypoint
126
+ * }
127
+ * }
128
+ * })
129
+ *
130
+ * @example
131
+ * // With name override
132
+ * const mathWorker = ref('custom-math', () => import('./math-worker/devflare.config'))
133
+ */
134
+ export declare function ref<TImport extends () => Promise<{
135
+ default: DevflareConfigInput;
136
+ } | DevflareConfigInput>>(nameOrImport: string | TImport, maybeImport?: TImport): RefResult<ExtractConfig<TImport>>;
137
+ /**
138
+ * @deprecated Use `ref()` instead and call `.resolve()` if you need immediate access.
139
+ */
140
+ export declare function resolveRef<TConfig extends DevflareConfigInput>(configImport: ConfigImport<TConfig>, options?: {
141
+ workerName?: string;
142
+ entrypoint?: string;
143
+ }): Promise<RefResult<TConfig>>;
144
+ /**
145
+ * @deprecated Use `refResult.worker` or `refResult.worker('entrypoint')` instead.
146
+ */
147
+ export declare function serviceBinding(refOrLegacy: RefResult | {
148
+ name: string;
149
+ entrypoint?: string;
150
+ config?: unknown;
151
+ configPath?: string;
152
+ }, options?: {
153
+ entrypoint?: string;
154
+ }): WorkerBinding;
155
+ /**
156
+ * @deprecated Legacy type alias
157
+ */
158
+ export type ServiceBindingWithRef = WorkerBinding;
159
+ export {};
160
+ //# sourceMappingURL=ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../../src/config/ref.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAM3C;;;GAGG;AACH,KAAK,kBAAkB,CAAC,OAAO,IAAI,OAAO,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAA;AAEpF;;;GAGG;AACH,KAAK,aAAa,CAAC,OAAO,IAAI,OAAO,SAAS,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,GACvE,OAAO,SAAS;IAAE,OAAO,EAAE,MAAM,OAAO,CAAA;CAAE,GACzC,OAAO,GACP,OAAO,GACR,mBAAmB,CAAA;AAEtB;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,IACpE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC,CAAA;AAElC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,oCAAoC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,yFAAyF;IACzF,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,oBAAoB;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAC1B;AAED;;;;GAIG;AACH,KAAK,aAAa,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAA;AAE3C;;;GAGG;AACH,MAAM,WAAW,qBAAqB,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,aAAa;IACjG;;;OAGG;IACH,CAAC,UAAU,EAAE,YAAY,GAAG,aAAa,CAAA;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS,CAAC,OAAO,SAAS,mBAAmB,GAAG,mBAAmB;IACnF;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IAExB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAE3B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAA;IAEnE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;IAExC;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAEhC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEzE;;;;OAIG;IACH,QAAQ,EAAE,CAAC,EAAE,aAAa,GAAG,YAAY,CAAA;CACzC;AAmBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,GAAG,CAAC,OAAO,SAAS,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,mBAAmB,CAAA;CAAE,GAAG,mBAAmB,CAAC,EACxG,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,WAAW,CAAC,EAAE,OAAO,GACnB,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;AAiLpC;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,SAAS,mBAAmB,EACnE,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,EACnC,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAO7B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,WAAW,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EACrG,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,aAAa,CAcf;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAAA"}