Xor
tsz is 2.0x faster 2717 lines 44 KB
Timing
Files
import { IsUnknown } from "../is-unknown";
import { Prettify } from "../prettify";
// When Type2 is unknown, it creates type with all properties excluded from it
// e.g. Without<{ foo: number; bar: number }, unknown> is { foo?: never; bar?: never }
// https://github.com/ts-essentials/ts-essentials/issues/400
type Without<Type1, Type2> = IsUnknown<Type2> extends true
? never
: { [P in Exclude<keyof Type1, keyof Type2>]?: never };
// This utility type body is autogenerated in JS by running:
// const types = Array(50).fill(0).map((_, index) => `Type${index + 1}`)
// types.map(type => `Without<${types.filter(t => t !== type).join('&')}, ${type}> & ${type}`).join('|')
export type XOR<
Type1,
Type2,
Type3 = unknown,
Type4 = unknown,
Type5 = unknown,
Type6 = unknown,
Type7 = unknown,
Type8 = unknown,
Type9 = unknown,
Type10 = unknown,
Type11 = unknown,
Type12 = unknown,
Type13 = unknown,
Type14 = unknown,
Type15 = unknown,
Type16 = unknown,
Type17 = unknown,
Type18 = unknown,
Type19 = unknown,
Type20 = unknown,
Type21 = unknown,
Type22 = unknown,
Type23 = unknown,
Type24 = unknown,
Type25 = unknown,
Type26 = unknown,
Type27 = unknown,
Type28 = unknown,
Type29 = unknown,
Type30 = unknown,
Type31 = unknown,
Type32 = unknown,
Type33 = unknown,
Type34 = unknown,
Type35 = unknown,
Type36 = unknown,
Type37 = unknown,
Type38 = unknown,
Type39 = unknown,
Type40 = unknown,
Type41 = unknown,
Type42 = unknown,
Type43 = unknown,
Type44 = unknown,
Type45 = unknown,
Type46 = unknown,
Type47 = unknown,
Type48 = unknown,
Type49 = unknown,
Type50 = unknown,
> = Prettify<
| (Without<
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type1
> &
Type1)
| (Without<
Type1 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type2
> &
Type2)
| (Without<
Type1 &
Type2 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type3
> &
Type3)
| (Without<
Type1 &
Type2 &
Type3 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type4
> &
Type4)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type5
> &
Type5)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type6
> &
Type6)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type7
> &
Type7)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type8
> &
Type8)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type9
> &
Type9)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type10
> &
Type10)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type11
> &
Type11)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type12
> &
Type12)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type13
> &
Type13)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type14
> &
Type14)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type15
> &
Type15)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type16
> &
Type16)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type17
> &
Type17)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type18
> &
Type18)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type19
> &
Type19)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type20
> &
Type20)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type21
> &
Type21)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type22
> &
Type22)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type23
> &
Type23)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type24
> &
Type24)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type25
> &
Type25)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type26
> &
Type26)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type27
> &
Type27)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type28
> &
Type28)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type29
> &
Type29)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type30
> &
Type30)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type31
> &
Type31)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type32
> &
Type32)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type33
> &
Type33)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type34
> &
Type34)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type35
> &
Type35)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type36
> &
Type36)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type37
> &
Type37)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type38
> &
Type38)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type39
> &
Type39)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type40
> &
Type40)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type41
> &
Type41)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type42
> &
Type42)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type43
> &
Type43)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type44
> &
Type44)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type46 &
Type47 &
Type48 &
Type49 &
Type50,
Type45
> &
Type45)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type47 &
Type48 &
Type49 &
Type50,
Type46
> &
Type46)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type48 &
Type49 &
Type50,
Type47
> &
Type47)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type49 &
Type50,
Type48
> &
Type48)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type50,
Type49
> &
Type49)
| (Without<
Type1 &
Type2 &
Type3 &
Type4 &
Type5 &
Type6 &
Type7 &
Type8 &
Type9 &
Type10 &
Type11 &
Type12 &
Type13 &
Type14 &
Type15 &
Type16 &
Type17 &
Type18 &
Type19 &
Type20 &
Type21 &
Type22 &
Type23 &
Type24 &
Type25 &
Type26 &
Type27 &
Type28 &
Type29 &
Type30 &
Type31 &
Type32 &
Type33 &
Type34 &
Type35 &
Type36 &
Type37 &
Type38 &
Type39 &
Type40 &
Type41 &
Type42 &
Type43 &
Type44 &
Type45 &
Type46 &
Type47 &
Type48 &
Type49,
Type50
> &
Type50)
>;