TypeScript/tests/baselines/reference/ramdaToolsNoInfinite.types
Wesley Wigham 78a99241d8
Reuse input type nodes when serializing signature parameter and return types (#37444)
* Accept change

* Accept the huge set of ever so slightly changed baselines

* Update return type logic to only reuse nodes if original nodes share scope with current node, like property types, only reuse nodes if symbols referened are acessible, reuse nodes for property signatures, too

* Only reuse nodes when a context is provided (otherwise identifier printback may fail)

* Only track symbol if symbol is found and no error is recorded

* Fix type parameter reuse lookup

* Forbid cjs module.exports references in retained nodes

* Adjust check for cjs export references to not include bad module type in output

* Add symbol to all identifiers we see in existing nodes for quickinfo

* Accept fourslash baseline updates

* Accept slightly updated baseline post-merge

* Do not copy original nodes for error types, replace empty type references with any
2020-04-01 19:50:21 -07:00

222 lines
91 KiB
Plaintext

=== tests/cases/compiler/ramdaToolsNoInfinite.ts ===
// All the following types are explained here:
// https://medium.freecodecamp.org/typescript-curry-ramda-types-f747e99744ab
// https://github.com/pirix-gh/medium/blob/master/types-curry-ramda/src/index.ts
declare namespace Tools {
type Head<T extends any[]> =
>Head : Head<T>
T extends [any, ...any[]]
? T[0]
: never;
type Tail<T extends any[]> =
>Tail : Tail<T>
((...t: T) => any) extends ((_: any, ...tail: infer TT) => any)
>t : T
>_ : any
>tail : TT
? TT
: [];
type HasTail<T extends any[]> =
>HasTail : HasTail<T>
T extends ([] | [any])
? false
>false : false
: true;
>true : true
type Last<T extends any[]> = {
>Last : { 0: Last<Tail<T>>; 1: Head<T>; }[HasTail<T> extends true ? 0 : 1]
0: Last<Tail<T>>;
>0 : { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[HasTail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>>>>>> extends true ? 0 : 1]; 1: Head<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>>>>>; }[HasTail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>>>>> extends true ? 0 : 1]; 1: Head<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>>>>; }[HasTail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>>>> extends true ? 0 : 1]; 1: Head<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>>>; }[HasTail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>>> extends true ? 0 : 1]; 1: Head<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>>; }[HasTail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>> extends true ? 0 : 1]; 1: Head<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>; }[HasTail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>> extends true ? 0 : 1]; 1: Head<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>; }[HasTail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>> extends true ? 0 : 1]; 1: Head<Tail<Tail<Tail<Tail<Tail<T>>>>>>; }[HasTail<Tail<Tail<Tail<Tail<Tail<T>>>>>> extends true ? 0 : 1]; 1: Head<Tail<Tail<Tail<Tail<T>>>>>; }[HasTail<Tail<Tail<Tail<Tail<T>>>>> extends true ? 0 : 1]; 1: Head<Tail<Tail<Tail<T>>>>; }[HasTail<Tail<Tail<Tail<T>>>> extends true ? 0 : 1]; 1: Head<Tail<Tail<T>>>; }[HasTail<Tail<Tail<T>>> extends true ? 0 : 1]; 1: Head<Tail<T>>; }[HasTail<Tail<T>> extends true ? 0 : 1]
1: Head<T>;
>1 : Head<T>
}[
HasTail<T> extends true
>true : true
? 0
: 1
];
type Length<T extends any[]> =
>Length : T["length"]
T['length'];
type Prepend<E, T extends any[]> =
>Prepend : Prepend<E, T>
((head: E, ...args: T) => any) extends ((...args: infer U) => any)
>head : E
>args : T
>args : U
? U
: T;
type Drop<N extends number, T extends any[], I extends any[] = []> = {
>Drop : { 0: Drop<N, Tail<T>, Prepend<any, I>>; 1: T; }[I["length"] extends N ? 1 : 0]
0: Drop<N, Tail<T>, Prepend<any, I>>;
>0 : { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>>>>["length"] extends N ? 1 : 0]; 1: Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>>>["length"] extends N ? 1 : 0]; 1: Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>>["length"] extends N ? 1 : 0]; 1: Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>["length"] extends N ? 1 : 0]; 1: Tail<Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>["length"] extends N ? 1 : 0]; 1: Tail<Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>["length"] extends N ? 1 : 0]; 1: Tail<Tail<Tail<Tail<Tail<Tail<T>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>["length"] extends N ? 1 : 0]; 1: Tail<Tail<Tail<Tail<Tail<T>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>["length"] extends N ? 1 : 0]; 1: Tail<Tail<Tail<Tail<T>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>["length"] extends N ? 1 : 0]; 1: Tail<Tail<Tail<T>>>; }[Prepend<any, Prepend<any, Prepend<any, I>>>["length"] extends N ? 1 : 0]; 1: Tail<Tail<T>>; }[Prepend<any, Prepend<any, I>>["length"] extends N ? 1 : 0]; 1: Tail<T>; }[Prepend<any, I>["length"] extends N ? 1 : 0]
1: T;
>1 : T
}[
Length<I> extends N
? 1
: 0
];
type Cast<X, Y> = X extends Y ? X : Y;
>Cast : Cast<X, Y>
type Pos<I extends any[]> =
>Pos : I["length"]
Length<I>;
type Next<I extends any[]> =
>Next : Prepend<any, I>
Prepend<any, I>;
type Prev<I extends any[]> =
>Prev : Tail<I>
Tail<I>;
type Iterator<Index extends number = 0, From extends any[] = [], I extends any[] = []> = {
>Iterator : { 0: Iterator<Index, Next<From>, Next<I>>; 1: From; }[I["length"] extends Index ? 1 : 0]
0: Iterator<Index, Next<From>, Next<I>>;
>0 : { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>>>>["length"] extends Index ? 1 : 0]; 1: Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, From>>>>>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>>>["length"] extends Index ? 1 : 0]; 1: Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, From>>>>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>>["length"] extends Index ? 1 : 0]; 1: Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, From>>>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>["length"] extends Index ? 1 : 0]; 1: Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, From>>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>["length"] extends Index ? 1 : 0]; 1: Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, From>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>["length"] extends Index ? 1 : 0]; 1: Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, From>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>["length"] extends Index ? 1 : 0]; 1: Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, From>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>["length"] extends Index ? 1 : 0]; 1: Prepend<any, Prepend<any, Prepend<any, Prepend<any, From>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>["length"] extends Index ? 1 : 0]; 1: Prepend<any, Prepend<any, Prepend<any, From>>>; }[Prepend<any, Prepend<any, Prepend<any, I>>>["length"] extends Index ? 1 : 0]; 1: Prepend<any, Prepend<any, From>>; }[Prepend<any, Prepend<any, I>>["length"] extends Index ? 1 : 0]; 1: Prepend<any, From>; }[Prepend<any, I>["length"] extends Index ? 1 : 0]
1: From;
>1 : From
}[
Pos<I> extends Index
? 1
: 0
];
type Reverse<T extends any[], R extends any[] = [], I extends any[] = []> = {
>Reverse : { 0: Reverse<T, Prepend<T[Pos<I>], R>, Next<I>>; 1: R; }[I["length"] extends T["length"] ? 1 : 0]
0: Reverse<T, Prepend<T[Pos<I>], R>, Next<I>>;
>0 : { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>>>>["length"] extends T["length"] ? 1 : 0]; 1: Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, I>>>["length"]], Prepend<T[Prepend<any, Prepend<any, I>>["length"]], Prepend<T[Prepend<any, I>["length"]], Prepend<T[I["length"]], R>>>>>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>>>["length"] extends T["length"] ? 1 : 0]; 1: Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, I>>>["length"]], Prepend<T[Prepend<any, Prepend<any, I>>["length"]], Prepend<T[Prepend<any, I>["length"]], Prepend<T[I["length"]], R>>>>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>>["length"] extends T["length"] ? 1 : 0]; 1: Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, I>>>["length"]], Prepend<T[Prepend<any, Prepend<any, I>>["length"]], Prepend<T[Prepend<any, I>["length"]], Prepend<T[I["length"]], R>>>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>>["length"] extends T["length"] ? 1 : 0]; 1: Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, I>>>["length"]], Prepend<T[Prepend<any, Prepend<any, I>>["length"]], Prepend<T[Prepend<any, I>["length"]], Prepend<T[I["length"]], R>>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>>["length"] extends T["length"] ? 1 : 0]; 1: Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, I>>>["length"]], Prepend<T[Prepend<any, Prepend<any, I>>["length"]], Prepend<T[Prepend<any, I>["length"]], Prepend<T[I["length"]], R>>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>>["length"] extends T["length"] ? 1 : 0]; 1: Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, I>>>["length"]], Prepend<T[Prepend<any, Prepend<any, I>>["length"]], Prepend<T[Prepend<any, I>["length"]], Prepend<T[I["length"]], R>>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>>["length"] extends T["length"] ? 1 : 0]; 1: Prepend<T[Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>["length"]], Prepend<T[Prepend<any, Prepend<any, Prepend<any, I>>>["length"]], Prepend<T[Prepend<any, Prepend<any, I>>["length"]], Prepend<T[Prepend<any, I>["length"]], Prepend<T[I["length"]], R>>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>>["length"] extends T["length"] ? 1 : 0]; 1: Prepend<T[Prepend<any, Prepend<any, Prepend<any, I>>>["length"]], Prepend<T[Prepend<any, Prepend<any, I>>["length"]], Prepend<T[Prepend<any, I>["length"]], Prepend<T[I["length"]], R>>>>; }[Prepend<any, Prepend<any, Prepend<any, Prepend<any, I>>>>["length"] extends T["length"] ? 1 : 0]; 1: Prepend<T[Prepend<any, Prepend<any, I>>["length"]], Prepend<T[Prepend<any, I>["length"]], Prepend<T[I["length"]], R>>>; }[Prepend<any, Prepend<any, Prepend<any, I>>>["length"] extends T["length"] ? 1 : 0]; 1: Prepend<T[Prepend<any, I>["length"]], Prepend<T[I["length"]], R>>; }[Prepend<any, Prepend<any, I>>["length"] extends T["length"] ? 1 : 0]; 1: Prepend<T[I["length"]], R>; }[Prepend<any, I>["length"] extends T["length"] ? 1 : 0]
1: R;
>1 : R
}[
Pos<I> extends Length<T>
? 1
: 0
];
type Concat<T1 extends any[], T2 extends any[]> =
>Concat : { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends (any[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: Prepend<(any[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[9], Prepend<(any[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[8], Prepend<(any[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[7], Prepend<(any[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[6], Prepend<(any[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[5], Prepend<(any[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[4], Prepend<(any[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], Prepend<(any[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], Prepend<(any[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], Prepend<(any[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], T2>>>>>>>>>>; }[10 extends ({ 0: any[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: Prepend<({ 0: any[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[8], Prepend<({ 0: any[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[7], Prepend<({ 0: any[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[6], Prepend<({ 0: any[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[5], Prepend<({ 0: any[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[4], Prepend<({ 0: any[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], Prepend<({ 0: any[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], Prepend<({ 0: any[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], Prepend<({ 0: any[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], T2>>>>>>>>>; }[9 extends ({ 0: { 0: any[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: Prepend<({ 0: { 0: any[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[7], Prepend<({ 0: { 0: any[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[6], Prepend<({ 0: { 0: any[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[5], Prepend<({ 0: { 0: any[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[4], Prepend<({ 0: { 0: any[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], Prepend<({ 0: { 0: any[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], Prepend<({ 0: { 0: any[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], Prepend<({ 0: { 0: any[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], T2>>>>>>>>; }[8 extends ({ 0: { 0: { 0: any[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: Prepend<({ 0: { 0: { 0: any[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[6], Prepend<({ 0: { 0: { 0: any[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[5], Prepend<({ 0: { 0: { 0: any[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[4], Prepend<({ 0: { 0: { 0: any[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], Prepend<({ 0: { 0: { 0: any[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], Prepend<({ 0: { 0: { 0: any[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], Prepend<({ 0: { 0: { 0: any[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], T2>>>>>>>; }[7 extends ({ 0: { 0: { 0: { 0: any[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: Prepend<({ 0: { 0: { 0: { 0: any[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[5], Prepend<({ 0: { 0: { 0: { 0: any[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[4], Prepend<({ 0: { 0: { 0: { 0: any[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], Prepend<({ 0: { 0: { 0: { 0: any[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], Prepend<({ 0: { 0: { 0: { 0: any[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], Prepend<({ 0: { 0: { 0: { 0: any[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], T2>>>>>>; }[6 extends ({ 0: { 0: { 0: { 0: { 0: any[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: Prepend<({ 0: { 0: { 0: { 0: { 0: any[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[4], Prepend<({ 0: { 0: { 0: { 0: { 0: any[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], Prepend<({ 0: { 0: { 0: { 0: { 0: any[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], Prepend<({ 0: { 0: { 0: { 0: { 0: any[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], Prepend<({ 0: { 0: { 0: { 0: { 0: any[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], T2>>>>>; }[5 extends ({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: Prepend<({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], Prepend<({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], Prepend<({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], Prepend<({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], T2>>>>; }[4 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: any[7 extends T1["length"] ? 1 : 0]; 1: [T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: Prepend<({ 0: { 0: { 0: { 0: { 0: { 0: { 0: any[7 extends T1["length"] ? 1 : 0]; 1: [T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], Prepend<({ 0: { 0: { 0: { 0: { 0: { 0: { 0: any[7 extends T1["length"] ? 1 : 0]; 1: [T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], Prepend<({ 0: { 0: { 0: { 0: { 0: { 0: { 0: any[7 extends T1["length"] ? 1 : 0]; 1: [T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], T2>>>; }[3 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[8 extends T1["length"] ? 1 : 0]; 1: [T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[7 extends T1["length"] ? 1 : 0]; 1: [T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: Prepend<({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[8 extends T1["length"] ? 1 : 0]; 1: [T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[7 extends T1["length"] ? 1 : 0]; 1: [T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], Prepend<({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[8 extends T1["length"] ? 1 : 0]; 1: [T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[7 extends T1["length"] ? 1 : 0]; 1: [T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], T2>>; }[2 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[9 extends T1["length"] ? 1 : 0]; 1: [T1[7], T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[8 extends T1["length"] ? 1 : 0]; 1: [T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[7 extends T1["length"] ? 1 : 0]; 1: [T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: Prepend<({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[9 extends T1["length"] ? 1 : 0]; 1: [T1[7], T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[8 extends T1["length"] ? 1 : 0]; 1: [T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[7 extends T1["length"] ? 1 : 0]; 1: [T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], T2>; }[1 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[10 extends T1["length"] ? 1 : 0]; 1: [T1[8], T1[7], T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[9 extends T1["length"] ? 1 : 0]; 1: [T1[7], T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[8 extends T1["length"] ? 1 : 0]; 1: [T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[7 extends T1["length"] ? 1 : 0]; 1: [T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: T2; }[0 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends T1["length"] ? 1 : 0]; 1: [T1[9], T1[8], T1[7], T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[10 extends T1["length"] ? 1 : 0]; 1: [T1[8], T1[7], T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[9 extends T1["length"] ? 1 : 0]; 1: [T1[7], T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[8 extends T1["length"] ? 1 : 0]; 1: [T1[6], T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[7 extends T1["length"] ? 1 : 0]; 1: [T1[5], T1[4], T1[3], T1[2], T1[1], T1[0]]; }[6 extends T1["length"] ? 1 : 0]; 1: [T1[4], T1[3], T1[2], T1[1], T1[0]]; }[5 extends T1["length"] ? 1 : 0]; 1: [T1[3], T1[2], T1[1], T1[0]]; }[4 extends T1["length"] ? 1 : 0]; 1: [T1[2], T1[1], T1[0]]; }[3 extends T1["length"] ? 1 : 0]; 1: [T1[1], T1[0]]; }[2 extends T1["length"] ? 1 : 0]; 1: [T1[0]]; }[1 extends T1["length"] ? 1 : 0]; 1: []; }[0 extends T1["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]
Reverse<Reverse<T1> extends infer R ? Cast<R, any[]> : never, T2>;
type Append<E, T extends any[]> =
>Append : { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends (any[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [(any[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[9], (any[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[8], (any[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[7], (any[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[6], (any[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[5], (any[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[4], (any[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], (any[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], (any[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], (any[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], E]; }[10 extends ({ 0: any[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: any[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[8], ({ 0: any[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[7], ({ 0: any[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[6], ({ 0: any[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[5], ({ 0: any[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[4], ({ 0: any[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], ({ 0: any[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], ({ 0: any[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], ({ 0: any[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], E]; }[9 extends ({ 0: { 0: any[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: any[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[7], ({ 0: { 0: any[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[6], ({ 0: { 0: any[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[5], ({ 0: { 0: any[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[4], ({ 0: { 0: any[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], ({ 0: { 0: any[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], ({ 0: { 0: any[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], ({ 0: { 0: any[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], E]; }[8 extends ({ 0: { 0: { 0: any[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: any[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[6], ({ 0: { 0: { 0: any[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[5], ({ 0: { 0: { 0: any[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[4], ({ 0: { 0: { 0: any[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], ({ 0: { 0: { 0: any[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], ({ 0: { 0: { 0: any[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], ({ 0: { 0: { 0: any[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], E]; }[7 extends ({ 0: { 0: { 0: { 0: any[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: { 0: any[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[5], ({ 0: { 0: { 0: { 0: any[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[4], ({ 0: { 0: { 0: { 0: any[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], ({ 0: { 0: { 0: { 0: any[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], ({ 0: { 0: { 0: { 0: any[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], ({ 0: { 0: { 0: { 0: any[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], E]; }[6 extends ({ 0: { 0: { 0: { 0: { 0: any[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: { 0: { 0: any[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[4], ({ 0: { 0: { 0: { 0: { 0: any[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], ({ 0: { 0: { 0: { 0: { 0: any[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], ({ 0: { 0: { 0: { 0: { 0: any[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], ({ 0: { 0: { 0: { 0: { 0: any[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], E]; }[5 extends ({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[3], ({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], ({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], ({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], E]; }[4 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: any[7 extends T["length"] ? 1 : 0]; 1: [T[5], T[4], T[3], T[2], T[1], T[0]]; }[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: { 0: { 0: { 0: { 0: any[7 extends T["length"] ? 1 : 0]; 1: [T[5], T[4], T[3], T[2], T[1], T[0]]; }[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[2], ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: any[7 extends T["length"] ? 1 : 0]; 1: [T[5], T[4], T[3], T[2], T[1], T[0]]; }[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: any[7 extends T["length"] ? 1 : 0]; 1: [T[5], T[4], T[3], T[2], T[1], T[0]]; }[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], E]; }[3 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[8 extends T["length"] ? 1 : 0]; 1: [T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[7 extends T["length"] ? 1 : 0]; 1: [T[5], T[4], T[3], T[2], T[1], T[0]]; }[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[8 extends T["length"] ? 1 : 0]; 1: [T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[7 extends T["length"] ? 1 : 0]; 1: [T[5], T[4], T[3], T[2], T[1], T[0]]; }[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[1], ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[8 extends T["length"] ? 1 : 0]; 1: [T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[7 extends T["length"] ? 1 : 0]; 1: [T[5], T[4], T[3], T[2], T[1], T[0]]; }[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], E]; }[2 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[9 extends T["length"] ? 1 : 0]; 1: [T[7], T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[8 extends T["length"] ? 1 : 0]; 1: [T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[7 extends T["length"] ? 1 : 0]; 1: [T[5], T[4], T[3], T[2], T[1], T[0]]; }[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[9 extends T["length"] ? 1 : 0]; 1: [T[7], T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[8 extends T["length"] ? 1 : 0]; 1: [T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[7 extends T["length"] ? 1 : 0]; 1: [T[5], T[4], T[3], T[2], T[1], T[0]]; }[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)[0], E]; }[1 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[10 extends T["length"] ? 1 : 0]; 1: [T[8], T[7], T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[9 extends T["length"] ? 1 : 0]; 1: [T[7], T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[8 extends T["length"] ? 1 : 0]; 1: [T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[7 extends T["length"] ? 1 : 0]; 1: [T[5], T[4], T[3], T[2], T[1], T[0]]; }[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [E]; }[0 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends T["length"] ? 1 : 0]; 1: [T[9], T[8], T[7], T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[10 extends T["length"] ? 1 : 0]; 1: [T[8], T[7], T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[9 extends T["length"] ? 1 : 0]; 1: [T[7], T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[8 extends T["length"] ? 1 : 0]; 1: [T[6], T[5], T[4], T[3], T[2], T[1], T[0]]; }[7 extends T["length"] ? 1 : 0]; 1: [T[5], T[4], T[3], T[2], T[1], T[0]]; }[6 extends T["length"] ? 1 : 0]; 1: [T[4], T[3], T[2], T[1], T[0]]; }[5 extends T["length"] ? 1 : 0]; 1: [T[3], T[2], T[1], T[0]]; }[4 extends T["length"] ? 1 : 0]; 1: [T[2], T[1], T[0]]; }[3 extends T["length"] ? 1 : 0]; 1: [T[1], T[0]]; }[2 extends T["length"] ? 1 : 0]; 1: [T[0]]; }[1 extends T["length"] ? 1 : 0]; 1: []; }[0 extends T["length"] ? 1 : 0] extends infer R ? Cast<R, any[]> : never)["length"] ? 1 : 0]
Concat<T, [E]>;
type ValueOfRecord<R> = R extends Record<any, infer T> ? T : never;
>ValueOfRecord : ValueOfRecord<R>
}
declare namespace R {
export type Placeholder = { __placeholder: void };
>Placeholder : Placeholder
>__placeholder : void
}
declare namespace Curry {
type GapOf<T1 extends any[], T2 extends any[], TN extends any[], I extends any[]> =
>GapOf : GapOf<T1, T2, TN, I>
T1[Tools.Pos<I>] extends R.Placeholder
>Tools : any
>R : any
? Tools.Append<T2[Tools.Pos<I>], TN>
>Tools : any
>Tools : any
: TN;
interface GapsOfWorker<T1 extends any[], T2 extends any[], TN extends any[] = [], I extends any[] = []> {
0: GapsOf<T1, T2, GapOf<T1, T2, TN, I> extends infer G ? Tools.Cast<G, any[]> : never, Tools.Next<I>>;
>0 : GapsOfWorker<T1, T2, GapOf<T1, T2, TN, I> extends infer G ? Tools.Cast<G, any[]> : never, Tools.Prepend<any, I>>[Tools.Prepend<any, I>["length"] extends T1["length"] ? 1 : 0]
>Tools : any
>Tools : any
1: Tools.Concat<TN, Tools.Drop<Tools.Pos<I>, T2> extends infer D ? Tools.Cast<D, any[]> : never>;
>1 : { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends (any[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [(any[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[9], (any[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[8], (any[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[7], (any[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[6], (any[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[5], (any[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[4], (any[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[3], (any[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[2], (any[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[1], (any[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[0], ...({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>>; }[10 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>; }[9 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>; }[8 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>; }[7 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>; }[6 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>; }[5 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>; }[4 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<T2>>>; }[3 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<T2>>; }[2 extends I["length"] ? 1 : 0]; 1: Tools.Tail<T2>; }[1 extends I["length"] ? 1 : 0]; 1: T2; }[0 extends I["length"] ? 1 : 0] extends infer D ? Tools.Cast<D, any[]> : never)[number][]]; }[10 extends ({ 0: any[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: any[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[8], ({ 0: any[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[7], ({ 0: any[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[6], ({ 0: any[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[5], ({ 0: any[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[4], ({ 0: any[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[3], ({ 0: any[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[2], ({ 0: any[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[1], ({ 0: any[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[0], ...({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>>; }[10 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>; }[9 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>; }[8 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>; }[7 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>; }[6 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>; }[5 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>; }[4 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<T2>>>; }[3 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<T2>>; }[2 extends I["length"] ? 1 : 0]; 1: Tools.Tail<T2>; }[1 extends I["length"] ? 1 : 0]; 1: T2; }[0 extends I["length"] ? 1 : 0] extends infer D ? Tools.Cast<D, any[]> : never)[number][]]; }[9 extends ({ 0: { 0: any[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: any[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[7], ({ 0: { 0: any[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[6], ({ 0: { 0: any[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[5], ({ 0: { 0: any[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[4], ({ 0: { 0: any[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[3], ({ 0: { 0: any[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[2], ({ 0: { 0: any[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[1], ({ 0: { 0: any[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[0], ...({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>>; }[10 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>; }[9 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>; }[8 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>; }[7 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>; }[6 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>; }[5 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>; }[4 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<T2>>>; }[3 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<T2>>; }[2 extends I["length"] ? 1 : 0]; 1: Tools.Tail<T2>; }[1 extends I["length"] ? 1 : 0]; 1: T2; }[0 extends I["length"] ? 1 : 0] extends infer D ? Tools.Cast<D, any[]> : never)[number][]]; }[8 extends ({ 0: { 0: { 0: any[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: any[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[6], ({ 0: { 0: { 0: any[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[5], ({ 0: { 0: { 0: any[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[4], ({ 0: { 0: { 0: any[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[3], ({ 0: { 0: { 0: any[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[2], ({ 0: { 0: { 0: any[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[1], ({ 0: { 0: { 0: any[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[0], ...({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>>; }[10 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>; }[9 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>; }[8 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>; }[7 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>; }[6 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>; }[5 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>; }[4 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<T2>>>; }[3 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<T2>>; }[2 extends I["length"] ? 1 : 0]; 1: Tools.Tail<T2>; }[1 extends I["length"] ? 1 : 0]; 1: T2; }[0 extends I["length"] ? 1 : 0] extends infer D ? Tools.Cast<D, any[]> : never)[number][]]; }[7 extends ({ 0: { 0: { 0: { 0: any[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: { 0: any[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[5], ({ 0: { 0: { 0: { 0: any[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[4], ({ 0: { 0: { 0: { 0: any[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[3], ({ 0: { 0: { 0: { 0: any[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[2], ({ 0: { 0: { 0: { 0: any[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[1], ({ 0: { 0: { 0: { 0: any[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[0], ...({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>>; }[10 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>; }[9 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>; }[8 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>; }[7 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>; }[6 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>; }[5 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>; }[4 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<T2>>>; }[3 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<T2>>; }[2 extends I["length"] ? 1 : 0]; 1: Tools.Tail<T2>; }[1 extends I["length"] ? 1 : 0]; 1: T2; }[0 extends I["length"] ? 1 : 0] extends infer D ? Tools.Cast<D, any[]> : never)[number][]]; }[6 extends ({ 0: { 0: { 0: { 0: { 0: any[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: { 0: { 0: any[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[4], ({ 0: { 0: { 0: { 0: { 0: any[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[3], ({ 0: { 0: { 0: { 0: { 0: any[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[2], ({ 0: { 0: { 0: { 0: { 0: any[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[1], ({ 0: { 0: { 0: { 0: { 0: any[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[0], ...({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>>; }[10 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>; }[9 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>; }[8 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>; }[7 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>; }[6 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>; }[5 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>; }[4 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<T2>>>; }[3 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<T2>>; }[2 extends I["length"] ? 1 : 0]; 1: Tools.Tail<T2>; }[1 extends I["length"] ? 1 : 0]; 1: T2; }[0 extends I["length"] ? 1 : 0] extends infer D ? Tools.Cast<D, any[]> : never)[number][]]; }[5 extends ({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[3], ({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[2], ({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[1], ({ 0: { 0: { 0: { 0: { 0: { 0: any[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[0], ...({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>>; }[10 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>; }[9 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>; }[8 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>; }[7 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>; }[6 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>; }[5 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>; }[4 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<T2>>>; }[3 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<T2>>; }[2 extends I["length"] ? 1 : 0]; 1: Tools.Tail<T2>; }[1 extends I["length"] ? 1 : 0]; 1: T2; }[0 extends I["length"] ? 1 : 0] extends infer D ? Tools.Cast<D, any[]> : never)[number][]]; }[4 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: any[7 extends TN["length"] ? 1 : 0]; 1: [TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: { 0: { 0: { 0: { 0: any[7 extends TN["length"] ? 1 : 0]; 1: [TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[2], ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: any[7 extends TN["length"] ? 1 : 0]; 1: [TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[1], ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: any[7 extends TN["length"] ? 1 : 0]; 1: [TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[0], ...({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>>; }[10 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>; }[9 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>; }[8 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>; }[7 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>; }[6 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>; }[5 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>; }[4 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<T2>>>; }[3 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<T2>>; }[2 extends I["length"] ? 1 : 0]; 1: Tools.Tail<T2>; }[1 extends I["length"] ? 1 : 0]; 1: T2; }[0 extends I["length"] ? 1 : 0] extends infer D ? Tools.Cast<D, any[]> : never)[number][]]; }[3 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[8 extends TN["length"] ? 1 : 0]; 1: [TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[7 extends TN["length"] ? 1 : 0]; 1: [TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[8 extends TN["length"] ? 1 : 0]; 1: [TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[7 extends TN["length"] ? 1 : 0]; 1: [TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[1], ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[8 extends TN["length"] ? 1 : 0]; 1: [TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[7 extends TN["length"] ? 1 : 0]; 1: [TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[0], ...({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>>; }[10 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>; }[9 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>; }[8 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>; }[7 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>; }[6 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>; }[5 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>; }[4 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<T2>>>; }[3 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<T2>>; }[2 extends I["length"] ? 1 : 0]; 1: Tools.Tail<T2>; }[1 extends I["length"] ? 1 : 0]; 1: T2; }[0 extends I["length"] ? 1 : 0] extends infer D ? Tools.Cast<D, any[]> : never)[number][]]; }[2 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[9 extends TN["length"] ? 1 : 0]; 1: [TN[7], TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[8 extends TN["length"] ? 1 : 0]; 1: [TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[7 extends TN["length"] ? 1 : 0]; 1: [TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: [({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[9 extends TN["length"] ? 1 : 0]; 1: [TN[7], TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[8 extends TN["length"] ? 1 : 0]; 1: [TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[7 extends TN["length"] ? 1 : 0]; 1: [TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)[0], ...({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>>; }[10 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>; }[9 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>; }[8 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>; }[7 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>; }[6 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>; }[5 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>; }[4 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<T2>>>; }[3 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<T2>>; }[2 extends I["length"] ? 1 : 0]; 1: Tools.Tail<T2>; }[1 extends I["length"] ? 1 : 0]; 1: T2; }[0 extends I["length"] ? 1 : 0] extends infer D ? Tools.Cast<D, any[]> : never)[number][]]; }[1 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[10 extends TN["length"] ? 1 : 0]; 1: [TN[8], TN[7], TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[9 extends TN["length"] ? 1 : 0]; 1: [TN[7], TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[8 extends TN["length"] ? 1 : 0]; 1: [TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[7 extends TN["length"] ? 1 : 0]; 1: [TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)["length"] ? 1 : 0]; 1: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>>; }[10 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>>; }[9 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>>; }[8 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>>; }[7 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>>; }[6 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>>; }[5 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<Tools.Tail<T2>>>>; }[4 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<Tools.Tail<T2>>>; }[3 extends I["length"] ? 1 : 0]; 1: Tools.Tail<Tools.Tail<T2>>; }[2 extends I["length"] ? 1 : 0]; 1: Tools.Tail<T2>; }[1 extends I["length"] ? 1 : 0]; 1: T2; }[0 extends I["length"] ? 1 : 0] extends infer D ? Tools.Cast<D, any[]> : never; }[0 extends ({ 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: { 0: any[11 extends TN["length"] ? 1 : 0]; 1: [TN[9], TN[8], TN[7], TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[10 extends TN["length"] ? 1 : 0]; 1: [TN[8], TN[7], TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[9 extends TN["length"] ? 1 : 0]; 1: [TN[7], TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[8 extends TN["length"] ? 1 : 0]; 1: [TN[6], TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[7 extends TN["length"] ? 1 : 0]; 1: [TN[5], TN[4], TN[3], TN[2], TN[1], TN[0]]; }[6 extends TN["length"] ? 1 : 0]; 1: [TN[4], TN[3], TN[2], TN[1], TN[0]]; }[5 extends TN["length"] ? 1 : 0]; 1: [TN[3], TN[2], TN[1], TN[0]]; }[4 extends TN["length"] ? 1 : 0]; 1: [TN[2], TN[1], TN[0]]; }[3 extends TN["length"] ? 1 : 0]; 1: [TN[1], TN[0]]; }[2 extends TN["length"] ? 1 : 0]; 1: [TN[0]]; }[1 extends TN["length"] ? 1 : 0]; 1: []; }[0 extends TN["length"] ? 1 : 0] extends infer R ? Tools.Cast<R, any[]> : never)["length"] ? 1 : 0]
>Tools : any
>Tools : any
>Tools : any
>Tools : any
}
type GapsOf<T1 extends any[], T2 extends any[], TN extends any[] = [], I extends any[] = []> = GapsOfWorker<T1, T2, TN, I>[
>GapsOf : GapsOfWorker<T1, T2, TN, I>[I["length"] extends T1["length"] ? 1 : 0]
Tools.Pos<I> extends Tools.Length<T1>
>Tools : any
>Tools : any
? 1
: 0
];
type PartialGaps<T extends any[]> = {
>PartialGaps : PartialGaps<T>
[K in keyof T]?: T[K] | R.Placeholder
>R : any
};
type CleanedGaps<T extends any[]> = {
>CleanedGaps : CleanedGaps<T>
[K in keyof T]: NonNullable<T[K]>
};
type Gaps<T extends any[]> = CleanedGaps<PartialGaps<T>>;
>Gaps : CleanedGaps<PartialGaps<T>>
type Curry<F extends ((...args: any) => any)> =
>Curry : Curry<F>
>args : any
<T extends any[]>(...args: Tools.Cast<Tools.Cast<T, Gaps<Parameters<F>>>, any[]>) =>
>args : Tools.Cast<Tools.Cast<T, CleanedGaps<PartialGaps<Parameters<F>>>>, any[]>
>Tools : any
>Tools : any
GapsOf<T, Parameters<F>> extends [any, ...any[]]
? Curry<(...args: GapsOf<T, Parameters<F>> extends infer G ? Tools.Cast<G, any[]> : never) => ReturnType<F>>
>args : GapsOfWorker<T, Parameters<F>, [], []>[0 extends T["length"] ? 1 : 0] extends infer G ? Tools.Cast<G, any[]> : never
>Tools : any
: ReturnType<F>;
}