@bepalo/spine 1.0.5 → 1.1.7

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/README.md CHANGED
@@ -20,24 +20,24 @@ Spine is a low-level routing layer built around the Web `Request`/`Response` API
20
20
 
21
21
  ( The Router Pipeline )
22
22
 
23
- ┌───────────────────────┐ ┌──────────────┐
24
- ▼ │ │ Server │
25
- ┌──────┴───────┐ │ └──────┬───────┘
26
- ┌─────────│ Filters │─────────┐ <request>
27
- │ └──────┬───────┘ │ │ Request
28
- │ <no match nor response> │ │
29
- │ ▼ │ │
30
- │ ┌──────┴───────┐ │ ┌──┴────────┐ ┌──────────────┐
31
- ├─────────│ Handlers │─────────┤ │ Server │◄───┐ │ Spine │
32
- │ └──────┬───────┘ │ └──┬─────┬──┘ │ │ Router │
33
- │ <no match nor response> │ ▲ │ <request> └──────┬───────┘
34
- <error> ▼ │ │ <response> │
35
- │ ┌──────┴───────┐ │ │ ▼ │ Response
36
- ├─────────│ Fallbacks │─────────┤ │ ┌─┴───────┴─┐
37
- ▼ └──────┬───────┘ │ │ │ Client │
38
- ┌─────┴──────┐ │ ┌──<response>─┘ │ └───────────┘ ┌──────────────┐
39
- │ Catchers │ ▼ ▼ │ │ Server │
40
- └─────┬──────┘ ┌──────┴───┴───┐ │ └──────────────┘
23
+ ┌───────────────────────┐
24
+ ▼ │
25
+ ┌──────┴───────┐ │
26
+ ┌─────────│ Filters │─────────┐ <request>
27
+ │ └──────┬───────┘ │ │
28
+ │ <no match nor response> │ │
29
+ │ ▼ │ │
30
+ │ ┌──────┴───────┐ │ ┌──┴────────┐
31
+ ├─────────│ Handlers │─────────┤ │ Server │◄───┐
32
+ │ └──────┬───────┘ │ └──┬─────┬──┘ │
33
+ │ <no match nor response> │ ▲ │ <request>
34
+ <error> ▼ │ │ <response> │
35
+ │ ┌──────┴───────┐ │ │ ▼ │
36
+ ├─────────│ Fallbacks │─────────┤ │ ┌─┴───────┴─┐
37
+ ▼ └──────┬───────┘ │ │ │ Client │
38
+ ┌─────┴──────┐ │ ┌──<response>─┘ │ └───────────┘
39
+ │ Catchers │ ▼ ▼ │
40
+ └─────┬──────┘ ┌──────┴───┴───┐ │
41
41
  └────────►│ Afters │───────────────┘
42
42
  <error-response> └──────────────┘ <final-response>
43
43
  ```
@@ -46,22 +46,23 @@ Spine is a low-level routing layer built around the Web `Request`/`Response` API
46
46
  Benchmark Bun.serve baseline: @bepalo/spine vs Hono
47
47
  Bun runtime · localhost · 20,000 sequential requests per route
48
48
 
49
- Bun Spine Hono
50
- ────────────────────────────────────────────────
51
- / 9.91k 8.64k 8.19k
52
- exact 10.33k 8.42k 8.19k
53
- long exact 10.34k 8.28k 7.99k
54
- one param 9.99k 8.16k 7.86k
55
- two params 10.17k 8.04k 7.66k
56
- three params 9.99k 7.68k 6.76k
57
- six params 9.88k 7.91k 7.51k
58
- ten params 9.78k 7.90k 7.12k
59
-
60
- Average 10.05k 8.13k 7.65k ops/s
61
-
62
- ████████████████████████████████████████ Bun
63
- █████████████████████████████████ Spine
64
- ████████████████████████████████ Hono
49
+ Bun Spine Hono ┌──────────────┐
50
+ ─────────────────────────────────────────────── │ Server │
51
+ / 9.91k 8.64k 8.19k └──────┬───────┘
52
+ exact 10.33k 8.42k 8.19k Request
53
+ long exact 10.34k 8.28k 7.99k
54
+ one param 9.99k 8.16k 7.86k ┌──────────────┐
55
+ two params 10.17k 8.04k 7.66k │ Spine │
56
+ three params 9.99k 7.68k 6.76k │ Router │
57
+ six params 9.88k 7.91k 7.51k └──────┬───────┘
58
+ ten params 9.78k 7.90k 7.12k Response
59
+
60
+ Average 10.05k 8.13k 7.65k ┌──────────────┐
61
+ ops/s │ Server │
62
+ └──────────────┘
63
+ ████████████████████████████████████████ Bun
64
+ █████████████████████████████████ Spine
65
+ ████████████████████████████████ Hono
65
66
  ```
66
67
 
67
68
  ## Why Spine?
@@ -701,100 +702,49 @@ It can even handle edge cases like boundary across multiple chunks and very smal
701
702
 
702
703
  ```ts
703
704
  router.post("/upload", [
704
- parseMultipart<
705
- // Context extension
706
- {},
707
- // Parsed formdata file extension
708
- // we will use this to store uploaded file related state
709
- {
710
- totalChunks: number;
711
- prevProgress: number;
712
- handle: Bun.FileBlob;
713
- writer: Bun.FileSink;
714
- }
715
- >({
716
- // // same as default implementation
717
- // idGenerator: () => toBase64UUID(crypto.randomUUID()),
718
- // idGenerator: ({ name }) => name,
719
-
720
- onHeader: async (ctx, { headers, id, name, filename, file }) => {
721
- console.log("[Upload](onHeader)", id);
722
- // ctx.currentId = "upload_" + toBase64UUID(crypto.randomUUID());
723
- if (file) {
724
- const ext = file.name.substring(file.name.lastIndexOf("."));
725
- const uploadPath = process.cwd() + "/uploads/" + id + ext;
726
- const targetFile = Bun.file(uploadPath);
727
- if (await targetFile.exists()) {
728
- throw new HttpError(500, `File already exists`);
729
- }
730
- file.totalChunks = 0;
731
- file.prevProgress = 0;
732
- file.handle = targetFile;
733
- file.writer = targetFile.writer();
734
- // print progress start
735
- console.log(
736
- name,
737
- filename,
738
- "0%",
739
- file.totalSize ? file.totalSize + " bytes" : "-",
740
- );
741
- } else {
742
- ctx.fields.set(name, "");
743
- }
744
- },
705
+ parseUpload<{}, { writer: Bun.FileSink; hash: Hash | string }>({
706
+ // maxFields: 2,
707
+ // maxFiles: 1,
708
+ // maxFieldSize: 203,
709
+ // maxFileSize: 200 * 1024 * 1024,
745
710
 
746
- onData: (ctx, { chunk, id, name, filename, file }) => {
747
- if (file) {
748
- file.writer.write(chunk);
749
- file.totalChunks++;
750
- // file.crc.update(chunk);
751
- // progress
752
- if (file.totalSize) {
753
- const progress = (file.size / file.totalSize) * 100;
754
- // print progress every 10% increment
755
- const truncProgress = Math.trunc(progress / 10);
756
- if (truncProgress > file.prevProgress) {
757
- console.log(name, filename, progress.toFixed(2) + "%");
758
- file.prevProgress = truncProgress;
759
- }
760
- }
761
- } else {
762
- ctx.fields.set(
763
- name,
764
- ctx.fields.get(name)! + new TextDecoder().decode(chunk),
765
- );
766
- }
711
+ path: process.cwd() + "/uploads",
712
+
713
+ fileHandle: (fullpath: string) => ({
714
+ writer: Bun.file(fullpath).writer(),
715
+ hash: createHash("sha256"),
716
+ }),
717
+
718
+ write: ({ handle }, chunk) => {
719
+ handle.writer.write(chunk);
720
+ (handle.hash as Hash).update(chunk);
767
721
  },
768
722
 
769
- onDataCompletion: (ctx, { headers, id, name, filename, file }) => {
770
- console.log("[Upload](onDataCompletion)", id);
771
- if (file) {
772
- file.writer.end();
773
- delete file.handle;
774
- delete file.writer;
775
- console.log(file);
776
- } else {
777
- // parse json
778
- const contentTypeHeader = headers.get("content-type");
779
- if (contentTypeHeader?.startsWith("application/json")) {
780
- ctx.fields.set(name, JSON.parse(ctx.fields.get(name)!));
781
- }
782
- console.log({ [name]: ctx.fields.get(name)! });
723
+ end: ({ handle, fullpath, name }, success) => {
724
+ handle.writer.end();
725
+ handle.hash = (handle.hash as Hash).digest().toString("hex");
726
+ if (!success) {
727
+ Bun.file(fullpath).delete();
728
+ console.log(`[FileUpload](${name}) failed`);
783
729
  }
784
730
  },
785
731
 
786
- onStart: () => {
787
- console.log("[Upload](onStart)");
732
+ onEnd: ({ files, fields }) => {
733
+ console.dir(
734
+ {
735
+ files: Object.fromEntries(files.entries()),
736
+ fields: Object.fromEntries(fields.entries()),
737
+ },
738
+ { depth: 3 },
739
+ );
788
740
  },
789
741
 
790
- onEnd: ({ files, fields }, { success, error }) => {
791
- if (!success) {
792
- console.error("[Upload](onEnd)", error);
793
- return json({ error: error?.message });
794
- }
795
- console.log("[Upload](onEnd)");
796
- console.log({ fields, files });
797
- return json({ message: "Upload successful" });
742
+ onFileProgress: (ctx, { file }) => {
743
+ console.log(
744
+ `[FileUpload](${file.name}) progress`,
745
+ file.progress.toFixed(2),
746
+ "%",
747
+ );
798
748
  },
799
749
  }),
800
750
  ]);
@@ -1,4 +1,5 @@
1
1
  export * from "./types.ts";
2
+ export * from "./utils.ts";
2
3
  export * from "./utils.node.ts";
3
4
  export * from "./status.ts";
4
5
  export * from "./helpers.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAE5B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAE5B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,eAAe,MAAM,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -18,6 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
20
  __exportStar(require("./types.js"), exports);
21
+ __exportStar(require("./utils.js"), exports);
21
22
  __exportStar(require("./utils.node.js"), exports);
22
23
  __exportStar(require("./status.js"), exports);
23
24
  __exportStar(require("./helpers.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,kDAAgC;AAChC,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,wDAAsC;AACtC,mDAAiC;AACjC,8CAA4B;AAE5B,4DAAiC;AACjC,kBAAe,mBAAM,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,6CAA2B;AAC3B,kDAAgC;AAChC,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,wDAAsC;AACtC,mDAAiC;AACjC,8CAA4B;AAE5B,4DAAiC;AACjC,kBAAe,mBAAM,CAAC"}
@@ -129,8 +129,10 @@ export declare const parseBody: <ExtendContext extends Record<string, unknown> =
129
129
  clone?: boolean;
130
130
  }) => Handler<ExtendContext & CTBody>;
131
131
  export declare const parseHeaders: (rawHeaders: Uint8Array, contentDisposition?: object) => Headers;
132
+ export declare const defaultFieldParser: (field: string, contentType?: string) => any;
132
133
  export type ParsedFormDataFile<ExtendParsedFormDataFile extends Record<string, unknown> = EmptyRecord> = {
133
134
  name: string;
135
+ fullpath: string;
134
136
  type: MimeType;
135
137
  size: number;
136
138
  totalSize?: number;
@@ -140,7 +142,20 @@ export type CTFormData<ExtendParsedFormDataFile extends Record<string, unknown>
140
142
  fields: Map<string, string | any>;
141
143
  };
142
144
  export type ParseMultipartCallbacksReturnType = Response | typeof Break_Pipeline | typeof Break_Pipe | void | Promise<Response | typeof Break_Pipeline | typeof Break_Pipe | void>;
143
- export declare const parseMultipart: <ExtendContext extends Record<string, unknown> = EmptyRecord, ExtendParsedFormDataFile extends Record<string, unknown> = EmptyRecord>({ idGenerator, onStart, onEnd, onHeader, onData, onDataCompletion, }: {
145
+ export type ParseMultipartInfo<ExtendParsedFormDataFile extends Record<string, unknown> = EmptyRecord> = {
146
+ headers: Headers;
147
+ id: string;
148
+ name: string;
149
+ filename?: string;
150
+ file?: ParsedFormDataFile<ExtendParsedFormDataFile>;
151
+ };
152
+ export declare const parseMultipart: <ExtendContext extends Record<string, unknown> = EmptyRecord, ExtendParsedFormDataFile extends Record<string, unknown> = EmptyRecord, Info extends ParseMultipartInfo<ExtendParsedFormDataFile> = ParseMultipartInfo<ExtendParsedFormDataFile>, FieldInfo extends Omit<ParseMultipartInfo<ExtendParsedFormDataFile>, "filename" | "file"> = Omit<ParseMultipartInfo<ExtendParsedFormDataFile>, "filename" | "file">, FileInfo extends Required<ParseMultipartInfo<ExtendParsedFormDataFile>> = Required<ParseMultipartInfo<ExtendParsedFormDataFile>>>({ dontCatch, maxFields, maxFiles, maxFieldSize, maxFileSize, maxTotalSize, idGenerator, onStart, onEnd, onHeader, onData, onDataComplete, onFileLimit, onFieldLimit, onFileSizeLimit, onFieldSizeLimit, onTotalSizeLimit, }: {
153
+ dontCatch?: boolean;
154
+ maxFields?: number;
155
+ maxFiles?: number;
156
+ maxFieldSize?: number;
157
+ maxFileSize?: number;
158
+ maxTotalSize?: number;
144
159
  idGenerator?: (info: {
145
160
  headers: Headers;
146
161
  name: string;
@@ -151,27 +166,65 @@ export declare const parseMultipart: <ExtendContext extends Record<string, unkno
151
166
  success: boolean;
152
167
  error?: Error | HttpError;
153
168
  }) => ParseMultipartCallbacksReturnType;
154
- onHeader?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: {
155
- headers: Headers;
156
- id: string;
157
- name: string;
158
- filename?: string;
159
- file?: ParsedFormDataFile<ExtendParsedFormDataFile>;
160
- }) => ParseMultipartCallbacksReturnType;
161
- onData: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: {
162
- chunk: Uint8Array;
163
- headers: Headers;
164
- id: string;
165
- name: string;
166
- filename?: string;
167
- file?: ParsedFormDataFile<ExtendParsedFormDataFile>;
169
+ onHeader?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: Info) => ParseMultipartCallbacksReturnType;
170
+ onData: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, chunk: Uint8Array, info: Info) => ParseMultipartCallbacksReturnType;
171
+ onDataComplete: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: Info) => ParseMultipartCallbacksReturnType;
172
+ onFileLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FileInfo) => ParseMultipartCallbacksReturnType;
173
+ onFieldLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FieldInfo) => ParseMultipartCallbacksReturnType;
174
+ onFileSizeLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FileInfo) => ParseMultipartCallbacksReturnType;
175
+ onFieldSizeLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FieldInfo) => ParseMultipartCallbacksReturnType;
176
+ onTotalSizeLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: Info) => ParseMultipartCallbacksReturnType;
177
+ }) => Handler<CTFormData<ExtendParsedFormDataFile> & ExtendContext>;
178
+ export type ParseUploadFileExtension<FileHandle = unknown> = {
179
+ totalChunks: number;
180
+ handle: FileHandle;
181
+ _prevProgress: number;
182
+ progress: number;
183
+ };
184
+ export declare const parseUpload: <ExtendContext extends Record<string, unknown> = {}, FileHandle = unknown, ExtendParsedFormDataFile extends Record<string, unknown> & ParseUploadFileExtension<FileHandle> = ParseUploadFileExtension<FileHandle>, Info extends ParseMultipartInfo<ExtendParsedFormDataFile> = ParseMultipartInfo<ExtendParsedFormDataFile>, FieldInfo extends Omit<ParseMultipartInfo<ExtendParsedFormDataFile>, "filename" | "file"> = Omit<ParseMultipartInfo<ExtendParsedFormDataFile>, "filename" | "file">, FileInfo extends Required<ParseMultipartInfo<ExtendParsedFormDataFile>> = Required<ParseMultipartInfo<ExtendParsedFormDataFile>>, CTParseUpload = Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>>({ path, fileHandle, write, end, parseField, dontCatch, maxFields, maxFiles, maxFieldSize, maxFileSize, maxTotalSize, progressIncrement, idGenerator, onStart, onEnd, onHeader, onFieldHeader, onFileHeader, onFileData, onFileDataSpy, onFieldData, onFieldDataSpy, onFileProgress, onFieldComplete, onFileComplete, onComplete, onFileLimit, onFieldLimit, onFileSizeLimit, onFieldSizeLimit, onTotalSizeLimit, }: {
185
+ path: string | {
186
+ (id: string, file: ParsedFormDataFile<ExtendParsedFormDataFile>): Promise<string> | string;
187
+ };
188
+ fileHandle: {
189
+ (fullpath: string): Promise<FileHandle> | FileHandle;
190
+ };
191
+ write: {
192
+ (file: ParsedFormDataFile<ExtendParsedFormDataFile>, chunk: Uint8Array, info: FileInfo): Promise<unknown> | unknown;
193
+ };
194
+ end?: {
195
+ (file: ParsedFormDataFile<ExtendParsedFormDataFile>, success: boolean, info: FileInfo): Promise<unknown> | unknown;
196
+ };
197
+ parseField?: (field: string, contentType?: string) => Promise<string | unknown> | string | unknown;
198
+ dontCatch?: boolean;
199
+ maxFields?: number;
200
+ maxFiles?: number;
201
+ maxFieldSize?: number;
202
+ maxFileSize?: number;
203
+ maxTotalSize?: number;
204
+ progressIncrement?: number;
205
+ idGenerator?: () => string;
206
+ onStart?: (ctx: CTParseUpload) => ParseMultipartCallbacksReturnType;
207
+ onEnd?: (ctx: CTParseUpload, info: {
208
+ success: boolean;
209
+ error?: Error | HttpError;
168
210
  }) => ParseMultipartCallbacksReturnType;
169
- onDataCompletion: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: {
170
- headers: Headers;
171
- id: string;
172
- name: string;
173
- filename?: string;
174
- file?: ParsedFormDataFile<ExtendParsedFormDataFile>;
211
+ onHeader?: (ctx: CTParseUpload, info: Info) => ParseMultipartCallbacksReturnType;
212
+ onFieldHeader?: (ctx: CTParseUpload, info: FieldInfo) => ParseMultipartCallbacksReturnType;
213
+ onFileHeader?: (ctx: CTParseUpload, info: FileInfo) => ParseMultipartCallbacksReturnType;
214
+ onFileData?: (ctx: CTParseUpload, chunk: Uint8Array, info: FileInfo) => ParseMultipartCallbacksReturnType;
215
+ onFileDataSpy?: (ctx: CTParseUpload, chunk: Uint8Array, info: FileInfo) => ParseMultipartCallbacksReturnType;
216
+ onFieldData?: (ctx: CTParseUpload, chunk: Uint8Array, info: FieldInfo) => ParseMultipartCallbacksReturnType;
217
+ onFieldDataSpy?: (ctx: CTParseUpload, chunk: Uint8Array, info: FieldInfo) => ParseMultipartCallbacksReturnType;
218
+ onFileProgress?: (ctx: CTParseUpload, info: FileInfo) => Promise<void> | void;
219
+ onFieldComplete?: (ctx: CTParseUpload, info: FieldInfo & {
220
+ field: string | unknown;
175
221
  }) => ParseMultipartCallbacksReturnType;
222
+ onFileComplete?: (ctx: CTParseUpload, info: FileInfo) => ParseMultipartCallbacksReturnType;
223
+ onComplete?: (ctx: CTParseUpload, info: Info) => ParseMultipartCallbacksReturnType;
224
+ onFileLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FileInfo) => ParseMultipartCallbacksReturnType;
225
+ onFieldLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FieldInfo) => ParseMultipartCallbacksReturnType;
226
+ onFileSizeLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FileInfo) => ParseMultipartCallbacksReturnType;
227
+ onFieldSizeLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: FieldInfo) => ParseMultipartCallbacksReturnType;
228
+ onTotalSizeLimit?: (ctx: Context<CTFormData<ExtendParsedFormDataFile> & ExtendContext>, info: ParseMultipartInfo<ExtendParsedFormDataFile>) => ParseMultipartCallbacksReturnType;
176
229
  }) => Handler<CTFormData<ExtendParsedFormDataFile> & ExtendContext>;
177
230
  //# sourceMappingURL=parsers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/parsers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/parsers.ts"],"names":[],"mappings":"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"}