ts-essentials

  • Version 10.0.0
  • Published
  • 235 kB
  • No dependencies
  • MIT license

Install

npm i ts-essentials
yarn add ts-essentials
pnpm add ts-essentials

Overview

All essential TypeScript types in one place

Index

Functions

function assert

assert: (condition: any, message?: string) => asserts condition;

    function createFactoryWithConstraint

    createFactoryWithConstraint: <Constraint>() => <Value extends Constraint>(
    value: Value
    ) => Value;

      function isExact

      isExact: <ExpectedShape>() => <ActualShape>(
      x: Exact<ActualShape, ExpectedShape>
      ) => ExpectedShape;

        function noop

        noop: (..._args: unknown[]) => void;

          Classes

          class UnreachableCaseError

          class UnreachableCaseError extends Error {}

            constructor

            constructor(value: never);

              Interfaces

              interface Newable

              interface Newable<ReturnType> {}

                construct signature

                new (...args: any[]): ReturnType;

                  Type Aliases

                  type AnyArray

                  type AnyArray<Type = any> = Array<Type> | ReadonlyArray<Type>;

                    type AnyFunction

                    type AnyFunction<Args extends any[] = any[], ReturnType = any> = (
                    ...args: Args
                    ) => ReturnType;

                      type ArrayOrSingle

                      type ArrayOrSingle<Type> = Type | Type[];

                        type AsyncOrSync

                        type AsyncOrSync<Type> = PromiseLike<Type> | Type;

                          type AsyncOrSyncType

                          type AsyncOrSyncType<AsyncOrSyncType> = AsyncOrSyncType extends AsyncOrSync<
                          infer Type
                          >
                          ? Type
                          : never;

                            type Awaited

                            type Awaited<Type> = Type extends PromiseLike<infer Value> ? Value : never;
                            • Deprecated

                              please use builtin Awaited

                            type Buildable

                            type Buildable<Type> = DeepPartial<DeepWritable<Type>>;

                              type Builtin

                              type Builtin = Primitive | Function | Date | Error | RegExp;

                                type CamelCase

                                type CamelCase<Type> = IsStringLiteral<Type> extends true
                                ? Join<CamelCapitalizer<SplitAnyCase<Type>>>
                                : Type;

                                  type DeepCamelCaseProperties

                                  type DeepCamelCaseProperties<Type> = Type extends Record<string, unknown>
                                  ? {
                                  [Key in keyof Type as CamelCase<Key>]: DeepCamelCaseProperties<Type[Key]>;
                                  }
                                  : Type;

                                    type DeepNonNullable

                                    type DeepNonNullable<Type> = Type extends Builtin
                                    ? NonNullable<Type>
                                    : Type extends Map<infer Keys, infer Values>
                                    ? Map<DeepNonNullable<Keys>, DeepNonNullable<Values>>
                                    : Type extends ReadonlyMap<infer Keys, infer Values>
                                    ? ReadonlyMap<DeepNonNullable<Keys>, DeepNonNullable<Values>>
                                    : Type extends WeakMap<infer Keys, infer Values>
                                    ? WeakMap<DeepNonNullable<Keys>, DeepNonNullable<Values>>
                                    : Type extends Set<infer Values>
                                    ? Set<DeepNonNullable<Values>>
                                    : Type extends ReadonlySet<infer Values>
                                    ? ReadonlySet<DeepNonNullable<Values>>
                                    : Type extends WeakSet<infer Values>
                                    ? WeakSet<DeepNonNullable<Values>>
                                    : Type extends Promise<infer Values>
                                    ? Promise<DeepNonNullable<Values>>
                                    : Type extends {}
                                    ? {
                                    [Key in keyof Type]: DeepNonNullable<Type[Key]>;
                                    }
                                    : NonNullable<Type>;

                                      type DeepNullable

                                      type DeepNullable<Type> = Type extends Builtin
                                      ? Type | null
                                      : Type extends Map<infer Keys, infer Values>
                                      ? Map<DeepNullable<Keys>, DeepNullable<Values>>
                                      : Type extends ReadonlyMap<infer Keys, infer Values>
                                      ? ReadonlyMap<DeepNullable<Keys>, DeepNullable<Values>>
                                      : Type extends WeakMap<infer Keys, infer Values>
                                      ? DeepNullable<Keys> extends object
                                      ? WeakMap<DeepNullable<Keys>, DeepNullable<Values>>
                                      : never
                                      : Type extends Set<infer Values>
                                      ? Set<DeepNullable<Values>>
                                      : Type extends ReadonlySet<infer Values>
                                      ? ReadonlySet<DeepNullable<Values>>
                                      : Type extends WeakSet<infer Values>
                                      ? DeepNullable<Values> extends object
                                      ? WeakSet<DeepNullable<Values>>
                                      : never
                                      : Type extends ReadonlyArray<infer Values>
                                      ? Type extends IsTuple<Type>
                                      ? {
                                      [Key in keyof Type]: DeepNullable<Type[Key]> | null;
                                      }
                                      : Type extends Array<Values>
                                      ? Array<DeepNullable<Values>>
                                      : ReadonlyArray<DeepNullable<Values>>
                                      : Type extends Promise<infer Value>
                                      ? Promise<DeepNullable<Value>>
                                      : Type extends {}
                                      ? {
                                      [Key in keyof Type]: DeepNullable<Type[Key]>;
                                      }
                                      : Type | null;

                                        type DeepOmit

                                        type DeepOmit<Type, Filter> = Type extends Builtin
                                        ? Type
                                        : Type extends Map<infer Keys, infer Values>
                                        ? Filter extends Map<Keys, infer FilterValues>
                                        ? Map<Keys, DeepOmit<Values, FilterValues>>
                                        : Type
                                        : Type extends ReadonlyMap<infer Keys, infer Values>
                                        ? Filter extends ReadonlyMap<Keys, infer FilterValues>
                                        ? ReadonlyMap<Keys, DeepOmit<Values, FilterValues>>
                                        : Type
                                        : Type extends WeakMap<infer Keys, infer Values>
                                        ? Filter extends WeakMap<Keys, infer FilterValues>
                                        ? WeakMap<Keys, DeepOmit<Values, FilterValues>>
                                        : Type
                                        : Type extends Set<infer Values>
                                        ? Filter extends Set<infer FilterValues>
                                        ? Set<DeepOmit<Values, FilterValues>>
                                        : Type
                                        : Type extends ReadonlySet<infer Values>
                                        ? Filter extends ReadonlySet<infer FilterValues>
                                        ? ReadonlySet<DeepOmit<Values, FilterValues>>
                                        : Type
                                        : Type extends WeakSet<infer Values>
                                        ? Filter extends WeakSet<infer FilterValues>
                                        ? WeakSet<DeepOmit<Values, FilterValues>>
                                        : Type
                                        : Type extends Array<infer Values>
                                        ? Filter extends Array<infer FilterValues>
                                        ? Array<DeepOmit<Values, FilterValues>>
                                        : Type
                                        : Type extends Promise<infer Value>
                                        ? Filter extends Promise<infer FilterValue>
                                        ? Promise<DeepOmit<Value, FilterValue>>
                                        : Type
                                        : Filter extends AnyRecord
                                        ? {
                                        [Key in keyof Type as Key extends keyof Filter
                                        ? Filter[Key] extends true
                                        ? never
                                        : Key
                                        : Key]: Key extends keyof Filter
                                        ? DeepOmit<Type[Key], Filter[Key]>
                                        : Type[Key];
                                        }
                                        : never;

                                          type DeepPartial

                                          type DeepPartial<Type> = Type extends Exclude<Builtin, Error>
                                          ? Type
                                          : Type extends Map<infer Keys, infer Values>
                                          ? Map<DeepPartial<Keys>, DeepPartial<Values>>
                                          : Type extends ReadonlyMap<infer Keys, infer Values>
                                          ? ReadonlyMap<DeepPartial<Keys>, DeepPartial<Values>>
                                          : Type extends WeakMap<infer Keys, infer Values>
                                          ? WeakMap<DeepPartial<Keys>, DeepPartial<Values>>
                                          : Type extends Set<infer Values>
                                          ? Set<DeepPartial<Values>>
                                          : Type extends ReadonlySet<infer Values>
                                          ? ReadonlySet<DeepPartial<Values>>
                                          : Type extends WeakSet<infer Values>
                                          ? WeakSet<DeepPartial<Values>>
                                          : Type extends ReadonlyArray<infer Values>
                                          ? Type extends IsTuple<Type>
                                          ? {
                                          [Key in keyof Type]?: DeepPartial<Type[Key]>;
                                          }
                                          : Type extends Array<Values>
                                          ? Array<DeepPartial<Values> | undefined>
                                          : ReadonlyArray<DeepPartial<Values> | undefined>
                                          : Type extends Promise<infer Value>
                                          ? Promise<DeepPartial<Value>>
                                          : Type extends {}
                                          ? {
                                          [Key in keyof Type]?: DeepPartial<Type[Key]>;
                                          }
                                          : IsUnknown<Type> extends true
                                          ? unknown
                                          : Partial<Type>;

                                            type DeepPick

                                            type DeepPick<Type, Filter> = Type extends Builtin
                                            ? Type
                                            : Type extends Map<infer Keys, infer Values>
                                            ? Filter extends Map<Keys, infer FilterValues>
                                            ? Map<Keys, DeepPick<Values, FilterValues>>
                                            : Type
                                            : Type extends ReadonlyMap<infer Keys, infer Values>
                                            ? Filter extends ReadonlyMap<Keys, infer FilterValues>
                                            ? ReadonlyMap<Keys, DeepPick<Values, FilterValues>>
                                            : Type
                                            : Type extends WeakMap<infer Keys, infer Values>
                                            ? Filter extends WeakMap<Keys, infer FilterValues>
                                            ? WeakMap<Keys, DeepPick<Values, FilterValues>>
                                            : Type
                                            : Type extends Set<infer Values>
                                            ? Filter extends Set<infer FilterValues>
                                            ? Set<DeepPick<Values, FilterValues>>
                                            : Type
                                            : Type extends ReadonlySet<infer Values>
                                            ? Filter extends ReadonlySet<infer FilterValues>
                                            ? ReadonlySet<DeepPick<Values, FilterValues>>
                                            : Type
                                            : Type extends WeakSet<infer Values>
                                            ? Filter extends WeakSet<infer FilterValues>
                                            ? WeakSet<DeepPick<Values, FilterValues>>
                                            : Type
                                            : Type extends Array<infer Values>
                                            ? Filter extends Array<infer FilterValues>
                                            ? Array<DeepPick<Values, FilterValues>>
                                            : Type
                                            : Type extends Promise<infer Value>
                                            ? Filter extends Promise<infer FilterValue>
                                            ? Promise<DeepPick<Value, FilterValue>>
                                            : Type
                                            : Filter extends AnyRecord
                                            ? {
                                            [Key in keyof Type as Key extends keyof Filter ? Key : never]: Filter[Key &
                                            keyof Filter] extends true
                                            ? Type[Key]
                                            : Key extends keyof Filter
                                            ? DeepPick<Type[Key], Filter[Key]>
                                            : never;
                                            }
                                            : never;

                                              type DeepReadonly

                                              type DeepReadonly<Type> = Type extends Exclude<Builtin, Error>
                                              ? Type
                                              : Type extends Map<infer Keys, infer Values>
                                              ? ReadonlyMap<DeepReadonly<Keys>, DeepReadonly<Values>>
                                              : Type extends ReadonlyMap<infer Keys, infer Values>
                                              ? ReadonlyMap<DeepReadonly<Keys>, DeepReadonly<Values>>
                                              : Type extends WeakMap<infer Keys, infer Values>
                                              ? WeakMap<DeepReadonly<Keys>, DeepReadonly<Values>>
                                              : Type extends Set<infer Values>
                                              ? ReadonlySet<DeepReadonly<Values>>
                                              : Type extends ReadonlySet<infer Values>
                                              ? ReadonlySet<DeepReadonly<Values>>
                                              : Type extends WeakSet<infer Values>
                                              ? WeakSet<DeepReadonly<Values>>
                                              : Type extends Promise<infer Value>
                                              ? Promise<DeepReadonly<Value>>
                                              : Type extends AnyArray<infer Values>
                                              ? Type extends IsTuple<Type>
                                              ? {
                                              readonly [Key in keyof Type]: DeepReadonly<Type[Key]>;
                                              }
                                              : ReadonlyArray<DeepReadonly<Values>>
                                              : Type extends {}
                                              ? {
                                              readonly [Key in keyof Type]: DeepReadonly<Type[Key]>;
                                              }
                                              : IsUnknown<Type> extends true
                                              ? unknown
                                              : Readonly<Type>;

                                                type DeepRequired

                                                type DeepRequired<Type> = Type extends Error
                                                ? Required<Type>
                                                : Type extends Builtin
                                                ? Type
                                                : Type extends Map<infer Keys, infer Values>
                                                ? Map<DeepRequired<Keys>, DeepRequired<Values>>
                                                : Type extends ReadonlyMap<infer Keys, infer Values>
                                                ? ReadonlyMap<DeepRequired<Keys>, DeepRequired<Values>>
                                                : Type extends WeakMap<infer Keys, infer Values>
                                                ? WeakMap<DeepRequired<Keys>, DeepRequired<Values>>
                                                : Type extends Set<infer Values>
                                                ? Set<DeepRequired<Values>>
                                                : Type extends ReadonlySet<infer Values>
                                                ? ReadonlySet<DeepRequired<Values>>
                                                : Type extends WeakSet<infer Values>
                                                ? WeakSet<DeepRequired<Values>>
                                                : Type extends Promise<infer Value>
                                                ? Promise<DeepRequired<Value>>
                                                : Type extends ReadonlyArray<infer Values>
                                                ? Type extends IsTuple<Type>
                                                ? {
                                                [Key in keyof Type]-?: DeepRequired<Type[Key]>;
                                                }
                                                : Type extends Array<Values>
                                                ? Array<Exclude<DeepRequired<Values>, undefined>>
                                                : ReadonlyArray<Exclude<DeepRequired<Values>, undefined>>
                                                : Type extends {}
                                                ? {
                                                [Key in keyof Type]-?: DeepRequired<Type[Key]>;
                                                }
                                                : Required<Type>;

                                                  type DeepUndefinable

                                                  type DeepUndefinable<Type> = Type extends Builtin
                                                  ? Type | undefined
                                                  : Type extends Map<infer Keys, infer Values>
                                                  ? Map<DeepUndefinable<Keys>, DeepUndefinable<Values>>
                                                  : Type extends ReadonlyMap<infer Keys, infer Values>
                                                  ? ReadonlyMap<DeepUndefinable<Keys>, DeepUndefinable<Values>>
                                                  : Type extends WeakMap<infer Keys, infer Values>
                                                  ? DeepUndefinable<Keys> extends object
                                                  ? WeakMap<DeepUndefinable<Keys>, DeepUndefinable<Values>>
                                                  : never
                                                  : Type extends Set<infer Values>
                                                  ? Set<DeepUndefinable<Values>>
                                                  : Type extends ReadonlySet<infer Values>
                                                  ? ReadonlySet<DeepUndefinable<Values>>
                                                  : Type extends WeakSet<infer Values>
                                                  ? DeepUndefinable<Values> extends object
                                                  ? WeakSet<DeepUndefinable<Values>>
                                                  : never
                                                  : Type extends ReadonlyArray<infer Values>
                                                  ? Type extends IsTuple<Type>
                                                  ? {
                                                  [Key in keyof Type]: DeepUndefinable<Type[Key]> | undefined;
                                                  }
                                                  : Type extends Array<Values>
                                                  ? Array<DeepUndefinable<Values>>
                                                  : ReadonlyArray<DeepUndefinable<Values>>
                                                  : Type extends Promise<infer Value>
                                                  ? Promise<DeepUndefinable<Value>>
                                                  : Type extends {}
                                                  ? {
                                                  [Key in keyof Type]: DeepUndefinable<Type[Key]>;
                                                  }
                                                  : Type | undefined;

                                                    type DeepWritable

                                                    type DeepWritable<Type> = Type extends Exclude<Builtin, Error>
                                                    ? Type
                                                    : Type extends Map<infer Key, infer Value>
                                                    ? Map<DeepWritable<Key>, DeepWritable<Value>>
                                                    : Type extends ReadonlyMap<infer Key, infer Value>
                                                    ? Map<DeepWritable<Key>, DeepWritable<Value>>
                                                    : Type extends WeakMap<infer Key, infer Value>
                                                    ? WeakMap<DeepWritable<Key>, DeepWritable<Value>>
                                                    : Type extends Set<infer Values>
                                                    ? Set<DeepWritable<Values>>
                                                    : Type extends ReadonlySet<infer Values>
                                                    ? Set<DeepWritable<Values>>
                                                    : Type extends WeakSet<infer Values>
                                                    ? WeakSet<DeepWritable<Values>>
                                                    : Type extends Promise<infer Value>
                                                    ? Promise<DeepWritable<Value>>
                                                    : Type extends {}
                                                    ? {
                                                    -readonly [Key in keyof Type]: DeepWritable<Type[Key]>;
                                                    }
                                                    : IsUnknown<Type> extends true
                                                    ? unknown
                                                    : Type;

                                                      type Dictionary

                                                      type Dictionary<Type, Keys extends KeyofBase = string> = {
                                                      [key in Keys]: Type;
                                                      };

                                                        type DictionaryValues

                                                        type DictionaryValues<Type> = Type[keyof Type];

                                                          type ElementOf

                                                          type ElementOf<Type extends readonly any[]> = Type extends readonly (infer Values)[]
                                                          ? Values
                                                          : never;

                                                            type Exact

                                                            type Exact<TValue, TShape> = [TValue] extends [readonly any[]]
                                                            ? [TShape] extends [readonly any[]]
                                                            ? ArrayExact<TValue, TShape>
                                                            : never
                                                            : [TValue] extends [AnyRecord]
                                                            ? ObjectExact<TValue, TShape>
                                                            : PrimitiveExact<TValue, TShape>;
                                                              type Head<Type extends AnyArray> = Type['length'] extends 0 ? never : Type[0];

                                                                type IsAny

                                                                type IsAny<Type> = 0 extends 1 & Type ? true : false;

                                                                  type IsNever

                                                                  type IsNever<Type> = [Type] extends [never] ? true : false;

                                                                    type IsTuple

                                                                    type IsTuple<Type> = Type extends readonly any[]
                                                                    ? any[] extends Type
                                                                    ? never
                                                                    : Type
                                                                    : never;

                                                                      type IsUnknown

                                                                      type IsUnknown<Type> = IsAny<Type> extends true
                                                                      ? false
                                                                      : unknown extends Type
                                                                      ? true
                                                                      : false;

                                                                        type KeyofBase

                                                                        type KeyofBase = keyof any;

                                                                          type MarkOptional

                                                                          type MarkOptional<Type, Keys extends keyof Type> = Type extends Type
                                                                          ? Omit<Type, Keys> & Partial<Pick<Type, Keys>>
                                                                          : never;

                                                                            type MarkReadonly

                                                                            type MarkReadonly<Type, Keys extends keyof Type> = Type extends Type
                                                                            ? Readonly<Type> &
                                                                            Writable<
                                                                            Pick<
                                                                            Type,
                                                                            Exclude<
                                                                            keyof Type,
                                                                            Keys | (Type extends object ? ReadonlyKeys<Type> : never)
                                                                            >
                                                                            >
                                                                            >
                                                                            : never;

                                                                              type MarkRequired

                                                                              type MarkRequired<Type, Keys extends keyof Type> = Type extends Type
                                                                              ? Type & Required<Pick<Type, Keys>>
                                                                              : never;

                                                                                type MarkWritable

                                                                                type MarkWritable<Type, Keys extends keyof Type> = Type extends Type
                                                                                ? Readonly<Type> &
                                                                                Writable<
                                                                                Pick<Type, (Type extends object ? WritableKeys<Type> : never) | Keys>
                                                                                >
                                                                                : never;

                                                                                  type Merge

                                                                                  type Merge<Object1, Object2> = Omit<Object1, keyof Object2> & Object2;

                                                                                    type MergeN

                                                                                    type MergeN<Tuple extends readonly any[]> = _MergeN<Tuple, {}>;

                                                                                      type NonEmptyArray

                                                                                      type NonEmptyArray<Type> = [Type, ...Type[]];

                                                                                        type NonEmptyObject

                                                                                        type NonEmptyObject<Object extends AnyRecord> = keyof Object extends never
                                                                                        ? never
                                                                                        : Object;

                                                                                          type NonNever

                                                                                          type NonNever<Type extends {}> = Pick<
                                                                                          Type,
                                                                                          {
                                                                                          [Key in keyof Type]: Type[Key] extends never ? never : Key;
                                                                                          }[keyof Type]
                                                                                          >;

                                                                                            type OmitProperties

                                                                                            type OmitProperties<Type, Value> = Omit<Type, PickKeysByValue<Type, Value>>;

                                                                                              type Opaque

                                                                                              type Opaque<Type, Token extends string> = Token extends StringLiteral<Token>
                                                                                              ? Type & WithOpaque<Token>
                                                                                              : never;

                                                                                                type OptionalKeys

                                                                                                type OptionalKeys<Type> = Type extends unknown
                                                                                                ? {
                                                                                                [Key in keyof Type]-?: undefined extends {
                                                                                                [Key2 in keyof Type]: Key2;
                                                                                                }[Key]
                                                                                                ? Key
                                                                                                : never;
                                                                                                }[keyof Type]
                                                                                                : never;

                                                                                                  type Paths

                                                                                                  type Paths<Type> = Type extends NonRecursiveType
                                                                                                  ? never
                                                                                                  : Type extends AnyArray
                                                                                                  ? UnsafePaths<Type>
                                                                                                  : Type extends object
                                                                                                  ? UnsafePaths<Type>
                                                                                                  : never;

                                                                                                    type PathValue

                                                                                                    type PathValue<Type, StringPath> = GetWithArray<Type, Path<StringPath>>;

                                                                                                      type PickKeys

                                                                                                      type PickKeys<Type, Value> = Exclude<keyof PickProperties<Type, Value>, undefined>;

                                                                                                        type PickProperties

                                                                                                        type PickProperties<Type, Value> = Pick<Type, PickKeysByValue<Type, Value>>;

                                                                                                          type PredicateFunction

                                                                                                          type PredicateFunction = (x: any, ..._z: any[]) => x is any;

                                                                                                            type PredicateType

                                                                                                            type PredicateType<Type extends PredicateFunction> = Type extends (
                                                                                                            target: any,
                                                                                                            ...rest: any[]
                                                                                                            ) => target is infer NarrowedType
                                                                                                            ? NarrowedType
                                                                                                            : never;

                                                                                                              type Prettify

                                                                                                              type Prettify<Type> = {
                                                                                                              [Key in keyof Type]: Type[Key];
                                                                                                              } & {};

                                                                                                                type Primitive

                                                                                                                type Primitive = string | number | boolean | bigint | symbol | undefined | null;

                                                                                                                  type ReadonlyArrayOrSingle

                                                                                                                  type ReadonlyArrayOrSingle<Type> = Type | readonly Type[];

                                                                                                                    type ReadonlyKeys

                                                                                                                    type ReadonlyKeys<Type extends object> = {
                                                                                                                    [Key in keyof Type]-?: IsFullyWritable<Pick<Type, Key>> extends true
                                                                                                                    ? never
                                                                                                                    : Key;
                                                                                                                    }[keyof Type];

                                                                                                                      type RequiredKeys

                                                                                                                      type RequiredKeys<Type> = Type extends unknown
                                                                                                                      ? Exclude<keyof Type, OptionalKeys<Type>>
                                                                                                                      : never;

                                                                                                                        type SafeDictionary

                                                                                                                        type SafeDictionary<Type, Keys extends KeyofBase = string> = {
                                                                                                                        [key in Keys]?: Type;
                                                                                                                        };

                                                                                                                          type StrictDeepOmit

                                                                                                                          type StrictDeepOmit<Type, Filter extends DeepModify<Type>> = DeepOmit<Type, Filter>;

                                                                                                                            type StrictDeepPick

                                                                                                                            type StrictDeepPick<Type, Filter extends DeepModify<Type>> = DeepPick<Type, Filter>;

                                                                                                                              type StrictExclude

                                                                                                                              type StrictExclude<UnionType, ExcludedMembers extends UnionType> = Exclude<
                                                                                                                              UnionType,
                                                                                                                              ExcludedMembers
                                                                                                                              >;

                                                                                                                                type StrictExtract

                                                                                                                                type StrictExtract<Type, Union extends Partial<Type>> = Extract<Type, Union>;

                                                                                                                                  type StrictOmit

                                                                                                                                  type StrictOmit<
                                                                                                                                  Type extends AnyRecord,
                                                                                                                                  Keys extends keyof Type
                                                                                                                                  > = Type extends AnyArray ? never : Omit<Type, Keys>;

                                                                                                                                    type Tail

                                                                                                                                    type Tail<Type extends AnyArray> = Type extends [any, ...infer Rest] ? Rest : never;

                                                                                                                                      type Tuple

                                                                                                                                      type Tuple<Type = any> = [Type?, ...Type[]];

                                                                                                                                        type UnionToIntersection

                                                                                                                                        type UnionToIntersection<Union> = (
                                                                                                                                        Union extends any ? (arg: Union) => void : never
                                                                                                                                        ) extends (arg: infer Intersection) => void
                                                                                                                                        ? Intersection
                                                                                                                                        : never;

                                                                                                                                          type ValueOf

                                                                                                                                          type ValueOf<Type> = Type extends Primitive
                                                                                                                                          ? Type
                                                                                                                                          : Type extends AnyArray
                                                                                                                                          ? Type[number]
                                                                                                                                          : Type extends AnyFunction
                                                                                                                                          ? ReturnType<Type>
                                                                                                                                          : Type[keyof Type];

                                                                                                                                            type WithOpaque

                                                                                                                                            type WithOpaque<Token extends string> = {
                                                                                                                                            readonly [__OPAQUE_TYPE__]: Token;
                                                                                                                                            };

                                                                                                                                              type Writable

                                                                                                                                              type Writable<Type> = {
                                                                                                                                              -readonly [Key in keyof Type]: Type[Key];
                                                                                                                                              };

                                                                                                                                                type WritableKeys

                                                                                                                                                type WritableKeys<Type extends {}> = {
                                                                                                                                                [Key in keyof Type]-?: IsFullyWritable<Pick<Type, Key>> extends true
                                                                                                                                                ? Key
                                                                                                                                                : never;
                                                                                                                                                }[keyof Type];

                                                                                                                                                  type XOR

                                                                                                                                                  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)
                                                                                                                                                  >;

                                                                                                                                                    Package Files (72)

                                                                                                                                                    Dependencies (0)

                                                                                                                                                    No dependencies.

                                                                                                                                                    Dev Dependencies (7)

                                                                                                                                                    Peer Dependencies (1)

                                                                                                                                                    Badge

                                                                                                                                                    To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

                                                                                                                                                    You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/ts-essentials.

                                                                                                                                                    • Markdown
                                                                                                                                                      [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/ts-essentials)
                                                                                                                                                    • HTML
                                                                                                                                                      <a href="https://www.jsdocs.io/package/ts-essentials"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>