@percher/core 0.4.0 → 0.4.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.
- package/dist/commands/account.d.ts +24 -14
- package/dist/commands/account.d.ts.map +1 -1
- package/dist/commands/account.js +17 -4
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/admin-reconcile-routes.d.ts +18 -0
- package/dist/commands/admin-reconcile-routes.d.ts.map +1 -0
- package/dist/commands/admin-reconcile-routes.js +22 -0
- package/dist/commands/admin-reconcile-routes.js.map +1 -0
- package/dist/commands/ai-files.d.ts +5 -17
- package/dist/commands/ai-files.d.ts.map +1 -1
- package/dist/commands/ai-files.js +3 -4
- package/dist/commands/ai-files.js.map +1 -1
- package/dist/commands/alerts.d.ts +69 -0
- package/dist/commands/alerts.d.ts.map +1 -0
- package/dist/commands/alerts.js +80 -0
- package/dist/commands/alerts.js.map +1 -0
- package/dist/commands/app-resources.d.ts +30 -0
- package/dist/commands/app-resources.d.ts.map +1 -0
- package/dist/commands/app-resources.js +34 -0
- package/dist/commands/app-resources.js.map +1 -0
- package/dist/commands/app-topology.d.ts +18 -0
- package/dist/commands/app-topology.d.ts.map +1 -0
- package/dist/commands/app-topology.js +25 -0
- package/dist/commands/app-topology.js.map +1 -0
- package/dist/commands/billing.d.ts +8 -8
- package/dist/commands/billing.d.ts.map +1 -1
- package/dist/commands/billing.js +1 -1
- package/dist/commands/billing.js.map +1 -1
- package/dist/commands/continue.d.ts +1 -1
- package/dist/commands/create.d.ts +2 -12
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +1 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dashboard.d.ts +2 -8
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +1 -1
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/data-export.d.ts +2 -8
- package/dist/commands/data-export.d.ts.map +1 -1
- package/dist/commands/data-export.js +1 -1
- package/dist/commands/data-export.js.map +1 -1
- package/dist/commands/data.d.ts +2 -8
- package/dist/commands/data.d.ts.map +1 -1
- package/dist/commands/data.js +1 -1
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/delete.d.ts +2 -8
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +1 -1
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/deploys.d.ts +4 -28
- package/dist/commands/deploys.d.ts.map +1 -1
- package/dist/commands/deploys.js +1 -1
- package/dist/commands/deploys.js.map +1 -1
- package/dist/commands/dev.d.ts +2 -6
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +1 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/diagnose.d.ts +2 -22
- package/dist/commands/diagnose.d.ts.map +1 -1
- package/dist/commands/diagnose.js +1 -1
- package/dist/commands/diagnose.js.map +1 -1
- package/dist/commands/doctor.d.ts +10 -35
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +12 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/domains.d.ts +5 -27
- package/dist/commands/domains.d.ts.map +1 -1
- package/dist/commands/domains.js +1 -1
- package/dist/commands/domains.js.map +1 -1
- package/dist/commands/env-scan.js +1 -1
- package/dist/commands/env-scan.js.map +1 -1
- package/dist/commands/env.d.ts +4 -20
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +1 -1
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/export.d.ts +1 -1
- package/dist/commands/forgejo.d.ts +45 -0
- package/dist/commands/forgejo.d.ts.map +1 -0
- package/dist/commands/forgejo.js +125 -0
- package/dist/commands/forgejo.js.map +1 -0
- package/dist/commands/generate.d.ts +2 -6
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +1 -1
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/github.d.ts +4 -15
- package/dist/commands/github.d.ts.map +1 -1
- package/dist/commands/github.js +17 -1
- package/dist/commands/github.js.map +1 -1
- package/dist/commands/import-project.d.ts +13 -9
- package/dist/commands/import-project.d.ts.map +1 -1
- package/dist/commands/import-project.js +73 -22
- package/dist/commands/import-project.js.map +1 -1
- package/dist/commands/init.d.ts +26 -11
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +103 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/insights.d.ts +2 -6
- package/dist/commands/insights.d.ts.map +1 -1
- package/dist/commands/insights.js +1 -1
- package/dist/commands/insights.js.map +1 -1
- package/dist/commands/login.d.ts +2 -8
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +22 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logs.d.ts +25 -10
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +65 -5
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/mcp.d.ts +2 -2
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/migrate-supabase-map.d.ts +171 -0
- package/dist/commands/migrate-supabase-map.d.ts.map +1 -0
- package/dist/commands/migrate-supabase-map.js +452 -0
- package/dist/commands/migrate-supabase-map.js.map +1 -0
- package/dist/commands/migrate-supabase-schema.d.ts +67 -0
- package/dist/commands/migrate-supabase-schema.d.ts.map +1 -0
- package/dist/commands/migrate-supabase-schema.js +321 -0
- package/dist/commands/migrate-supabase-schema.js.map +1 -0
- package/dist/commands/migrate-supabase-scripts.d.ts +64 -0
- package/dist/commands/migrate-supabase-scripts.d.ts.map +1 -0
- package/dist/commands/migrate-supabase-scripts.js +564 -0
- package/dist/commands/migrate-supabase-scripts.js.map +1 -0
- package/dist/commands/migrate-supabase-sdk.d.ts +133 -0
- package/dist/commands/migrate-supabase-sdk.d.ts.map +1 -0
- package/dist/commands/migrate-supabase-sdk.js +1119 -0
- package/dist/commands/migrate-supabase-sdk.js.map +1 -0
- package/dist/commands/migrate-supabase-walker.d.ts +93 -0
- package/dist/commands/migrate-supabase-walker.d.ts.map +1 -0
- package/dist/commands/migrate-supabase-walker.js +413 -0
- package/dist/commands/migrate-supabase-walker.js.map +1 -0
- package/dist/commands/migrate-supabase.d.ts +81 -0
- package/dist/commands/migrate-supabase.d.ts.map +1 -0
- package/dist/commands/migrate-supabase.js +579 -0
- package/dist/commands/migrate-supabase.js.map +1 -0
- package/dist/commands/open.d.ts +2 -6
- package/dist/commands/open.d.ts.map +1 -1
- package/dist/commands/open.js +1 -1
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/publish-api-error.d.ts +46 -0
- package/dist/commands/publish-api-error.d.ts.map +1 -0
- package/dist/commands/publish-api-error.js +307 -0
- package/dist/commands/publish-api-error.js.map +1 -0
- package/dist/commands/publish.d.ts +40 -17
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +115 -8
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/push.d.ts +2 -12
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +2 -2
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/redeploy.d.ts +2 -8
- package/dist/commands/redeploy.d.ts.map +1 -1
- package/dist/commands/redeploy.js +2 -2
- package/dist/commands/redeploy.js.map +1 -1
- package/dist/commands/rename.d.ts +2 -8
- package/dist/commands/rename.d.ts.map +1 -1
- package/dist/commands/rename.js +1 -1
- package/dist/commands/rename.js.map +1 -1
- package/dist/commands/reproduce.d.ts +2 -8
- package/dist/commands/reproduce.d.ts.map +1 -1
- package/dist/commands/reproduce.js +1 -1
- package/dist/commands/reproduce.js.map +1 -1
- package/dist/commands/reset-superuser.d.ts +2 -16
- package/dist/commands/reset-superuser.d.ts.map +1 -1
- package/dist/commands/reset-superuser.js +1 -1
- package/dist/commands/reset-superuser.js.map +1 -1
- package/dist/commands/restore.d.ts +7 -22
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +1 -1
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/resume.d.ts +2 -6
- package/dist/commands/resume.d.ts.map +1 -1
- package/dist/commands/resume.js +1 -1
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/rollback.d.ts +2 -8
- package/dist/commands/rollback.d.ts.map +1 -1
- package/dist/commands/rollback.js +1 -1
- package/dist/commands/rollback.js.map +1 -1
- package/dist/commands/sharing.d.ts +48 -0
- package/dist/commands/sharing.d.ts.map +1 -0
- package/dist/commands/sharing.js +85 -0
- package/dist/commands/sharing.js.map +1 -0
- package/dist/commands/status.d.ts +2 -6
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +1 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/transfers.d.ts +34 -0
- package/dist/commands/transfers.d.ts.map +1 -0
- package/dist/commands/transfers.js +62 -0
- package/dist/commands/transfers.js.map +1 -0
- package/dist/commands/unsuspend.d.ts +2 -6
- package/dist/commands/unsuspend.d.ts.map +1 -1
- package/dist/commands/unsuspend.js +1 -1
- package/dist/commands/unsuspend.js.map +1 -1
- package/dist/commands/versions.d.ts +2 -6
- package/dist/commands/versions.d.ts.map +1 -1
- package/dist/commands/versions.js +1 -1
- package/dist/commands/versions.js.map +1 -1
- package/dist/commands/wait-deploy.d.ts +2 -12
- package/dist/commands/wait-deploy.d.ts.map +1 -1
- package/dist/commands/wait-deploy.js +1 -1
- package/dist/commands/wait-deploy.js.map +1 -1
- package/dist/context.d.ts +15 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/detect.d.ts +11 -0
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +31 -8
- package/dist/detect.js.map +1 -1
- package/dist/env-scan-source.js +1 -1
- package/dist/env-scan-source.js.map +1 -1
- package/dist/error-classifier.d.ts +17 -0
- package/dist/error-classifier.d.ts.map +1 -1
- package/dist/error-classifier.js +94 -8
- package/dist/error-classifier.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +63 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +56 -42
- package/dist/index.js.map +1 -1
- package/dist/plans.d.ts +61 -5
- package/dist/plans.d.ts.map +1 -1
- package/dist/plans.js +78 -18
- package/dist/plans.js.map +1 -1
- package/dist/recovery.d.ts +60 -3
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +22 -0
- package/dist/recovery.js.map +1 -1
- package/dist/static-docker.d.ts +77 -0
- package/dist/static-docker.d.ts.map +1 -0
- package/dist/static-docker.js +105 -0
- package/dist/static-docker.js.map +1 -0
- package/dist/tarball.js +1 -1
- package/dist/tarball.js.map +1 -1
- package/dist/templates/ai-files/cursor-percher-mdc.d.ts.map +1 -1
- package/dist/templates/ai-files/cursor-percher-mdc.js +12 -9
- package/dist/templates/ai-files/cursor-percher-mdc.js.map +1 -1
- package/dist/templates.js +11 -11
- package/dist/templates.js.map +1 -1
- package/dist/watcher.js +1 -1
- package/dist/watcher.js.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { type API, type FileInfo, type Options } from "jscodeshift";
|
|
2
|
+
/**
|
|
3
|
+
* FUTURE9 Phase D chunk 1 — Supabase JS SDK → PocketBase JS SDK
|
|
4
|
+
* source rewriter (single-file, pure).
|
|
5
|
+
*
|
|
6
|
+
* Pure function: takes a source-string + file-path hint, returns
|
|
7
|
+
* the rewritten source + a structured `flags[]` array describing
|
|
8
|
+
* every transformation (or refusal to transform). No I/O.
|
|
9
|
+
*
|
|
10
|
+
* Why pure: the file walker (chunk 3) drives this against every
|
|
11
|
+
* `.ts`/`.tsx`/`.js`/`.jsx` file in the project. Keeping the
|
|
12
|
+
* rewriter I/O-free means tests pin exact before/after pairs
|
|
13
|
+
* without disk, AND the walker can `--dry-run` the whole project
|
|
14
|
+
* by collecting flag totals without writing anything.
|
|
15
|
+
*
|
|
16
|
+
* AST library choice: jscodeshift. Matches the plan in
|
|
17
|
+
* docs/plans/FUTURE9_fas-8-lovable-migration-plan.md (Decision 4)
|
|
18
|
+
* and has the test-harness story we want. ts-morph would be the
|
|
19
|
+
* alternative if/when we hit TS-specific shape problems.
|
|
20
|
+
*
|
|
21
|
+
* Scope of THIS chunk (chunk 1): high-confidence rewrites only.
|
|
22
|
+
* - supabase.auth.signInWithPassword({email, password})
|
|
23
|
+
* - supabase.auth.signUp({email, password})
|
|
24
|
+
* - supabase.auth.signOut()
|
|
25
|
+
* - supabase.auth.getUser()
|
|
26
|
+
* - supabase.from("t").select("*" | "a,b") → getFullList
|
|
27
|
+
* - supabase.from("t").insert({...}) → create
|
|
28
|
+
* - supabase.from("t").update({...}).eq("id", v) → update(v, {...})
|
|
29
|
+
* - supabase.from("t").delete().eq("id", v) → delete(v)
|
|
30
|
+
*
|
|
31
|
+
* Chunk 2 will add medium-confidence (.eq() filters, .order,
|
|
32
|
+
* .range, .onAuthStateChange). Chunk 3 will add flag-only handling
|
|
33
|
+
* for low-confidence patterns (storage, channel/subscribe, rpc,
|
|
34
|
+
* functions) and the file walker that drives this against a project.
|
|
35
|
+
*
|
|
36
|
+
* Safety invariants pinned by tests:
|
|
37
|
+
* - Files that don't import @supabase/supabase-js are returned
|
|
38
|
+
* unchanged with zero flags.
|
|
39
|
+
* - Every transformation produces a corresponding `flags[]` entry
|
|
40
|
+
* with before/after text and line/column. The caller can render
|
|
41
|
+
* a diff log without re-parsing.
|
|
42
|
+
* - The PB client identifier (default `pb`) is configurable so
|
|
43
|
+
* a project that uses a different name doesn't get
|
|
44
|
+
* double-imports.
|
|
45
|
+
* - Surrounding code shape is preserved (no formatting drift) —
|
|
46
|
+
* jscodeshift's recast-based printer round-trips untouched code.
|
|
47
|
+
*/
|
|
48
|
+
export type RewriteFlagKind =
|
|
49
|
+
/** Mapped 1:1 with no caveats — safe to use as-is. */
|
|
50
|
+
"rewritten"
|
|
51
|
+
/** Mapped but the semantics differ in ways the user should review. */
|
|
52
|
+
| "manual_review"
|
|
53
|
+
/** Source has a pattern we won't auto-translate (subscribe, rpc, storage etc.). Inserted as-is with a TODO comment. */
|
|
54
|
+
| "unsupported";
|
|
55
|
+
export interface RewriteFlag {
|
|
56
|
+
kind: RewriteFlagKind;
|
|
57
|
+
/** Stable short id for the pattern matched. Tests/reports key on this. */
|
|
58
|
+
pattern: string;
|
|
59
|
+
/** Source line (1-based) of the original call. Undefined if jscodeshift can't recover. */
|
|
60
|
+
line?: number;
|
|
61
|
+
/** Source column (0-based). Undefined if jscodeshift can't recover. */
|
|
62
|
+
column?: number;
|
|
63
|
+
/** Short human-readable summary the file walker can roll up. */
|
|
64
|
+
note: string;
|
|
65
|
+
}
|
|
66
|
+
export interface RewriteSupabaseSdkInput {
|
|
67
|
+
/** File source string. */
|
|
68
|
+
source: string;
|
|
69
|
+
/** Path the source came from (used in flag.note for context, not for I/O). */
|
|
70
|
+
filePath?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Identifier name PocketBase will live under in the rewritten
|
|
73
|
+
* source. Defaults to `pb` — matches PocketBase's docs convention.
|
|
74
|
+
* Override when the project already has a `pb` binding for
|
|
75
|
+
* something else.
|
|
76
|
+
*/
|
|
77
|
+
pbIdentifier?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Identifier name(s) the Supabase client lives under in the source.
|
|
80
|
+
* Default: ["supabase"]. The rewriter walks the AST looking for
|
|
81
|
+
* member access on these names. Pass extra names when a project
|
|
82
|
+
* uses `const sb = createClient(...)` or `const client = ...`.
|
|
83
|
+
*/
|
|
84
|
+
supabaseIdentifiers?: string[];
|
|
85
|
+
}
|
|
86
|
+
export interface RewriteSupabaseSdkResult {
|
|
87
|
+
/** The new source. Equals input.source byte-for-byte when no AST mutation happened. */
|
|
88
|
+
rewritten: string;
|
|
89
|
+
/** Flags for every transformation OR flagged-untransformed call. Empty array means nothing matched. */
|
|
90
|
+
flags: RewriteFlag[];
|
|
91
|
+
/**
|
|
92
|
+
* True when the AST was mutated and `rewritten` differs from
|
|
93
|
+
* `source` — the file walker keys writes on this.
|
|
94
|
+
*
|
|
95
|
+
* NOT the same as `flags.length > 0`: `manual_review` flags may
|
|
96
|
+
* land WITHOUT a mutation (e.g. `consumesDataErrorEnvelope`
|
|
97
|
+
* downgrades the rewrite without touching the AST so the file
|
|
98
|
+
* stays byte-identical, but a flag still records the call site
|
|
99
|
+
* for the human review report). If you want "did anything
|
|
100
|
+
* match", check `flags.length > 0` directly. Codex P2 round 6
|
|
101
|
+
* (2026-05-17) — earlier doc said `flags.length > 0` and the
|
|
102
|
+
* implementation drifted.
|
|
103
|
+
*/
|
|
104
|
+
changed: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Set when the source failed to parse — the file is returned
|
|
107
|
+
* unchanged and no rewrite was attempted. Distinct from "no
|
|
108
|
+
* Supabase calls found" which leaves this undefined. Callers
|
|
109
|
+
* (the project walker) use this to classify the file as
|
|
110
|
+
* `skipped[reason="parse_error"]` instead of folding it into
|
|
111
|
+
* the clean-files report, which would silently hide files the
|
|
112
|
+
* migration couldn't analyse. Codex P2 round 10 (2026-05-17).
|
|
113
|
+
*/
|
|
114
|
+
parseError?: string;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Rewrite Supabase JS SDK calls into PocketBase JS SDK calls.
|
|
118
|
+
*
|
|
119
|
+
* Pure (no I/O). Idempotent — feeding the output back in produces
|
|
120
|
+
* the same output with an empty flags array (already-rewritten
|
|
121
|
+
* code has no Supabase calls left to match).
|
|
122
|
+
*/
|
|
123
|
+
export declare function rewriteSupabaseSdk(input: RewriteSupabaseSdkInput): RewriteSupabaseSdkResult;
|
|
124
|
+
/**
|
|
125
|
+
* Entry point matching jscodeshift's `transform` signature, in case
|
|
126
|
+
* a caller wants to run this as a standalone codemod via the
|
|
127
|
+
* jscodeshift CLI (`jscodeshift -t this-file.js src/`). Not used by
|
|
128
|
+
* Percher's own file walker — that calls `rewriteSupabaseSdk`
|
|
129
|
+
* directly for control over the flag-stream — but exposing it keeps
|
|
130
|
+
* the door open for ad-hoc usage.
|
|
131
|
+
*/
|
|
132
|
+
export default function transform(file: FileInfo, _api: API, options?: Options): string | null;
|
|
133
|
+
//# sourceMappingURL=migrate-supabase-sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-supabase-sdk.d.ts","sourceRoot":"","sources":["../../src/commands/migrate-supabase-sdk.ts"],"names":[],"mappings":"AAAA,OAAoB,EAClB,KAAK,GAAG,EAGR,KAAK,QAAQ,EACb,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,MAAM,MAAM,eAAe;AACzB,sDAAsD;AACpD,WAAW;AACb,sEAAsE;GACpE,eAAe;AACjB,uHAAuH;GACrH,aAAa,CAAC;AAElB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,uFAAuF;IACvF,SAAS,EAAE,MAAM,CAAC;IAClB,uGAAuG;IACvG,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB;;;;;;;;;;;;OAYG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAKD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CAsD3F;AAgmDD;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAE,OAAY,GAAG,MAAM,GAAG,IAAI,CAOjG"}
|