Skip to content

Instantly share code, notes, and snippets.

@r4ve1
Created June 28, 2022 13:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save r4ve1/d4a5968592c920782ea32ead0700f6ef to your computer and use it in GitHub Desktop.
Save r4ve1/d4a5968592c920782ea32ead0700f6ef to your computer and use it in GitHub Desktop.
#include <type_traits>
struct IntT
{
typedef int type;
};
struct FloatT
{
typedef float type;
};
template <bool B, typename T, typename U>
struct Ternary
{
typedef U type;
};
template <typename T, typename U>
struct Ternary<true, T, U>
{
typedef T type;
};
template <int N>
struct IntW
{
static constexpr int value = N;
};
template <bool B>
struct BoolW
{
static constexpr bool value = B;
};
typedef BoolW<false> FalseW;
typedef BoolW<true> TrueW;
template <typename T>
struct Not : BoolW<!bool(T::value)>
{
};
template <typename...>
struct And : TrueW
{
};
template <typename T>
struct And<T> : T
{
};
template <typename T, typename... U>
struct And<T, U...> : Ternary<bool(T::value), And<U...>, T>::type
{
};
template <typename T, typename... U>
struct Xor : Ternary<bool(T::value), Not<Xor<U...>>, Xor<U...>>::type
{
};
template <typename T>
struct Xor<T> : T
{
};
template <bool B, typename = void>
struct IsTrue {
};
template <typename T>
struct IsTrue<true, T> {
typedef T type;
};
template<typename T, typename U>
struct IsSame :FalseW {
};
template<typename T>
struct IsSame<T, T> :TrueW {
};
template <typename T>
struct RmRef
{
typedef typename std::remove_reference<T>::type type;
};
template <typename T>
struct AddRef
{
typedef typename std::add_lvalue_reference<T>::type type;
};
template <typename T, typename = void>
struct IsRef : FalseW
{
};
template <typename T>
struct IsRef<T, typename IsTrue<std::is_reference<T>::value>::type> : TrueW
{
};
template <typename T, typename = void>
struct RmConst
{
typedef typename std::remove_const<T>::type type;
};
template <typename T>
struct RmConst<T, typename IsTrue<IsRef<T>::value>::type>
{
typedef typename AddRef<typename std::remove_const<typename RmRef<T>::type>::type>::type type;
};
template <typename T, typename = void>
struct AddConst
{
typedef typename std::add_const<T>::type type;
};
template <typename T>
struct AddConst<T, typename IsTrue<IsRef<T>::value>::type>
{
typedef typename AddRef<typename std::add_const<typename RmRef<T>::type>::type>::type type;
};
template <typename T, typename = void>
struct IsConst : FalseW
{
};
template <typename T>
struct IsConst<T, typename IsTrue<std::is_const<typename RmRef<T>::type>::value>::type>
: TrueW
{
};
//
//template <typename T, typename = void>
//struct RZ
//{
// typedef IntT::type type;
//};
//
//template <typename T>
//struct RZ<T,
// typename IsTrue<And<IsConst<T>, Not<IsRef<T>>>::value>::type>
//{
// typedef typename AddConst<IntT::type>::type type;
//};
//
//template <typename T>
//struct RZ<T,
// typename IsTrue<And<Not<IsConst<T>>, IsRef<T>>::value>::type>
//{
// typedef typename AddRef<IntT::type>::type type;
//};
//
//template <typename T>
//struct RZ<T,
// typename IsTrue<And<IsConst<T>, IsRef<T>>::value>::type>
//{
// typedef typename AddRef<typename AddConst<IntT::type>::type>::type type;
//};
//
//template <typename T, typename = void>
//struct EK
//{
// typedef FloatT::type type;
//};
//
//template <typename T>
//struct EK<T,
// typename IsTrue<And<IsConst<T>, Not<IsRef<T>>>::value>::type>
//{
// typedef typename AddConst<FloatT::type>::type type;
//};
//
//template <typename T>
//struct EK<T,
// typename IsTrue<And<Not<IsConst<T>>, IsRef<T>>::value>::type>
//{
// typedef typename AddRef<FloatT::type>::type type;
//};
//
//template <typename T>
//struct EK<T,
// typename IsTrue<And<IsConst<T>, IsRef<T>>::value>::type>
//{
// typedef typename AddRef<typename AddConst<FloatT::type>::type>::type type;
//};
template <typename T, typename = void>
struct IsFloat : FalseW
{
};
template <typename T>
struct IsFloat<T, typename IsTrue<IsSame<typename RmConst<typename RmRef<T>::type>::type, FloatT::type>::value>::type> : TrueW
{
};
template <typename T, typename U, typename = void>
struct FloatXor
{
typedef FloatT::type type;
};
template <typename T, typename U>
struct FloatXor<T, U, typename IsTrue<Not<Xor<IsFloat<T>, IsFloat<U>>>::value>::type>
{
typedef IntT::type type;
};
template <typename T, typename U, typename = void>
struct ConstFloatXor
{
typedef typename AddConst<typename FloatXor<T, U>::type>::type type;
};
template <typename T, typename U>
struct ConstFloatXor<T, U, typename IsTrue<Not<Xor<IsConst<T>, IsConst<U>>>::value>::type>
{
typedef typename RmConst<typename FloatXor<T, U>::type>::type type;
};
template <typename T, typename U, typename = void>
struct RefConstFloatXor
{
typedef typename AddRef<typename ConstFloatXor<T, U>::type>::type type;
};
template <typename T, typename U>
struct RefConstFloatXor<T, U, typename IsTrue<Not<Xor<IsRef<T>, IsRef<U>>>::value>::type>
{
typedef typename RmRef<typename ConstFloatXor<T, U>::type>::type type;
};
template <typename T, typename... U>
struct Add
{
typedef typename RefConstFloatXor<T, typename Add<U...>::type>::type type;
};
template <typename T>
struct Add<T>
{
typedef T type;
};
template<typename T>
struct FloatIfRef {
typedef typename Ternary<IsRef<T>::value, FloatT::type, IntT::type>::type type;
};
template<typename T>
struct YQ {
typedef typename Ternary<IsFloat<T>::value, typename AddConst<typename FloatIfRef<T>::type>::type, typename FloatIfRef<T>::type>::type type;
};
template <typename T>
struct ZT
{
typedef typename Ternary<Xor<IsRef<T>, IsConst<T>>::value, typename AddRef<typename YQ<T>::type>::type, typename YQ<T>::type>::type type;
};
template<typename T>
struct HY {
typedef typename Ternary<Xor<IsRef<T>, IsConst<T>>::value, FloatT::type, IntT::type>::type type;
};
template<typename T>
struct PG {
typedef typename Ternary<IsRef<T>::value, typename AddConst<typename HY<T>::type>::type, typename HY<T>::type>::type type;
};
template <typename T>
struct RX
{
typedef typename Ternary<Xor<IsRef<T>, IsConst<T>, IsFloat<T>>::value, typename AddRef<typename PG<T>::type>::type, typename PG<T>::type>::type type;
};
template <typename T, typename U, typename = void>
struct WP
{
typedef IntT::type type;
};
template <typename T, typename U>
struct WP<T, U, typename IsTrue<IsFloat<U>::value>::type>
{
typedef T type;
};
template <typename T, typename U, typename = void>
struct WX
{
typedef typename WP<T, U>::type type;
};
template <typename T, typename U>
struct WX<T, U, typename IsTrue<IsConst<U>::value>::type>
{
typedef typename Add<typename ZT<T>::type, typename WP<T, U>::type>::type type;
};
template <typename T, typename U, typename = void>
struct GR
{
typedef typename WX<T, U>::type type;
};
template <typename T, typename U>
struct GR<T, U, typename IsTrue<IsRef<U>::value>::type>
{
typedef typename Add<typename RX<T>::type, typename WX<T, U>::type>::type type;
};
template <typename T, typename... U>
struct HN
{
typedef typename GR<T, typename HN<U...>::type>::type type;
};
template <typename T>
struct HN<T>
{
typedef T type;
};
template<typename T>
struct Op0 {
typedef typename HN<IntT::type, T>::type type;
};
template<typename T>
struct Op1 {
typedef typename HN<FloatT::type, T>::type type;
};
template<typename T>
struct Op2 {
typedef typename HN<AddConst<IntT::type>::type, T>::type type;
};
template<typename T>
struct Op3 {
typedef typename HN<AddConst<FloatT::type>::type, T>::type type;
};
template<typename T>
struct Op4 {
typedef typename HN<AddConst<IntT::type>::type, T, AddConst<IntT::type>::type>::type type;
};
template<typename T>
struct Op5 {
typedef typename HN<AddConst<FloatT::type>::type, AddConst<FloatT::type>::type, T>::type type;
};
template<typename T>
struct Op6 {
typedef typename HN<AddConst<IntT::type>::type, T, AddConst<FloatT::type>::type>::type type;
};
template<typename T>
struct Op7 {
typedef typename HN<AddConst<IntT::type>::type, T, AddConst<IntT::type>::type, AddConst<IntT::type>::type, AddConst<IntT::type>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct IQ {
typedef typename Add<typename Op4<U>::type, typename Op6<V>::type, IntT::type, typename Op7<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct BX {
typedef typename Add<typename Op0<U>::type, typename Op0<V>::type, IntT::type, typename Op2<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct AX {
typedef typename Add<typename Op6<U>::type, typename Op2<V>::type, IntT::type, typename Op5<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct UW {
typedef typename Add<typename Op3<U>::type, typename Op7<V>::type, IntT::type, typename Op7<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct HC {
typedef typename Add<typename Op3<U>::type, typename Op1<V>::type, IntT::type, typename Op6<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct NN {
typedef typename Add<typename Op0<U>::type, typename Op0<V>::type, IntT::type, typename Op4<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct UC {
typedef typename Add<typename Op6<U>::type, typename Op4<V>::type, IntT::type, typename Op1<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct OK {
typedef typename Add<typename Op6<U>::type, typename Op4<V>::type, IntT::type, typename Op3<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct PY {
typedef typename Add<typename Op2<U>::type, typename Op1<V>::type, IntT::type, typename Op1<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct XF {
typedef typename Add<typename Op1<U>::type, typename Op2<V>::type, IntT::type, typename Op4<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct KC {
typedef typename Add<typename Op3<U>::type, typename Op2<V>::type, IntT::type, typename Op4<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct VM {
typedef typename Add<typename Op4<U>::type, typename Op1<V>::type, IntT::type, typename Op2<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct OW {
typedef typename Add<typename Op6<U>::type, typename Op4<V>::type, IntT::type, typename Op0<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct XQ {
typedef typename Add<typename Op1<U>::type, typename Op6<V>::type, IntT::type, typename Op5<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct MG {
typedef typename Add<typename Op3<U>::type, typename Op4<V>::type, IntT::type, typename Op7<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct SQ {
typedef typename Add<typename Op5<U>::type, typename Op7<V>::type, IntT::type, typename Op1<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct UZ {
typedef typename Add<typename Op1<U>::type, typename Op4<V>::type, IntT::type, typename Op0<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct JT {
typedef typename Add<typename Op1<U>::type, typename Op3<V>::type, IntT::type, typename Op4<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct ES {
typedef typename Add<typename Op2<U>::type, typename Op4<V>::type, IntT::type, typename Op3<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct GJ {
typedef typename Add<typename Op6<U>::type, typename Op0<V>::type, IntT::type, typename Op4<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct NJ {
typedef typename Add<typename Op4<U>::type, typename Op2<V>::type, IntT::type, typename Op0<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct KM {
typedef typename Add<typename Op1<U>::type, typename Op4<V>::type, IntT::type, typename Op0<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct YZ {
typedef typename Add<typename Op7<U>::type, typename Op7<V>::type, IntT::type, typename Op6<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct WA {
typedef typename Add<typename Op1<U>::type, typename Op1<V>::type, IntT::type, typename Op7<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct CW {
typedef typename Add<typename Op5<U>::type, typename Op2<V>::type, IntT::type, typename Op1<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct OP {
typedef typename Add<typename Op6<U>::type, typename Op1<V>::type, IntT::type, typename Op5<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct SI {
typedef typename Add<typename Op0<U>::type, typename Op4<V>::type, IntT::type, typename Op5<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct WI {
typedef typename Add<typename Op0<U>::type, typename Op1<V>::type, IntT::type, typename Op1<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct FY {
typedef typename Add<typename Op4<U>::type, typename Op0<V>::type, IntT::type, typename Op7<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct XK {
typedef typename Add<typename Op7<U>::type, typename Op4<V>::type, IntT::type, typename Op1<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct EY {
typedef typename Add<typename Op0<U>::type, typename Op6<V>::type, IntT::type, typename Op3<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X>
struct XS {
typedef typename Add<typename Op2<U>::type, typename Op7<V>::type, IntT::type, typename Op1<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct UX {
typedef typename Add<typename Op0<U>::type, typename Op1<V>::type, typename IQ<Y...>::type, typename Op3<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct DY {
typedef typename Add<typename Op6<U>::type, typename Op4<V>::type, typename BX<Y...>::type, typename Op6<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct LJ {
typedef typename Add<typename Op0<U>::type, typename Op0<V>::type, typename AX<Y...>::type, typename Op1<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct NB {
typedef typename Add<typename Op3<U>::type, typename Op1<V>::type, typename UW<Y...>::type, typename Op6<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct ZQ {
typedef typename Add<typename Op2<U>::type, typename Op1<V>::type, typename HC<Y...>::type, typename Op2<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct FZ {
typedef typename Add<typename Op6<U>::type, typename Op0<V>::type, typename NN<Y...>::type, typename Op7<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct SM {
typedef typename Add<typename Op4<U>::type, typename Op5<V>::type, typename UC<Y...>::type, typename Op2<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct MC {
typedef typename Add<typename Op0<U>::type, typename Op6<V>::type, typename OK<Y...>::type, typename Op0<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct BZ {
typedef typename Add<typename Op1<U>::type, typename Op4<V>::type, typename PY<Y...>::type, typename Op7<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct LR {
typedef typename Add<typename Op3<U>::type, typename Op0<V>::type, typename XF<Y...>::type, typename Op3<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct BQ {
typedef typename Add<typename Op0<U>::type, typename Op2<V>::type, typename KC<Y...>::type, typename Op5<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct FO {
typedef typename Add<typename Op5<U>::type, typename Op5<V>::type, typename VM<Y...>::type, typename Op2<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct HS {
typedef typename Add<typename Op7<U>::type, typename Op0<V>::type, typename OW<Y...>::type, typename Op7<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct CT {
typedef typename Add<typename Op5<U>::type, typename Op2<V>::type, typename XQ<Y...>::type, typename Op6<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct AK {
typedef typename Add<typename Op1<U>::type, typename Op2<V>::type, typename MG<Y...>::type, typename Op6<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct OD {
typedef typename Add<typename Op7<U>::type, typename Op3<V>::type, typename SQ<Y...>::type, typename Op7<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct KP {
typedef typename Add<typename Op3<U>::type, typename Op2<V>::type, typename UZ<Y...>::type, typename Op6<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct ZH {
typedef typename Add<typename Op2<U>::type, typename Op3<V>::type, typename JT<Y...>::type, typename Op0<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct XJ {
typedef typename Add<typename Op5<U>::type, typename Op5<V>::type, typename ES<Y...>::type, typename Op4<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct DP {
typedef typename Add<typename Op7<U>::type, typename Op7<V>::type, typename GJ<Y...>::type, typename Op1<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct RP {
typedef typename Add<typename Op6<U>::type, typename Op6<V>::type, typename NJ<Y...>::type, typename Op6<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct LY {
typedef typename Add<typename Op7<U>::type, typename Op7<V>::type, typename KM<Y...>::type, typename Op5<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct UP {
typedef typename Add<typename Op4<U>::type, typename Op5<V>::type, typename YZ<Y...>::type, typename Op5<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct QN {
typedef typename Add<typename Op4<U>::type, typename Op5<V>::type, typename WA<Y...>::type, typename Op1<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct SF {
typedef typename Add<typename Op0<U>::type, typename Op5<V>::type, typename CW<Y...>::type, typename Op3<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct PM {
typedef typename Add<typename Op7<U>::type, typename Op3<V>::type, typename OP<Y...>::type, typename Op6<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct CU {
typedef typename Add<typename Op0<U>::type, typename Op7<V>::type, typename SI<Y...>::type, typename Op5<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct LM {
typedef typename Add<typename Op2<U>::type, typename Op5<V>::type, typename WI<Y...>::type, typename Op4<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct DG {
typedef typename Add<typename Op1<U>::type, typename Op7<V>::type, typename FY<Y...>::type, typename Op1<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct AP {
typedef typename Add<typename Op2<U>::type, typename Op1<V>::type, typename XK<Y...>::type, typename Op4<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct PA {
typedef typename Add<typename Op6<U>::type, typename Op2<V>::type, typename EY<Y...>::type, typename Op6<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct RR {
typedef typename Add<typename Op6<U>::type, typename Op3<V>::type, typename XS<Y...>::type, typename Op7<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct WE {
typedef typename Add<typename Op1<U>::type, typename Op1<V>::type, typename UX<Y...>::type, typename Op4<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct GS {
typedef typename Add<typename Op5<U>::type, typename Op2<V>::type, typename DY<Y...>::type, typename Op7<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct WO {
typedef typename Add<typename Op2<U>::type, typename Op3<V>::type, typename LJ<Y...>::type, typename Op6<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct VX {
typedef typename Add<typename Op4<U>::type, typename Op6<V>::type, typename NB<Y...>::type, typename Op6<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct KJ {
typedef typename Add<typename Op2<U>::type, typename Op1<V>::type, typename ZQ<Y...>::type, typename Op7<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct AH {
typedef typename Add<typename Op4<U>::type, typename Op6<V>::type, typename FZ<Y...>::type, typename Op1<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct MV {
typedef typename Add<typename Op7<U>::type, typename Op2<V>::type, typename SM<Y...>::type, typename Op0<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct TF {
typedef typename Add<typename Op5<U>::type, typename Op3<V>::type, typename MC<Y...>::type, typename Op2<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct ZX {
typedef typename Add<typename Op7<U>::type, typename Op1<V>::type, typename BZ<Y...>::type, typename Op5<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct AU {
typedef typename Add<typename Op2<U>::type, typename Op5<V>::type, typename LR<Y...>::type, typename Op7<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct YX {
typedef typename Add<typename Op6<U>::type, typename Op3<V>::type, typename BQ<Y...>::type, typename Op1<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct KL {
typedef typename Add<typename Op5<U>::type, typename Op7<V>::type, typename FO<Y...>::type, typename Op5<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct LI {
typedef typename Add<typename Op0<U>::type, typename Op7<V>::type, typename HS<Y...>::type, typename Op5<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct OU {
typedef typename Add<typename Op6<U>::type, typename Op1<V>::type, typename CT<Y...>::type, typename Op3<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct IH {
typedef typename Add<typename Op2<U>::type, typename Op7<V>::type, typename AK<Y...>::type, typename Op6<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct SU {
typedef typename Add<typename Op3<U>::type, typename Op0<V>::type, typename OD<Y...>::type, typename Op7<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct OT {
typedef typename Add<typename Op1<U>::type, typename Op1<V>::type, typename KP<Y...>::type, typename Op6<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct AJ {
typedef typename Add<typename Op7<U>::type, typename Op7<V>::type, typename ZH<Y...>::type, typename Op6<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct WK {
typedef typename Add<typename Op3<U>::type, typename Op2<V>::type, typename XJ<Y...>::type, typename Op3<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct VL {
typedef typename Add<typename Op6<U>::type, typename Op4<V>::type, typename DP<Y...>::type, typename Op3<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct BW {
typedef typename Add<typename Op0<U>::type, typename Op7<V>::type, typename RP<Y...>::type, typename Op6<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct MP {
typedef typename Add<typename Op1<U>::type, typename Op2<V>::type, typename LY<Y...>::type, typename Op2<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct FD {
typedef typename Add<typename Op1<U>::type, typename Op4<V>::type, typename UP<Y...>::type, typename Op0<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct DZ {
typedef typename Add<typename Op7<U>::type, typename Op3<V>::type, typename QN<Y...>::type, typename Op1<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct UV {
typedef typename Add<typename Op0<U>::type, typename Op1<V>::type, typename SF<Y...>::type, typename Op5<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct YJ {
typedef typename Add<typename Op0<U>::type, typename Op1<V>::type, typename PM<Y...>::type, typename Op0<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct DW {
typedef typename Add<typename Op1<U>::type, typename Op6<V>::type, typename CU<Y...>::type, typename Op3<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct AN {
typedef typename Add<typename Op7<U>::type, typename Op4<V>::type, typename LM<Y...>::type, typename Op4<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct TL {
typedef typename Add<typename Op6<U>::type, typename Op0<V>::type, typename DG<Y...>::type, typename Op5<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct AE {
typedef typename Add<typename Op7<U>::type, typename Op1<V>::type, typename AP<Y...>::type, typename Op3<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct OA {
typedef typename Add<typename Op4<U>::type, typename Op3<V>::type, typename PA<Y...>::type, typename Op5<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct UG {
typedef typename Add<typename Op4<U>::type, typename Op3<V>::type, typename RR<Y...>::type, typename Op2<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct BK {
typedef typename Add<typename Op4<U>::type, typename Op2<V>::type, typename WE<Y...>::type, typename Op0<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct FJ {
typedef typename Add<typename Op1<U>::type, typename Op3<V>::type, typename GS<Y...>::type, typename Op5<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct NR {
typedef typename Add<typename Op5<U>::type, typename Op4<V>::type, typename WO<Y...>::type, typename Op7<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct UT {
typedef typename Add<typename Op7<U>::type, typename Op7<V>::type, typename VX<Y...>::type, typename Op3<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct EW {
typedef typename Add<typename Op5<U>::type, typename Op0<V>::type, typename KJ<Y...>::type, typename Op3<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct QP {
typedef typename Add<typename Op7<U>::type, typename Op1<V>::type, typename AH<Y...>::type, typename Op6<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct LF {
typedef typename Add<typename Op6<U>::type, typename Op0<V>::type, typename MV<Y...>::type, typename Op0<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct FL {
typedef typename Add<typename Op7<U>::type, typename Op7<V>::type, typename TF<Y...>::type, typename Op7<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct TU {
typedef typename Add<typename Op3<U>::type, typename Op1<V>::type, typename ZX<Y...>::type, typename Op4<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct BU {
typedef typename Add<typename Op1<U>::type, typename Op7<V>::type, typename AU<Y...>::type, typename Op2<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct HF {
typedef typename Add<typename Op0<U>::type, typename Op5<V>::type, typename YX<Y...>::type, typename Op4<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct MK {
typedef typename Add<typename Op6<U>::type, typename Op4<V>::type, typename KL<Y...>::type, typename Op3<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct SK {
typedef typename Add<typename Op3<U>::type, typename Op5<V>::type, typename LI<Y...>::type, typename Op4<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct OH {
typedef typename Add<typename Op2<U>::type, typename Op2<V>::type, typename OU<Y...>::type, typename Op4<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct RK {
typedef typename Add<typename Op7<U>::type, typename Op4<V>::type, typename IH<Y...>::type, typename Op6<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct MA {
typedef typename Add<typename Op7<U>::type, typename Op7<V>::type, typename SU<Y...>::type, typename Op2<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct NX {
typedef typename Add<typename Op6<U>::type, typename Op6<V>::type, typename OT<Y...>::type, typename Op6<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct JW {
typedef typename Add<typename Op6<U>::type, typename Op6<V>::type, typename AJ<Y...>::type, typename Op6<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct LS {
typedef typename Add<typename Op7<U>::type, typename Op4<V>::type, typename WK<Y...>::type, typename Op4<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct PQ {
typedef typename Add<typename Op1<U>::type, typename Op6<V>::type, typename VL<Y...>::type, typename Op6<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct MN {
typedef typename Add<typename Op2<U>::type, typename Op7<V>::type, typename BW<Y...>::type, typename Op7<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct BR {
typedef typename Add<typename Op0<U>::type, typename Op5<V>::type, typename MP<Y...>::type, typename Op7<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct OI {
typedef typename Add<typename Op7<U>::type, typename Op6<V>::type, typename FD<Y...>::type, typename Op0<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct RM {
typedef typename Add<typename Op7<U>::type, typename Op3<V>::type, typename DZ<Y...>::type, typename Op5<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct RY {
typedef typename Add<typename Op5<U>::type, typename Op0<V>::type, typename UV<Y...>::type, typename Op1<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct NY {
typedef typename Add<typename Op4<U>::type, typename Op0<V>::type, typename YJ<Y...>::type, typename Op7<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct WN {
typedef typename Add<typename Op7<U>::type, typename Op2<V>::type, typename DW<Y...>::type, typename Op3<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct UH {
typedef typename Add<typename Op1<U>::type, typename Op1<V>::type, typename AN<Y...>::type, typename Op2<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct QX {
typedef typename Add<typename Op2<U>::type, typename Op6<V>::type, typename TL<Y...>::type, typename Op1<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct FI {
typedef typename Add<typename Op7<U>::type, typename Op2<V>::type, typename AE<Y...>::type, typename Op5<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct UR {
typedef typename Add<typename Op1<U>::type, typename Op4<V>::type, typename OA<Y...>::type, typename Op5<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct KG {
typedef typename Add<typename Op6<U>::type, typename Op0<V>::type, typename UG<Y...>::type, typename Op6<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct NA {
typedef typename Add<typename Op5<U>::type, typename Op5<V>::type, typename BK<Y...>::type, typename Op7<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct TI {
typedef typename Add<typename Op2<U>::type, typename Op5<V>::type, typename FJ<Y...>::type, typename Op2<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct GA {
typedef typename Add<typename Op3<U>::type, typename Op1<V>::type, typename NR<Y...>::type, typename Op1<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct PC {
typedef typename Add<typename Op5<U>::type, typename Op1<V>::type, typename UT<Y...>::type, typename Op7<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct VN {
typedef typename Add<typename Op5<U>::type, typename Op5<V>::type, typename EW<Y...>::type, typename Op0<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct GN {
typedef typename Add<typename Op2<U>::type, typename Op3<V>::type, typename QP<Y...>::type, typename Op2<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct CO {
typedef typename Add<typename Op1<U>::type, typename Op1<V>::type, typename LF<Y...>::type, typename Op5<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct YD {
typedef typename Add<typename Op0<U>::type, typename Op7<V>::type, typename FL<Y...>::type, typename Op2<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct PI {
typedef typename Add<typename Op5<U>::type, typename Op4<V>::type, typename TU<Y...>::type, typename Op6<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct RW {
typedef typename Add<typename Op5<U>::type, typename Op2<V>::type, typename BU<Y...>::type, typename Op0<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct HT {
typedef typename Add<typename Op3<U>::type, typename Op4<V>::type, typename HF<Y...>::type, typename Op1<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct US {
typedef typename Add<typename Op7<U>::type, typename Op0<V>::type, typename MK<Y...>::type, typename Op7<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct YG {
typedef typename Add<typename Op5<U>::type, typename Op6<V>::type, typename SK<Y...>::type, typename Op4<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct CI {
typedef typename Add<typename Op5<U>::type, typename Op4<V>::type, typename OH<Y...>::type, typename Op5<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct OS {
typedef typename Add<typename Op7<U>::type, typename Op1<V>::type, typename RK<Y...>::type, typename Op1<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct CN {
typedef typename Add<typename Op2<U>::type, typename Op0<V>::type, typename MA<Y...>::type, typename Op7<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct EB {
typedef typename Add<typename Op3<U>::type, typename Op4<V>::type, typename NX<Y...>::type, typename Op4<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct JC {
typedef typename Add<typename Op7<U>::type, typename Op0<V>::type, typename JW<Y...>::type, typename Op7<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct DD {
typedef typename Add<typename Op1<U>::type, typename Op7<V>::type, typename LS<Y...>::type, typename Op4<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct FP {
typedef typename Add<typename Op5<U>::type, typename Op1<V>::type, typename PQ<Y...>::type, typename Op7<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct NF {
typedef typename Add<typename Op2<U>::type, typename Op0<V>::type, typename MN<Y...>::type, typename Op7<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct QE {
typedef typename Add<typename Op5<U>::type, typename Op7<V>::type, typename BR<Y...>::type, typename Op7<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct ZS {
typedef typename Add<typename Op4<U>::type, typename Op0<V>::type, typename OI<Y...>::type, typename Op1<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct FG {
typedef typename Add<typename Op4<U>::type, typename Op3<V>::type, typename RM<Y...>::type, typename Op5<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct AM {
typedef typename Add<typename Op5<U>::type, typename Op6<V>::type, typename RY<Y...>::type, typename Op4<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct QD {
typedef typename Add<typename Op4<U>::type, typename Op5<V>::type, typename NY<Y...>::type, typename Op5<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct IV {
typedef typename Add<typename Op5<U>::type, typename Op5<V>::type, typename WN<Y...>::type, typename Op0<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct CR {
typedef typename Add<typename Op7<U>::type, typename Op2<V>::type, typename UH<Y...>::type, typename Op2<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct FC {
typedef typename Add<typename Op7<U>::type, typename Op4<V>::type, typename QX<Y...>::type, typename Op1<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct TP {
typedef typename Add<typename Op2<U>::type, typename Op0<V>::type, typename FI<Y...>::type, typename Op0<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct MO {
typedef typename Add<typename Op2<U>::type, typename Op2<V>::type, typename UR<Y...>::type, typename Op1<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct XO {
typedef typename Add<typename Op3<U>::type, typename Op7<V>::type, typename KG<Y...>::type, typename Op0<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct SO {
typedef typename Add<typename Op3<U>::type, typename Op0<V>::type, typename NA<Y...>::type, typename Op4<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct LA {
typedef typename Add<typename Op3<U>::type, typename Op6<V>::type, typename TI<Y...>::type, typename Op5<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct QH {
typedef typename Add<typename Op3<U>::type, typename Op6<V>::type, typename GA<Y...>::type, typename Op1<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct PB {
typedef typename Add<typename Op1<U>::type, typename Op5<V>::type, typename PC<Y...>::type, typename Op5<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct AF {
typedef typename Add<typename Op2<U>::type, typename Op2<V>::type, typename VN<Y...>::type, typename Op7<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct EM {
typedef typename Add<typename Op2<U>::type, typename Op7<V>::type, typename GN<Y...>::type, typename Op7<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct RB {
typedef typename Add<typename Op1<U>::type, typename Op6<V>::type, typename CO<Y...>::type, typename Op1<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct BJ {
typedef typename Add<typename Op4<U>::type, typename Op5<V>::type, typename YD<Y...>::type, typename Op7<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct XZ {
typedef typename Add<typename Op7<U>::type, typename Op4<V>::type, typename PI<Y...>::type, typename Op1<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct MH {
typedef typename Add<typename Op5<U>::type, typename Op6<V>::type, typename RW<Y...>::type, typename Op3<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct CD {
typedef typename Add<typename Op6<U>::type, typename Op3<V>::type, typename HT<Y...>::type, typename Op5<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct OQ {
typedef typename Add<typename Op3<U>::type, typename Op3<V>::type, typename US<Y...>::type, typename Op7<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct VJ {
typedef typename Add<typename Op0<U>::type, typename Op5<V>::type, typename YG<Y...>::type, typename Op7<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct JX {
typedef typename Add<typename Op4<U>::type, typename Op0<V>::type, typename CI<Y...>::type, typename Op0<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct HK {
typedef typename Add<typename Op6<U>::type, typename Op3<V>::type, typename OS<Y...>::type, typename Op4<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct PF {
typedef typename Add<typename Op2<U>::type, typename Op3<V>::type, typename CN<Y...>::type, typename Op2<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct YH {
typedef typename Add<typename Op6<U>::type, typename Op4<V>::type, typename EB<Y...>::type, typename Op3<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct JK {
typedef typename Add<typename Op6<U>::type, typename Op2<V>::type, typename JC<Y...>::type, typename Op1<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct MX {
typedef typename Add<typename Op4<U>::type, typename Op6<V>::type, typename DD<Y...>::type, typename Op1<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct IB {
typedef typename Add<typename Op0<U>::type, typename Op6<V>::type, typename FP<Y...>::type, typename Op4<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct DK {
typedef typename Add<typename Op3<U>::type, typename Op4<V>::type, typename NF<Y...>::type, typename Op2<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct BV {
typedef typename Add<typename Op6<U>::type, typename Op4<V>::type, typename QE<Y...>::type, typename Op3<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct VW {
typedef typename Add<typename Op4<U>::type, typename Op6<V>::type, typename ZS<Y...>::type, typename Op1<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct SA {
typedef typename Add<typename Op3<U>::type, typename Op7<V>::type, typename FG<Y...>::type, typename Op3<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct VO {
typedef typename Add<typename Op0<U>::type, typename Op7<V>::type, typename AM<Y...>::type, typename Op2<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct QT {
typedef typename Add<typename Op6<U>::type, typename Op2<V>::type, typename QD<Y...>::type, typename Op1<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct BI {
typedef typename Add<typename Op5<U>::type, typename Op4<V>::type, typename IV<Y...>::type, typename Op3<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct KX {
typedef typename Add<typename Op2<U>::type, typename Op7<V>::type, typename CR<Y...>::type, typename Op7<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct CZ {
typedef typename Add<typename Op2<U>::type, typename Op2<V>::type, typename FC<Y...>::type, typename Op6<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct RD {
typedef typename Add<typename Op1<U>::type, typename Op6<V>::type, typename TP<Y...>::type, typename Op2<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct YF {
typedef typename Add<typename Op2<U>::type, typename Op7<V>::type, typename MO<Y...>::type, typename Op2<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct ON {
typedef typename Add<typename Op6<U>::type, typename Op1<V>::type, typename XO<Y...>::type, typename Op6<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct VS {
typedef typename Add<typename Op1<U>::type, typename Op1<V>::type, typename SO<Y...>::type, typename Op0<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct KV {
typedef typename Add<typename Op5<U>::type, typename Op5<V>::type, typename LA<Y...>::type, typename Op3<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct ZC {
typedef typename Add<typename Op4<U>::type, typename Op7<V>::type, typename QH<Y...>::type, typename Op1<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct PD {
typedef typename Add<typename Op1<U>::type, typename Op6<V>::type, typename PB<Y...>::type, typename Op0<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct AS {
typedef typename Add<typename Op1<U>::type, typename Op2<V>::type, typename AF<Y...>::type, typename Op1<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct IT {
typedef typename Add<typename Op5<U>::type, typename Op0<V>::type, typename EM<Y...>::type, typename Op4<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct LB {
typedef typename Add<typename Op7<U>::type, typename Op2<V>::type, typename RB<Y...>::type, typename Op1<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct LC {
typedef typename Add<typename Op0<U>::type, typename Op4<V>::type, typename BJ<Y...>::type, typename Op1<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct GC {
typedef typename Add<typename Op2<U>::type, typename Op5<V>::type, typename XZ<Y...>::type, typename Op0<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct DV {
typedef typename Add<typename Op6<U>::type, typename Op4<V>::type, typename MH<Y...>::type, typename Op6<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct QA {
typedef typename Add<typename Op1<U>::type, typename Op2<V>::type, typename CD<Y...>::type, typename Op3<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct EC {
typedef typename Add<typename Op1<U>::type, typename Op3<V>::type, typename OQ<Y...>::type, typename Op2<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct WY {
typedef typename Add<typename Op3<U>::type, typename Op2<V>::type, typename VJ<Y...>::type, typename Op2<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct HO {
typedef typename Add<typename Op2<U>::type, typename Op1<V>::type, typename JX<Y...>::type, typename Op2<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct FR {
typedef typename Add<typename Op7<U>::type, typename Op6<V>::type, typename HK<Y...>::type, typename Op0<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct KZ {
typedef typename Add<typename Op1<U>::type, typename Op6<V>::type, typename PF<Y...>::type, typename Op7<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct HL {
typedef typename Add<typename Op4<U>::type, typename Op7<V>::type, typename YH<Y...>::type, typename Op5<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct ZW {
typedef typename Add<typename Op3<U>::type, typename Op6<V>::type, typename JK<Y...>::type, typename Op7<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct CV {
typedef typename Add<typename Op3<U>::type, typename Op7<V>::type, typename MX<Y...>::type, typename Op1<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct KT {
typedef typename Add<typename Op4<U>::type, typename Op5<V>::type, typename IB<Y...>::type, typename Op7<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct AA {
typedef typename Add<typename Op2<U>::type, typename Op5<V>::type, typename DK<Y...>::type, typename Op4<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct HM {
typedef typename Add<typename Op5<U>::type, typename Op4<V>::type, typename BV<Y...>::type, typename Op4<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct OM {
typedef typename Add<typename Op6<U>::type, typename Op1<V>::type, typename VW<Y...>::type, typename Op2<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct NI {
typedef typename Add<typename Op1<U>::type, typename Op0<V>::type, typename SA<Y...>::type, typename Op1<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct DS {
typedef typename Add<typename Op0<U>::type, typename Op2<V>::type, typename VO<Y...>::type, typename Op7<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct WV {
typedef typename Add<typename Op5<U>::type, typename Op1<V>::type, typename QT<Y...>::type, typename Op2<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct NZ {
typedef typename Add<typename Op5<U>::type, typename Op1<V>::type, typename BI<Y...>::type, typename Op4<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct DJ {
typedef typename Add<typename Op3<U>::type, typename Op2<V>::type, typename KX<Y...>::type, typename Op3<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct MZ {
typedef typename Add<typename Op7<U>::type, typename Op0<V>::type, typename CZ<Y...>::type, typename Op2<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct AL {
typedef typename Add<typename Op4<U>::type, typename Op7<V>::type, typename RD<Y...>::type, typename Op7<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct GW {
typedef typename Add<typename Op4<U>::type, typename Op7<V>::type, typename YF<Y...>::type, typename Op7<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct OE {
typedef typename Add<typename Op2<U>::type, typename Op2<V>::type, typename ON<Y...>::type, typename Op2<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct YL {
typedef typename Add<typename Op5<U>::type, typename Op7<V>::type, typename VS<Y...>::type, typename Op7<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct SR {
typedef typename Add<typename Op4<U>::type, typename Op1<V>::type, typename KV<Y...>::type, typename Op3<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct WS {
typedef typename Add<typename Op7<U>::type, typename Op2<V>::type, typename ZC<Y...>::type, typename Op4<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct XU {
typedef typename Add<typename Op7<U>::type, typename Op2<V>::type, typename PD<Y...>::type, typename Op2<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct OF {
typedef typename Add<typename Op3<U>::type, typename Op7<V>::type, typename AS<Y...>::type, typename Op0<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct YU {
typedef typename Add<typename Op1<U>::type, typename Op1<V>::type, typename IT<Y...>::type, typename Op2<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct NO {
typedef typename Add<typename Op5<U>::type, typename Op7<V>::type, typename LB<Y...>::type, typename Op0<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct GF {
typedef typename Add<typename Op3<U>::type, typename Op2<V>::type, typename LC<Y...>::type, typename Op4<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct XX {
typedef typename Add<typename Op1<U>::type, typename Op1<V>::type, typename GC<Y...>::type, typename Op1<W>::type, typename Op7<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct GB {
typedef typename Add<typename Op7<U>::type, typename Op4<V>::type, typename DV<Y...>::type, typename Op6<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct ZV {
typedef typename Add<typename Op7<U>::type, typename Op5<V>::type, typename QA<Y...>::type, typename Op3<W>::type, typename Op4<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct BB {
typedef typename Add<typename Op0<U>::type, typename Op6<V>::type, typename EC<Y...>::type, typename Op7<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct CS {
typedef typename Add<typename Op6<U>::type, typename Op1<V>::type, typename WY<Y...>::type, typename Op3<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct MW {
typedef typename Add<typename Op4<U>::type, typename Op1<V>::type, typename HO<Y...>::type, typename Op4<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct NS {
typedef typename Add<typename Op2<U>::type, typename Op0<V>::type, typename FR<Y...>::type, typename Op1<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct EO {
typedef typename Add<typename Op6<U>::type, typename Op4<V>::type, typename KZ<Y...>::type, typename Op5<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct JO {
typedef typename Add<typename Op3<U>::type, typename Op5<V>::type, typename HL<Y...>::type, typename Op6<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct QW {
typedef typename Add<typename Op3<U>::type, typename Op2<V>::type, typename ZW<Y...>::type, typename Op3<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct XH {
typedef typename Add<typename Op3<U>::type, typename Op1<V>::type, typename CV<Y...>::type, typename Op1<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct HG {
typedef typename Add<typename Op2<U>::type, typename Op4<V>::type, typename KT<Y...>::type, typename Op6<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct WC {
typedef typename Add<typename Op0<U>::type, typename Op2<V>::type, typename AA<Y...>::type, typename Op1<W>::type, typename Op1<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct EU {
typedef typename Add<typename Op6<U>::type, typename Op1<V>::type, typename HM<Y...>::type, typename Op2<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct FV {
typedef typename Add<typename Op6<U>::type, typename Op0<V>::type, typename OM<Y...>::type, typename Op7<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct PP {
typedef typename Add<typename Op3<U>::type, typename Op5<V>::type, typename NI<Y...>::type, typename Op3<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct BO {
typedef typename Add<typename Op4<U>::type, typename Op3<V>::type, typename DS<Y...>::type, typename Op1<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct TW {
typedef typename Add<typename Op1<U>::type, typename Op6<V>::type, typename WV<Y...>::type, typename Op0<W>::type, typename Op6<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct GQ {
typedef typename Add<typename Op5<U>::type, typename Op4<V>::type, typename NZ<Y...>::type, typename Op0<W>::type, typename Op0<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct UM {
typedef typename Add<typename Op1<U>::type, typename Op5<V>::type, typename DJ<Y...>::type, typename Op5<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct TJ {
typedef typename Add<typename Op4<U>::type, typename Op4<V>::type, typename MZ<Y...>::type, typename Op5<W>::type, typename Op2<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct EE {
typedef typename Add<typename Op6<U>::type, typename Op7<V>::type, typename AL<Y...>::type, typename Op0<W>::type, typename Op3<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct YP {
typedef typename Add<typename Op0<U>::type, typename Op5<V>::type, typename GW<Y...>::type, typename Op6<W>::type, typename Op5<X>::type>::type type;
};
template<typename U, typename V, typename W, typename X, typename... Y>
struct XG {
typedef typename Add<typename Op6<U>::type, typename Op6<V>::type, typename OE<Y...>::type, typename Op2<W>::type, typename Op4<X>::type>::type type;
};
template<typename... T>
struct KD {
typedef typename YL<T...>::type type;
};
template<typename... T>
struct JG {
typedef typename SR<T...>::type type;
};
template<typename... T>
struct AQ {
typedef typename WS<T...>::type type;
};
template<typename... T>
struct PT {
typedef typename XU<T...>::type type;
};
template<typename... T>
struct VI {
typedef typename OF<T...>::type type;
};
template<typename... T>
struct UB {
typedef typename YU<T...>::type type;
};
template<typename... T>
struct XN {
typedef typename NO<T...>::type type;
};
template<typename... T>
struct CQ {
typedef typename GF<T...>::type type;
};
template<typename... T>
struct AC {
typedef typename XX<T...>::type type;
};
template<typename... T>
struct ZJ {
typedef typename GB<T...>::type type;
};
template<typename... T>
struct FF {
typedef typename ZV<T...>::type type;
};
template<typename... T>
struct FE {
typedef typename BB<T...>::type type;
};
template<typename... T>
struct GG {
typedef typename CS<T...>::type type;
};
template<typename... T>
struct ZO {
typedef typename MW<T...>::type type;
};
template<typename... T>
struct HQ {
typedef typename NS<T...>::type type;
};
template<typename... T>
struct KB {
typedef typename EO<T...>::type type;
};
template<typename... T>
struct KF {
typedef typename JO<T...>::type type;
};
template<typename... T>
struct RG {
typedef typename QW<T...>::type type;
};
template<typename... T>
struct ZZ {
typedef typename XH<T...>::type type;
};
template<typename... T>
struct FQ {
typedef typename HG<T...>::type type;
};
template<typename... T>
struct SX {
typedef typename WC<T...>::type type;
};
template<typename... T>
struct SD {
typedef typename EU<T...>::type type;
};
template<typename... T>
struct FA {
typedef typename FV<T...>::type type;
};
template<typename... T>
struct MM {
typedef typename PP<T...>::type type;
};
template<typename... T>
struct YR {
typedef typename BO<T...>::type type;
};
template<typename... T>
struct GM {
typedef typename TW<T...>::type type;
};
template<typename... T>
struct AZ {
typedef typename GQ<T...>::type type;
};
template<typename... T>
struct NW {
typedef typename UM<T...>::type type;
};
template<typename... T>
struct BN {
typedef typename TJ<T...>::type type;
};
template<typename... T>
struct CJ {
typedef typename EE<T...>::type type;
};
template<typename... T>
struct CX {
typedef typename YP<T...>::type type;
};
template<typename... T>
struct SS {
typedef typename XG<T...>::type type;
};
template<typename...U>
struct II :And<TrueW, IsSame<typename KD<U...>::type, Op7<FloatT::type>::type>> {
};
template<typename...U>
struct ZU :And<II<U...>, IsSame<typename JG<U...>::type, Op2<FloatT::type>::type>> {
};
template<typename...U>
struct EG :And<ZU<U...>, IsSame<typename AQ<U...>::type, Op4<FloatT::type>::type>> {
};
template<typename...U>
struct ZA :And<EG<U...>, IsSame<typename PT<U...>::type, Op5<FloatT::type>::type>> {
};
template<typename...U>
struct OJ :And<ZA<U...>, IsSame<typename VI<U...>::type, Op5<FloatT::type>::type>> {
};
template<typename...U>
struct LL :And<OJ<U...>, IsSame<typename UB<U...>::type, Op3<FloatT::type>::type>> {
};
template<typename...U>
struct SN :And<LL<U...>, IsSame<typename XN<U...>::type, Op0<FloatT::type>::type>> {
};
template<typename...U>
struct MI :And<SN<U...>, IsSame<typename CQ<U...>::type, Op3<FloatT::type>::type>> {
};
template<typename...U>
struct ZL :And<MI<U...>, IsSame<typename AC<U...>::type, Op2<FloatT::type>::type>> {
};
template<typename...U>
struct QG :And<ZL<U...>, IsSame<typename ZJ<U...>::type, Op1<FloatT::type>::type>> {
};
template<typename...U>
struct KS :And<QG<U...>, IsSame<typename FF<U...>::type, Op1<FloatT::type>::type>> {
};
template<typename...U>
struct UF :And<KS<U...>, IsSame<typename FE<U...>::type, Op6<FloatT::type>::type>> {
};
template<typename...U>
struct TD :And<UF<U...>, IsSame<typename GG<U...>::type, Op5<FloatT::type>::type>> {
};
template<typename...U>
struct RN :And<TD<U...>, IsSame<typename ZO<U...>::type, Op7<FloatT::type>::type>> {
};
template<typename...U>
struct GH :And<RN<U...>, IsSame<typename HQ<U...>::type, Op0<FloatT::type>::type>> {
};
template<typename...U>
struct SZ :And<GH<U...>, IsSame<typename KB<U...>::type, Op7<FloatT::type>::type>> {
};
template<typename...U>
struct HH :And<SZ<U...>, IsSame<typename KF<U...>::type, Op1<FloatT::type>::type>> {
};
template<typename...U>
struct EI :And<HH<U...>, IsSame<typename RG<U...>::type, Op6<FloatT::type>::type>> {
};
template<typename...U>
struct PX :And<EI<U...>, IsSame<typename ZZ<U...>::type, Op6<FloatT::type>::type>> {
};
template<typename...U>
struct ZY :And<PX<U...>, IsSame<typename FQ<U...>::type, Op6<FloatT::type>::type>> {
};
template<typename...U>
struct LV :And<ZY<U...>, IsSame<typename SX<U...>::type, Op6<FloatT::type>::type>> {
};
template<typename...U>
struct HU :And<LV<U...>, IsSame<typename SD<U...>::type, Op0<FloatT::type>::type>> {
};
template<typename...U>
struct CP :And<HU<U...>, IsSame<typename FA<U...>::type, Op4<FloatT::type>::type>> {
};
template<typename...U>
struct DA :And<CP<U...>, IsSame<typename MM<U...>::type, Op6<FloatT::type>::type>> {
};
template<typename...U>
struct IS :And<DA<U...>, IsSame<typename YR<U...>::type, Op7<FloatT::type>::type>> {
};
template<typename...U>
struct NT :And<IS<U...>, IsSame<typename GM<U...>::type, Op4<FloatT::type>::type>> {
};
template<typename...U>
struct BF :And<NT<U...>, IsSame<typename AZ<U...>::type, Op1<FloatT::type>::type>> {
};
template<typename...U>
struct UE :And<BF<U...>, IsSame<typename NW<U...>::type, Op4<FloatT::type>::type>> {
};
template<typename...U>
struct NE :And<UE<U...>, IsSame<typename BN<U...>::type, Op3<FloatT::type>::type>> {
};
template<typename...U>
struct TE :And<NE<U...>, IsSame<typename CJ<U...>::type, Op3<FloatT::type>::type>> {
};
template<typename...U>
struct BD :And<TE<U...>, IsSame<typename CX<U...>::type, Op3<FloatT::type>::type>> {
};
template<typename...U>
struct RT :And<BD<U...>, IsSame<typename SS<U...>::type, Op7<FloatT::type>::type>> {
};
template<typename T, typename = void>
struct HA :IntW<3> {};
template<typename T>
struct HA<T, typename IsTrue<And<Not<IsRef<T>>, Not<IsConst<T>>, IsFloat<T>>::value>::type> : IntW<5> {};
template<typename T>
struct HA<T, typename IsTrue<And<Not<IsRef<T>>, IsConst<T>, Not<IsFloat<T>>>::value>::type> : IntW<7> {};
template<typename T>
struct HA<T, typename IsTrue<And<Not<IsRef<T>>, IsConst<T>, IsFloat<T>>::value>::type> : IntW<11> {};
template<typename T>
struct HA<T, typename IsTrue<And<IsRef<T>, Not<IsConst<T>>, Not<IsFloat<T>>>::value>::type> : IntW<13> {};
template<typename T>
struct HA<T, typename IsTrue<And<IsRef<T>, Not<IsConst<T>>, IsFloat<T>>::value>::type> : IntW<17> {};
template<typename T>
struct HA<T, typename IsTrue<And<IsRef<T>, IsConst<T>, Not<IsFloat<T>>>::value>::type> : IntW<19> {};
template<typename T>
struct HA<T, typename IsTrue<And<IsRef<T>, IsConst<T>, IsFloat<T>>::value>::type> : IntW<21> {};
template<typename...U>
struct Nagi {
static char buf[108];
static const char* GetFlag() {
if (RT<U...>::value == false) {
return "I don't know the flag, ask some else!";
}
int key[] = { HA<U>::value... };
int S[256];
int i, j = 0, t;
for (i = 0; i < 256; i++) { S[i] = i; }
for (i = 0; i < 256; i++) {
j = (j + S[i] + key[i % sizeof...(U)]) & 0xff;
t = S[i], S[i] = S[j], S[j] = t;
}
i = j = 0;
for (int k = 0; k < 107; k++) {
i = (i + 1) & 0xff;
j = (j + S[i]) & 0xff;
t = S[i], S[i] = S[j], S[j] = t;
buf[k] ^= S[(S[i] + S[j]) & 0xff];
}
return buf;
}
};
template<typename...U>
char Nagi<U...>::buf[108] = "\xb0\x0d\x1f\x0e\x2a\x27\x08\xd4\x1b\x8a\xf9\xde\x67\x86\x95\x80\x4f\x92\xca\xa1\x70\x2c\x53\xae\xd7\x4e\xf2\x86\x4f\x37\x03\xdc\xbe\xf2\xc4\x0e\x7c\x8f\x8a\x00\x09\x93\xf0\xd0\xf3\x37\xd4\x7e\x6f\x83\x6d\x3e\x16\x99\x63\x25\x7a\x3c\x30\x51\xaf\xf6\x3e\xc5\x0f\xc8\x93\xeb\x4f\x6b\xbd\xc2\xa1\x96\x2b\x4e\xc4\xca\x91\xcd\x70\xc2\x24\xe8\xa2\x92\xbe\x1e\xea\x48\xf9\x16\xb0\x78\x00\x6b\x7c\x95\xb1\xa0\xcb\xf7\x06\xaf\x4d\xe8\x96";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment