@nicolastoulemont/std 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/dist/adt/index.d.mts +1 -1
  2. package/dist/adt/index.mjs +1 -3
  3. package/dist/adt-DZmVJG4P.mjs +2 -0
  4. package/dist/adt-DZmVJG4P.mjs.map +1 -0
  5. package/dist/{apply-fn.types-CXDoeA7D.d.mts → apply-fn.types-CMgY6WQe.d.mts} +1 -1
  6. package/dist/{apply-fn.types-CXDoeA7D.d.mts.map → apply-fn.types-CMgY6WQe.d.mts.map} +1 -1
  7. package/dist/brand/index.d.mts +2 -2
  8. package/dist/brand/index.mjs +1 -3
  9. package/dist/brand-BUqMmkzC.mjs +2 -0
  10. package/dist/{brand-CTaxGuU9.mjs.map → brand-BUqMmkzC.mjs.map} +1 -1
  11. package/dist/data/index.d.mts +1 -1
  12. package/dist/data/index.mjs +1 -3
  13. package/dist/data-DzqKBCQg.mjs +2 -0
  14. package/dist/data-DzqKBCQg.mjs.map +1 -0
  15. package/dist/discriminator.types-DkThfvNE.d.mts +7 -0
  16. package/dist/discriminator.types-DkThfvNE.d.mts.map +1 -0
  17. package/dist/either/index.d.mts +2 -2
  18. package/dist/either/index.mjs +1 -3
  19. package/dist/either-BDY9T5oz.mjs +2 -0
  20. package/dist/either-BDY9T5oz.mjs.map +1 -0
  21. package/dist/equality-D2EJvZm4.mjs +2 -0
  22. package/dist/equality-D2EJvZm4.mjs.map +1 -0
  23. package/dist/err/index.d.mts +2 -2
  24. package/dist/err/index.mjs +1 -3
  25. package/dist/err-CYs4b1RV.mjs +2 -0
  26. package/dist/err-CYs4b1RV.mjs.map +1 -0
  27. package/dist/flow/index.d.mts +1 -1
  28. package/dist/flow/index.mjs +1 -3
  29. package/dist/flow-CxKQ5yac.mjs +2 -0
  30. package/dist/flow-CxKQ5yac.mjs.map +1 -0
  31. package/dist/fx/index.d.mts +3 -0
  32. package/dist/fx/index.mjs +1 -0
  33. package/dist/fx-C4UuWCqP.mjs +2 -0
  34. package/dist/fx-C4UuWCqP.mjs.map +1 -0
  35. package/dist/fx.types-CXTwEa1G.mjs +2 -0
  36. package/dist/fx.types-CXTwEa1G.mjs.map +1 -0
  37. package/dist/fx.types-DO-8yG4c.d.mts +133 -0
  38. package/dist/fx.types-DO-8yG4c.d.mts.map +1 -0
  39. package/dist/index-78LWwTds.d.mts +288 -0
  40. package/dist/index-78LWwTds.d.mts.map +1 -0
  41. package/dist/index-BQ5wVDSP.d.mts +441 -0
  42. package/dist/index-BQ5wVDSP.d.mts.map +1 -0
  43. package/dist/{index-tkgTLCoq.d.mts → index-BahMvQpA.d.mts} +2 -2
  44. package/dist/{index-tkgTLCoq.d.mts.map → index-BahMvQpA.d.mts.map} +1 -1
  45. package/dist/index-Bs5TTFlK.d.mts +882 -0
  46. package/dist/index-Bs5TTFlK.d.mts.map +1 -0
  47. package/dist/index-BuLJRX1e.d.mts +476 -0
  48. package/dist/index-BuLJRX1e.d.mts.map +1 -0
  49. package/dist/{index-BR7takNf.d.mts → index-CDio8mJY.d.mts} +65 -26
  50. package/dist/index-CDio8mJY.d.mts.map +1 -0
  51. package/dist/{index-Cp_4sFun.d.mts → index-DLlx9jiG.d.mts} +38 -43
  52. package/dist/index-DLlx9jiG.d.mts.map +1 -0
  53. package/dist/index-DQoTXLSm.d.mts +846 -0
  54. package/dist/index-DQoTXLSm.d.mts.map +1 -0
  55. package/dist/index-DjjJIDaA.d.mts +221 -0
  56. package/dist/index-DjjJIDaA.d.mts.map +1 -0
  57. package/dist/{index-BCrD3pEs.d.mts → index-DtAPrec7.d.mts} +18 -18
  58. package/dist/index-DtAPrec7.d.mts.map +1 -0
  59. package/dist/{index-zC2zAtZY.d.mts → index-IdejL485.d.mts} +2 -2
  60. package/dist/{index-zC2zAtZY.d.mts.map → index-IdejL485.d.mts.map} +1 -1
  61. package/dist/index.d.mts +16 -802
  62. package/dist/index.mjs +1 -1393
  63. package/dist/option/index.d.mts +3 -3
  64. package/dist/option/index.mjs +1 -3
  65. package/dist/option-Qiv7Ls7L.mjs +2 -0
  66. package/dist/option-Qiv7Ls7L.mjs.map +1 -0
  67. package/dist/option.types-By5UOfC2.mjs +2 -0
  68. package/dist/option.types-By5UOfC2.mjs.map +1 -0
  69. package/dist/option.types-Cluybn30.d.mts +167 -0
  70. package/dist/option.types-Cluybn30.d.mts.map +1 -0
  71. package/dist/pipe/index.d.mts +1 -1
  72. package/dist/pipe/index.mjs +1 -3
  73. package/dist/pipe-BROILDeC.mjs +2 -0
  74. package/dist/{pipe-GYxZNkPB.mjs.map → pipe-BROILDeC.mjs.map} +1 -1
  75. package/dist/pipeable-KHu4D8ol.d.mts +27 -0
  76. package/dist/pipeable-KHu4D8ol.d.mts.map +1 -0
  77. package/dist/pipeable-rQvolRqh.mjs +2 -0
  78. package/dist/pipeable-rQvolRqh.mjs.map +1 -0
  79. package/dist/predicate/index.d.mts +2 -2
  80. package/dist/predicate/index.mjs +1 -3
  81. package/dist/predicate-DvXnfmeJ.mjs +2 -0
  82. package/dist/{predicate-BZkZmo-W.mjs.map → predicate-DvXnfmeJ.mjs.map} +1 -1
  83. package/dist/result/index.d.mts +3 -3
  84. package/dist/result/index.mjs +1 -3
  85. package/dist/result-B68pxC7l.mjs +2 -0
  86. package/dist/result-B68pxC7l.mjs.map +1 -0
  87. package/dist/result-uRORQlAQ.mjs +1 -0
  88. package/dist/result.types-fIbuBwVQ.d.mts +259 -0
  89. package/dist/result.types-fIbuBwVQ.d.mts.map +1 -0
  90. package/package.json +1 -9
  91. package/dist/adt-DraJkmij.mjs +0 -318
  92. package/dist/adt-DraJkmij.mjs.map +0 -1
  93. package/dist/brand-CTaxGuU9.mjs +0 -165
  94. package/dist/data-DgzWI4R_.mjs +0 -244
  95. package/dist/data-DgzWI4R_.mjs.map +0 -1
  96. package/dist/discriminator.types-DCkkrCj4.d.mts +0 -7
  97. package/dist/discriminator.types-DCkkrCj4.d.mts.map +0 -1
  98. package/dist/either-CnOBUH7a.mjs +0 -598
  99. package/dist/either-CnOBUH7a.mjs.map +0 -1
  100. package/dist/equality/index.d.mts +0 -86
  101. package/dist/equality/index.d.mts.map +0 -1
  102. package/dist/equality/index.mjs +0 -3
  103. package/dist/equality-YMebYwm1.mjs +0 -201
  104. package/dist/equality-YMebYwm1.mjs.map +0 -1
  105. package/dist/err-BqQApH9r.mjs +0 -169
  106. package/dist/err-BqQApH9r.mjs.map +0 -1
  107. package/dist/flow-pRdnqmMY.mjs +0 -21
  108. package/dist/flow-pRdnqmMY.mjs.map +0 -1
  109. package/dist/fn/index.d.mts +0 -2
  110. package/dist/fn/index.mjs +0 -3
  111. package/dist/fn-DFHj-EVA.mjs +0 -10
  112. package/dist/fn-DFHj-EVA.mjs.map +0 -1
  113. package/dist/gen/index.d.mts +0 -3
  114. package/dist/gen/index.mjs +0 -3
  115. package/dist/gen-DF-FXNdy.mjs +0 -99
  116. package/dist/gen-DF-FXNdy.mjs.map +0 -1
  117. package/dist/index-B3z7T6Dz.d.mts +0 -57
  118. package/dist/index-B3z7T6Dz.d.mts.map +0 -1
  119. package/dist/index-BCrD3pEs.d.mts.map +0 -1
  120. package/dist/index-BFhV56qy.d.mts +0 -105
  121. package/dist/index-BFhV56qy.d.mts.map +0 -1
  122. package/dist/index-BLG9B4bn.d.mts +0 -116
  123. package/dist/index-BLG9B4bn.d.mts.map +0 -1
  124. package/dist/index-BR7takNf.d.mts.map +0 -1
  125. package/dist/index-BiFc2xWF.d.mts +0 -211
  126. package/dist/index-BiFc2xWF.d.mts.map +0 -1
  127. package/dist/index-BwVaI5d0.d.mts +0 -79
  128. package/dist/index-BwVaI5d0.d.mts.map +0 -1
  129. package/dist/index-CckxkaUd.d.mts +0 -80
  130. package/dist/index-CckxkaUd.d.mts.map +0 -1
  131. package/dist/index-Cp_4sFun.d.mts.map +0 -1
  132. package/dist/index-DbfMra4p.d.mts +0 -72
  133. package/dist/index-DbfMra4p.d.mts.map +0 -1
  134. package/dist/index.d.mts.map +0 -1
  135. package/dist/index.mjs.map +0 -1
  136. package/dist/is-promise-BEl3eGZg.mjs +0 -11
  137. package/dist/is-promise-BEl3eGZg.mjs.map +0 -1
  138. package/dist/option-CKHDOVea.mjs +0 -410
  139. package/dist/option-CKHDOVea.mjs.map +0 -1
  140. package/dist/option.types-eqVODMIy.d.mts +0 -89
  141. package/dist/option.types-eqVODMIy.d.mts.map +0 -1
  142. package/dist/pipe-GYxZNkPB.mjs +0 -10
  143. package/dist/predicate-BZkZmo-W.mjs +0 -293
  144. package/dist/result-C5tPWR60.mjs +0 -422
  145. package/dist/result-C5tPWR60.mjs.map +0 -1
  146. package/dist/result-D7XJ96pv.mjs +0 -1
  147. package/dist/result.types-Bd8a43Fg.d.mts +0 -174
  148. package/dist/result.types-Bd8a43Fg.d.mts.map +0 -1
@@ -0,0 +1,288 @@
1
+ //#region src/predicate/predicate.types.d.ts
2
+ /**
3
+ * A predicate function that tests a value and returns a boolean.
4
+ *
5
+ * @template T - The type of value being tested
6
+ */
7
+ type Predicate$1<in T> = (value: T) => boolean;
8
+ /**
9
+ * A refinement predicate that narrows type T to subtype U.
10
+ * This is a type guard - when it returns true, TypeScript knows
11
+ * the value is of the narrower type U.
12
+ *
13
+ * @template T - The base type
14
+ * @template U - The narrower type (must extend T)
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * // Built-in refinement
19
+ * const isString: Refinement<unknown, string> = (v): v is string =>
20
+ * typeof v === "string"
21
+ *
22
+ * // Usage with filter
23
+ * const mixed: (string | number)[] = ["a", 1, "b", 2]
24
+ * const strings: string[] = mixed.filter(isString)
25
+ * ```
26
+ */
27
+ type Refinement<in T, out U extends T> = (value: T) => value is U;
28
+ //#endregion
29
+ //#region src/predicate/predicate.d.ts
30
+ /**
31
+ * Negate a predicate.
32
+ * Returns true when the original predicate returns false, and vice versa.
33
+ *
34
+ * @template T - The type being tested
35
+ * @param predicate - The predicate to negate
36
+ * @returns A new predicate that returns the opposite boolean
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const isEven = (n: number) => n % 2 === 0
41
+ * const isOdd = Predicate.not(isEven)
42
+ *
43
+ * isOdd(3) // true
44
+ * isOdd(4) // false
45
+ *
46
+ * // Works in filter
47
+ * [1, 2, 3, 4].filter(Predicate.not(isEven)) // [1, 3]
48
+ * ```
49
+ */
50
+ declare const not: <T>(predicate: Predicate$1<T>) => Predicate$1<T>;
51
+ /**
52
+ * Combine predicates with logical AND.
53
+ * Returns true only when ALL predicates return true.
54
+ * Short-circuits on first false (lazy evaluation).
55
+ *
56
+ * @template T - The type being tested
57
+ * @param predicates - The predicates to combine
58
+ * @returns A new predicate that returns true if all predicates pass
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * const isPositive = (n: number) => n > 0
63
+ * const isEven = (n: number) => n % 2 === 0
64
+ * const isLessThan100 = (n: number) => n < 100
65
+ *
66
+ * const isValidNumber = Predicate.and(isPositive, isEven, isLessThan100)
67
+ *
68
+ * isValidNumber(42) // true
69
+ * isValidNumber(-2) // false (not positive)
70
+ * isValidNumber(101) // false (not less than 100)
71
+ * ```
72
+ */
73
+ declare const and: <T>(...predicates: readonly Predicate$1<T>[]) => Predicate$1<T>;
74
+ /**
75
+ * Combine predicates with logical OR.
76
+ * Returns true when ANY predicate returns true.
77
+ * Short-circuits on first true (lazy evaluation).
78
+ *
79
+ * @template T - The type being tested
80
+ * @param predicates - The predicates to combine
81
+ * @returns A new predicate that returns true if any predicate passes
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * const isZero = (n: number) => n === 0
86
+ * const isNegative = (n: number) => n < 0
87
+ *
88
+ * const isNotPositive = Predicate.or(isZero, isNegative)
89
+ *
90
+ * isNotPositive(0) // true
91
+ * isNotPositive(-5) // true
92
+ * isNotPositive(5) // false
93
+ * ```
94
+ */
95
+ declare const or: <T>(...predicates: readonly Predicate$1<T>[]) => Predicate$1<T>;
96
+ /**
97
+ * Create a predicate that tests if ALL elements in an array match.
98
+ * Returns true for empty arrays (vacuous truth).
99
+ *
100
+ * @template T - The element type
101
+ * @param predicate - The predicate to test each element
102
+ * @returns A predicate that takes an array and returns true if all match
103
+ *
104
+ * @example
105
+ * ```ts
106
+ * const isPositive = (n: number) => n > 0
107
+ * const allPositive = Predicate.all(isPositive)
108
+ *
109
+ * allPositive([1, 2, 3]) // true
110
+ * allPositive([1, -2, 3]) // false
111
+ * allPositive([]) // true (vacuous truth)
112
+ *
113
+ * // Useful for validation
114
+ * const areAllAdults = Predicate.all((u: User) => u.age >= 18)
115
+ * ```
116
+ */
117
+ declare const all: <T>(predicate: Predicate$1<T>) => Predicate$1<readonly T[]>;
118
+ /**
119
+ * Create a predicate that tests if ANY element in an array matches.
120
+ * Returns false for empty arrays.
121
+ *
122
+ * @template T - The element type
123
+ * @param predicate - The predicate to test each element
124
+ * @returns A predicate that takes an array and returns true if any match
125
+ *
126
+ * @example
127
+ * ```ts
128
+ * const isNegative = (n: number) => n < 0
129
+ * const hasNegative = Predicate.some(isNegative)
130
+ *
131
+ * hasNegative([1, -2, 3]) // true
132
+ * hasNegative([1, 2, 3]) // false
133
+ * hasNegative([]) // false
134
+ * ```
135
+ */
136
+ declare const some: <T>(predicate: Predicate$1<T>) => Predicate$1<readonly T[]>;
137
+ /**
138
+ * Create a predicate that tests if NO elements in an array match.
139
+ * Returns true for empty arrays (vacuous truth).
140
+ * Equivalent to `not(some(predicate))`.
141
+ *
142
+ * @template T - The element type
143
+ * @param predicate - The predicate that should NOT match any element
144
+ * @returns A predicate that takes an array and returns true if none match
145
+ *
146
+ * @example
147
+ * ```ts
148
+ * const isNegative = (n: number) => n < 0
149
+ * const noNegatives = Predicate.none(isNegative)
150
+ *
151
+ * noNegatives([1, 2, 3]) // true
152
+ * noNegatives([1, -2, 3]) // false
153
+ * noNegatives([]) // true (vacuous truth)
154
+ * ```
155
+ */
156
+ declare const none: <T>(predicate: Predicate$1<T>) => Predicate$1<readonly T[]>;
157
+ /**
158
+ * Combine refinements with logical AND, preserving type narrowing.
159
+ * Use this instead of `and` when you need to preserve type guard behavior.
160
+ *
161
+ * @template T - The base type
162
+ * @template U - The narrowed type (must extend T)
163
+ * @param refinements - The refinements to combine
164
+ * @returns A refinement that narrows to U if all refinements pass
165
+ *
166
+ * @example
167
+ * ```ts
168
+ * type User = { name: string; age: number; verified?: boolean }
169
+ * type Adult = User & { age: number } // age >= 18
170
+ * type VerifiedAdult = Adult & { verified: true }
171
+ *
172
+ * const isAdult = (u: User): u is Adult => u.age >= 18
173
+ * const isVerified = (u: User): u is User & { verified: true } => u.verified === true
174
+ *
175
+ * // Combined refinement preserves type narrowing
176
+ * const isVerifiedAdult = Predicate.andRefinement<User, VerifiedAdult>(isAdult, isVerified)
177
+ *
178
+ * if (isVerifiedAdult(user)) {
179
+ * user.verified // TypeScript knows this is true
180
+ * }
181
+ * ```
182
+ */
183
+ declare const andRefinement: <T, U extends T>(...refinements: readonly Refinement<T, U>[]) => Refinement<T, U>;
184
+ /**
185
+ * Combine refinements with logical OR, preserving type narrowing.
186
+ * Use this instead of `or` when you need to preserve type guard behavior.
187
+ *
188
+ * @template T - The base type
189
+ * @template U - The narrowed type (must extend T)
190
+ * @param refinements - The refinements to combine
191
+ * @returns A refinement that narrows to U if any refinement passes
192
+ *
193
+ * @example
194
+ * ```ts
195
+ * const isString = (v: unknown): v is string => typeof v === "string"
196
+ * const isNumber = (v: unknown): v is number => typeof v === "number"
197
+ *
198
+ * const isStringOrNumber = Predicate.orRefinement<unknown, string | number>(isString, isNumber)
199
+ *
200
+ * if (isStringOrNumber(value)) {
201
+ * // value is string | number
202
+ * }
203
+ * ```
204
+ */
205
+ declare const orRefinement: <T, U extends T>(...refinements: readonly Refinement<T, U>[]) => Refinement<T, U>;
206
+ /**
207
+ * Create a predicate from a constant boolean value.
208
+ * Useful for testing or as a placeholder.
209
+ *
210
+ * @template T - The type (can be anything)
211
+ * @param value - The constant boolean to return
212
+ * @returns A predicate that always returns the given value
213
+ *
214
+ * @example
215
+ * ```ts
216
+ * const alwaysTrue = Predicate.constant(true)
217
+ * const alwaysFalse = Predicate.constant(false)
218
+ *
219
+ * alwaysTrue("anything") // true
220
+ * alwaysFalse(42) // false
221
+ * ```
222
+ */
223
+ declare const constant: <T>(value: boolean) => Predicate$1<T>;
224
+ /**
225
+ * Create a predicate that checks strict equality.
226
+ *
227
+ * @template T - The type being compared
228
+ * @param expected - The value to compare against
229
+ * @returns A predicate that returns true if value === expected
230
+ *
231
+ * @example
232
+ * ```ts
233
+ * const isZero = Predicate.equals(0)
234
+ * const isHello = Predicate.equals("hello")
235
+ *
236
+ * isZero(0) // true
237
+ * isZero(1) // false
238
+ *
239
+ * // Works with references too
240
+ * const obj = { a: 1 }
241
+ * const isObj = Predicate.equals(obj)
242
+ * isObj(obj) // true
243
+ * isObj({ a: 1 }) // false (different reference)
244
+ * ```
245
+ */
246
+ declare const equals: <T>(expected: T) => Predicate$1<T>;
247
+ /**
248
+ * Predicate namespace containing composable boolean functions.
249
+ *
250
+ * Predicates are functions that test values and return booleans.
251
+ * This namespace provides combinators to build complex predicates
252
+ * from simple ones, with support for type guards (refinements).
253
+ *
254
+ * @example
255
+ * ```ts
256
+ * import { Predicate, pipe } from "@repo/std"
257
+ *
258
+ * // Basic predicates
259
+ * const isPositive = (n: number) => n > 0
260
+ * const isEven = (n: number) => n % 2 === 0
261
+ *
262
+ * // Combine with and/or
263
+ * const isPositiveEven = Predicate.and(isPositive, isEven)
264
+ * const isZeroOrNegative = Predicate.or(Predicate.equals(0), Predicate.not(isPositive))
265
+ *
266
+ * // Array predicates
267
+ * const allPositive = Predicate.all(isPositive)
268
+ * const hasNegative = Predicate.some(Predicate.not(isPositive))
269
+ *
270
+ * // Use with filter
271
+ * [1, 2, 3, 4, 5].filter(isPositiveEven) // [2, 4]
272
+ * ```
273
+ */
274
+ declare const Predicate: {
275
+ readonly not: <T>(predicate: Predicate$1<T>) => Predicate$1<T>;
276
+ readonly and: <T>(...predicates: readonly Predicate$1<T>[]) => Predicate$1<T>;
277
+ readonly or: <T>(...predicates: readonly Predicate$1<T>[]) => Predicate$1<T>;
278
+ readonly all: <T>(predicate: Predicate$1<T>) => Predicate$1<readonly T[]>;
279
+ readonly some: <T>(predicate: Predicate$1<T>) => Predicate$1<readonly T[]>;
280
+ readonly none: <T>(predicate: Predicate$1<T>) => Predicate$1<readonly T[]>;
281
+ readonly andRefinement: <T, U extends T>(...refinements: readonly Refinement<T, U>[]) => Refinement<T, U>;
282
+ readonly orRefinement: <T, U extends T>(...refinements: readonly Refinement<T, U>[]) => Refinement<T, U>;
283
+ readonly constant: <T>(value: boolean) => Predicate$1<T>;
284
+ readonly equals: <T>(expected: T) => Predicate$1<T>;
285
+ };
286
+ //#endregion
287
+ export { constant as a, not as c, some as d, Predicate$1 as f, andRefinement as i, or as l, all as n, equals as o, Refinement as p, and as r, none as s, Predicate as t, orRefinement as u };
288
+ //# sourceMappingURL=index-78LWwTds.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-78LWwTds.d.mts","names":[],"sources":["../src/predicate/predicate.types.ts","../src/predicate/predicate.ts"],"sourcesContent":[],"mappings":";;AAKA;AAqBA;;;AAAuE,KArB3D,WAqB2D,CAAA,IAAA,CAAA,GAAA,CAAA,KAAA,EArBjC,CAqBiC,EAAA,GAAA,OAAA;;;;;ACJvE;;;;;;AA0BA;;;;;;AA8BA;;;AAAiF,KDpDrE,UCoDqE,CAAA,IAAA,EAAA,cDpDtC,CCoDsC,CAAA,GAAA,CAAA,KAAA,EDpDzB,CCoDyB,EAAA,GAAA,KAAA,IDpDV,CCoDU;;;ADzEjF;AAqBA;;;;;;;;ACJA;;;;;;AA0BA;;;;;AAAiF,cA1BpE,GA0BoE,EAAA,CAAA,CAAA,CAAA,CAAA,SAAA,EA1B/C,WA0B+C,CA1BjC,CA0BiC,CAAA,EAAA,GA1B5B,WA0B4B,CA1Bd,CA0Bc,CAAA;AA8BjF;;;;;;AA8BA;;;;;;AAsBA;;;;;;AAuBA;;;;AAAsD,cAzGzC,GAyGyC,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA,UAAA,EAAA,SAzGP,WAyGO,CAzGO,CAyGP,CAAA,EAAA,EAAA,GAzGc,WAyGd,CAzG4B,CAyG5B,CAAA;;AA8BtD;;;;;;;;;AA8BA;;;;;;;;;AA0BA;AA0BA;AAAoC,cA3LvB,EA2LuB,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA,UAAA,EAAA,SA3LU,WA2LV,CA3LwB,CA2LxB,CAAA,EAAA,EAAA,GA3L+B,WA2L/B,CA3L6C,CA2L7C,CAAA;;;;AA+BpC;;;;;;;;;;;;;;;;;;AAtKmC,cAtBtB,GAsBsB,EAAA,CAAA,CAAA,CAAA,CAAA,SAAA,EAtBD,WAsBC,CAtBa,CAsBb,CAAA,EAAA,GAtBkB,WAsBlB,CAAA,SAtByC,CAsBzC,EAAA,CAAA;;;;;;;;;;;;;;;;;;;AAmFsE,cAnF5F,IAmF4F,EAAA,CAAA,CAAA,CAAA,CAAA,SAAA,EAnFtE,WAmFsE,CAnFxD,CAmFwD,CAAA,EAAA,GAnFnD,WAmFmD,CAAA,SAnF5B,CAmF4B,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;cA5D5F,qBAAsB,YAAc,OAAK,qBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8BhE,6BAA8B,4BAA4B,WAAW,GAAG,SAAO,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;cA8B7F,4BAA6B,4BAA4B,WAAW,GAAG,SAAO,WAAW,GAAG;;;;;;;;;;;;;;;;;;cA0B5F,iCAAgC,YAAc;;;;;;;;;;;;;;;;;;;;;;;cA0B9C,sBAAuB,MAAI,YAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+BzC;+BAlRqB,YAAc,OAAK,YAAc;4CA0BpB,YAAc,SAAO,YAAc;2CA8BpC,YAAc,SAAO,YAAc;+BA8B/C,YAAc,OAAK,qBAAuB;gCAsBzC,YAAc,OAAK,qBAAuB;gCAuB1C,YAAc,OAAK,qBAAuB;wCA8BlC,4BAA4B,WAAW,GAAG,SAAO,WAAW,GAAG;uCA8BhE,4BAA4B,WAAW,GAAG,SAAO,WAAW,GAAG;4CA0B5D,YAAc;iCA0BvB,MAAI,YAAc"}