@spinajs/fs 2.0.480 → 2.0.482

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 (211) hide show
  1. package/lib/cjs/cli/cat.d.ts +11 -0
  2. package/lib/cjs/cli/cat.d.ts.map +1 -0
  3. package/lib/cjs/cli/cat.js +40 -0
  4. package/lib/cjs/cli/cat.js.map +1 -0
  5. package/lib/cjs/cli/cp.d.ts +11 -0
  6. package/lib/cjs/cli/cp.d.ts.map +1 -0
  7. package/lib/cjs/cli/cp.js +41 -0
  8. package/lib/cjs/cli/cp.js.map +1 -0
  9. package/lib/cjs/cli/download.d.ts +7 -0
  10. package/lib/cjs/cli/download.d.ts.map +1 -0
  11. package/lib/cjs/cli/download.js +39 -0
  12. package/lib/cjs/cli/download.js.map +1 -0
  13. package/lib/cjs/cli/exists.d.ts +7 -0
  14. package/lib/cjs/cli/exists.d.ts.map +1 -0
  15. package/lib/cjs/cli/exists.js +39 -0
  16. package/lib/cjs/cli/exists.js.map +1 -0
  17. package/lib/cjs/cli/fs.d.ts +11 -0
  18. package/lib/cjs/cli/fs.d.ts.map +1 -1
  19. package/lib/cjs/cli/fs.js +47 -21
  20. package/lib/cjs/cli/fs.js.map +1 -1
  21. package/lib/cjs/cli/hash.d.ts +11 -0
  22. package/lib/cjs/cli/hash.d.ts.map +1 -0
  23. package/lib/cjs/cli/hash.js +40 -0
  24. package/lib/cjs/cli/hash.js.map +1 -0
  25. package/lib/cjs/cli/info.d.ts +7 -0
  26. package/lib/cjs/cli/info.d.ts.map +1 -0
  27. package/lib/cjs/cli/info.js +45 -0
  28. package/lib/cjs/cli/info.js.map +1 -0
  29. package/lib/cjs/cli/ls.d.ts +7 -0
  30. package/lib/cjs/cli/ls.d.ts.map +1 -0
  31. package/lib/cjs/cli/ls.js +40 -0
  32. package/lib/cjs/cli/ls.js.map +1 -0
  33. package/lib/cjs/cli/mkdir.d.ts +7 -0
  34. package/lib/cjs/cli/mkdir.d.ts.map +1 -0
  35. package/lib/cjs/cli/mkdir.js +39 -0
  36. package/lib/cjs/cli/mkdir.js.map +1 -0
  37. package/lib/cjs/cli/mv.d.ts +11 -0
  38. package/lib/cjs/cli/mv.d.ts.map +1 -0
  39. package/lib/cjs/cli/mv.js +41 -0
  40. package/lib/cjs/cli/mv.js.map +1 -0
  41. package/lib/cjs/cli/rm.d.ts +1 -6
  42. package/lib/cjs/cli/rm.d.ts.map +1 -1
  43. package/lib/cjs/cli/rm.js +14 -4
  44. package/lib/cjs/cli/rm.js.map +1 -1
  45. package/lib/cjs/cli/stat.d.ts +1 -5
  46. package/lib/cjs/cli/stat.d.ts.map +1 -1
  47. package/lib/cjs/cli/stat.js +20 -3
  48. package/lib/cjs/cli/stat.js.map +1 -1
  49. package/lib/cjs/cli/unzip.d.ts +11 -0
  50. package/lib/cjs/cli/unzip.d.ts.map +1 -0
  51. package/lib/cjs/cli/unzip.js +47 -0
  52. package/lib/cjs/cli/unzip.js.map +1 -0
  53. package/lib/cjs/cli/upload.d.ts +7 -0
  54. package/lib/cjs/cli/upload.d.ts.map +1 -0
  55. package/lib/cjs/cli/upload.js +40 -0
  56. package/lib/cjs/cli/upload.js.map +1 -0
  57. package/lib/cjs/cli/write.d.ts +13 -0
  58. package/lib/cjs/cli/write.d.ts.map +1 -0
  59. package/lib/cjs/cli/write.js +54 -0
  60. package/lib/cjs/cli/write.js.map +1 -0
  61. package/lib/cjs/cli/zip.d.ts +12 -0
  62. package/lib/cjs/cli/zip.d.ts.map +1 -0
  63. package/lib/cjs/cli/zip.js +51 -0
  64. package/lib/cjs/cli/zip.js.map +1 -0
  65. package/lib/cjs/config/fs.d.ts +9 -0
  66. package/lib/cjs/config/fs.d.ts.map +1 -0
  67. package/lib/cjs/config/fs.js +22 -0
  68. package/lib/cjs/config/fs.js.map +1 -0
  69. package/lib/cjs/file-hasher.d.ts +85 -5
  70. package/lib/cjs/file-hasher.d.ts.map +1 -1
  71. package/lib/cjs/file-hasher.js +106 -14
  72. package/lib/cjs/file-hasher.js.map +1 -1
  73. package/lib/cjs/file-info.d.ts +94 -5
  74. package/lib/cjs/file-info.d.ts.map +1 -1
  75. package/lib/cjs/file-info.js +267 -73
  76. package/lib/cjs/file-info.js.map +1 -1
  77. package/lib/cjs/fp.d.ts +80 -2
  78. package/lib/cjs/fp.d.ts.map +1 -1
  79. package/lib/cjs/fp.js +149 -3
  80. package/lib/cjs/fp.js.map +1 -1
  81. package/lib/cjs/index.d.ts +2 -1
  82. package/lib/cjs/index.d.ts.map +1 -1
  83. package/lib/cjs/index.js +7 -2
  84. package/lib/cjs/index.js.map +1 -1
  85. package/lib/cjs/interfaces.d.ts +89 -12
  86. package/lib/cjs/interfaces.d.ts.map +1 -1
  87. package/lib/cjs/interfaces.js +13 -13
  88. package/lib/cjs/interfaces.js.map +1 -1
  89. package/lib/cjs/local-provider.d.ts +51 -6
  90. package/lib/cjs/local-provider.d.ts.map +1 -1
  91. package/lib/cjs/local-provider.js +254 -76
  92. package/lib/cjs/local-provider.js.map +1 -1
  93. package/lib/cjs/temp-cleanup-strategy.d.ts +70 -0
  94. package/lib/cjs/temp-cleanup-strategy.d.ts.map +1 -0
  95. package/lib/cjs/temp-cleanup-strategy.js +157 -0
  96. package/lib/cjs/temp-cleanup-strategy.js.map +1 -0
  97. package/lib/cjs/temp-provider.d.ts +59 -0
  98. package/lib/cjs/temp-provider.d.ts.map +1 -0
  99. package/lib/cjs/temp-provider.js +150 -0
  100. package/lib/cjs/temp-provider.js.map +1 -0
  101. package/lib/mjs/cli/cat.d.ts +11 -0
  102. package/lib/mjs/cli/cat.d.ts.map +1 -0
  103. package/lib/mjs/cli/cat.js +37 -0
  104. package/lib/mjs/cli/cat.js.map +1 -0
  105. package/lib/mjs/cli/cp.d.ts +11 -0
  106. package/lib/mjs/cli/cp.d.ts.map +1 -0
  107. package/lib/mjs/cli/cp.js +38 -0
  108. package/lib/mjs/cli/cp.js.map +1 -0
  109. package/lib/mjs/cli/download.d.ts +7 -0
  110. package/lib/mjs/cli/download.d.ts.map +1 -0
  111. package/lib/mjs/cli/download.js +36 -0
  112. package/lib/mjs/cli/download.js.map +1 -0
  113. package/lib/mjs/cli/exists.d.ts +7 -0
  114. package/lib/mjs/cli/exists.d.ts.map +1 -0
  115. package/lib/mjs/cli/exists.js +36 -0
  116. package/lib/mjs/cli/exists.js.map +1 -0
  117. package/lib/mjs/cli/fs.d.ts +11 -1
  118. package/lib/mjs/cli/fs.d.ts.map +1 -1
  119. package/lib/mjs/cli/fs.js +43 -22
  120. package/lib/mjs/cli/fs.js.map +1 -1
  121. package/lib/mjs/cli/hash.d.ts +11 -0
  122. package/lib/mjs/cli/hash.d.ts.map +1 -0
  123. package/lib/mjs/cli/hash.js +37 -0
  124. package/lib/mjs/cli/hash.js.map +1 -0
  125. package/lib/mjs/cli/info.d.ts +7 -0
  126. package/lib/mjs/cli/info.d.ts.map +1 -0
  127. package/lib/mjs/cli/info.js +42 -0
  128. package/lib/mjs/cli/info.js.map +1 -0
  129. package/lib/mjs/cli/ls.d.ts +7 -0
  130. package/lib/mjs/cli/ls.d.ts.map +1 -0
  131. package/lib/mjs/cli/ls.js +37 -0
  132. package/lib/mjs/cli/ls.js.map +1 -0
  133. package/lib/mjs/cli/mkdir.d.ts +7 -0
  134. package/lib/mjs/cli/mkdir.d.ts.map +1 -0
  135. package/lib/mjs/cli/mkdir.js +36 -0
  136. package/lib/mjs/cli/mkdir.js.map +1 -0
  137. package/lib/mjs/cli/mv.d.ts +11 -0
  138. package/lib/mjs/cli/mv.d.ts.map +1 -0
  139. package/lib/mjs/cli/mv.js +38 -0
  140. package/lib/mjs/cli/mv.js.map +1 -0
  141. package/lib/mjs/cli/rm.d.ts +1 -6
  142. package/lib/mjs/cli/rm.d.ts.map +1 -1
  143. package/lib/mjs/cli/rm.js +15 -5
  144. package/lib/mjs/cli/rm.js.map +1 -1
  145. package/lib/mjs/cli/stat.d.ts +1 -5
  146. package/lib/mjs/cli/stat.d.ts.map +1 -1
  147. package/lib/mjs/cli/stat.js +21 -4
  148. package/lib/mjs/cli/stat.js.map +1 -1
  149. package/lib/mjs/cli/unzip.d.ts +11 -0
  150. package/lib/mjs/cli/unzip.d.ts.map +1 -0
  151. package/lib/mjs/cli/unzip.js +44 -0
  152. package/lib/mjs/cli/unzip.js.map +1 -0
  153. package/lib/mjs/cli/upload.d.ts +7 -0
  154. package/lib/mjs/cli/upload.d.ts.map +1 -0
  155. package/lib/mjs/cli/upload.js +37 -0
  156. package/lib/mjs/cli/upload.js.map +1 -0
  157. package/lib/mjs/cli/write.d.ts +13 -0
  158. package/lib/mjs/cli/write.d.ts.map +1 -0
  159. package/lib/mjs/cli/write.js +51 -0
  160. package/lib/mjs/cli/write.js.map +1 -0
  161. package/lib/mjs/cli/zip.d.ts +12 -0
  162. package/lib/mjs/cli/zip.d.ts.map +1 -0
  163. package/lib/mjs/cli/zip.js +48 -0
  164. package/lib/mjs/cli/zip.js.map +1 -0
  165. package/lib/mjs/config/fs.d.ts +9 -0
  166. package/lib/mjs/config/fs.d.ts.map +1 -0
  167. package/lib/mjs/config/fs.js +20 -0
  168. package/lib/mjs/config/fs.js.map +1 -0
  169. package/lib/mjs/file-hasher.d.ts +85 -5
  170. package/lib/mjs/file-hasher.d.ts.map +1 -1
  171. package/lib/mjs/file-hasher.js +106 -14
  172. package/lib/mjs/file-hasher.js.map +1 -1
  173. package/lib/mjs/file-info.d.ts +94 -5
  174. package/lib/mjs/file-info.d.ts.map +1 -1
  175. package/lib/mjs/file-info.js +233 -73
  176. package/lib/mjs/file-info.js.map +1 -1
  177. package/lib/mjs/fp.d.ts +80 -2
  178. package/lib/mjs/fp.d.ts.map +1 -1
  179. package/lib/mjs/fp.js +135 -4
  180. package/lib/mjs/fp.js.map +1 -1
  181. package/lib/mjs/index.d.ts +2 -1
  182. package/lib/mjs/index.d.ts.map +1 -1
  183. package/lib/mjs/index.js +8 -3
  184. package/lib/mjs/index.js.map +1 -1
  185. package/lib/mjs/interfaces.d.ts +89 -12
  186. package/lib/mjs/interfaces.d.ts.map +1 -1
  187. package/lib/mjs/interfaces.js +13 -13
  188. package/lib/mjs/interfaces.js.map +1 -1
  189. package/lib/mjs/local-provider.d.ts +51 -6
  190. package/lib/mjs/local-provider.d.ts.map +1 -1
  191. package/lib/mjs/local-provider.js +257 -79
  192. package/lib/mjs/local-provider.js.map +1 -1
  193. package/lib/mjs/temp-cleanup-strategy.d.ts +70 -0
  194. package/lib/mjs/temp-cleanup-strategy.d.ts.map +1 -0
  195. package/lib/mjs/temp-cleanup-strategy.js +153 -0
  196. package/lib/mjs/temp-cleanup-strategy.js.map +1 -0
  197. package/lib/mjs/temp-provider.d.ts +59 -0
  198. package/lib/mjs/temp-provider.d.ts.map +1 -0
  199. package/lib/mjs/temp-provider.js +147 -0
  200. package/lib/mjs/temp-provider.js.map +1 -0
  201. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  202. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  203. package/package.json +11 -6
  204. package/lib/cjs/local-temp-provider.d.ts +0 -18
  205. package/lib/cjs/local-temp-provider.d.ts.map +0 -1
  206. package/lib/cjs/local-temp-provider.js +0 -63
  207. package/lib/cjs/local-temp-provider.js.map +0 -1
  208. package/lib/mjs/local-temp-provider.d.ts +0 -18
  209. package/lib/mjs/local-temp-provider.d.ts.map +0 -1
  210. package/lib/mjs/local-temp-provider.js +0 -60
  211. package/lib/mjs/local-temp-provider.js.map +0 -1
@@ -1,6 +1,7 @@
1
- import { ReadStream } from 'fs';
1
+ import { Stats } from 'fs';
2
2
  import { fs, IFsLocalOptions, IStat, IZipResult } from './interfaces.js';
3
3
  import { Log } from '@spinajs/log-common';
4
+ import archiver from 'archiver';
4
5
  /**
5
6
  * Abstract layer for file operations.
6
7
  * Basic implementation is just wrapper for native node fs functions
@@ -8,7 +9,9 @@ import { Log } from '@spinajs/log-common';
8
9
  * It allows to wrap other libs eg. aws s3, ftp
9
10
  * and inject it into code without changing logic that use them.
10
11
  *
11
- * TODO: map errors to some kind of common errors shared with other implementations
12
+ * All failures are surfaced as IOFail ( the original error is preserved as the
13
+ * inner cause ). When basePath is set, all paths are sandboxed to it - resolved
14
+ * paths escaping basePath ( eg. via `..` ) throw IOFail.
12
15
  */
13
16
  export declare class fsNative<T extends IFsLocalOptions> extends fs {
14
17
  Options: T;
@@ -32,12 +35,12 @@ export declare class fsNative<T extends IFsLocalOptions> extends fs {
32
35
  /**
33
36
  * read all content of file
34
37
  */
35
- read(path: string, encoding?: BufferEncoding): Promise<string | Buffer<ArrayBufferLike>>;
36
- readStream(path: string, encoding?: BufferEncoding): Promise<ReadStream>;
38
+ read(path: string, encoding?: BufferEncoding): Promise<string | NonSharedBuffer>;
39
+ readStream(path: string, encoding?: BufferEncoding): Promise<import("fs").ReadStream>;
37
40
  /**
38
41
  * Write to file string or buffer
39
42
  */
40
- write(path: string, data: string | Uint8Array, encoding: BufferEncoding): Promise<void>;
43
+ write(path: string, data: string | Uint8Array, encoding?: BufferEncoding): Promise<void>;
41
44
  append(path: string, data: string | Uint8Array, encoding?: BufferEncoding): Promise<void>;
42
45
  writeStream(path: string, rStream?: BufferEncoding | NodeJS.ReadableStream, encoding?: BufferEncoding): Promise<import("fs").WriteStream>;
43
46
  /**
@@ -60,6 +63,11 @@ export declare class fsNative<T extends IFsLocalOptions> extends fs {
60
63
  * Change name of a file
61
64
  */
62
65
  rename(oldPath: string, newPath: string): Promise<void>;
66
+ /**
67
+ * Native rename seam - extracted so move/rename logic ( eg. EXDEV fallback )
68
+ * can be tested without a real cross-device setup.
69
+ */
70
+ protected _rename(oldPath: string, newPath: string): Promise<void>;
63
71
  /**
64
72
  *
65
73
  * Deletes file OR
@@ -79,7 +87,16 @@ export declare class fsNative<T extends IFsLocalOptions> extends fs {
79
87
  * Returns file statistics, not all fields may be accesible
80
88
  */
81
89
  stat(path: string): Promise<IStat>;
82
- tmppath(): string;
90
+ /**
91
+ * Maps native fs.Stats onto IStat.
92
+ *
93
+ * birthtime is the creation time; ctime is inode CHANGE time and would reset
94
+ * file age on chmod / rename ( breaks temp fs cleanup ageing ). Defensive:
95
+ * some filesystems report epoch 0 when birthtime is unsupported - fall back
96
+ * to mtime so age-based logic does not treat files as infinitely old.
97
+ */
98
+ protected toStatEntry(result: Stats): IStat;
99
+ tmppath(ext?: string): string;
83
100
  /**
84
101
  * List content of directory
85
102
  *
@@ -89,6 +106,34 @@ export declare class fsNative<T extends IFsLocalOptions> extends fs {
89
106
  unzip(path: string, destPath?: string, dstFs?: fs): Promise<string>;
90
107
  isDir(path: string): Promise<boolean>;
91
108
  zip(path: string | (string | string[])[], dstFs?: fs, dstFile?: string): Promise<IZipResult>;
109
+ /**
110
+ * Source path of a zip entry. Entries are either a plain path or a
111
+ * [ sourcePath, entryName ] tuple.
112
+ */
113
+ protected zipEntrySource(entry: string | string[]): string;
114
+ /**
115
+ * Name a zip entry is stored under. Defaults to the source path when no
116
+ * explicit entry name is given.
117
+ */
118
+ protected zipEntryName(entry: string | string[]): string;
119
+ /**
120
+ * Fails fast with a single clear error listing every missing source, so a
121
+ * missing entry never yields a silently incomplete archive.
122
+ */
123
+ protected assertSourcesExist(paths: (string | string[])[]): Promise<void>;
124
+ /**
125
+ * Adds every source to the archive - a plain-path directory is added
126
+ * recursively, everything else as a single file stored under its entry name.
127
+ */
128
+ protected addZipEntries(archive: ReturnType<typeof archiver>, paths: (string | string[])[]): Promise<void>;
129
+ /**
130
+ * Builds the {@link IZipResult} accessor object for a finished archive.
131
+ *
132
+ * The zip path is resolved against the DESTINATION fs ( outFile is relative
133
+ * to its base path ). Remote destinations may not support path resolving -
134
+ * fall back to the raw name so the accessors still work.
135
+ */
136
+ protected buildZipResult(fs: fs, outFile: string): IZipResult;
92
137
  resolvePath(path: string): string;
93
138
  }
94
139
  //# sourceMappingURL=local-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-provider.d.ts","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsF,UAAU,EAAE,MAAM,IAAI,CAAC;AAIpH,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,GAAG,EAAU,MAAM,qBAAqB,CAAC;AAMlD;;;;;;;;GAQG;AACH,qBAEa,QAAQ,CAAC,CAAC,SAAS,eAAe,CAAE,SAAQ,EAAE;IAYtC,OAAO,EAAE,CAAC;IAV7B,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;IAEtB;;;OAGG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;gBAEkB,OAAO,EAAE,CAAC;IAQhB,OAAO;IAmBpB;;;;;;OAMG;IACU,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASvC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAStD;;OAEG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc;IAYlD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc;IAIzD;;OAEG;IACU,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,EAAE,cAAc;IAgBvE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/F,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,cAAc;IAY5G;;;OAGG;IACU,MAAM,CAAC,IAAI,EAAE,MAAM;IASnB,SAAS,CAAC,IAAI,EAAE,MAAM;IAInC;;;;OAIG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;IAkBxD;;OAEG;IACU,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;IAY9D;;OAEG;IACU,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIpD;;;;;;OAMG;IACU,EAAE,CAAC,IAAI,EAAE,MAAM;IAI5B;;;;;OAKG;IACU,KAAK,CAAC,IAAI,EAAE,MAAM;IAI/B;;OAEG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAaxC,OAAO,IAAI,MAAM;IAIxB;;;;OAIG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;IAgBjD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAwElG,WAAW,CAAC,IAAI,EAAE,MAAM;CAIhC"}
1
+ {"version":3,"file":"local-provider.d.ts","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,9 @@ const util_1 = require("@spinajs/util");
33
33
  * It allows to wrap other libs eg. aws s3, ftp
34
34
  * and inject it into code without changing logic that use them.
35
35
  *
36
- * TODO: map errors to some kind of common errors shared with other implementations
36
+ * All failures are surfaced as IOFail ( the original error is preserved as the
37
+ * inner cause ). When basePath is set, all paths are sandboxed to it - resolved
38
+ * paths escaping basePath ( eg. via `..` ) throw IOFail.
37
39
  */
38
40
  let fsNative = class fsNative extends interfaces_js_1.fs {
39
41
  /**
@@ -52,12 +54,20 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
52
54
  }
53
55
  async resolve() {
54
56
  await super.resolve();
57
+ // canonicalize configured base path once - a relative basePath would otherwise
58
+ // resolve against cwd at every call ( and self-join in checks below )
59
+ if (this.Options.basePath) {
60
+ this.Options.basePath = (0, path_1.resolve)(this.Options.basePath);
61
+ }
55
62
  const basePath = this.Options.basePath ?? process.env.WORKSPACE_ROOT_PATH ?? process.cwd();
56
63
  this.Logger.info(`Initializing file provider ${this.Options.name} with base path ${basePath}`);
57
- if ((await this.exists(basePath)) === false) {
58
- this.Logger.warn(`Base path ${this.Options.basePath} for file provider ${this.Options.name} not exists, trying to create base folder`);
59
- await (0, promises_1.mkdir)(this.Options.basePath, { recursive: true });
60
- this.Logger.success(`Base path ${this.Options.basePath} created`);
64
+ // check the raw path - this.exists() would resolve it against basePath again
65
+ if (!(0, fs_1.existsSync)(basePath)) {
66
+ this.Logger.warn(`Base path ${basePath} for file provider ${this.Options.name} not exists, trying to create base folder`);
67
+ // use the computed base path - Options.basePath may be undefined when the
68
+ // env / cwd fallback was taken
69
+ await (0, promises_1.mkdir)(basePath, { recursive: true });
70
+ this.Logger.success(`Base path ${basePath} created`);
61
71
  }
62
72
  }
63
73
  /**
@@ -80,53 +90,81 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
80
90
  throw new exceptions_1.IOFail(`file ${srcPath} does not exists`);
81
91
  }
82
92
  const dPath = this.resolvePath(destPath ?? (0, path_1.basename)(srcPath));
83
- await (0, promises_2.cp)(srcPath, dPath, { force: true, recursive: true });
93
+ try {
94
+ // cp creates missing destination parent directories itself
95
+ await (0, promises_2.cp)(srcPath, dPath, { force: true, recursive: true });
96
+ }
97
+ catch (err) {
98
+ throw new exceptions_1.IOFail(`Cannot upload ${srcPath} to ${dPath}`, err);
99
+ }
84
100
  }
85
101
  /**
86
102
  * read all content of file
87
103
  */
88
104
  async read(path, encoding) {
89
- return new Promise((resolve, reject) => {
90
- (0, fs_1.readFile)(this.resolvePath(path), { encoding: encoding ?? 'binary' }, (err, data) => {
91
- if (err) {
92
- reject(err);
93
- }
94
- else {
95
- resolve(data);
96
- }
97
- });
98
- });
105
+ const p = this.resolvePath(path);
106
+ try {
107
+ // no encoding -> raw Buffer. Defaulting to 'binary' ( latin1 ) would return
108
+ // a string and corrupt binary data for callers expecting a Buffer.
109
+ return await (0, promises_1.readFile)(p, { encoding: encoding ?? null });
110
+ }
111
+ catch (err) {
112
+ throw new exceptions_1.IOFail(`Cannot read file ${path}`, err);
113
+ }
99
114
  }
100
- readStream(path, encoding) {
101
- return Promise.resolve((0, fs_1.createReadStream)(this.resolvePath(path), { encoding: encoding ?? 'binary' }));
115
+ async readStream(path, encoding) {
116
+ const p = this.resolvePath(path);
117
+ // fail fast with a consistent error - otherwise the error surfaces asynchronously
118
+ // on the returned stream. NOTE: runtime read failures are still stream errors.
119
+ if (!(await this.exists(path))) {
120
+ throw new exceptions_1.IOFail(`Cannot read file ${path}, file does not exists`);
121
+ }
122
+ return (0, fs_1.createReadStream)(p, encoding ? { encoding } : {});
102
123
  }
103
124
  /**
104
125
  * Write to file string or buffer
105
126
  */
106
127
  async write(path, data, encoding) {
107
- let fHandle = null;
128
+ const p = this.resolvePath(path);
129
+ let fHandle;
130
+ try {
131
+ fHandle = await (0, promises_1.open)(p, 'w');
132
+ }
133
+ catch (err) {
134
+ throw new exceptions_1.IOFail(`Cannot open file ${path} for writing`, err);
135
+ }
108
136
  try {
109
- fHandle = await (0, promises_1.open)(this.resolvePath(path), 'w');
110
137
  await fHandle.writeFile(data, { encoding });
138
+ // flush to disk so data is durable before success is reported
139
+ await fHandle.sync();
111
140
  }
112
141
  catch (err) {
113
142
  throw new exceptions_1.IOFail(`Cannot write to file ${path}`, err);
114
143
  }
115
144
  finally {
116
- if (fHandle) {
117
- await fHandle.sync();
118
- await fHandle.close();
119
- }
145
+ // close must ALWAYS run and must never mask the original error
146
+ await fHandle.close().catch(() => { });
120
147
  }
121
148
  }
122
149
  async append(path, data, encoding) {
123
- await (0, promises_1.appendFile)(path, data, encoding);
150
+ const p = this.resolvePath(path);
151
+ try {
152
+ await (0, promises_1.appendFile)(p, data, encoding);
153
+ }
154
+ catch (err) {
155
+ throw new exceptions_1.IOFail(`Cannot append to file ${path}`, err);
156
+ }
124
157
  }
125
158
  writeStream(path, rStream, encoding) {
126
- const stream = (0, fs_1.createWriteStream)(this.resolvePath(path), {
127
- encoding: (typeof rStream === 'string' ? rStream : encoding) ?? 'binary',
128
- });
129
- if (rStream instanceof fs_1.ReadStream) {
159
+ const enc = typeof rStream === 'string' ? rStream : encoding;
160
+ const stream = (0, fs_1.createWriteStream)(this.resolvePath(path), enc ? { encoding: enc } : {});
161
+ // pipe ANY readable stream, not only fs.ReadStream instances - the contract accepts
162
+ // NodeJS.ReadableStream ( PassThrough, http/s3 bodies etc. ), instanceof would
163
+ // silently skip those and stall the caller
164
+ if (rStream && typeof rStream !== 'string' && typeof rStream.pipe === 'function') {
165
+ // pipe() does NOT forward errors - without this, a failing source leaves the
166
+ // write stream open forever and the caller waiting for 'close' hangs
167
+ rStream.on('error', (err) => stream.destroy(err instanceof Error ? err : new exceptions_1.IOFail(String(err))));
130
168
  rStream.pipe(stream);
131
169
  }
132
170
  return Promise.resolve(stream);
@@ -145,7 +183,7 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
145
183
  }
146
184
  }
147
185
  async dirExists(path) {
148
- return this.exists(this.resolvePath(path));
186
+ return this.isDir(path);
149
187
  }
150
188
  /**
151
189
  * Copy file or dir to another location
@@ -163,10 +201,15 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
163
201
  }
164
202
  else {
165
203
  const dPath = this.resolvePath(dest);
166
- await (0, promises_2.cp)(sPath, dPath, {
167
- recursive: true,
168
- force: true,
169
- });
204
+ try {
205
+ await (0, promises_2.cp)(sPath, dPath, {
206
+ recursive: true,
207
+ force: true,
208
+ });
209
+ }
210
+ catch (err) {
211
+ throw new exceptions_1.IOFail(`Cannot copy ${path} to ${dest}`, err);
212
+ }
170
213
  }
171
214
  }
172
215
  /**
@@ -177,17 +220,45 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
177
220
  if (dstFs) {
178
221
  await dstFs.upload(oPath, newPath);
179
222
  await this.rm(oldPath);
223
+ return;
180
224
  }
181
- else {
182
- const nPath = this.resolvePath(newPath);
183
- await (0, promises_1.rename)(oPath, nPath);
225
+ const nPath = this.resolvePath(newPath);
226
+ // rename does not create missing destination directories - align with copy
227
+ // ( cp creates them ). Failures here are ignored, rename reports the real error.
228
+ await (0, promises_1.mkdir)((0, path_1.dirname)(nPath), { recursive: true }).catch(() => { });
229
+ try {
230
+ await this._rename(oPath, nPath);
231
+ }
232
+ catch (err) {
233
+ // rename cannot cross devices / mounts ( eg. C: -> D:, docker volumes ) -
234
+ // fall back to copy + delete
235
+ if (err?.code === 'EXDEV') {
236
+ await (0, promises_2.cp)(oPath, nPath, { recursive: true, force: true });
237
+ await this.rm(oldPath);
238
+ return;
239
+ }
240
+ throw new exceptions_1.IOFail(`Cannot move ${oldPath} to ${newPath}`, err);
184
241
  }
185
242
  }
186
243
  /**
187
244
  * Change name of a file
188
245
  */
189
246
  async rename(oldPath, newPath) {
190
- await (0, promises_1.rename)(this.resolvePath(oldPath), this.resolvePath(newPath));
247
+ const oPath = this.resolvePath(oldPath);
248
+ const nPath = this.resolvePath(newPath);
249
+ try {
250
+ await this._rename(oPath, nPath);
251
+ }
252
+ catch (err) {
253
+ throw new exceptions_1.IOFail(`Cannot rename ${oldPath} to ${newPath}`, err);
254
+ }
255
+ }
256
+ /**
257
+ * Native rename seam - extracted so move/rename logic ( eg. EXDEV fallback )
258
+ * can be tested without a real cross-device setup.
259
+ */
260
+ _rename(oldPath, newPath) {
261
+ return (0, promises_1.rename)(oldPath, newPath);
191
262
  }
192
263
  /**
193
264
  *
@@ -206,24 +277,47 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
206
277
  * @param path - directory to create
207
278
  */
208
279
  async mkdir(path) {
209
- await (0, promises_1.mkdir)(this.resolvePath(path), { recursive: true });
280
+ const p = this.resolvePath(path);
281
+ try {
282
+ await (0, promises_1.mkdir)(p, { recursive: true });
283
+ }
284
+ catch (err) {
285
+ throw new exceptions_1.IOFail(`Cannot create directory ${path}`, err);
286
+ }
210
287
  }
211
288
  /**
212
289
  * Returns file statistics, not all fields may be accesible
213
290
  */
214
291
  async stat(path) {
215
- const result = await (0, promises_1.stat)(this.resolvePath(path));
292
+ const p = this.resolvePath(path);
293
+ try {
294
+ return this.toStatEntry(await (0, promises_1.stat)(p));
295
+ }
296
+ catch (err) {
297
+ throw err instanceof exceptions_1.IOFail ? err : new exceptions_1.IOFail(`Cannot stat ${path}`, err);
298
+ }
299
+ }
300
+ /**
301
+ * Maps native fs.Stats onto IStat.
302
+ *
303
+ * birthtime is the creation time; ctime is inode CHANGE time and would reset
304
+ * file age on chmod / rename ( breaks temp fs cleanup ageing ). Defensive:
305
+ * some filesystems report epoch 0 when birthtime is unsupported - fall back
306
+ * to mtime so age-based logic does not treat files as infinitely old.
307
+ */
308
+ toStatEntry(result) {
309
+ const birth = result.birthtime && result.birthtime.getTime() > 0 ? result.birthtime : result.mtime;
216
310
  return {
217
311
  IsDirectory: result.isDirectory(),
218
312
  IsFile: result.isFile(),
219
- CreationTime: luxon_1.DateTime.fromJSDate(result.ctime),
313
+ CreationTime: luxon_1.DateTime.fromJSDate(birth),
220
314
  ModifiedTime: luxon_1.DateTime.fromJSDate(result.mtime),
221
315
  AccessTime: luxon_1.DateTime.fromJSDate(result.atime),
222
316
  Size: result.size,
223
317
  };
224
318
  }
225
- tmppath() {
226
- return (0, path_1.join)(this.Options.basePath, super.tmpname());
319
+ tmppath(ext) {
320
+ return (0, path_1.join)(this.Options.basePath, super.tmpname(ext));
227
321
  }
228
322
  /**
229
323
  * List content of directory
@@ -231,18 +325,32 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
231
325
  * @param path - path to directory
232
326
  */
233
327
  async list(path) {
234
- return await (0, promises_1.readdir)(this.resolvePath(path));
328
+ const p = this.resolvePath(path);
329
+ try {
330
+ return await (0, promises_1.readdir)(p);
331
+ }
332
+ catch (err) {
333
+ throw new exceptions_1.IOFail(`Cannot list directory ${path}`, err);
334
+ }
235
335
  }
236
336
  async unzip(path, destPath, dstFs) {
337
+ const srcPath = this.resolvePath(path);
338
+ if (!(await this.exists(path))) {
339
+ throw new exceptions_1.IOFail(`Cannot unzip, file ${path} does not exists`);
340
+ }
237
341
  const dFs = dstFs ?? this;
238
342
  const dst = dFs.resolvePath(destPath ?? dFs.tmpname());
239
343
  return new Promise((resolve, reject) => {
240
- (0, fs_1.createReadStream)(this.resolvePath(path)).pipe(unzipper_1.default
344
+ const rStream = (0, fs_1.createReadStream)(srcPath);
345
+ // without this handler a source read error is an unhandled stream 'error'
346
+ // event and CRASHES the process instead of rejecting
347
+ rStream.on('error', (err) => reject(new exceptions_1.IOFail(`Cannot read zip file ${path}`, err)));
348
+ rStream.pipe(unzipper_1.default
241
349
  .Extract({
242
350
  path: dst,
243
351
  })
244
352
  .on('close', () => resolve(dst))
245
- .on('error', reject));
353
+ .on('error', (err) => reject(new exceptions_1.IOFail(`Cannot unzip file ${path}`, err))));
246
354
  });
247
355
  }
248
356
  async isDir(path) {
@@ -256,21 +364,14 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
256
364
  }
257
365
  async zip(path, dstFs, dstFile) {
258
366
  const paths = (0, util_1.toArray)(path);
367
+ await this.assertSourcesExist(paths);
259
368
  const fs = dstFs ?? (await di_1.DI.resolve('__file_provider__', ['fs-temp']));
260
369
  const outFile = dstFile ?? `${fs.tmpname()}.zip`;
261
370
  const wStream = await fs.writeStream(outFile);
262
371
  const archive = (0, archiver_1.default)('zip');
263
372
  // pipe archive data to the file
264
373
  archive.pipe(wStream);
265
- for (const p of paths) {
266
- if (!Array.isArray(p)) {
267
- if (await this.isDir(p)) {
268
- archive.directory(this.resolvePath(p), false);
269
- continue;
270
- }
271
- }
272
- archive.file(this.resolvePath(Array.isArray(p) ? p[0] : p), { name: (0, path_1.basename)(Array.isArray(p) ? p[1] : p) });
273
- }
374
+ await this.addZipEntries(archive, paths);
274
375
  archive.on('entry', (entry) => {
275
376
  this.Logger.trace(`Archiving file ${entry.name}, size: ${entry.stats?.size} into ${outFile}, fs: ${fs.Name}`);
276
377
  });
@@ -289,32 +390,109 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
289
390
  reject(new exceptions_1.IOFail('Archiving error', err));
290
391
  });
291
392
  wStream.on('close', () => {
292
- const result = {
293
- fs,
294
- asFilePath: () => {
295
- return outFile;
296
- },
297
- asStream: (encoding) => {
298
- return (0, fs_1.createReadStream)(outFile, {
299
- encoding: encoding ?? 'binary',
300
- });
301
- },
302
- asBase64: () => {
303
- return (0, fs_1.readFileSync)(outFile, { encoding: 'base64' });
304
- },
305
- unlink: async () => {
306
- return await fs.rm(outFile);
307
- },
308
- };
309
- resolve(result);
393
+ resolve(this.buildZipResult(fs, outFile));
310
394
  });
311
- archive.finalize();
395
+ // finalize() also reports failures via its returned promise - catch it so a
396
+ // failure is not an unhandled rejection on top of the 'error' event
397
+ archive.finalize().catch((err) => reject(new exceptions_1.IOFail('Archiving error', err)));
312
398
  });
313
399
  }
400
+ /**
401
+ * Source path of a zip entry. Entries are either a plain path or a
402
+ * [ sourcePath, entryName ] tuple.
403
+ */
404
+ zipEntrySource(entry) {
405
+ return Array.isArray(entry) ? entry[0] : entry;
406
+ }
407
+ /**
408
+ * Name a zip entry is stored under. Defaults to the source path when no
409
+ * explicit entry name is given.
410
+ */
411
+ zipEntryName(entry) {
412
+ return Array.isArray(entry) ? entry[1] : entry;
413
+ }
414
+ /**
415
+ * Fails fast with a single clear error listing every missing source, so a
416
+ * missing entry never yields a silently incomplete archive.
417
+ */
418
+ async assertSourcesExist(paths) {
419
+ const missing = [];
420
+ for (const p of paths) {
421
+ const src = this.zipEntrySource(p);
422
+ if (!(await this.exists(src))) {
423
+ missing.push(src);
424
+ }
425
+ }
426
+ if (missing.length > 0) {
427
+ throw new exceptions_1.IOFail(`Cannot zip, source path(s) not found: ${missing.join(', ')}`);
428
+ }
429
+ }
430
+ /**
431
+ * Adds every source to the archive - a plain-path directory is added
432
+ * recursively, everything else as a single file stored under its entry name.
433
+ */
434
+ async addZipEntries(archive, paths) {
435
+ for (const p of paths) {
436
+ if (!Array.isArray(p) && (await this.isDir(p))) {
437
+ archive.directory(this.resolvePath(p), false);
438
+ continue;
439
+ }
440
+ archive.file(this.resolvePath(this.zipEntrySource(p)), { name: (0, path_1.basename)(this.zipEntryName(p)) });
441
+ }
442
+ }
443
+ /**
444
+ * Builds the {@link IZipResult} accessor object for a finished archive.
445
+ *
446
+ * The zip path is resolved against the DESTINATION fs ( outFile is relative
447
+ * to its base path ). Remote destinations may not support path resolving -
448
+ * fall back to the raw name so the accessors still work.
449
+ */
450
+ buildZipResult(fs, outFile) {
451
+ let zipPath = outFile;
452
+ try {
453
+ zipPath = fs.resolvePath(outFile);
454
+ }
455
+ catch {
456
+ /* keep outFile as-is */
457
+ }
458
+ return {
459
+ fs,
460
+ asFilePath: () => zipPath,
461
+ asStream: (encoding) => (0, fs_1.createReadStream)(zipPath, encoding ? { encoding } : {}),
462
+ asBase64: () => (0, fs_1.readFileSync)(zipPath, { encoding: 'base64' }),
463
+ unlink: async () => await fs.rm(outFile),
464
+ };
465
+ }
314
466
  resolvePath(path) {
315
- if (!this.Options.basePath || path.startsWith(this.Options.basePath))
467
+ if (!this.Options.basePath)
316
468
  return path;
317
- return (0, path_1.join)(this.Options.basePath, path);
469
+ const base = this.Options.basePath;
470
+ if ((0, path_1.isAbsolute)(path)) {
471
+ // absolute path already inside basePath is returned as-is. Using
472
+ // path.relative instead of startsWith avoids false positives on sibling
473
+ // directories (eg. basePath `/data/files` and path `/data/files-2/x`)
474
+ // and is separator-safe across platforms.
475
+ const rel = (0, path_1.relative)(base, path);
476
+ if (rel === '' || (!rel.startsWith('..') && !(0, path_1.isAbsolute)(rel))) {
477
+ return path;
478
+ }
479
+ // fully-qualified paths ( drive letter / UNC on windows ) outside the
480
+ // sandbox are rejected. Rooted-but-driveless paths ( `/x`, `\x` ) are the
481
+ // established "fs root" idiom ( eg. list('/') ) and fall through to be
482
+ // resolved relative to basePath, exactly like join() always treated them.
483
+ const root = (0, path_1.parse)(path).root;
484
+ if (root !== '/' && root !== '\\') {
485
+ throw new exceptions_1.IOFail(`Path ${path} is outside of filesystem base path ( ${base} ), fs: ${this.Options.name}`);
486
+ }
487
+ }
488
+ // join normalizes `..` segments - verify the result still lives inside basePath
489
+ // so relative paths cannot escape the sandbox ( eg. ../../etc/passwd )
490
+ const joined = (0, path_1.join)(base, path);
491
+ const rel = (0, path_1.relative)(base, joined);
492
+ if (rel.startsWith('..') || (0, path_1.isAbsolute)(rel)) {
493
+ throw new exceptions_1.IOFail(`Path ${path} escapes filesystem base path ( ${base} ), fs: ${this.Options.name}`);
494
+ }
495
+ return joined;
318
496
  }
319
497
  };
320
498
  exports.fsNative = fsNative;
@@ -1 +1 @@
1
- {"version":3,"file":"local-provider.js","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4DAA4D;AAC5D,oDAA6C;AAC7C,2BAAoH;AACpH,+CAA8F;AAC9F,iCAAiC;AACjC,oCAA+D;AAC/D,mDAAyE;AACzE,+BAAsC;AACtC,oDAAkD;AAClD,wDAAgC;AAChC,wDAAgC;AAChC,0CAA6C;AAC7C,wCAAwC;AAExC;;;;;;;;GAQG;AAGI,IAAM,QAAQ,GAAd,MAAM,QAAoC,SAAQ,kBAAE;IAIzD;;;OAGG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,YAAmB,OAAU;QAC3B,KAAK,EAAE,CAAC;QADS,YAAO,GAAP,OAAO,CAAG;QAG3B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,mBAAM,CAAC,0EAA0E,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO;QAElB,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAEtB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAE3F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,OAAO,CAAC,IAAI,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAE/F,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,aAAa,IAAI,CAAC,OAAO,CAAC,QAAQ,sBAAsB,IAAI,CAAC,OAAO,CAAC,IAAI,2CAA2C,CACrH,CAAC;YAEF,MAAM,IAAA,gBAAK,EAAC,IAAI,CAAC,OAAO,CAAC,QAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,QAAQ,UAAU,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,QAAQ,CAAC,IAAY;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,mBAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,QAAiB;QACpD,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,mBAAM,CAAC,QAAQ,OAAO,kBAAkB,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAA,eAAQ,EAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAA,aAAE,EAAC,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,QAAyB;QACvD,OAAO,IAAI,OAAO,CAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtD,IAAA,aAAQ,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACjF,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,UAAU,CAAC,IAAY,EAAE,QAAyB;QACvD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAA,qBAAgB,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,IAAyB,EAAE,QAAwB;QAClF,IAAI,OAAO,GAAe,IAAW,CAAC;QAEtC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAA,eAAI,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAM,CAAC,wBAAwB,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,IAAyB,EAAE,QAAyB;QACpF,MAAM,IAAA,qBAAU,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAEM,WAAW,CAAC,IAAY,EAAE,OAAgD,EAAE,QAAyB;QAC1G,MAAM,MAAM,GAAG,IAAA,sBAAiB,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACvD,QAAQ,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,QAAQ;SACzE,CAAC,CAAC;QAEH,IAAI,OAAO,YAAY,eAAU,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,MAAM,CAAC,IAAY;QAC9B,IAAI,CAAC;YACH,MAAM,IAAA,iBAAM,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,cAAS,CAAC,IAAI,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,IAAY,EAAE,KAAU;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,mBAAM,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,IAAA,aAAE,EAAC,KAAK,EAAE,KAAK,EAAE;gBACrB,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,OAAe,EAAE,KAAU;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,IAAA,iBAAM,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,OAAe;QAClD,MAAM,IAAA,iBAAM,EAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,EAAE,CAAC,IAAY;QAC1B,MAAM,IAAA,aAAE,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACtG,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,KAAK,CAAC,IAAY;QAC7B,MAAM,IAAA,gBAAK,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CAAC,IAAY;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAA,eAAI,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAElD,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YACvB,YAAY,EAAE,gBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/C,YAAY,EAAE,gBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/C,UAAU,EAAE,gBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7C,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;IACJ,CAAC;IAEM,OAAO;QACZ,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,CAAC,QAAS,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAC,IAAY;QAC5B,OAAO,MAAM,IAAA,kBAAO,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,QAAiB,EAAE,KAAU;QAC5D,MAAM,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC;QAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAEvD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,IAAA,qBAAgB,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC3C,kBAAQ;iBACL,OAAO,CAAC;gBACP,IAAI,EAAE,GAAG;aACV,CAAC;iBACD,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;iBAC/B,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CACvB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY;QAC7B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,IAAoC,EAAE,KAAU,EAAE,OAAgB;QACjF,MAAM,KAAK,GAAG,IAAA,cAAO,EAAC,IAAW,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC,MAAM,OAAE,CAAC,OAAO,CAAK,mBAAmB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAA,kBAAQ,EAAC,KAAK,CAAC,CAAC;QAEhC,gCAAgC;QAChC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBAC9C,SAAS;gBACX,CAAC;YACH,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAA,eAAQ,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/G,CAAC;QAED,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,OAAO,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,WAAW,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,SAAS,KAAK,CAAC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,CACnH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,8CAA8C,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;oBACrF,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,IAAI,mBAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC1B,MAAM,CAAC,IAAI,mBAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACvB,MAAM,MAAM,GAAG;oBACb,EAAE;oBACF,UAAU,EAAE,GAAG,EAAE;wBACf,OAAO,OAAO,CAAC;oBACjB,CAAC;oBACD,QAAQ,EAAE,CAAC,QAAyB,EAAE,EAAE;wBACtC,OAAO,IAAA,qBAAgB,EAAC,OAAO,EAAE;4BAC/B,QAAQ,EAAE,QAAQ,IAAI,QAAQ;yBAC/B,CAAC,CAAC;oBACL,CAAC;oBACD,QAAQ,EAAE,GAAG,EAAE;wBACb,OAAO,IAAA,iBAAY,EAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACvD,CAAC;oBAED,MAAM,EAAE,KAAK,IAAI,EAAE;wBACjB,OAAO,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;oBAC9B,CAAC;iBACF,CAAC;gBAEF,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW,CAAC,IAAY;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAClF,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF,CAAA;AA3UY,4BAAQ;AAET;IADT,IAAA,mBAAM,EAAC,IAAI,CAAC;8BACK,gBAAG;wCAAC;mBAFX,QAAQ;IAFpB,IAAA,eAAU,EAAC,IAAI,CAAC;IAChB,IAAA,qBAAgB,GAAE;;GACN,QAAQ,CA2UpB"}
1
+ {"version":3,"file":"local-provider.js","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4DAA4D;AAC5D,oDAA6C;AAC7C,2BAAqG;AACrG,+CAAwG;AACxG,iCAAiC;AACjC,oCAA+D;AAC/D,mDAAyE;AACzE,+BAAoG;AACpG,oDAAkD;AAClD,wDAAgC;AAChC,wDAAgC;AAChC,0CAA6C;AAC7C,wCAAwC;AAExC;;;;;;;;;;GAUG;AAGI,IAAM,QAAQ,GAAd,MAAM,QAAoC,SAAQ,kBAAE;IAIzD;;;OAGG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,YAAmB,OAAU;QAC3B,KAAK,EAAE,CAAC;QADS,YAAO,GAAP,OAAO,CAAG;QAG3B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,mBAAM,CAAC,0EAA0E,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAEtB,+EAA+E;QAC/E,sEAAsE;QACtE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAA,cAAW,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAE3F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,OAAO,CAAC,IAAI,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAE/F,6EAA6E;QAC7E,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,aAAa,QAAQ,sBAAsB,IAAI,CAAC,OAAO,CAAC,IAAI,2CAA2C,CACxG,CAAC;YAEF,0EAA0E;YAC1E,+BAA+B;YAC/B,MAAM,IAAA,gBAAK,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE3C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,QAAQ,UAAU,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,QAAQ,CAAC,IAAY;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,mBAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,QAAiB;QACpD,IAAI,CAAC,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,mBAAM,CAAC,QAAQ,OAAO,kBAAkB,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAA,eAAQ,EAAC,OAAO,CAAC,CAAC,CAAC;QAE9D,IAAI,CAAC;YACH,2DAA2D;YAC3D,MAAM,IAAA,aAAE,EAAC,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAM,CAAC,iBAAiB,OAAO,OAAO,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,QAAyB;QACvD,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC;YACH,4EAA4E;YAC5E,mEAAmE;YACnE,OAAO,MAAM,IAAA,mBAAQ,EAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAM,CAAC,oBAAoB,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,QAAyB;QAC7D,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjC,kFAAkF;QAClF,+EAA+E;QAC/E,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,mBAAM,CAAC,oBAAoB,IAAI,wBAAwB,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,IAAA,qBAAgB,EAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,IAAyB,EAAE,QAAyB;QACnF,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,OAAmB,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAA,eAAI,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAM,CAAC,oBAAoB,IAAI,cAAc,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAE5C,8DAA8D;YAC9D,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAM,CAAC,wBAAwB,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,+DAA+D;YAC/D,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,IAAyB,EAAE,QAAyB;QACpF,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,IAAA,qBAAU,EAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAM,CAAC,yBAAyB,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEM,WAAW,CAAC,IAAY,EAAE,OAAgD,EAAE,QAAyB;QAC1G,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAA,sBAAiB,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEvF,oFAAoF;QACpF,+EAA+E;QAC/E,2CAA2C;QAC3C,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACjF,6EAA6E;YAC7E,qEAAqE;YACrE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,mBAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,MAAM,CAAC,IAAY;QAC9B,IAAI,CAAC;YACH,MAAM,IAAA,iBAAM,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,cAAS,CAAC,IAAI,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,IAAY,EAAE,KAAU;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,mBAAM,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,CAAC;gBACH,MAAM,IAAA,aAAE,EAAC,KAAK,EAAE,KAAK,EAAE;oBACrB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,mBAAM,CAAC,eAAe,IAAI,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,OAAe,EAAE,KAAU;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAExC,2EAA2E;QAC3E,iFAAiF;QACjF,MAAM,IAAA,gBAAK,EAAC,IAAA,cAAO,EAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEjE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,0EAA0E;YAC1E,6BAA6B;YAC7B,IAAK,GAA6B,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrD,MAAM,IAAA,aAAE,EAAC,KAAK,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzD,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,MAAM,IAAI,mBAAM,CAAC,eAAe,OAAO,OAAO,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,OAAe;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAM,CAAC,iBAAiB,OAAO,OAAO,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED;;;OAGG;IACO,OAAO,CAAC,OAAe,EAAE,OAAe;QAChD,OAAO,IAAA,iBAAM,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,EAAE,CAAC,IAAY;QAC1B,MAAM,IAAA,aAAE,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACtG,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,KAAK,CAAC,IAAY;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,IAAA,gBAAK,EAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAM,CAAC,2BAA2B,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CAAC,IAAY;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,IAAA,eAAI,EAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,YAAY,mBAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,mBAAM,CAAC,eAAe,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACO,WAAW,CAAC,MAAa;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAEnG,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YACvB,YAAY,EAAE,gBAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;YACxC,YAAY,EAAE,gBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/C,UAAU,EAAE,gBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7C,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;IACJ,CAAC;IAEM,OAAO,CAAC,GAAY;QACzB,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,CAAC,QAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAC,IAAY;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,kBAAO,EAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAM,CAAC,yBAAyB,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,QAAiB,EAAE,KAAU;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,mBAAM,CAAC,sBAAsB,IAAI,kBAAkB,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC;QAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAEvD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,IAAA,qBAAgB,EAAC,OAAO,CAAC,CAAC;YAE1C,0EAA0E;YAC1E,qDAAqD;YACrD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,mBAAM,CAAC,wBAAwB,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAEtF,OAAO,CAAC,IAAI,CACV,kBAAQ;iBACL,OAAO,CAAC;gBACP,IAAI,EAAE,GAAG;aACV,CAAC;iBACD,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;iBAC/B,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,mBAAM,CAAC,qBAAqB,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAC9E,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY;QAC7B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,IAAoC,EAAE,KAAU,EAAE,OAAgB;QACjF,MAAM,KAAK,GAAG,IAAA,cAAO,EAAC,IAAW,CAA0B,CAAC;QAE5D,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAErC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC,MAAM,OAAE,CAAC,OAAO,CAAK,mBAAmB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAA,kBAAQ,EAAC,KAAK,CAAC,CAAC;QAEhC,gCAAgC;QAChC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtB,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEzC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,KAAK,EAAE,IAAI,SAAS,OAAO,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,WAAW,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,SAAS,KAAK,CAAC,EAAE,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,CACnH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,8CAA8C,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;oBACrF,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,IAAI,mBAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC1B,MAAM,CAAC,IAAI,mBAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACvB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,4EAA4E;YAC5E,oEAAoE;YACpE,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,mBAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACO,cAAc,CAAC,KAAwB;QAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,CAAC;IAED;;;OAGG;IACO,YAAY,CAAC,KAAwB;QAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,kBAAkB,CAAC,KAA4B;QAC7D,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,mBAAM,CAAC,yCAAyC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,aAAa,CAAC,OAAoC,EAAE,KAA4B;QAC9F,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC9C,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAA,eAAQ,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACO,cAAc,CAAC,EAAM,EAAE,OAAe;QAC9C,IAAI,OAAO,GAAG,OAAO,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;QAED,OAAO;YACL,EAAE;YACF,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO;YACzB,QAAQ,EAAE,CAAC,QAAyB,EAAE,EAAE,CAAC,IAAA,qBAAgB,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChG,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,iBAAY,EAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC7D,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;SACzC,CAAC;IACJ,CAAC;IAEM,WAAW,CAAC,IAAY;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAExC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAEnC,IAAI,IAAA,iBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;YACrB,iEAAiE;YACjE,wEAAwE;YACxE,sEAAsE;YACtE,0CAA0C;YAC1C,MAAM,GAAG,GAAG,IAAA,eAAQ,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjC,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAA,iBAAU,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC9D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,sEAAsE;YACtE,0EAA0E;YAC1E,uEAAuE;YACvE,0EAA0E;YAC1E,MAAM,IAAI,GAAG,IAAA,YAAK,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YAC9B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClC,MAAM,IAAI,mBAAM,CAAC,QAAQ,IAAI,yCAAyC,IAAI,WAAW,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC;QAED,gFAAgF;QAChF,uEAAuE;QACvE,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,IAAA,eAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEnC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAA,iBAAU,EAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,mBAAM,CAAC,QAAQ,IAAI,mCAAmC,IAAI,WAAW,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACtG,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AArhBY,4BAAQ;AAET;IADT,IAAA,mBAAM,EAAC,IAAI,CAAC;8BACK,gBAAG;wCAAC;mBAFX,QAAQ;IAFpB,IAAA,eAAU,EAAC,IAAI,CAAC;IAChB,IAAA,qBAAgB,GAAE;;GACN,QAAQ,CAqhBpB"}